From 775705822255f08d7880216cfb258fd23872d3d2 Mon Sep 17 00:00:00 2001 From: dankelleher Date: Tue, 6 Jun 2023 18:42:25 +0200 Subject: [PATCH 01/63] Eth gateway: Use the cli in "read-only" mode to speed things up. --- .../gatekeeper-cli/src/commands/get-gatekeeper-network.ts | 2 +- ethereum/gatekeeper-cli/src/commands/get-token.ts | 2 +- ethereum/gatekeeper-cli/src/commands/listen.ts | 2 +- ethereum/gatekeeper-cli/src/utils/oclif/flags.ts | 2 ++ ethereum/gatekeeper-cli/src/utils/oclif/utils.ts | 5 +++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ethereum/gatekeeper-cli/src/commands/get-gatekeeper-network.ts b/ethereum/gatekeeper-cli/src/commands/get-gatekeeper-network.ts index 835751e6b..622d1f3fe 100644 --- a/ethereum/gatekeeper-cli/src/commands/get-gatekeeper-network.ts +++ b/ethereum/gatekeeper-cli/src/commands/get-gatekeeper-network.ts @@ -27,7 +27,7 @@ export default class GetGatekeeperNetwork extends Command { async run(): Promise { const {args, flags} = await this.parse(GetGatekeeperNetwork) - const parsedFlags = parseFlags({...flags, gatekeeperNetwork: DEFAULT_GATEKEEPER_NETWORK}) + const parsedFlags = parseFlags({...flags, readOnly: true, gatekeeperNetwork: DEFAULT_GATEKEEPER_NETWORK}) const gateway = await makeGatewayTs(parsedFlags) const name = await gateway.getGatekeeperNetwork(args.id) diff --git a/ethereum/gatekeeper-cli/src/commands/get-token.ts b/ethereum/gatekeeper-cli/src/commands/get-token.ts index 93e35e6a9..db05cdb73 100644 --- a/ethereum/gatekeeper-cli/src/commands/get-token.ts +++ b/ethereum/gatekeeper-cli/src/commands/get-token.ts @@ -32,7 +32,7 @@ export default class GetToken extends Command { const {args, flags} = await this.parse(GetToken) const ownerAddress = args.address as string - const parsedFlags = parseFlags(flags) + const parsedFlags = parseFlags({...flags, readOnly: true}) this.log(`Getting token for ${ownerAddress}`) diff --git a/ethereum/gatekeeper-cli/src/commands/listen.ts b/ethereum/gatekeeper-cli/src/commands/listen.ts index d2211722a..0e5bd72aa 100644 --- a/ethereum/gatekeeper-cli/src/commands/listen.ts +++ b/ethereum/gatekeeper-cli/src/commands/listen.ts @@ -30,7 +30,7 @@ export default class GetToken extends Command { const {args, flags} = await this.parse(GetToken) const ownerAddress = args.address as string - const parsedFlags = parseFlags(flags) + const parsedFlags = parseFlags({...flags, readOnly: true}) this.log(`Getting token for ${ownerAddress}`) diff --git a/ethereum/gatekeeper-cli/src/utils/oclif/flags.ts b/ethereum/gatekeeper-cli/src/utils/oclif/flags.ts index 5966d53e3..41025733b 100644 --- a/ethereum/gatekeeper-cli/src/utils/oclif/flags.ts +++ b/ethereum/gatekeeper-cli/src/utils/oclif/flags.ts @@ -93,6 +93,7 @@ type Flags = { gatekeeperNetwork: number | undefined fees?: GasPriceKey | undefined gasLimit?: BigNumber | undefined + readOnly?: boolean | undefined }; export const parseFlags = (flags: Flags) => { // These all have defaults and can therefore be safely cast @@ -106,6 +107,7 @@ export const parseFlags = (flags: Flags) => { gatekeeperNetwork, fees: flags.fees, gasLimit: flags.gasLimit, + readOnly: false, } } diff --git a/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts b/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts index cb92584d4..d6b61cb9c 100644 --- a/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts +++ b/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts @@ -9,9 +9,10 @@ export const makeGatewayTs = async ({ gatewayTokenAddress, fees, gasLimit, -}: { provider: Provider, privateKey?: string, gatewayTokenAddress: string, fees?: GasPriceKey, gasLimit?: BigNumber }):Promise => { + readOnly = false, +}: { provider: Provider, privateKey?: string, gatewayTokenAddress: string, fees?: GasPriceKey, gasLimit?: BigNumber, readOnly: boolean }):Promise => { const signer = privateKey ? getSigner(privateKey, provider) : undefined - const feeAmount = await estimateGasPrice(provider, fees) + const feeAmount = readOnly? {} :await estimateGasPrice(provider, fees) return new GatewayTs(signer || provider, gatewayTokenAddress, {...feeAmount, gasLimit}) } From 77fb3b5bd12e7e62105c682b98e61678c2c81b9a Mon Sep 17 00:00:00 2001 From: dankelleher Date: Fri, 30 Jun 2023 10:15:37 +0200 Subject: [PATCH 02/63] Ethereum Gateway: Upgrade artifacts (openzeppelin), improvements to cli to support issuance with charge --- ethereum/gatekeeper-cli/README.md | 36 +- ethereum/gatekeeper-cli/package.json | 4 +- ethereum/gatekeeper-cli/src/commands/issue.ts | 30 + ethereum/gatekeeper-cli/yarn.lock | 8 +- ethereum/gateway-eth-ts/package.json | 2 +- .../ChargeHandler.sol/ChargeHandler.dbg.json | 2 +- .../FlagsStorage.sol/FlagsStorage.dbg.json | 2 +- .../FlexibleNonceForwarder.dbg.json | 2 +- .../contracts/abi/Gated.sol/Gated.dbg.json | 2 +- .../GatewayToken.sol/GatewayToken.dbg.json | 2 +- .../MultiERC2771Context.dbg.json | 2 +- .../ParameterizedAccessControl.dbg.json | 2 +- .../TokenBitMask.sol/TokenBitMask.dbg.json | 2 +- .../IERC721Expirable.dbg.json | 2 +- .../IERC721Freezable.dbg.json | 2 +- .../IERC721Revokable.dbg.json | 2 +- .../IFlagsStorage.sol/IFlagsStorage.dbg.json | 2 +- .../IForwarder.sol/IForwarder.dbg.json | 2 +- .../IGatewayToken.sol/IGatewayToken.dbg.json | 2 +- .../IGatewayTokenVerifier.dbg.json | 2 +- .../IParameterizedAccessControl.dbg.json | 2 +- .../abi/library/BitMask.sol/BitMask.dbg.json | 2 +- .../GatewayTokenInternalsTest__factory.ts | 18 +- .../GatewayTokenUpgradeTest__factory.ts | 18 +- .../contracts/GatewayTokenInternalsTest.ts | 13 +- .../test/contracts/GatewayTokenUpgradeTest.ts | 13 +- .../smart-contract/.openzeppelin/goerli.json | 856 ++++++++++++++++++ .../smart-contract/.openzeppelin/mainnet.json | 856 ++++++++++++++++++ .../.openzeppelin/polygon-mumbai.json | 856 ++++++++++++++++++ .../smart-contract/.openzeppelin/polygon.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-1101.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-11155111.json | 799 ++++++++++++++-- .../.openzeppelin/unknown-1442.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-42161.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-421613.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-50.json | 856 ++++++++++++++++++ .../.openzeppelin/unknown-51.json | 856 ++++++++++++++++++ ethereum/smart-contract/deploy/upgrade-v1.ts | 3 +- ethereum/smart-contract/hardhat.config.ts | 6 + ethereum/smart-contract/tasks/execute.ts | 26 + solana/Cargo.lock | 2 +- 41 files changed, 9469 insertions(+), 103 deletions(-) create mode 100644 ethereum/smart-contract/.openzeppelin/goerli.json create mode 100644 ethereum/smart-contract/.openzeppelin/mainnet.json create mode 100644 ethereum/smart-contract/.openzeppelin/polygon-mumbai.json create mode 100644 ethereum/smart-contract/.openzeppelin/polygon.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-1101.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-1442.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-42161.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-421613.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-50.json create mode 100644 ethereum/smart-contract/.openzeppelin/unknown-51.json create mode 100644 ethereum/smart-contract/tasks/execute.ts diff --git a/ethereum/gatekeeper-cli/README.md b/ethereum/gatekeeper-cli/README.md index 030ebe0fe..757924046 100644 --- a/ethereum/gatekeeper-cli/README.md +++ b/ethereum/gatekeeper-cli/README.md @@ -78,7 +78,7 @@ $ npm install -g @identity.com/gateway-eth-cli $ gateway-eth COMMAND running command... $ gateway-eth (--version) -@identity.com/gateway-eth-cli/0.1.1 darwin-arm64 node-v16.17.1 +@identity.com/gateway-eth-cli/0.2.0-alpha.0 darwin-arm64 node-v18.16.0 $ gateway-eth --help [COMMAND] USAGE $ gateway-eth COMMAND @@ -155,7 +155,7 @@ EXAMPLES $ gateway-eth add-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/add-gatekeeper.ts)_ +_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/add-gatekeeper.ts)_ ## `gateway-eth add-network-authority ADDRESS` @@ -209,7 +209,7 @@ EXAMPLES $ gateway-eth add-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/add-network-authority.ts)_ +_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/add-network-authority.ts)_ ## `gateway-eth create-gatekeeper-network ID NAME` @@ -261,7 +261,7 @@ EXAMPLES $ gateway-eth create-gatekeeper-network ``` -_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/create-gatekeeper-network.ts)_ +_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/create-gatekeeper-network.ts)_ ## `gateway-eth freeze ADDRESS` @@ -315,7 +315,7 @@ EXAMPLES $ gateway-eth freeze 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/freeze.ts)_ +_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/freeze.ts)_ ## `gateway-eth get-gatekeeper-network ID` @@ -352,7 +352,7 @@ EXAMPLES $ gateway-eth get-gatekeeper-network ``` -_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/get-gatekeeper-network.ts)_ +_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/get-gatekeeper-network.ts)_ ## `gateway-eth get-token ADDRESS` @@ -395,7 +395,7 @@ EXAMPLES $ gateway-eth get 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/get-token.ts)_ +_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/get-token.ts)_ ## `gateway-eth help [COMMAND]` @@ -427,13 +427,16 @@ USAGE localhost|ethereum|sepolia|goerli|polygonMumbai|polygon|auroraTestnet|aurora|optimismGoerli|optimism|palmTestnet|pal m|arbitrumGoerli|arbitrum|celo|celoAlfajores|avalancheCChain|avalancheCChainFuji|starknet|starknetGoerli|xdc|xdcApot hem|bsc|cronos|fantom|gnosis|moonbeam|moonriver|polygonZkEVMTestnet|polygonZkEVM] [-f ] [-w ] [-g - ] [-b ] [-u ] + ] [-b ] [-u ] [-x ] [-a ] ARGUMENTS ADDRESS Token owner address EXPIRY [default: [object Object]] Expiry timestamp for the issued token FLAGS + -a, --charge= + Charge in native tokens for the transaction + -b, --bitmask= [default: [object Object]] Bitmask constraints to link with newly minting token @@ -469,6 +472,9 @@ FLAGS -w, --confirmations= [default: 1] The amount of blocks to wait for mined transaction + -x, --forwarder= + Forward the transaction to the forwarder contract + DESCRIPTION Issue a new gateway token for a given owner address and gatekeeper network @@ -476,7 +482,7 @@ EXAMPLES $ gateway-eth issue 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/issue.ts)_ +_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/issue.ts)_ ## `gateway-eth listen ADDRESS` @@ -516,7 +522,7 @@ EXAMPLES $ gateway-eth listen 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/listen.ts)_ +_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/listen.ts)_ ## `gateway-eth refresh ADDRESS [EXPIRY]` @@ -571,7 +577,7 @@ EXAMPLES $ gateway-eth refresh 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 60 -n 123 ``` -_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/refresh.ts)_ +_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/refresh.ts)_ ## `gateway-eth remove-gatekeeper ADDRESS` @@ -625,7 +631,7 @@ EXAMPLES $ gateway-eth remove-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/remove-gatekeeper.ts)_ +_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/remove-gatekeeper.ts)_ ## `gateway-eth remove-network-authority ADDRESS` @@ -679,7 +685,7 @@ EXAMPLES $ gateway-eth remove-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/remove-network-authority.ts)_ +_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/remove-network-authority.ts)_ ## `gateway-eth revoke ADDRESS` @@ -733,7 +739,7 @@ EXAMPLES $ gateway-eth revoke 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/revoke.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/revoke.ts)_ +_See code: [dist/commands/revoke.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/revoke.ts)_ ## `gateway-eth unfreeze ADDRESS` @@ -787,7 +793,7 @@ EXAMPLES $ gateway-eth unfreeze 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/unfreeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.1.1/dist/commands/unfreeze.ts)_ +_See code: [dist/commands/unfreeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/unfreeze.ts)_ ## `gateway-eth verify ADDRESS` diff --git a/ethereum/gatekeeper-cli/package.json b/ethereum/gatekeeper-cli/package.json index fb28fc1ea..7525aad41 100644 --- a/ethereum/gatekeeper-cli/package.json +++ b/ethereum/gatekeeper-cli/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/gateway-eth-cli", - "version": "0.1.1", + "version": "0.2.0-alpha.0", "description": "Identity.com Gateway Protocol EVM CLI", "author": "dankelleher @dankelleher", "bin": { @@ -25,7 +25,7 @@ "@ethersproject/units": "^5.7.0", "@ethersproject/wallet": "^5.7.0", "@ethersproject/web": "^5.7.1", - "@identity.com/gateway-eth-ts": "0.7.1", + "@identity.com/gateway-eth-ts": "0.8.0-alpha.0", "@oclif/core": "^1.23.2", "@oclif/dev-cli": "^1.26.10", "@oclif/plugin-help": "^5", diff --git a/ethereum/gatekeeper-cli/src/commands/issue.ts b/ethereum/gatekeeper-cli/src/commands/issue.ts index 5c6f346b2..782a4bc4c 100644 --- a/ethereum/gatekeeper-cli/src/commands/issue.ts +++ b/ethereum/gatekeeper-cli/src/commands/issue.ts @@ -8,6 +8,8 @@ import { import {makeGatewayTs} from '../utils/oclif/utils' import {addressArg} from '../utils/oclif/args' import {BigNumber} from '@ethersproject/bignumber' +import {makeWeiCharge} from '@identity.com/gateway-eth-ts/dist/utils/charge' +import {Wallet} from '@ethersproject/wallet' export default class IssueToken extends Command { static description = @@ -34,6 +36,19 @@ export default class IssueToken extends Command { required: false, description: 'TokenURI to link with the issued token', }), + forwarder: Flags.string({ + char: 'x', + name: 'forwarder', + required: false, + description: 'Forward the transaction to the forwarder contract', + }), + charge: Flags.custom({ + char: 'a', + name: 'charge', + required: false, + parse: async (input: string) => BigNumber.from(input), + description: 'Charge in native tokens for the transaction', + })(), }; static args = [ @@ -58,6 +73,21 @@ export default class IssueToken extends Command { const gateway = await makeGatewayTs(parsedFlags) + if (flags.forwarder) { + const charge = (flags.charge) ? + makeWeiCharge(flags.charge, (gateway.providerOrWallet as Wallet).address) : + undefined + + const tx = await gateway + .forward(flags.forwarder) + .issue(ownerAddress, parsedFlags.gatekeeperNetwork, expiry, bitmask, charge) + + this.log(`Transaction data: ${tx.data}`) + this.log(`Recipient: ${tx.to}`) + this.log(`Value: ${tx.value}`) + return + } + const sendableTransaction = await gateway.issue( ownerAddress, parsedFlags.gatekeeperNetwork, expiry, bitmask, ) diff --git a/ethereum/gatekeeper-cli/yarn.lock b/ethereum/gatekeeper-cli/yarn.lock index 2392066a0..40c9e1926 100644 --- a/ethereum/gatekeeper-cli/yarn.lock +++ b/ethereum/gatekeeper-cli/yarn.lock @@ -600,10 +600,10 @@ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@identity.com/gateway-eth-ts@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@identity.com/gateway-eth-ts/-/gateway-eth-ts-0.7.1.tgz#56f8e93d47a789bfcbb615fe6cb97c00ee0eb958" - integrity sha512-fMCsVYOGEylttA+ZcWtt/SnOw+O1o+D6Kgsy1yKX7Vo3tQhACjk4VNxF6c7/bkuaYrh0shGoRYCGEKPDqbR00w== +"@identity.com/gateway-eth-ts@0.8.0-alpha.0": + version "0.8.0-alpha.0" + resolved "https://registry.yarnpkg.com/@identity.com/gateway-eth-ts/-/gateway-eth-ts-0.8.0-alpha.0.tgz#01fc7dd3e5769245fc40e697c6f60df4327f1b3f" + integrity sha512-0SZ6MRhIqgPofYImz7n8tHhOGSwzQFhWwugNln5PJ5JUT5BASluNDYI14fUFl+hWg1eN6Gab2XQYb9fanbvFUw== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/abstract-signer" "^5.7.0" diff --git a/ethereum/gateway-eth-ts/package.json b/ethereum/gateway-eth-ts/package.json index f505d4e23..956de3524 100644 --- a/ethereum/gateway-eth-ts/package.json +++ b/ethereum/gateway-eth-ts/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/gateway-eth-ts", - "version": "0.7.1", + "version": "0.8.0-alpha.0", "description": "Adapter library for Identity.com gateway token system on Ethereum", "main": "dist/index.js", "scripts": { diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/ChargeHandler.sol/ChargeHandler.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/ChargeHandler.sol/ChargeHandler.dbg.json index dfd85dced..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/ChargeHandler.sol/ChargeHandler.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/ChargeHandler.sol/ChargeHandler.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/ef6a6ff54ef252fafc7b6ec8743a33dc.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/FlagsStorage.sol/FlagsStorage.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/FlagsStorage.sol/FlagsStorage.dbg.json index e8ec9db78..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/FlagsStorage.sol/FlagsStorage.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/FlagsStorage.sol/FlagsStorage.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/FlexibleNonceForwarder.sol/FlexibleNonceForwarder.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/FlexibleNonceForwarder.sol/FlexibleNonceForwarder.dbg.json index e8ec9db78..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/FlexibleNonceForwarder.sol/FlexibleNonceForwarder.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/FlexibleNonceForwarder.sol/FlexibleNonceForwarder.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/Gated.sol/Gated.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/Gated.sol/Gated.dbg.json index 94ce6712e..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/Gated.sol/Gated.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/Gated.sol/Gated.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/bf74cc9ad18feea8d877d24442c76264.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/GatewayToken.sol/GatewayToken.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/GatewayToken.sol/GatewayToken.dbg.json index dfd85dced..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/GatewayToken.sol/GatewayToken.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/GatewayToken.sol/GatewayToken.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/ef6a6ff54ef252fafc7b6ec8743a33dc.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/MultiERC2771Context.sol/MultiERC2771Context.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/MultiERC2771Context.sol/MultiERC2771Context.dbg.json index e8ec9db78..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/MultiERC2771Context.sol/MultiERC2771Context.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/MultiERC2771Context.sol/MultiERC2771Context.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/ParameterizedAccessControl.sol/ParameterizedAccessControl.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/ParameterizedAccessControl.sol/ParameterizedAccessControl.dbg.json index e8ec9db78..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/ParameterizedAccessControl.sol/ParameterizedAccessControl.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/ParameterizedAccessControl.sol/ParameterizedAccessControl.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/TokenBitMask.sol/TokenBitMask.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/TokenBitMask.sol/TokenBitMask.dbg.json index e8ec9db78..991e05e50 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/TokenBitMask.sol/TokenBitMask.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/TokenBitMask.sol/TokenBitMask.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Expirable.sol/IERC721Expirable.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Expirable.sol/IERC721Expirable.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Expirable.sol/IERC721Expirable.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Expirable.sol/IERC721Expirable.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Freezable.sol/IERC721Freezable.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Freezable.sol/IERC721Freezable.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Freezable.sol/IERC721Freezable.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Freezable.sol/IERC721Freezable.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Revokable.sol/IERC721Revokable.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Revokable.sol/IERC721Revokable.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Revokable.sol/IERC721Revokable.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IERC721Revokable.sol/IERC721Revokable.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IFlagsStorage.sol/IFlagsStorage.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IFlagsStorage.sol/IFlagsStorage.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IFlagsStorage.sol/IFlagsStorage.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IFlagsStorage.sol/IFlagsStorage.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IForwarder.sol/IForwarder.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IForwarder.sol/IForwarder.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IForwarder.sol/IForwarder.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IForwarder.sol/IForwarder.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayToken.sol/IGatewayToken.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayToken.sol/IGatewayToken.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayToken.sol/IGatewayToken.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayToken.sol/IGatewayToken.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayTokenVerifier.sol/IGatewayTokenVerifier.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayTokenVerifier.sol/IGatewayTokenVerifier.dbg.json index 1864e2581..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayTokenVerifier.sol/IGatewayTokenVerifier.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IGatewayTokenVerifier.sol/IGatewayTokenVerifier.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/e90570f0523c9a62ad5c3b3205b4263a.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IParameterizedAccessControl.sol/IParameterizedAccessControl.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IParameterizedAccessControl.sol/IParameterizedAccessControl.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IParameterizedAccessControl.sol/IParameterizedAccessControl.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/interfaces/IParameterizedAccessControl.sol/IParameterizedAccessControl.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/abi/library/BitMask.sol/BitMask.dbg.json b/ethereum/gateway-eth-ts/src/contracts/abi/library/BitMask.sol/BitMask.dbg.json index 8ab882078..4b8494ecf 100644 --- a/ethereum/gateway-eth-ts/src/contracts/abi/library/BitMask.sol/BitMask.dbg.json +++ b/ethereum/gateway-eth-ts/src/contracts/abi/library/BitMask.sol/BitMask.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/d872e48dd839b69392452d616f3fdbf2.json" + "buildInfo": "../../../build-info/7d47b4f13bcb8fb36d8ba061796bcb71.json" } diff --git a/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenInternalsTest__factory.ts b/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenInternalsTest__factory.ts index c6e0bbe1b..69870240d 100644 --- a/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenInternalsTest__factory.ts +++ b/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenInternalsTest__factory.ts @@ -43,6 +43,17 @@ const _abi = [ name: "Charge__InsufficientValue", type: "error", }, + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Charge__TransferFailed", + type: "error", + }, { inputs: [], name: "Common__MissingAccount", @@ -1217,6 +1228,11 @@ const _abi = [ name: "network", type: "uint256", }, + { + internalType: "bool", + name: "onlyActive", + type: "bool", + }, ], name: "getTokenIdsByOwnerAndNetwork", outputs: [ @@ -2277,7 +2293,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615fd6620001206000396000818161165e0152818161169e015281816117d701528181611817015261194a0152615fd66000f3fe6080604052600436106104585760003560e01c80637dbded281161024a578063b5d6163511610139578063d7a78db8116100b6578063e71fb1101161007a578063e71fb11014610d61578063e8a3d48514610d81578063e985e9c514610d96578063ff17e23214610de3578063ff85a97514610e0357600080fd5b8063d7a78db814610c97578063df2a7fe114610cb7578063df7f453b14610cd7578063e345e0bc14610d10578063e4b50cb814610d3057600080fd5b8063c2a366fb116100fd578063c2a366fb14610c02578063c58dbbed14610c22578063c87b56dd14610c42578063ce6da01a14610c62578063d6fd317514610c7557600080fd5b8063b5d6163514610b7a578063b86b1a5414610b9a578063b88d4fde14610baf578063babb898d14610bc2578063bfea1f9714610be257600080fd5b806395d89b41116101c7578063a217fddf1161018b578063a217fddf14610ad5578063a22cb46514610aea578063a578c09314610b0a578063a8fa8e0d14610b3a578063b4bd857914610b5a57600080fd5b806395d89b4114610a4057806395ea571714610a555780639c7525e614610a755780639cc7f70814610a95578063a05b775f14610ab557600080fd5b8063840f71131161020e578063840f7113146109be5780638423df79146109de5780638cb0a511146109f25780638eb7a77614610a0057806390eddd5214610a2057600080fd5b80637dbded281461091c578063805618a11461093c57806381e9ff191461095c57806382d66d5f1461097e57806383b2b2761461099e57600080fd5b80633568dd291161036657806352d1902d116102e35780636dba2729116102a75780636dba2729146108855780636f7caf41146108a557806370a08231146108c757806370f08160146108e75780637a6ce2e11461090757600080fd5b806352d1902d146107f0578063572b6c05146108055780635c41d2fe146108255780636352211e146108455780636623fc461461086557600080fd5b806342966c681161032a57806342966c681461075d5780634d93172d1461077d5780634f1ef2861461079d5780634f6ccce7146107b057806351da912d146107d057600080fd5b80633568dd29146106c85780633659cfe6146106e857806336e45041146107085780633e7e86691461072857806342842e0e1461074a57600080fd5b806320c5429b116103f45780632f745c59116103b85780632f745c591461061f578063310ed7f01461063f57806331416a291461065257806334d7a95e1461067257806334e37b8a146106a857600080fd5b806320c5429b1461059957806323287f24146105b957806323b872dd146105cc578063263f3e7e146105df5780632d33d27a146105ff57600080fd5b806301ffc9a71461045d57806306fdde0314610492578063081812fc146104b4578063095ea7b3146104e157806309c3dd87146104f65780630f485c02146105165780631442f52114610537578063157000521461056457806318160ddd14610584575b600080fd5b34801561046957600080fd5b5061047d610478366004615103565b610e23565b60405190151581526020015b60405180910390f35b34801561049e57600080fd5b506104a7610e84565b6040516104899190615178565b3480156104c057600080fd5b506104d46104cf36600461518b565b610f16565b60405161048991906151a4565b6104f46104ef3660046151cf565b610f68565b005b34801561050257600080fd5b506104a761051136600461518b565b610f81565b6105296105243660046151f9565b611082565b604051908152602001610489565b34801561054357600080fd5b506105576105523660046151cf565b6110c1565b604051610489919061522e565b34801561057057600080fd5b506104f461057f366004615272565b611178565b34801561059057600080fd5b50609d54610529565b3480156105a557600080fd5b506104f46105b436600461518b565b6111d8565b6104f46105c73660046152a5565b61122c565b6104f46105da3660046152f7565b6112b1565b3480156105eb57600080fd5b506105296105fa36600461518b565b6112f7565b34801561060b57600080fd5b5060cc546104d4906001600160a01b031681565b34801561062b57600080fd5b5061052961063a3660046151cf565b61133f565b6104f461064d366004615323565b6113e0565b34801561065e57600080fd5b506104f461066d366004615390565b6113fd565b34801561067e57600080fd5b506104d461068d36600461518b565b600090815260d260205260409020546001600160a01b031690565b3480156106b457600080fd5b506104f46106c3366004615272565b611622565b3480156106d457600080fd5b506104f46106e33660046151cf565b611636565b3480156106f457600080fd5b506104f4610703366004615272565b611653565b34801561071457600080fd5b506104f461072336600461547d565b611719565b34801561073457600080fd5b50609a5460405160ff9091168152602001610489565b6104f46107583660046152f7565b61176f565b34801561076957600080fd5b506104f461077836600461518b565b61178a565b34801561078957600080fd5b506104f4610798366004615272565b61179f565b6104f46107ab366004615575565b6117cc565b3480156107bc57600080fd5b506105296107cb36600461518b565b611882565b3480156107dc57600080fd5b506104f46107eb3660046155c2565b611913565b3480156107fc57600080fd5b5061052961193d565b34801561081157600080fd5b5061047d610820366004615272565b6119eb565b34801561083157600080fd5b506104f4610840366004615272565b611a09565b34801561085157600080fd5b506104d461086036600461518b565b611a39565b34801561087157600080fd5b506104f461088036600461518b565b611aa9565b34801561089157600080fd5b5061047d6108a03660046151cf565b611abe565b3480156108b157600080fd5b50610529600080516020615f1a83398151915281565b3480156108d357600080fd5b506105296108e2366004615272565b611ad9565b3480156108f357600080fd5b506104f46109023660046151cf565b611b61565b34801561091357600080fd5b506104f4611b7a565b34801561092857600080fd5b506104f46109373660046155f2565b611bba565b34801561094857600080fd5b506104f461095736600461518b565b611da9565b34801561096857600080fd5b50610529600080516020615e9a83398151915281565b34801561098a57600080fd5b506104f46109993660046151cf565b611e22565b3480156109aa57600080fd5b506104f46109b93660046155c2565b611e3b565b3480156109ca57600080fd5b5060a0546104d4906001600160a01b031681565b3480156109ea57600080fd5b50600161047d565b6104f46104ef3660046151f9565b348015610a0c57600080fd5b506104f4610a1b36600461547d565b611e65565b348015610a2c57600080fd5b506104f4610a3b3660046151cf565b611e85565b348015610a4c57600080fd5b506104a7611e9e565b348015610a6157600080fd5b506104a7610a7036600461518b565b611ead565b348015610a8157600080fd5b506104f4610a90366004615655565b611f4f565b348015610aa157600080fd5b50610529610ab036600461518b565b611ffe565b348015610ac157600080fd5b50610529610ad036600461518b565b612046565b348015610ae157600080fd5b50610529600081565b348015610af657600080fd5b506104f4610b053660046156a0565b612064565b348015610b1657600080fd5b5061047d610b2536600461518b565b60ce6020526000908152604090205460ff1681565b348015610b4657600080fd5b506104f4610b553660046152f7565b612076565b348015610b6657600080fd5b50610529610b7536600461518b565b6121be565b348015610b8657600080fd5b506104f4610b9536600461547d565b6121d2565b348015610ba657600080fd5b506104f46121f2565b6104f4610bbd3660046156d7565b61222d565b348015610bce57600080fd5b5061047d610bdd36600461547d565b612260565b348015610bee57600080fd5b5061047d610bfd36600461573e565b612291565b348015610c0e57600080fd5b5061047d610c1d3660046151cf565b6122c4565b348015610c2e57600080fd5b506104f4610c3d366004615272565b6122df565b348015610c4e57600080fd5b506104a7610c5d36600461518b565b61233c565b6104f4610c70366004615767565b6123db565b348015610c8157600080fd5b50610529600080516020615eba83398151915281565b348015610ca357600080fd5b506104f4610cb236600461518b565b6123fa565b348015610cc357600080fd5b50610529610cd23660046155c2565b61240f565b348015610ce357600080fd5b5061047d610cf2366004615272565b6001600160a01b0316600090815260cb602052604090205460ff1690565b348015610d1c57600080fd5b50610529610d2b366004615794565b61242e565b348015610d3c57600080fd5b50610d50610d4b36600461518b565b612462565b6040516104899594939291906157c0565b348015610d6d57600080fd5b506104f4610d7c366004615272565b6124c2565b348015610d8d57600080fd5b506104a76124d3565b348015610da257600080fd5b5061047d610db1366004615801565b6001600160a01b039182166000908152609f602090815260408083209390941682526002909201909152205460ff1690565b348015610def57600080fd5b5061047d610dfe3660046151cf565b6125dc565b348015610e0f57600080fd5b5061047d610e1e36600461518b565b61264d565b60006001600160e01b03198216630354d60560e61b1480610e5457506001600160e01b031982166380ac58cd60e01b145b80610e6f57506001600160e01b031982166370b0048160e11b145b80610e7e5750610e7e8261265a565b92915050565b606060988054610e939061582b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebf9061582b565b8015610f0c5780601f10610ee157610100808354040283529160200191610f0c565b820191906000526020600020905b815481529060010190602001808311610eef57829003601f168201915b5050505050905090565b6000610f218261268f565b6000828152609e6020526040902054609d80549091908110610f4557610f45615860565b60009182526020909120600460069092020101546001600160a01b031692915050565b60405163c03a3ff560e01b815260040160405180910390fd5b60606000610f9a60408051602081019091526000815290565b60a0549091506001600160a01b0316610ffa576000815111610fcb576040518060200160405280600081525061107b565b80610fd5846126b4565b604051602001610fe6929190615876565b60405160208183030381529060405261107b565b60a054604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b60006040518083038186803b15801561103f57600080fd5b505afa158015611053573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261107b91908101906158b6565b9392505050565b600061109661108f612750565b858461275f565b61109f846127da565b90506110b683826110af876112f7565b60006127e4565b61107b84828461290b565b60606000806110d08585612bea565b915091506000816001600160401b038111156110ee576110ee6154b2565b604051908082528060200260200182016040528015611117578160200160208202803683370190505b50905060005b8281101561116e5783818151811061113757611137615860565b602002602001015182828151811061115157611151615860565b60209081029190910101528061116681615939565b91505061111d565b5095945050505050565b611180612cb7565b6040516001600160a01b038216907f286f82d2b1e37b5e9f33e455d014b4a5f6c29388e6e41e1281d4c83e04f4265590600090a26001600160a01b0316600090815260cb60205260409020805460ff19166001179055565b6111e96111e4826112f7565b612cc9565b600081815260cf6020526040808220805460ff191660021790555182917fdb43aa42235c8d63908794a952603e8d43a549383d13123c3d893a3fc2e6249591a250565b61123584612cc9565b61123e81612ce1565b600061124c86866001612f95565b9050831561126657600081815260d0602052604090208490555b8215611276576112768184612fad565b61127e612750565b600091825260d2602052604090912080546001600160a01b0319166001600160a01b039092169190911790555050505050565b6112c26112bc612750565b50600090565b6112e75760405162461bcd60e51b81526004016112de9061596a565b60405180910390fd5b6112f2838383612ffc565b505050565b60006113028261268f565b6000828152609e6020526040902054609d8054909190811061132657611326615860565b9060005260206000209060060201600101549050919050565b600061134a83611ad9565b82106113a35760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016112de565b6001600160a01b0383166000908152609f602052604090208054839081106113cd576113cd615860565b9060005260206000200154905092915050565b6113f26113eb612750565b848361275f565b6112f283838361290b565b600054610100900460ff161580801561141d5750600054600160ff909116105b8061143e575061142c3061314b565b15801561143e575060005460ff166001145b61145a5760405162461bcd60e51b81526004016112de906159bc565b6000805460ff19166001179055801561147d576000805461ff0019166101001790555b6001600160a01b0385166114a457604051630ca2c90160e21b815260040160405180910390fd5b6001600160a01b0384166114cb57604051630ca2c90160e21b815260040160405180910390fd5b60005b828110156115395760008484838181106114ea576114ea615860565b90506020020160208101906114ff9190615272565b6001600160a01b0316141561152757604051630ca2c90160e21b815260040160405180910390fd5b8061153181615939565b9150506114ce565b506115ad89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a90819084018382808284376000920182905250925061315a915050565b6115b7838361318c565b6115c08461324e565b6001600160a01b038516600090815260cb60205260409020805460ff191660011790558015611617576000805461ff001916905560405160018152600080516020615f3a8339815191529060200160405180910390a15b505050505050505050565b61162a612cb7565b6116338161324e565b50565b61164f600080516020615eba8339815191528284611e65565b5050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561169c5760405162461bcd60e51b81526004016112de90615a0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116ce613298565b6001600160a01b0316146116f45760405162461bcd60e51b81526004016112de90615a56565b6116fd816132b4565b60408051600080825260208201909252611633918391906132bc565b611721612750565b6001600160a01b0316816001600160a01b031614611764576040516307ca099360e31b8152600481018490526001600160a01b03821660248201526044016112de565b6112f2838383613436565b6112f28383836040518060200160405280600081525061222d565b6117966111e4826112f7565b611633816134d2565b6117a7612cb7565b611633816001600160a01b03166000908152609760205260409020805460ff19169055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156118155760405162461bcd60e51b81526004016112de90615a0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611847613298565b6001600160a01b03161461186d5760405162461bcd60e51b81526004016112de90615a56565b611876826132b4565b61164f828260016132bc565b600061188d609d5490565b82106118e75760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016112de565b609d82815481106118fa576118fa615860565b9060005260206000209060060201600001549050919050565b611933600080516020615eba83398151915261192e846112f7565b6135cf565b61164f8282612fad565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119d85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016112de565b50600080516020615efa83398151915290565b6001600160a01b031660009081526097602052604090205460ff1690565b611a11612cb7565b611633816001600160a01b03166000908152609760205260409020805460ff19166001179055565b6000611a448261268f565b6000828152609e6020526040902054609d80549091908110611a6857611a68615860565b60009182526020909120600360069092020101546001600160a01b0316905080611aa45760405162461bcd60e51b81526004016112de90615aa2565b919050565b611ab56111e4826112f7565b611633816135e1565b600061107b600080516020615eba8339815191528385612260565b60006001600160a01b038216611b455760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016112de565b506001600160a01b03166000908152609f602052604090205490565b61164f600080516020615eba83398151915282846121d2565b7f7bf2655c5b27bca5462f1f973c316c9537b2da6083e494b623f3313ad847ec08611ba3612750565b604051611bb091906151a4565b60405180910390a1565b600085815260d1602052604090208054611bd39061582b565b159050611bf657604051636f55f62b60e01b8152600481018690526024016112de565b600085815260d160205260409020611c0f908585614f6d565b508115611d3457600085815260ce60205260409020805460ff19168315151790556001600160a01b038116611c5757604051630ca2c90160e21b815260040160405180910390fd5b611c69816001600160a01b031661314b565b611c88578060405163d4daafa160e01b81526004016112de91906151a4565b611ca1600080516020615e9a8339815191528683613688565b611cba600080516020615f1a8339815191528683613688565b611ce1600080516020615f1a83398151915286600080516020615e9a833981519152613719565b611d08600080516020615eba83398151915286600080516020615e9a833981519152613719565b611d2f600080516020615e9a83398151915286600080516020615e9a833981519152613719565b611da2565b611d54600080516020615f1a83398151915286611d4f612750565b613688565b611d7b600080516020615f1a83398151915286600080516020615f1a833981519152613719565b611da2600080516020615eba83398151915286600080516020615f1a833981519152613719565b5050505050565b611de06040518060400160405280601581526020017443616c6c6564206765744d7367446174612825642960581b81525082613784565b7fb7555489d68d7992c7b1a74fb60c1d5affc6c5cc407edaddcf435089a1a6b8a7611e096137c9565b604051611e17929190615ad5565b60405180910390a150565b61164f600080516020615f1a8339815191528284611e65565b611e53600080516020615f1a833981519152836135cf565b600091825260d3602052604090912055565b611e6f838361240f565b82611e7a82826135cf565b611da2858585613436565b61164f600080516020615f1a83398151915282846121d2565b606060998054610e939061582b565b600081815260d160205260409020805460609190611eca9061582b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef69061582b565b8015611f435780601f10611f1857610100808354040283529160200191611f43565b820191906000526020600020905b815481529060010190602001808311611f2657829003601f168201915b50505050509050919050565b600083815260d1602052604090208054611f689061582b565b15159050611f8c57604051630817886d60e41b8152600481018490526024016112de565b611fa7600080516020615f1a83398151915284610bdd612750565b611fdf57611fb3612750565b83600080516020615f1a83398151915260405163c8c801a760e01b81526004016112de93929190615b04565b600083815260d160205260409020611ff8908383614f6d565b50505050565b60006120098261268f565b6000828152609e6020526040902054609d8054909190811061202d5761202d615860565b9060005260206000209060060201600201549050919050565b6000612051826137dc565b50600090815260d0602052604090205490565b61164f61206f612750565b8383613805565b600081815260ce602052604090205460ff166120a85760405163db53ce7160e01b8152600481018290526024016112de565b6120c1600080516020615e9a83398151915282856138d9565b6001600160a01b0382166120e857604051630ca2c90160e21b815260040160405180910390fd5b612101600080516020615e9a83398151915282846121d2565b61211a600080516020615f1a83398151915282846121d2565b612133600080516020615eba83398151915282846121d2565b61214c600080516020615eba8339815191528285611e65565b612165600080516020615f1a8339815191528285611e65565b61217e600080516020615e9a8339815191528285611e65565b7f744258a28673e8738e2812c0ab8e8dbd70352f8871b1febac0dd753d96d79f588383836040516121b193929190615b25565b60405180910390a1505050565b600081815260cd6020526040812054610e7e565b6121dc838361240f565b826121e782826135cf565b611da2858585613688565b6122026121fd612750565b6132b4565b6040517f196e5e7c3b25979d0bf02b0f686399eb501ef6085673d009cf76369bdc11363890600090a1565b6122386112bc612750565b6122545760405162461bcd60e51b81526004016112de9061596a565b611ff884848484613907565b600091825260ca602090815260408084209484529381528383206001600160a01b0392909216835252205460ff1690565b600061107b8280156122a5576122a5615954565b600085815260d3602052604090205490600160ff919091161b16151590565b600061107b600080516020615f1a8339815191528385612260565b6122e7612cb7565b6040516001600160a01b038216907ffb445f6ec07647d2bb7af72821e6b8b7303ec375e934d4a338d38ed5846c2d5690600090a26001600160a01b0316600090815260cb60205260409020805460ff19169055565b60606123478261268f565b600061235e60408051602081019091526000815290565b60a0549091506001600160a01b03166123aa57600081511161238f576040518060200160405280600081525061107b565b80612399846126b4565b604051602001610fe6929190615b49565b60a0546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401611027565b6123e76111e4846112f7565b6123f081612ce1565b6112f2838361397a565b6124066111e4826112f7565b611633816139d6565b600090815260ca60209081526040808320938352929052206001015490565b60006124398361268f565b506000918252609c602090815260408084206001600160a01b0393909316845291905290205490565b600080606060008061247386611a39565b600087815260cf602052604090205490955060ff16600281111561249957612499615954565b600096875260d0602090815260408089205460cd90925290972054959790969395939450915050565b6124ca612cb7565b61163381613a24565b606060006124ec60408051602081019091526000815290565b60a0549091506001600160a01b031661254c57600081511161251d57604051806020016040528060008152506125d6565b8061252730613a6e565b604051602001612538929190615b78565b6040516020818303038152906040526125d6565b60a060009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561259a57600080fd5b505afa1580156125ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125d691908101906158b6565b91505090565b60008060006125eb8585612bea565b9150915060005b818110156126415761261e83828151811061260f5761260f615860565b60200260200101516000613a84565b1561262f5760019350505050610e7e565b8061263981615939565b9150506125f2565b50600095945050505050565b6000610e7e826000613a84565b60006001600160e01b031982166333cb74f560e11b1480610e7e57506301ffc9a760e01b6001600160e01b0319831614610e7e565b61269881613b98565b6116335760405162461bcd60e51b81526004016112de90615aa2565b606060006126c183613be4565b60010190506000816001600160401b038111156126e0576126e06154b2565b6040519080825280601f01601f19166020018201604052801561270a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461274357612748565b612714565b509392505050565b600061275a613cbc565b905090565b600061276b838561242e565b90506000198114611ff857818110156127c65760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e63650060448201526064016112de565b611ff883856127d58585615bbc565b613cde565b6000610e7e613e0d565b6001600160a01b0384166128445760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016112de565b8261289b5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b60648201526084016112de565b6128a483613b98565b156128f15760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e74656400000060448201526064016112de565b6128fc848484613e24565b6129068382613ed8565b611ff8565b61291483613b98565b6129705760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b60648201526084016112de565b61297982613b98565b6129d35760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b60648201526084016112de565b6000838152609e6020526040812054609d805490919081106129f7576129f7615860565b906000526020600020906006020190506000609d609e60008681526020019081526020016000205481548110612a2f57612a2f615860565b906000526020600020906006020190508282600201541015612aa65760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016112de565b8060010154826001015414612b145760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b60648201526084016112de565b82826002016000828254612b289190615bbc565b9250508190555082816002016000828254612b439190615bd3565b909155505060405183815284908690600080516020615eda8339815191529060200160405180910390a3612b8885858560405180602001604052806000815250613f4b565b611da25760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b60648201526084016112de565b6060600080612bf885611ad9565b90506000816001600160401b03811115612c1457612c146154b2565b604051908082528060200260200182016040528015612c3d578160200160208202803683370190505b5090506000805b83811015612ca8576000612c58898361133f565b905087612c64826112f7565b1415612c9557808484612c7681615939565b955081518110612c8857612c88615860565b6020026020010181815250505b5080612ca081615939565b915050612c44565b509093509150505b9250929050565b612cc7612cc2612750565b6140ac565b565b611633600080516020615eba833981519152826135cf565b6001612cf36040830160208401615bfa565b6002811115612d0457612d04615954565b1415612db6578035341015612d35576040516365a2b20160e01b8152346004820152813560248201526044016112de565b612d4560a0820160808301615272565b6040516001600160a01b039190911690823580156108fc02916000818181858888f19350505050158015612d7d573d6000803e3d6000fd5b507f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a81604051612dad9190615c33565b60405180910390a15b6002612dc86040830160208401615bfa565b6002811115612dd957612dd9615954565b1415611633576000612df16060830160408401615272565b905060006001600160a01b03821663dd62ed3e612e146080860160608701615272565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260440160206040518083038186803b158015612e5957600080fd5b505afa158015612e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e919190615c9f565b90508235811015612ebf5760405163355cd54b60e01b815260048101829052833560248201526044016112de565b6001600160a01b0382166323b872dd612ede6080860160608701615272565b612eee60a0870160808801615272565b6040516001600160e01b031960e085901b168152612f13929190883590600401615b25565b602060405180830381600087803b158015612f2d57600080fd5b505af1158015612f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f659190615cb8565b507f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a836040516121b19190615c33565b6000612f9f613e0d565b905061107b848285856127e4565b600082815260cd602090815260409182902083905581518481529081018390527f5e07998cef9cea674942c66f0ea7b0bce89ab9473ce240cc93d616c3491f8aeb910160405180910390a15050565b826001600160a01b031661300f82611a39565b6001600160a01b0316146130715760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b60648201526084016112de565b6001600160a01b0382166130d55760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016112de565b60006130e0826112f7565b905060006130ed83611ffe565b90506130fa6000846140e7565b6131038361417e565b61310d8584614229565b613117848461434a565b82846001600160a01b0316866001600160a01b0316600080516020615f8183398151915260405160405180910390a4611da2565b6001600160a01b03163b151590565b600054610100900460ff166131815760405162461bcd60e51b81526004016112de90615cd5565b6112f28383836143d3565b600054610100900460ff16158080156131ac5750600054600160ff909116105b806131cd57506131bb3061314b565b1580156131cd575060005460ff166001145b6131e95760405162461bcd60e51b81526004016112de906159bc565b6000805460ff19166001179055801561320c576000805461ff0019166101001790555b61321461443a565b61321e8383614461565b80156112f2576000805461ff001916905560405160018152600080516020615f3a833981519152906020016121b1565b60cc80546001600160a01b0319166001600160a01b0383169081179091556040517f5e4a30f4224898dbac86adca855a5edd3b8341a3aeb2b6ff0f0b5a82c013b65a90600090a250565b600080516020615efa833981519152546001600160a01b031690565b611633612cb7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156132ef576112f283614584565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561332857600080fd5b505afa925050508015613358575060408051601f3d908101601f1916820190925261335591810190615c9f565b60015b6133bb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016112de565b600080516020615efa833981519152811461342a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016112de565b506112f283838361461e565b613441838383612260565b156112f257600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff19169055613480612750565b6001600160a01b0316816001600160a01b0316847f6f9148fcdc32766ca802c14716295d56eab7ed848d0dba113966f40087c88390856040516134c591815260200190565b60405180910390a4505050565b6134db8161268f565b6000818152609e6020526040812054609d805490919081106134ff576134ff615860565b60009182526020909120600691909102016003810154600182015460028301549293506001600160a01b03909116916135378561417e565b6135418386614229565b61354a85614643565b600085600080516020615eda8339815191528360405161356c91815260200190565b60405180910390a3600082867fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a460405185906000906001600160a01b03861690600080516020615f81833981519152908390a4611da2565b61164f82826135dc612750565b6138d9565b6135ea816137dc565b6001600082815260cf602052604090205460ff16600281111561360f5761360f615954565b1461364857600081815260cf6020526040908190205490516308c9ef2d60e11b81526112de91839160ff90911690600190600401615d20565b600081815260cf6020526040808220805460ff191690555182917fe2babfd5e77285a3c3dbc4b25592cbe4a7a26e97a7ac63067a22ebdaa9b82add91a250565b613693838383612260565b6112f257600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff191660011790556136d4612750565b6001600160a01b0316816001600160a01b0316847f4dc88bd74ca601684356789d5b3dbc9cd44275b2544e8d35041203703b768232856040516134c591815260200190565b6000613725848461240f565b600084815260ca6020908152604080832088845282529182902060010185905590518581529192508391839187917f15f4a36186b2284157fe71215a07487f6c8bdc1203b3307c3e1fd9693011d3d3910160405180910390a450505050565b61164f828260405160240161379a929190615d4d565b60408051601f198184030181529190526020810180516001600160e01b0316632d839cb360e21b179052614851565b3660006137d4614872565b915091509091565b6137e581613b98565b611633576040516321fbdd2b60e11b8152600481018290526024016112de565b816001600160a01b0316836001600160a01b031614156138675760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c657200000000000060448201526064016112de565b6001600160a01b038381166000818152609f602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6138e4838383612260565b6112f25780828460405163c8c801a760e01b81526004016112de93929190615b04565b613912848484612ffc565b61391e848484846148a7565b611ff85760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b60648201526084016112de565b613985826001614a0a565b600082815260d06020526040908190208290555182907f1ebc57da8b3ebab98506502fbb73232ea29fbe86e4963a5a8c004810ad11190d906139ca9084815260200190565b60405180910390a25050565b6139e1816001614a0a565b600081815260cf6020526040808220805460ff191660011790555182917f779fbee689bbd6f006ecb329206d35c7db7380f9837a8826fb8dc5cfcd3d33dd91a250565b60a080546001600160a01b0319166001600160a01b0383169081179091556040517f5252f52e45fc8ee6a7b43cef3645d23e9a470a34182b8b3a12627556635bfc9c90600090a250565b6060610e7e6001600160a01b0383166014614a3c565b600082815260cf602052604081205460ff1681816002811115613aa957613aa9615954565b14613ab8576000915050610e7e565b6000613ac3856112f7565b9050613ad0816000612291565b15613b2557600085815260d260205260409020546001600160a01b03168015801590613b125750613b10600080516020615eba8339815191528383612260565b155b15613b235760009350505050610e7e565b505b6000613b3086611a39565b600087815260d0602052604090205490915015801590613b4e575084155b15613b83576001600160a01b03811615801590613b795750600086815260d060205260409020544211155b9350505050610e7e565b6001600160a01b031615159250610e7e915050565b609d5460009015801590610e7e57506000828152609e6020526040902054609d80548492908110613bcb57613bcb615860565b9060005260206000209060060201600001541492915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613c235772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613c4f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613c6d57662386f26fc10000830492506010015b6305f5e1008310613c85576305f5e100830492506008015b6127108310613c9957612710830492506004015b60648310613cab576064830492506002015b600a8310610e7e5760010192915050565b6000613cc7336119eb565b15613cd9575060131936013560601c90565b503390565b6001600160a01b038216613d475760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b60648201526084016112de565b613d518284614bd7565b613db7576000838152609e6020526040902054609d80549091908110613d7957613d79615860565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b6000838152609c602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91016138cc565b6000613e1d609b80546001019055565b50609b5490565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050613e7281614cab565b613e7c848461434a565b60405183906001600160a01b03861690600090600080516020615f81833981519152908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152609e6020526040902054609d80548392908110613efc57613efc615860565b90600052602060002090600602016002016000828254613f1c9190615bd3565b90915550506040518181528290600090600080516020615eda8339815191529060200160405180910390a35050565b600080613f5785611a39565b9050613f6b816001600160a01b031661314b565b8015613fef57506040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015613fb757600080fd5b505afa158015613fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fef9190615cb8565b1561409e576000816001600160a01b0316629ce20b61400c612750565b898989896040518663ffffffff1660e01b8152600401614030959493929190615d6f565b602060405180830381600087803b15801561404a57600080fd5b505af115801561405e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140829190615dad565b6001600160e01b031916629ce20b60e01b1492506140a4915050565b60019150505b949350505050565b6001600160a01b038116600090815260cb602052604090205460ff166116335780604051632957ccdd60e21b81526004016112de91906151a4565b6000818152609e6020526040902054609d8054849290811061410b5761410b615860565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b039283161790558190831661414582611a39565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152609e6020526040812054609d805490919081106141a2576141a2615860565b600091825260208220600560069092020190810154909250905b8181101561421a5760008360050182815481106141db576141db615860565b6000918252602080832090910154878352609c825260408084206001600160a01b0390921684529152812055508061421281615939565b9150506141bc565b506112f2600583016000614ff1565b6000818152609e6020526040812054609d8054909190811061424d5761424d615860565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152609f90915260408120805490919061429c90600190615bbc565b905060008260000182815481106142b5576142b5615860565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106142f2576142f2615860565b6000918252602080832090910192909255838152600186019091526040808220839055868252812055835484908061432c5761432c615dca565b60019003818190600052602060002001600090559055505050505050565b6000818152609e6020526040902054609d8054849290811061436e5761436e615860565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152609f80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600054610100900460ff166143fa5760405162461bcd60e51b81526004016112de90615cd5565b825161440d90609890602086019061500f565b50815161442190609990602085019061500f565b50609a805460ff191660ff929092169190911790555050565b600054610100900460ff16612cc75760405162461bcd60e51b81526004016112de90615cd5565b600054610100900460ff16158080156144815750600054600160ff909116105b806144a257506144903061314b565b1580156144a2575060005460ff166001145b6144be5760405162461bcd60e51b81526004016112de906159bc565b6000805460ff1916600117905580156144e1576000805461ff0019166101001790555b60005b828110156145535760016097600086868581811061450457614504615860565b90506020020160208101906145199190615272565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061454b81615939565b9150506144e4565b5080156112f2576000805461ff001916905560405160018152600080516020615f3a833981519152906020016121b1565b61458d8161314b565b6145ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016112de565b600080516020615efa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61462783614dfd565b6000825111806146345750805b156112f257611ff88383614e3d565b609d5460009061465590600190615bbc565b6000838152609e6020526040812054609d805493945090928490811061467d5761467d615860565b60009182526020918290206040805160c08101825260069093029091018054835260018101548385015260028101548383015260038101546001600160a01b03908116606085015260048201541660808401526005810180548351818702810187019094528084529394919360a08601939283018282801561472857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161470a575b505050505081525050905080609d838154811061474757614747615860565b600091825260209182902083516006909202019081558282015160018201556040830151600282015560608301516003820180546001600160a01b039283166001600160a01b031991821617909155608085015160048401805491909316911617905560a0830151805191926147c592600585019290910190615083565b505081516000908152609e602052604080822085905586825281205550609d8054806147f3576147f3615dca565b60008281526020812060066000199093019283020181815560018101829055600281018290556003810180546001600160a01b03199081169091556004820180549091169055906148476005830182614ff1565b5050905550505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b36600061487e336119eb565b1561489f5760008036614892601482615bbc565b926137d493929190615de0565b6000366137d4565b60006148bb846001600160a01b031661314b565b15614a0257836001600160a01b031663150b7a026148d7612750565b8786866040518563ffffffff1660e01b81526004016148f99493929190615e0a565b602060405180830381600087803b15801561491357600080fd5b505af1925050508015614943575060408051601f3d908101601f1916820190925261494091810190615dad565b60015b6149e8573d808015614971576040519150601f19603f3d011682016040523d82523d6000602084013e614976565b606091505b5080516149e05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016112de565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506140a4565b5060016140a4565b614a148282613a84565b61164f576040516316af84a960e21b81526004810183905281151560248201526044016112de565b60606000614a4b836002615e47565b614a56906002615bd3565b6001600160401b03811115614a6d57614a6d6154b2565b6040519080825280601f01601f191660200182016040528015614a97576020820181803683370190505b509050600360fc1b81600081518110614ab257614ab2615860565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614ae157614ae1615860565b60200101906001600160f81b031916908160001a9053506000614b05846002615e47565b614b10906001615bd3565b90505b6001811115614b88576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614b4457614b44615860565b1a60f81b828281518110614b5a57614b5a615860565b60200101906001600160f81b031916908160001a90535060049490941c93614b8181615e66565b9050614b13565b50831561107b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016112de565b6000818152609e6020526040812054609d80548392908110614bfb57614bfb615860565b6000918252602082206005600690920201015491505b81811015614ca0576000848152609e6020526040902054609d80546001600160a01b03881692908110614c4657614c46615860565b90600052602060002090600602016005018281548110614c6857614c68615860565b6000918252602090912001546001600160a01b03161415614c8e57600192505050610e7e565b80614c9881615939565b915050614c11565b506000949350505050565b609d805482516000908152609e6020908152604080832084905560018401855593909152835160069092027fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7b8101928355818501517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7c820155928401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7d84015560608401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7e840180546001600160a01b039283166001600160a01b03199182161790915560808601517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7f8601805491909316911617905560a084015180518594611ff8937fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf80909101920190615083565b614e0681614584565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614e488361314b565b614ea35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016112de565b600080846001600160a01b031684604051614ebe9190615e7d565b600060405180830381855af49150503d8060008114614ef9576040519150601f19603f3d011682016040523d82523d6000602084013e614efe565b606091505b5091509150614f268282604051806060016040528060278152602001615f5a60279139614f2f565b95945050505050565b60608315614f3e57508161107b565b61107b8383815115614f535781518083602001fd5b8060405162461bcd60e51b81526004016112de9190615178565b828054614f799061582b565b90600052602060002090601f016020900481019282614f9b5760008555614fe1565b82601f10614fb45782800160ff19823516178555614fe1565b82800160010185558215614fe1579182015b82811115614fe1578235825591602001919060010190614fc6565b50614fed9291506150d8565b5090565b508054600082559060005260206000209081019061163391906150d8565b82805461501b9061582b565b90600052602060002090601f01602090048101928261503d5760008555614fe1565b82601f1061505657805160ff1916838001178555614fe1565b82800160010185558215614fe1579182015b82811115614fe1578251825591602001919060010190615068565b828054828255906000526020600020908101928215614fe1579160200282015b82811115614fe157825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906150a3565b5b80821115614fed57600081556001016150d9565b6001600160e01b03198116811461163357600080fd5b60006020828403121561511557600080fd5b813561107b816150ed565b60005b8381101561513b578181015183820152602001615123565b83811115611ff85750506000910152565b60008151808452615164816020860160208601615120565b601f01601f19169290920160200192915050565b60208152600061107b602083018461514c565b60006020828403121561519d57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611aa457600080fd5b600080604083850312156151e257600080fd5b6151eb836151b8565b946020939093013593505050565b60008060006060848603121561520e57600080fd5b8335925061521e602085016151b8565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b818110156152665783518352928401929184019160010161524a565b50909695505050505050565b60006020828403121561528457600080fd5b61107b826151b8565b600060a0828403121561529f57600080fd5b50919050565b600080600080600061012086880312156152be57600080fd5b6152c7866151b8565b94506020860135935060408601359250606086013591506152eb876080880161528d565b90509295509295909350565b60008060006060848603121561530c57600080fd5b615315846151b8565b925061521e602085016151b8565b60008060006060848603121561533857600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261536157600080fd5b5081356001600160401b0381111561537857600080fd5b602083019150836020828501011115612cb057600080fd5b60008060008060008060008060a0898b0312156153ac57600080fd5b88356001600160401b03808211156153c357600080fd5b6153cf8c838d0161534f565b909a50985060208b01359150808211156153e857600080fd5b6153f48c838d0161534f565b909850965086915061540860408c016151b8565b955061541660608c016151b8565b945060808b013591508082111561542c57600080fd5b818b0191508b601f83011261544057600080fd5b81358181111561544f57600080fd5b8c60208260051b850101111561546457600080fd5b6020830194508093505050509295985092959890939650565b60008060006060848603121561549257600080fd5b83359250602084013591506154a9604085016151b8565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156154f0576154f06154b2565b604052919050565b60006001600160401b03821115615511576155116154b2565b50601f01601f191660200190565b600082601f83011261553057600080fd5b813561554361553e826154f8565b6154c8565b81815284602083860101111561555857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561558857600080fd5b615591836151b8565b915060208301356001600160401b038111156155ac57600080fd5b6155b88582860161551f565b9150509250929050565b600080604083850312156155d557600080fd5b50508035926020909101359150565b801515811461163357600080fd5b60008060008060006080868803121561560a57600080fd5b8535945060208601356001600160401b0381111561562757600080fd5b6156338882890161534f565b9095509350506040860135615647816155e4565b91506152eb606087016151b8565b60008060006040848603121561566a57600080fd5b8335925060208401356001600160401b0381111561568757600080fd5b6156938682870161534f565b9497909650939450505050565b600080604083850312156156b357600080fd5b6156bc836151b8565b915060208301356156cc816155e4565b809150509250929050565b600080600080608085870312156156ed57600080fd5b6156f6856151b8565b9350615704602086016151b8565b92506040850135915060608501356001600160401b0381111561572657600080fd5b6157328782880161551f565b91505092959194509250565b6000806040838503121561575157600080fd5b823591506020830135600181106156cc57600080fd5b600080600060e0848603121561577c57600080fd5b83359250602084013591506154a9856040860161528d565b600080604083850312156157a757600080fd5b823591506157b7602084016151b8565b90509250929050565b6001600160a01b038616815260ff8516602082015260a0604082018190526000906157ed9083018661514c565b606083019490945250608001529392505050565b6000806040838503121561581457600080fd5b61581d836151b8565b91506157b7602084016151b8565b600181811c9082168061583f57607f821691505b6020821081141561529f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008351615888818460208801615120565b64736c6f742f60d81b90830190815283516158aa816005840160208801615120565b01600501949350505050565b6000602082840312156158c857600080fd5b81516001600160401b038111156158de57600080fd5b8201601f810184136158ef57600080fd5b80516158fd61553e826154f8565b81815285602083850101111561591257600080fd5b614f26826020830160208601615120565b634e487b7160e01b600052601160045260246000fd5b600060001982141561594d5761594d615923565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b602080825260199082015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b604082015260600190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008351615b5b818460208801615120565b835190830190615b6f818360208801615120565b01949350505050565b60008351615b8a818460208801615120565b68636f6e74726163742f60b81b9083019081528351615bb0816009840160208801615120565b01600901949350505050565b600082821015615bce57615bce615923565b500390565b60008219821115615be657615be6615923565b500190565b803560038110611aa457600080fd5b600060208284031215615c0c57600080fd5b61107b82615beb565b6003811061163357634e487b7160e01b600052602160045260246000fd5b8135815260a08101615c4760208401615beb565b615c5081615c15565b6020830152615c61604084016151b8565b6001600160a01b03818116604085015280615c7e606087016151b8565b16606085015280615c91608087016151b8565b166080850152505092915050565b600060208284031215615cb157600080fd5b5051919050565b600060208284031215615cca57600080fd5b815161107b816155e4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260608101615d3084615c15565b836020830152615d3f83615c15565b826040830152949350505050565b604081526000615d60604083018561514c565b90508260208301529392505050565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000615da260a083018461514c565b979650505050505050565b600060208284031215615dbf57600080fd5b815161107b816150ed565b634e487b7160e01b600052603160045260246000fd5b60008085851115615df057600080fd5b83861115615dfd57600080fd5b5050820193919092039150565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615e3d9083018461514c565b9695505050505050565b6000816000190483118215151615615e6157615e61615923565b500290565b600081615e7557615e75615923565b506000190190565b60008251615e8f818460208701615120565b919091019291505056fefca69b310bd19d275687ebe00b254b0772cf7a367c3f81a9a5a433f831fdc1dc3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc6360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc449b0a7e0acc0a95c71947cb19fdd122b42abca9bdfbd6707ca4f1e3fdaef05e7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fc30580892c1ab2f2551a9eeed6af6f47971559617f24b0cb65aed16a5f6d32764736f6c63430008090033"; + "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615f8f62000120600039600081816115a8015281816115e8015281816117210152818161176101526118940152615f8f6000f3fe6080604052600436106104585760003560e01c8063805618a11161024a578063b86b1a5411610139578063df2a7fe1116100b6578063e8a3d4851161007a578063e8a3d48514610d54578063e985e9c514610d69578063f415999014610db6578063ff17e23214610de3578063ff85a97514610e0357600080fd5b8063df2a7fe114610c8a578063df7f453b14610caa578063e345e0bc14610ce3578063e4b50cb814610d03578063e71fb11014610d3457600080fd5b8063c58dbbed116100fd578063c58dbbed14610bf5578063c87b56dd14610c15578063ce6da01a14610c35578063d6fd317514610c48578063d7a78db814610c6a57600080fd5b8063b86b1a5414610b6d578063b88d4fde14610b82578063babb898d14610b95578063bfea1f9714610bb5578063c2a366fb14610bd557600080fd5b806395ea5717116101c7578063a22cb4651161018b578063a22cb46514610abd578063a578c09314610add578063a8fa8e0d14610b0d578063b4bd857914610b2d578063b5d6163514610b4d57600080fd5b806395ea571714610a285780639c7525e614610a485780639cc7f70814610a68578063a05b775f14610a88578063a217fddf14610aa857600080fd5b80638423df791161020e5780638423df79146109b15780638cb0a511146109c55780638eb7a776146109d357806390eddd52146109f357806395d89b4114610a1357600080fd5b8063805618a11461090f57806381e9ff191461092f57806382d66d5f1461095157806383b2b27614610971578063840f71131461099157600080fd5b80633659cfe611610366578063572b6c05116102e35780636f7caf41116102a75780636f7caf411461087857806370a082311461089a57806370f08160146108ba5780637a6ce2e1146108da5780637dbded28146108ef57600080fd5b8063572b6c05146107d85780635c41d2fe146107f85780636352211e146108185780636623fc46146108385780636dba27291461085857600080fd5b80634d93172d1161032a5780634d93172d146107505780634f1ef286146107705780634f6ccce71461078357806351da912d146107a357806352d1902d146107c357600080fd5b80633659cfe6146106bb57806336e45041146106db5780633e7e8669146106fb57806342842e0e1461071d57806342966c681461073057600080fd5b806323287f24116103f4578063310ed7f0116103b8578063310ed7f01461061257806331416a291461062557806334d7a95e1461064557806334e37b8a1461067b5780633568dd291461069b57600080fd5b806323287f241461058c57806323b872dd1461059f578063263f3e7e146105b25780632d33d27a146105d25780632f745c59146105f257600080fd5b806301ffc9a71461045d57806306fdde0314610492578063081812fc146104b4578063095ea7b3146104e157806309c3dd87146104f65780630f485c0214610516578063157000521461053757806318160ddd1461055757806320c5429b1461056c575b600080fd5b34801561046957600080fd5b5061047d610478366004615097565b610e23565b60405190151581526020015b60405180910390f35b34801561049e57600080fd5b506104a7610e84565b604051610489919061510c565b3480156104c057600080fd5b506104d46104cf36600461511f565b610f16565b6040516104899190615138565b6104f46104ef366004615163565b610f68565b005b34801561050257600080fd5b506104a761051136600461511f565b610f81565b61052961052436600461518d565b611082565b604051908152602001610489565b34801561054357600080fd5b506104f46105523660046151c2565b6110c1565b34801561056357600080fd5b50609d54610529565b34801561057857600080fd5b506104f461058736600461511f565b611121565b6104f461059a3660046151f5565b611175565b6104f46105ad366004615247565b6111fb565b3480156105be57600080fd5b506105296105cd36600461511f565b611241565b3480156105de57600080fd5b5060cc546104d4906001600160a01b031681565b3480156105fe57600080fd5b5061052961060d366004615163565b611289565b6104f4610620366004615273565b61132a565b34801561063157600080fd5b506104f46106403660046152e7565b611347565b34801561065157600080fd5b506104d461066036600461511f565b600090815260d260205260409020546001600160a01b031690565b34801561068757600080fd5b506104f46106963660046151c2565b61156c565b3480156106a757600080fd5b506104f46106b6366004615163565b611580565b3480156106c757600080fd5b506104f46106d63660046151c2565b61159d565b3480156106e757600080fd5b506104f46106f63660046153d4565b611663565b34801561070757600080fd5b50609a5460405160ff9091168152602001610489565b6104f461072b366004615247565b6116b9565b34801561073c57600080fd5b506104f461074b36600461511f565b6116d4565b34801561075c57600080fd5b506104f461076b3660046151c2565b6116e9565b6104f461077e3660046154cc565b611716565b34801561078f57600080fd5b5061052961079e36600461511f565b6117cc565b3480156107af57600080fd5b506104f46107be366004615519565b61185d565b3480156107cf57600080fd5b50610529611887565b3480156107e457600080fd5b5061047d6107f33660046151c2565b611935565b34801561080457600080fd5b506104f46108133660046151c2565b611953565b34801561082457600080fd5b506104d461083336600461511f565b611983565b34801561084457600080fd5b506104f461085336600461511f565b6119f3565b34801561086457600080fd5b5061047d610873366004615163565b611a08565b34801561088457600080fd5b50610529600080516020615ed383398151915281565b3480156108a657600080fd5b506105296108b53660046151c2565b611a23565b3480156108c657600080fd5b506104f46108d5366004615163565b611aab565b3480156108e657600080fd5b506104f4611ac4565b3480156108fb57600080fd5b506104f461090a366004615549565b611b04565b34801561091b57600080fd5b506104f461092a36600461511f565b611cf3565b34801561093b57600080fd5b50610529600080516020615e5383398151915281565b34801561095d57600080fd5b506104f461096c366004615163565b611d35565b34801561097d57600080fd5b506104f461098c366004615519565b611d4e565b34801561099d57600080fd5b5060a0546104d4906001600160a01b031681565b3480156109bd57600080fd5b50600161047d565b6104f46104ef36600461518d565b3480156109df57600080fd5b506104f46109ee3660046153d4565b611d78565b3480156109ff57600080fd5b506104f4610a0e366004615163565b611d98565b348015610a1f57600080fd5b506104a7611db1565b348015610a3457600080fd5b506104a7610a4336600461511f565b611dc0565b348015610a5457600080fd5b506104f4610a633660046155ac565b611e62565b348015610a7457600080fd5b50610529610a8336600461511f565b611f11565b348015610a9457600080fd5b50610529610aa336600461511f565b611f59565b348015610ab457600080fd5b50610529600081565b348015610ac957600080fd5b506104f4610ad83660046155f7565b611f77565b348015610ae957600080fd5b5061047d610af836600461511f565b60ce6020526000908152604090205460ff1681565b348015610b1957600080fd5b506104f4610b28366004615247565b611f89565b348015610b3957600080fd5b50610529610b4836600461511f565b6120d1565b348015610b5957600080fd5b506104f4610b683660046153d4565b6120e5565b348015610b7957600080fd5b506104f4612105565b6104f4610b9036600461562e565b612140565b348015610ba157600080fd5b5061047d610bb03660046153d4565b612173565b348015610bc157600080fd5b5061047d610bd0366004615695565b6121a4565b348015610be157600080fd5b5061047d610bf0366004615163565b6121d7565b348015610c0157600080fd5b506104f4610c103660046151c2565b6121f2565b348015610c2157600080fd5b506104a7610c3036600461511f565b61224f565b6104f4610c433660046156be565b6122ee565b348015610c5457600080fd5b50610529600080516020615e7383398151915281565b348015610c7657600080fd5b506104f4610c8536600461511f565b61230d565b348015610c9657600080fd5b50610529610ca5366004615519565b612322565b348015610cb657600080fd5b5061047d610cc53660046151c2565b6001600160a01b0316600090815260cb602052604090205460ff1690565b348015610cef57600080fd5b50610529610cfe3660046156eb565b612341565b348015610d0f57600080fd5b50610d23610d1e36600461511f565b612375565b604051610489959493929190615717565b348015610d4057600080fd5b506104f4610d4f3660046151c2565b6123d5565b348015610d6057600080fd5b506104a76123e6565b348015610d7557600080fd5b5061047d610d84366004615758565b6001600160a01b039182166000908152609f602090815260408083209390941682526002909201909152205460ff1690565b348015610dc257600080fd5b50610dd6610dd1366004615782565b6124ef565b60405161048991906157c2565b348015610def57600080fd5b5061047d610dfe366004615163565b6125a8565b348015610e0f57600080fd5b5061047d610e1e36600461511f565b6125c2565b60006001600160e01b03198216630354d60560e61b1480610e5457506001600160e01b031982166380ac58cd60e01b145b80610e6f57506001600160e01b031982166370b0048160e11b145b80610e7e5750610e7e826125cf565b92915050565b606060988054610e9390615806565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebf90615806565b8015610f0c5780601f10610ee157610100808354040283529160200191610f0c565b820191906000526020600020905b815481529060010190602001808311610eef57829003601f168201915b5050505050905090565b6000610f2182612604565b6000828152609e6020526040902054609d80549091908110610f4557610f4561583b565b60009182526020909120600460069092020101546001600160a01b031692915050565b60405163c03a3ff560e01b815260040160405180910390fd5b60606000610f9a60408051602081019091526000815290565b60a0549091506001600160a01b0316610ffa576000815111610fcb576040518060200160405280600081525061107b565b80610fd584612629565b604051602001610fe6929190615851565b60405160208183030381529060405261107b565b60a054604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b60006040518083038186803b15801561103f57600080fd5b505afa158015611053573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261107b9190810190615891565b9392505050565b600061109661108f6126c5565b85846126d4565b61109f8461274f565b90506110b683826110af87611241565b6000612759565b61107b848284612880565b6110c9612b5f565b6040516001600160a01b038216907f286f82d2b1e37b5e9f33e455d014b4a5f6c29388e6e41e1281d4c83e04f4265590600090a26001600160a01b0316600090815260cb60205260409020805460ff19166001179055565b61113261112d82611241565b612b71565b600081815260cf6020526040808220805460ff191660021790555182917fdb43aa42235c8d63908794a952603e8d43a549383d13123c3d893a3fc2e6249591a250565b61117e84612b71565b600061118c86866001612b89565b905083156111a657600081815260d0602052604090208490555b82156111b6576111b68184612ba1565b6111be6126c5565b600082815260d26020526040902080546001600160a01b0319166001600160a01b03929092169190911790556111f382612bf0565b505050505050565b61120c6112066126c5565b50600090565b6112315760405162461bcd60e51b815260040161122890615914565b60405180910390fd5b61123c838383612f10565b505050565b600061124c82612604565b6000828152609e6020526040902054609d805490919081106112705761127061583b565b9060005260206000209060060201600101549050919050565b600061129483611a23565b82106112ed5760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401611228565b6001600160a01b0383166000908152609f602052604090208054839081106113175761131761583b565b9060005260206000200154905092915050565b61133c6113356126c5565b84836126d4565b61123c838383612880565b600054610100900460ff16158080156113675750600054600160ff909116105b8061138857506113763061305f565b158015611388575060005460ff166001145b6113a45760405162461bcd60e51b815260040161122890615966565b6000805460ff1916600117905580156113c7576000805461ff0019166101001790555b6001600160a01b0385166113ee57604051630ca2c90160e21b815260040160405180910390fd5b6001600160a01b03841661141557604051630ca2c90160e21b815260040160405180910390fd5b60005b828110156114835760008484838181106114345761143461583b565b905060200201602081019061144991906151c2565b6001600160a01b0316141561147157604051630ca2c90160e21b815260040160405180910390fd5b8061147b816159ca565b915050611418565b506114f789898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a90819084018382808284376000920182905250925061306e915050565b61150183836130a0565b61150a84613162565b6001600160a01b038516600090815260cb60205260409020805460ff191660011790558015611561576000805461ff001916905560405160018152600080516020615ef38339815191529060200160405180910390a15b505050505050505050565b611574612b5f565b61157d81613162565b50565b611599600080516020615e738339815191528284611d78565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156115e65760405162461bcd60e51b8152600401611228906159e5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116186131ac565b6001600160a01b03161461163e5760405162461bcd60e51b815260040161122890615a31565b611647816131c8565b6040805160008082526020820190925261157d918391906131d0565b61166b6126c5565b6001600160a01b0316816001600160a01b0316146116ae576040516307ca099360e31b8152600481018490526001600160a01b0382166024820152604401611228565b61123c83838361334a565b61123c83838360405180602001604052806000815250612140565b6116e061112d82611241565b61157d816133e6565b6116f1612b5f565b61157d816001600160a01b03166000908152609760205260409020805460ff19169055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561175f5760405162461bcd60e51b8152600401611228906159e5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117916131ac565b6001600160a01b0316146117b75760405162461bcd60e51b815260040161122890615a31565b6117c0826131c8565b611599828260016131d0565b60006117d7609d5490565b82106118315760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401611228565b609d82815481106118445761184461583b565b9060005260206000209060060201600001549050919050565b61187d600080516020615e7383398151915261187884611241565b6134e3565b6115998282612ba1565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119225760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401611228565b50600080516020615eb383398151915290565b6001600160a01b031660009081526097602052604090205460ff1690565b61195b612b5f565b61157d816001600160a01b03166000908152609760205260409020805460ff19166001179055565b600061198e82612604565b6000828152609e6020526040902054609d805490919081106119b2576119b261583b565b60009182526020909120600360069092020101546001600160a01b03169050806119ee5760405162461bcd60e51b815260040161122890615a7d565b919050565b6119ff61112d82611241565b61157d816134f5565b600061107b600080516020615e738339815191528385612173565b60006001600160a01b038216611a8f5760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401611228565b506001600160a01b03166000908152609f602052604090205490565b611599600080516020615e7383398151915282846120e5565b7f7bf2655c5b27bca5462f1f973c316c9537b2da6083e494b623f3313ad847ec08611aed6126c5565b604051611afa9190615138565b60405180910390a1565b600085815260d1602052604090208054611b1d90615806565b159050611b4057604051636f55f62b60e01b815260048101869052602401611228565b600085815260d160205260409020611b59908585614f01565b508115611c7e57600085815260ce60205260409020805460ff19168315151790556001600160a01b038116611ba157604051630ca2c90160e21b815260040160405180910390fd5b611bb3816001600160a01b031661305f565b611bd2578060405163d4daafa160e01b81526004016112289190615138565b611beb600080516020615e53833981519152868361359c565b611c04600080516020615ed3833981519152868361359c565b611c2b600080516020615ed383398151915286600080516020615e5383398151915261362d565b611c52600080516020615e7383398151915286600080516020615e5383398151915261362d565b611c79600080516020615e5383398151915286600080516020615e5383398151915261362d565b611cec565b611c9e600080516020615ed383398151915286611c996126c5565b61359c565b611cc5600080516020615ed383398151915286600080516020615ed383398151915261362d565b611cec600080516020615e7383398151915286600080516020615ed383398151915261362d565b5050505050565b7fb7555489d68d7992c7b1a74fb60c1d5affc6c5cc407edaddcf435089a1a6b8a7611d1c613698565b604051611d2a929190615ab0565b60405180910390a150565b611599600080516020615ed38339815191528284611d78565b611d66600080516020615ed3833981519152836134e3565b600091825260d3602052604090912055565b611d828383612322565b82611d8d82826134e3565b611cec85858561334a565b611599600080516020615ed383398151915282846120e5565b606060998054610e9390615806565b600081815260d160205260409020805460609190611ddd90615806565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0990615806565b8015611e565780601f10611e2b57610100808354040283529160200191611e56565b820191906000526020600020905b815481529060010190602001808311611e3957829003601f168201915b50505050509050919050565b600083815260d1602052604090208054611e7b90615806565b15159050611e9f57604051630817886d60e41b815260048101849052602401611228565b611eba600080516020615ed383398151915284610bb06126c5565b611ef257611ec66126c5565b83600080516020615ed383398151915260405163c8c801a760e01b815260040161122893929190615adf565b600083815260d160205260409020611f0b908383614f01565b50505050565b6000611f1c82612604565b6000828152609e6020526040902054609d80549091908110611f4057611f4061583b565b9060005260206000209060060201600201549050919050565b6000611f64826136ab565b50600090815260d0602052604090205490565b611599611f826126c5565b83836136d4565b600081815260ce602052604090205460ff16611fbb5760405163db53ce7160e01b815260048101829052602401611228565b611fd4600080516020615e5383398151915282856137a8565b6001600160a01b038216611ffb57604051630ca2c90160e21b815260040160405180910390fd5b612014600080516020615e5383398151915282846120e5565b61202d600080516020615ed383398151915282846120e5565b612046600080516020615e7383398151915282846120e5565b61205f600080516020615e738339815191528285611d78565b612078600080516020615ed38339815191528285611d78565b612091600080516020615e538339815191528285611d78565b7f744258a28673e8738e2812c0ab8e8dbd70352f8871b1febac0dd753d96d79f588383836040516120c493929190615b00565b60405180910390a1505050565b600081815260cd6020526040812054610e7e565b6120ef8383612322565b826120fa82826134e3565b611cec85858561359c565b6121156121106126c5565b6131c8565b6040517f196e5e7c3b25979d0bf02b0f686399eb501ef6085673d009cf76369bdc11363890600090a1565b61214b6112066126c5565b6121675760405162461bcd60e51b815260040161122890615914565b611f0b848484846137d6565b600091825260ca602090815260408084209484529381528383206001600160a01b0392909216835252205460ff1690565b600061107b8280156121b8576121b86158fe565b600085815260d3602052604090205490600160ff919091161b16151590565b600061107b600080516020615ed38339815191528385612173565b6121fa612b5f565b6040516001600160a01b038216907ffb445f6ec07647d2bb7af72821e6b8b7303ec375e934d4a338d38ed5846c2d5690600090a26001600160a01b0316600090815260cb60205260409020805460ff19169055565b606061225a82612604565b600061227160408051602081019091526000815290565b60a0549091506001600160a01b03166122bd5760008151116122a2576040518060200160405280600081525061107b565b806122ac84612629565b604051602001610fe6929190615b24565b60a0546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401611027565b6122fa61112d84611241565b6123048383613849565b61123c81612bf0565b61231961112d82611241565b61157d816138a5565b600090815260ca60209081526040808320938352929052206001015490565b600061234c83612604565b506000918252609c602090815260408084206001600160a01b0393909316845291905290205490565b600080606060008061238686611983565b600087815260cf602052604090205490955060ff1660028111156123ac576123ac6158fe565b600096875260d0602090815260408089205460cd90925290972054959790969395939450915050565b6123dd612b5f565b61157d816138f3565b606060006123ff60408051602081019091526000815290565b60a0549091506001600160a01b031661245f57600081511161243057604051806020016040528060008152506124e9565b8061243a3061393d565b60405160200161244b929190615b53565b6040516020818303038152906040526124e9565b60a060009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b815260040160006040518083038186803b1580156124ad57600080fd5b505afa1580156124c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124e99190810190615891565b91505090565b60606000806124ff868686613953565b915091506000816001600160401b0381111561251d5761251d615409565b604051908082528060200260200182016040528015612546578160200160208202803683370190505b50905060005b8281101561259d578381815181106125665761256661583b565b60200260200101518282815181106125805761258061583b565b602090810291909101015280612595816159ca565b91505061254c565b509695505050505050565b6000806125b784846001613953565b151595945050505050565b6000610e7e826000613a39565b60006001600160e01b031982166333cb74f560e11b1480610e7e57506301ffc9a760e01b6001600160e01b0319831614610e7e565b61260d81613b4d565b61157d5760405162461bcd60e51b815260040161122890615a7d565b6060600061263683613b99565b60010190506000816001600160401b0381111561265557612655615409565b6040519080825280601f01601f19166020018201604052801561267f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846126b8576126bd565b612689565b509392505050565b60006126cf613c71565b905090565b60006126e08385612341565b90506000198114611f0b578181101561273b5760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401611228565b611f0b838561274a8585615b97565b613c93565b6000610e7e613dc2565b6001600160a01b0384166127b95760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401611228565b826128105760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401611228565b61281983613b4d565b156128665760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401611228565b612871848484613dd9565b61287b8382613e8d565b611f0b565b61288983613b4d565b6128e55760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401611228565b6128ee82613b4d565b6129485760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401611228565b6000838152609e6020526040812054609d8054909190811061296c5761296c61583b565b906000526020600020906006020190506000609d609e600086815260200190815260200160002054815481106129a4576129a461583b565b906000526020600020906006020190508282600201541015612a1b5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401611228565b8060010154826001015414612a895760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401611228565b82826002016000828254612a9d9190615b97565b9250508190555082816002016000828254612ab89190615bae565b909155505060405183815284908690600080516020615e938339815191529060200160405180910390a3612afd85858560405180602001604052806000815250613f00565b611cec5760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401611228565b612b6f612b6a6126c5565b614061565b565b61157d600080516020615e73833981519152826134e3565b6000612b93613dc2565b905061107b84828585612759565b600082815260cd602090815260409182902083905581518481529081018390527f5e07998cef9cea674942c66f0ea7b0bce89ab9473ce240cc93d616c3491f8aeb910160405180910390a15050565b6001612c026040830160208401615bd5565b6002811115612c1357612c136158fe565b1415612d05578035341015612c44576040516365a2b20160e01b815234600482015281356024820152604401611228565b7f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a81604051612c739190615c0e565b60405180910390a16000612c8d60a08301608084016151c2565b6001600160a01b0316826000013560405160006040518083038185875af1925050503d8060008114612cdb576040519150601f19603f3d011682016040523d82523d6000602084013e612ce0565b606091505b505090508061159957604051636d6cc4a760e01b815282356004820152602401611228565b6002612d176040830160208401615bd5565b6002811115612d2857612d286158fe565b141561157d576000612d4060608301604084016151c2565b905060006001600160a01b03821663dd62ed3e612d6360808601606087016151c2565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260440160206040518083038186803b158015612da857600080fd5b505afa158015612dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de09190615c7a565b90508235811015612e0e5760405163355cd54b60e01b81526004810182905283356024820152604401611228565b7f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a83604051612e3d9190615c0e565b60405180910390a160006001600160a01b0383166323b872dd612e6660808701606088016151c2565b612e7660a08801608089016151c2565b6040516001600160e01b031960e085901b168152612e9b929190893590600401615b00565b602060405180830381600087803b158015612eb557600080fd5b505af1158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190615c93565b905080611f0b57604051636d6cc4a760e01b815284356004820152602401611228565b826001600160a01b0316612f2382611983565b6001600160a01b031614612f855760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401611228565b6001600160a01b038216612fe95760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401611228565b6000612ff482611241565b9050600061300183611f11565b905061300e60008461409c565b61301783614133565b61302185846141de565b61302b84846142ff565b82846001600160a01b0316866001600160a01b0316600080516020615f3a83398151915260405160405180910390a4611cec565b6001600160a01b03163b151590565b600054610100900460ff166130955760405162461bcd60e51b815260040161122890615cb0565b61123c838383614388565b600054610100900460ff16158080156130c05750600054600160ff909116105b806130e157506130cf3061305f565b1580156130e1575060005460ff166001145b6130fd5760405162461bcd60e51b815260040161122890615966565b6000805460ff191660011790558015613120576000805461ff0019166101001790555b6131286143ef565b6131328383614416565b801561123c576000805461ff001916905560405160018152600080516020615ef3833981519152906020016120c4565b60cc80546001600160a01b0319166001600160a01b0383169081179091556040517f5e4a30f4224898dbac86adca855a5edd3b8341a3aeb2b6ff0f0b5a82c013b65a90600090a250565b600080516020615eb3833981519152546001600160a01b031690565b61157d612b5f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156132035761123c83614539565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561323c57600080fd5b505afa92505050801561326c575060408051601f3d908101601f1916820190925261326991810190615c7a565b60015b6132cf5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611228565b600080516020615eb3833981519152811461333e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611228565b5061123c8383836145d3565b613355838383612173565b1561123c57600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff191690556133946126c5565b6001600160a01b0316816001600160a01b0316847f6f9148fcdc32766ca802c14716295d56eab7ed848d0dba113966f40087c88390856040516133d991815260200190565b60405180910390a4505050565b6133ef81612604565b6000818152609e6020526040812054609d805490919081106134135761341361583b565b60009182526020909120600691909102016003810154600182015460028301549293506001600160a01b039091169161344b85614133565b61345583866141de565b61345e856145f8565b600085600080516020615e938339815191528360405161348091815260200190565b60405180910390a3600082867fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a460405185906000906001600160a01b03861690600080516020615f3a833981519152908390a4611cec565b61159982826134f06126c5565b6137a8565b6134fe816136ab565b6001600082815260cf602052604090205460ff166002811115613523576135236158fe565b1461355c57600081815260cf6020526040908190205490516308c9ef2d60e11b815261122891839160ff90911690600190600401615cfb565b600081815260cf6020526040808220805460ff191690555182917fe2babfd5e77285a3c3dbc4b25592cbe4a7a26e97a7ac63067a22ebdaa9b82add91a250565b6135a7838383612173565b61123c57600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff191660011790556135e86126c5565b6001600160a01b0316816001600160a01b0316847f4dc88bd74ca601684356789d5b3dbc9cd44275b2544e8d35041203703b768232856040516133d991815260200190565b60006136398484612322565b600084815260ca6020908152604080832088845282529182902060010185905590518581529192508391839187917f15f4a36186b2284157fe71215a07487f6c8bdc1203b3307c3e1fd9693011d3d3910160405180910390a450505050565b3660006136a3614806565b915091509091565b6136b481613b4d565b61157d576040516321fbdd2b60e11b815260048101829052602401611228565b816001600160a01b0316836001600160a01b031614156137365760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401611228565b6001600160a01b038381166000818152609f602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6137b3838383612173565b61123c5780828460405163c8c801a760e01b815260040161122893929190615adf565b6137e1848484612f10565b6137ed8484848461483b565b611f0b5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401611228565b61385482600161499e565b600082815260d06020526040908190208290555182907f1ebc57da8b3ebab98506502fbb73232ea29fbe86e4963a5a8c004810ad11190d906138999084815260200190565b60405180910390a25050565b6138b081600161499e565b600081815260cf6020526040808220805460ff191660011790555182917f779fbee689bbd6f006ecb329206d35c7db7380f9837a8826fb8dc5cfcd3d33dd91a250565b60a080546001600160a01b0319166001600160a01b0383169081179091556040517f5252f52e45fc8ee6a7b43cef3645d23e9a470a34182b8b3a12627556635bfc9c90600090a250565b6060610e7e6001600160a01b03831660146149d0565b606060008061396186611a23565b90506000816001600160401b0381111561397d5761397d615409565b6040519080825280602002602001820160405280156139a6578160200160208202803683370190505b5090506000805b83811015613a2b5760006139c18a83611289565b9050886139cd82611241565b1480156139e857508715806139e857506139e8816000613a39565b15613a18578084846139f9816159ca565b955081518110613a0b57613a0b61583b565b6020026020010181815250505b5080613a23816159ca565b9150506139ad565b509097909650945050505050565b600082815260cf602052604081205460ff1681816002811115613a5e57613a5e6158fe565b14613a6d576000915050610e7e565b6000613a7885611241565b9050613a858160006121a4565b15613ada57600085815260d260205260409020546001600160a01b03168015801590613ac75750613ac5600080516020615e738339815191528383612173565b155b15613ad85760009350505050610e7e565b505b6000613ae586611983565b600087815260d0602052604090205490915015801590613b03575084155b15613b38576001600160a01b03811615801590613b2e5750600086815260d060205260409020544211155b9350505050610e7e565b6001600160a01b031615159250610e7e915050565b609d5460009015801590610e7e57506000828152609e6020526040902054609d80548492908110613b8057613b8061583b565b9060005260206000209060060201600001541492915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613bd85772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613c04576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613c2257662386f26fc10000830492506010015b6305f5e1008310613c3a576305f5e100830492506008015b6127108310613c4e57612710830492506004015b60648310613c60576064830492506002015b600a8310610e7e5760010192915050565b6000613c7c33611935565b15613c8e575060131936013560601c90565b503390565b6001600160a01b038216613cfc5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401611228565b613d068284614b6b565b613d6c576000838152609e6020526040902054609d80549091908110613d2e57613d2e61583b565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b6000838152609c602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b910161379b565b6000613dd2609b80546001019055565b50609b5490565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050613e2781614c3f565b613e3184846142ff565b60405183906001600160a01b03861690600090600080516020615f3a833981519152908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152609e6020526040902054609d80548392908110613eb157613eb161583b565b90600052602060002090600602016002016000828254613ed19190615bae565b90915550506040518181528290600090600080516020615e938339815191529060200160405180910390a35050565b600080613f0c85611983565b9050613f20816001600160a01b031661305f565b8015613fa457506040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015613f6c57600080fd5b505afa158015613f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa49190615c93565b15614053576000816001600160a01b0316629ce20b613fc16126c5565b898989896040518663ffffffff1660e01b8152600401613fe5959493929190615d28565b602060405180830381600087803b158015613fff57600080fd5b505af1158015614013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140379190615d66565b6001600160e01b031916629ce20b60e01b149250614059915050565b60019150505b949350505050565b6001600160a01b038116600090815260cb602052604090205460ff1661157d5780604051632957ccdd60e21b81526004016112289190615138565b6000818152609e6020526040902054609d805484929081106140c0576140c061583b565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b03928316179055819083166140fa82611983565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152609e6020526040812054609d805490919081106141575761415761583b565b600091825260208220600560069092020190810154909250905b818110156141cf5760008360050182815481106141905761419061583b565b6000918252602080832090910154878352609c825260408084206001600160a01b039092168452915281205550806141c7816159ca565b915050614171565b5061123c600583016000614f85565b6000818152609e6020526040812054609d805490919081106142025761420261583b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152609f90915260408120805490919061425190600190615b97565b9050600082600001828154811061426a5761426a61583b565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106142a7576142a761583b565b600091825260208083209091019290925583815260018601909152604080822083905586825281205583548490806142e1576142e1615d83565b60019003818190600052602060002001600090559055505050505050565b6000818152609e6020526040902054609d805484929081106143235761432361583b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152609f80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600054610100900460ff166143af5760405162461bcd60e51b815260040161122890615cb0565b82516143c2906098906020860190614fa3565b5081516143d6906099906020850190614fa3565b50609a805460ff191660ff929092169190911790555050565b600054610100900460ff16612b6f5760405162461bcd60e51b815260040161122890615cb0565b600054610100900460ff16158080156144365750600054600160ff909116105b8061445757506144453061305f565b158015614457575060005460ff166001145b6144735760405162461bcd60e51b815260040161122890615966565b6000805460ff191660011790558015614496576000805461ff0019166101001790555b60005b82811015614508576001609760008686858181106144b9576144b961583b565b90506020020160208101906144ce91906151c2565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580614500816159ca565b915050614499565b50801561123c576000805461ff001916905560405160018152600080516020615ef3833981519152906020016120c4565b6145428161305f565b6145a45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611228565b600080516020615eb383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6145dc83614d91565b6000825111806145e95750805b1561123c57611f0b8383614dd1565b609d5460009061460a90600190615b97565b6000838152609e6020526040812054609d80549394509092849081106146325761463261583b565b60009182526020918290206040805160c08101825260069093029091018054835260018101548385015260028101548383015260038101546001600160a01b03908116606085015260048201541660808401526005810180548351818702810187019094528084529394919360a0860193928301828280156146dd57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116146bf575b505050505081525050905080609d83815481106146fc576146fc61583b565b600091825260209182902083516006909202019081558282015160018201556040830151600282015560608301516003820180546001600160a01b039283166001600160a01b031991821617909155608085015160048401805491909316911617905560a08301518051919261477a92600585019290910190615017565b505081516000908152609e602052604080822085905586825281205550609d8054806147a8576147a8615d83565b60008281526020812060066000199093019283020181815560018101829055600281018290556003810180546001600160a01b03199081169091556004820180549091169055906147fc6005830182614f85565b5050905550505050565b36600061481233611935565b156148335760008036614826601482615b97565b926136a393929190615d99565b6000366136a3565b600061484f846001600160a01b031661305f565b1561499657836001600160a01b031663150b7a0261486b6126c5565b8786866040518563ffffffff1660e01b815260040161488d9493929190615dc3565b602060405180830381600087803b1580156148a757600080fd5b505af19250505080156148d7575060408051601f3d908101601f191682019092526148d491810190615d66565b60015b61497c573d808015614905576040519150601f19603f3d011682016040523d82523d6000602084013e61490a565b606091505b5080516149745760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401611228565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050614059565b506001614059565b6149a88282613a39565b611599576040516316af84a960e21b8152600481018390528115156024820152604401611228565b606060006149df836002615e00565b6149ea906002615bae565b6001600160401b03811115614a0157614a01615409565b6040519080825280601f01601f191660200182016040528015614a2b576020820181803683370190505b509050600360fc1b81600081518110614a4657614a4661583b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614a7557614a7561583b565b60200101906001600160f81b031916908160001a9053506000614a99846002615e00565b614aa4906001615bae565b90505b6001811115614b1c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614ad857614ad861583b565b1a60f81b828281518110614aee57614aee61583b565b60200101906001600160f81b031916908160001a90535060049490941c93614b1581615e1f565b9050614aa7565b50831561107b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611228565b6000818152609e6020526040812054609d80548392908110614b8f57614b8f61583b565b6000918252602082206005600690920201015491505b81811015614c34576000848152609e6020526040902054609d80546001600160a01b03881692908110614bda57614bda61583b565b90600052602060002090600602016005018281548110614bfc57614bfc61583b565b6000918252602090912001546001600160a01b03161415614c2257600192505050610e7e565b80614c2c816159ca565b915050614ba5565b506000949350505050565b609d805482516000908152609e6020908152604080832084905560018401855593909152835160069092027fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7b8101928355818501517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7c820155928401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7d84015560608401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7e840180546001600160a01b039283166001600160a01b03199182161790915560808601517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7f8601805491909316911617905560a084015180518594611f0b937fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf80909101920190615017565b614d9a81614539565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614ddc8361305f565b614e375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401611228565b600080846001600160a01b031684604051614e529190615e36565b600060405180830381855af49150503d8060008114614e8d576040519150601f19603f3d011682016040523d82523d6000602084013e614e92565b606091505b5091509150614eba8282604051806060016040528060278152602001615f1360279139614ec3565b95945050505050565b60608315614ed257508161107b565b61107b8383815115614ee75781518083602001fd5b8060405162461bcd60e51b8152600401611228919061510c565b828054614f0d90615806565b90600052602060002090601f016020900481019282614f2f5760008555614f75565b82601f10614f485782800160ff19823516178555614f75565b82800160010185558215614f75579182015b82811115614f75578235825591602001919060010190614f5a565b50614f8192915061506c565b5090565b508054600082559060005260206000209081019061157d919061506c565b828054614faf90615806565b90600052602060002090601f016020900481019282614fd15760008555614f75565b82601f10614fea57805160ff1916838001178555614f75565b82800160010185558215614f75579182015b82811115614f75578251825591602001919060010190614ffc565b828054828255906000526020600020908101928215614f75579160200282015b82811115614f7557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615037565b5b80821115614f81576000815560010161506d565b6001600160e01b03198116811461157d57600080fd5b6000602082840312156150a957600080fd5b813561107b81615081565b60005b838110156150cf5781810151838201526020016150b7565b83811115611f0b5750506000910152565b600081518084526150f88160208601602086016150b4565b601f01601f19169290920160200192915050565b60208152600061107b60208301846150e0565b60006020828403121561513157600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146119ee57600080fd5b6000806040838503121561517657600080fd5b61517f8361514c565b946020939093013593505050565b6000806000606084860312156151a257600080fd5b833592506151b26020850161514c565b9150604084013590509250925092565b6000602082840312156151d457600080fd5b61107b8261514c565b600060a082840312156151ef57600080fd5b50919050565b6000806000806000610120868803121561520e57600080fd5b6152178661514c565b945060208601359350604086013592506060860135915061523b87608088016151dd565b90509295509295909350565b60008060006060848603121561525c57600080fd5b6152658461514c565b92506151b26020850161514c565b60008060006060848603121561528857600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126152b157600080fd5b5081356001600160401b038111156152c857600080fd5b6020830191508360208285010111156152e057600080fd5b9250929050565b60008060008060008060008060a0898b03121561530357600080fd5b88356001600160401b038082111561531a57600080fd5b6153268c838d0161529f565b909a50985060208b013591508082111561533f57600080fd5b61534b8c838d0161529f565b909850965086915061535f60408c0161514c565b955061536d60608c0161514c565b945060808b013591508082111561538357600080fd5b818b0191508b601f83011261539757600080fd5b8135818111156153a657600080fd5b8c60208260051b85010111156153bb57600080fd5b6020830194508093505050509295985092959890939650565b6000806000606084860312156153e957600080fd5b83359250602084013591506154006040850161514c565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561544757615447615409565b604052919050565b60006001600160401b0382111561546857615468615409565b50601f01601f191660200190565b600082601f83011261548757600080fd5b813561549a6154958261544f565b61541f565b8181528460208386010111156154af57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156154df57600080fd5b6154e88361514c565b915060208301356001600160401b0381111561550357600080fd5b61550f85828601615476565b9150509250929050565b6000806040838503121561552c57600080fd5b50508035926020909101359150565b801515811461157d57600080fd5b60008060008060006080868803121561556157600080fd5b8535945060208601356001600160401b0381111561557e57600080fd5b61558a8882890161529f565b909550935050604086013561559e8161553b565b915061523b6060870161514c565b6000806000604084860312156155c157600080fd5b8335925060208401356001600160401b038111156155de57600080fd5b6155ea8682870161529f565b9497909650939450505050565b6000806040838503121561560a57600080fd5b6156138361514c565b915060208301356156238161553b565b809150509250929050565b6000806000806080858703121561564457600080fd5b61564d8561514c565b935061565b6020860161514c565b92506040850135915060608501356001600160401b0381111561567d57600080fd5b61568987828801615476565b91505092959194509250565b600080604083850312156156a857600080fd5b8235915060208301356001811061562357600080fd5b600080600060e084860312156156d357600080fd5b833592506020840135915061540085604086016151dd565b600080604083850312156156fe57600080fd5b8235915061570e6020840161514c565b90509250929050565b6001600160a01b038616815260ff8516602082015260a060408201819052600090615744908301866150e0565b606083019490945250608001529392505050565b6000806040838503121561576b57600080fd5b6157748361514c565b915061570e6020840161514c565b60008060006060848603121561579757600080fd5b6157a08461514c565b92506020840135915060408401356157b78161553b565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156157fa578351835292840192918401916001016157de565b50909695505050505050565b600181811c9082168061581a57607f821691505b602082108114156151ef57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516158638184602088016150b4565b64736c6f742f60d81b90830190815283516158858160058401602088016150b4565b01600501949350505050565b6000602082840312156158a357600080fd5b81516001600160401b038111156158b957600080fd5b8201601f810184136158ca57600080fd5b80516158d86154958261544f565b8181528560208385010111156158ed57600080fd5b614eba8260208301602086016150b4565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156159de576159de6159b4565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b602080825260199082015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b604082015260600190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008351615b368184602088016150b4565b835190830190615b4a8183602088016150b4565b01949350505050565b60008351615b658184602088016150b4565b68636f6e74726163742f60b81b9083019081528351615b8b8160098401602088016150b4565b01600901949350505050565b600082821015615ba957615ba96159b4565b500390565b60008219821115615bc157615bc16159b4565b500190565b8035600381106119ee57600080fd5b600060208284031215615be757600080fd5b61107b82615bc6565b6003811061157d57634e487b7160e01b600052602160045260246000fd5b8135815260a08101615c2260208401615bc6565b615c2b81615bf0565b6020830152615c3c6040840161514c565b6001600160a01b03818116604085015280615c596060870161514c565b16606085015280615c6c6080870161514c565b166080850152505092915050565b600060208284031215615c8c57600080fd5b5051919050565b600060208284031215615ca557600080fd5b815161107b8161553b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260608101615d0b84615bf0565b836020830152615d1a83615bf0565b826040830152949350505050565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000615d5b60a08301846150e0565b979650505050505050565b600060208284031215615d7857600080fd5b815161107b81615081565b634e487b7160e01b600052603160045260246000fd5b60008085851115615da957600080fd5b83861115615db657600080fd5b5050820193919092039150565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615df6908301846150e0565b9695505050505050565b6000816000190483118215151615615e1a57615e1a6159b4565b500290565b600081615e2e57615e2e6159b4565b506000190190565b60008251615e488184602087016150b4565b919091019291505056fefca69b310bd19d275687ebe00b254b0772cf7a367c3f81a9a5a433f831fdc1dc3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc6360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc449b0a7e0acc0a95c71947cb19fdd122b42abca9bdfbd6707ca4f1e3fdaef05e7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209a153f816c0eb7d30cd6d8e0f98bc67083e41da66ab3feca35ff72feccfcbdbc64736f6c63430008090033"; type GatewayTokenInternalsTestConstructorParams = | [signer?: Signer] diff --git a/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenUpgradeTest__factory.ts b/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenUpgradeTest__factory.ts index 62eebcb24..45f5ab005 100644 --- a/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenUpgradeTest__factory.ts +++ b/ethereum/gateway-eth-ts/src/contracts/typechain-types/factories/test/contracts/GatewayTokenUpgradeTest__factory.ts @@ -43,6 +43,17 @@ const _abi = [ name: "Charge__InsufficientValue", type: "error", }, + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Charge__TransferFailed", + type: "error", + }, { inputs: [], name: "Common__MissingAccount", @@ -1158,6 +1169,11 @@ const _abi = [ name: "network", type: "uint256", }, + { + internalType: "bool", + name: "onlyActive", + type: "bool", + }, ], name: "getTokenIdsByOwnerAndNetwork", outputs: [ @@ -2218,7 +2234,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615d3362000120600039600081816115ee0152818161162e01528181611767015281816117a701526118da0152615d336000f3fe6080604052600436106104075760003560e01c80637dbded2811610214578063b5d616351161011e578063d7a78db8116100b6578063e71fb1101161007a578063e71fb11014610cdf578063e8a3d48514610cff578063e985e9c514610d14578063ff17e23214610d61578063ff85a97514610d8157600080fd5b8063d7a78db814610c15578063df2a7fe114610c35578063df7f453b14610c55578063e345e0bc14610c8e578063e4b50cb814610cae57600080fd5b8063b5d6163514610b0d578063b88d4fde14610b2d578063babb898d14610b40578063bfea1f9714610b60578063c2a366fb14610b80578063c58dbbed14610ba0578063c87b56dd14610bc0578063ce6da01a14610be0578063d6fd317514610bf357600080fd5b806395d89b41116101ac578063a217fddf11610170578063a217fddf14610a68578063a22cb46514610a7d578063a578c09314610a9d578063a8fa8e0d14610acd578063b4bd857914610aed57600080fd5b806395d89b41146109d357806395ea5717146109e85780639c7525e614610a085780639cc7f70814610a28578063a05b775f14610a4857600080fd5b80637dbded28146108cf57806381e9ff19146108ef57806382d66d5f1461091157806383b2b27614610931578063840f7113146109515780638423df79146109715780638cb0a511146109855780638eb7a7761461099357806390eddd52146109b357600080fd5b80633568dd291161031557806351da912d116102ad5780636623fc46116102715780636623fc461461082d5780636dba27291461084d5780636f7caf411461086d57806370a082311461088f57806370f08160146108af57600080fd5b806351da912d1461077f57806352d1902d1461079f578063572b6c05146107b45780635c41d2fe146107ed5780636352211e1461080d57600080fd5b80633568dd29146106775780633659cfe61461069757806336e45041146106b75780633e7e8669146106d757806342842e0e146106f957806342966c681461070c5780634d93172d1461072c5780634f1ef2861461074c5780634f6ccce71461075f57600080fd5b806320c5429b116103a35780632f745c59116103675780632f745c59146105ce578063310ed7f0146105ee57806331416a291461060157806334d7a95e1461062157806334e37b8a1461065757600080fd5b806320c5429b1461054857806323287f241461056857806323b872dd1461057b578063263f3e7e1461058e5780632d33d27a146105ae57600080fd5b806301ffc9a71461040c57806306fdde0314610441578063081812fc14610463578063095ea7b31461049057806309c3dd87146104a55780630f485c02146104c55780631442f521146104e6578063157000521461051357806318160ddd14610533575b600080fd5b34801561041857600080fd5b5061042c610427366004614edb565b610da1565b60405190151581526020015b60405180910390f35b34801561044d57600080fd5b50610456610e02565b6040516104389190614f50565b34801561046f57600080fd5b5061048361047e366004614f63565b610e94565b6040516104389190614f7c565b6104a361049e366004614fa7565b610ee6565b005b3480156104b157600080fd5b506104566104c0366004614f63565b610eff565b6104d86104d3366004614fd1565b611000565b604051908152602001610438565b3480156104f257600080fd5b50610506610501366004614fa7565b61103f565b6040516104389190615006565b34801561051f57600080fd5b506104a361052e36600461504a565b6110f6565b34801561053f57600080fd5b50609d546104d8565b34801561055457600080fd5b506104a3610563366004614f63565b611156565b6104a361057636600461507d565b6111aa565b6104a36105893660046150cf565b61124a565b34801561059a57600080fd5b506104d86105a9366004614f63565b611287565b3480156105ba57600080fd5b5060cc54610483906001600160a01b031681565b3480156105da57600080fd5b506104d86105e9366004614fa7565b6112cf565b6104a36105fc3660046150fb565b611370565b34801561060d57600080fd5b506104a361061c366004615168565b61138d565b34801561062d57600080fd5b5061048361063c366004614f63565b600090815260d260205260409020546001600160a01b031690565b34801561066357600080fd5b506104a361067236600461504a565b6115b2565b34801561068357600080fd5b506104a3610692366004614fa7565b6115c6565b3480156106a357600080fd5b506104a36106b236600461504a565b6115e3565b3480156106c357600080fd5b506104a36106d2366004615255565b6116a9565b3480156106e357600080fd5b50609a5460405160ff9091168152602001610438565b6104a36107073660046150cf565b6116ff565b34801561071857600080fd5b506104a3610727366004614f63565b61171a565b34801561073857600080fd5b506104a361074736600461504a565b61172f565b6104a361075a36600461534d565b61175c565b34801561076b57600080fd5b506104d861077a366004614f63565b611812565b34801561078b57600080fd5b506104a361079a36600461539a565b6118a3565b3480156107ab57600080fd5b506104d86118cd565b3480156107c057600080fd5b5061042c6107cf36600461504a565b6001600160a01b031660009081526097602052604090205460ff1690565b3480156107f957600080fd5b506104a361080836600461504a565b61197b565b34801561081957600080fd5b50610483610828366004614f63565b6119ab565b34801561083957600080fd5b506104a3610848366004614f63565b611a1b565b34801561085957600080fd5b5061042c610868366004614fa7565b611a30565b34801561087957600080fd5b506104d8600080516020615c7783398151915281565b34801561089b57600080fd5b506104d86108aa36600461504a565b611a4b565b3480156108bb57600080fd5b506104a36108ca366004614fa7565b611ad3565b3480156108db57600080fd5b506104a36108ea3660046153ca565b611aec565b3480156108fb57600080fd5b506104d8600080516020615bf783398151915281565b34801561091d57600080fd5b506104a361092c366004614fa7565b611cdb565b34801561093d57600080fd5b506104a361094c36600461539a565b611cf4565b34801561095d57600080fd5b5060a054610483906001600160a01b031681565b34801561097d57600080fd5b50600161042c565b6104a361049e366004614fd1565b34801561099f57600080fd5b506104a36109ae366004615255565b611d1e565b3480156109bf57600080fd5b506104a36109ce366004614fa7565b611d3e565b3480156109df57600080fd5b50610456611d57565b3480156109f457600080fd5b50610456610a03366004614f63565b611d66565b348015610a1457600080fd5b506104a3610a2336600461542d565b611e08565b348015610a3457600080fd5b506104d8610a43366004614f63565b611eb7565b348015610a5457600080fd5b506104d8610a63366004614f63565b611eff565b348015610a7457600080fd5b506104d8600081565b348015610a8957600080fd5b506104a3610a98366004615478565b611f1d565b348015610aa957600080fd5b5061042c610ab8366004614f63565b60ce6020526000908152604090205460ff1681565b348015610ad957600080fd5b506104a3610ae83660046150cf565b611f2f565b348015610af957600080fd5b506104d8610b08366004614f63565b612077565b348015610b1957600080fd5b506104a3610b28366004615255565b61208b565b6104a3610b3b3660046154af565b6120ab565b348015610b4c57600080fd5b5061042c610b5b366004615255565b6120de565b348015610b6c57600080fd5b5061042c610b7b366004615516565b61210f565b348015610b8c57600080fd5b5061042c610b9b366004614fa7565b612142565b348015610bac57600080fd5b506104a3610bbb36600461504a565b61215d565b348015610bcc57600080fd5b50610456610bdb366004614f63565b6121ba565b6104a3610bee36600461553f565b612259565b348015610bff57600080fd5b506104d8600080516020615c1783398151915281565b348015610c2157600080fd5b506104a3610c30366004614f63565b612278565b348015610c4157600080fd5b506104d8610c5036600461539a565b61228d565b348015610c6157600080fd5b5061042c610c7036600461504a565b6001600160a01b0316600090815260cb602052604090205460ff1690565b348015610c9a57600080fd5b506104d8610ca936600461556c565b6122ac565b348015610cba57600080fd5b50610cce610cc9366004614f63565b6122e0565b604051610438959493929190615598565b348015610ceb57600080fd5b506104a3610cfa36600461504a565b612340565b348015610d0b57600080fd5b50610456612351565b348015610d2057600080fd5b5061042c610d2f3660046155d9565b6001600160a01b039182166000908152609f602090815260408083209390941682526002909201909152205460ff1690565b348015610d6d57600080fd5b5061042c610d7c366004614fa7565b61245a565b348015610d8d57600080fd5b5061042c610d9c366004614f63565b6124cb565b60006001600160e01b03198216630354d60560e61b1480610dd257506001600160e01b031982166380ac58cd60e01b145b80610ded57506001600160e01b031982166370b0048160e11b145b80610dfc5750610dfc826124d8565b92915050565b606060988054610e1190615603565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d90615603565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b5050505050905090565b6000610e9f8261250d565b6000828152609e6020526040902054609d80549091908110610ec357610ec3615638565b60009182526020909120600460069092020101546001600160a01b031692915050565b60405163c03a3ff560e01b815260040160405180910390fd5b60606000610f1860408051602081019091526000815290565b60a0549091506001600160a01b0316610f78576000815111610f495760405180602001604052806000815250610ff9565b80610f5384612532565b604051602001610f6492919061564e565b604051602081830303815290604052610ff9565b60a054604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b60006040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ff9919081019061568e565b9392505050565b600061101461100d6125ce565b85846125dd565b61101d84612658565b9050611034838261102d87611287565b6000612662565b610ff9848284612789565b606060008061104e8585612a68565b915091506000816001600160401b0381111561106c5761106c61528a565b604051908082528060200260200182016040528015611095578160200160208202803683370190505b50905060005b828110156110ec578381815181106110b5576110b5615638565b60200260200101518282815181106110cf576110cf615638565b6020908102919091010152806110e481615711565b91505061109b565b5095945050505050565b6110fe612b35565b6040516001600160a01b038216907f286f82d2b1e37b5e9f33e455d014b4a5f6c29388e6e41e1281d4c83e04f4265590600090a26001600160a01b0316600090815260cb60205260409020805460ff19166001179055565b61116761116282611287565b612b47565b600081815260cf6020526040808220805460ff191660021790555182917fdb43aa42235c8d63908794a952603e8d43a549383d13123c3d893a3fc2e6249591a250565b6111b384612b47565b6111bc81612b5f565b60006111ca86866001612e13565b9050600084116112215760405162461bcd60e51b815260206004820181905260248201527f54455354204d4f44453a20457870697279206d757374206265203e207a65726f60448201526064015b60405180910390fd5b600081815260d0602052604090208490558215611242576112428184612e2b565b505050505050565b61125b6112556125ce565b50600090565b6112775760405162461bcd60e51b815260040161121890615742565b611282838383612e7a565b505050565b60006112928261250d565b6000828152609e6020526040902054609d805490919081106112b6576112b6615638565b9060005260206000209060060201600101549050919050565b60006112da83611a4b565b82106113335760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401611218565b6001600160a01b0383166000908152609f6020526040902080548390811061135d5761135d615638565b9060005260206000200154905092915050565b61138261137b6125ce565b84836125dd565b611282838383612789565b600054610100900460ff16158080156113ad5750600054600160ff909116105b806113ce57506113bc30612fc9565b1580156113ce575060005460ff166001145b6113ea5760405162461bcd60e51b815260040161121890615794565b6000805460ff19166001179055801561140d576000805461ff0019166101001790555b6001600160a01b03851661143457604051630ca2c90160e21b815260040160405180910390fd5b6001600160a01b03841661145b57604051630ca2c90160e21b815260040160405180910390fd5b60005b828110156114c957600084848381811061147a5761147a615638565b905060200201602081019061148f919061504a565b6001600160a01b031614156114b757604051630ca2c90160e21b815260040160405180910390fd5b806114c181615711565b91505061145e565b5061153d89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201829052509250612fd8915050565b611547838361300a565b611550846130cc565b6001600160a01b038516600090815260cb60205260409020805460ff1916600117905580156115a7576000805461ff001916905560405160018152600080516020615c978339815191529060200160405180910390a15b505050505050505050565b6115ba612b35565b6115c3816130cc565b50565b6115df600080516020615c178339815191528284611d1e565b5050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561162c5760405162461bcd60e51b8152600401611218906157e2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661165e613116565b6001600160a01b0316146116845760405162461bcd60e51b81526004016112189061582e565b61168d81613132565b604080516000808252602082019092526115c39183919061313a565b6116b16125ce565b6001600160a01b0316816001600160a01b0316146116f4576040516307ca099360e31b8152600481018490526001600160a01b0382166024820152604401611218565b6112828383836132b4565b611282838383604051806020016040528060008152506120ab565b61172661116282611287565b6115c381613350565b611737612b35565b6115c3816001600160a01b03166000908152609760205260409020805460ff19169055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156117a55760405162461bcd60e51b8152600401611218906157e2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117d7613116565b6001600160a01b0316146117fd5760405162461bcd60e51b81526004016112189061582e565b61180682613132565b6115df8282600161313a565b600061181d609d5490565b82106118775760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401611218565b609d828154811061188a5761188a615638565b9060005260206000209060060201600001549050919050565b6118c3600080516020615c178339815191526118be84611287565b61344d565b6115df8282612e2b565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119685760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401611218565b50600080516020615c5783398151915290565b611983612b35565b6115c3816001600160a01b03166000908152609760205260409020805460ff19166001179055565b60006119b68261250d565b6000828152609e6020526040902054609d805490919081106119da576119da615638565b60009182526020909120600360069092020101546001600160a01b0316905080611a165760405162461bcd60e51b81526004016112189061587a565b919050565b611a2761116282611287565b6115c38161345f565b6000610ff9600080516020615c1783398151915283856120de565b60006001600160a01b038216611ab75760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401611218565b506001600160a01b03166000908152609f602052604090205490565b6115df600080516020615c17833981519152828461208b565b600085815260d1602052604090208054611b0590615603565b159050611b2857604051636f55f62b60e01b815260048101869052602401611218565b600085815260d160205260409020611b41908585614d45565b508115611c6657600085815260ce60205260409020805460ff19168315151790556001600160a01b038116611b8957604051630ca2c90160e21b815260040160405180910390fd5b611b9b816001600160a01b0316612fc9565b611bba578060405163d4daafa160e01b81526004016112189190614f7c565b611bd3600080516020615bf78339815191528683613506565b611bec600080516020615c778339815191528683613506565b611c13600080516020615c7783398151915286600080516020615bf7833981519152613597565b611c3a600080516020615c1783398151915286600080516020615bf7833981519152613597565b611c61600080516020615bf783398151915286600080516020615bf7833981519152613597565b611cd4565b611c86600080516020615c7783398151915286611c816125ce565b613506565b611cad600080516020615c7783398151915286600080516020615c77833981519152613597565b611cd4600080516020615c1783398151915286600080516020615c77833981519152613597565b5050505050565b6115df600080516020615c778339815191528284611d1e565b611d0c600080516020615c778339815191528361344d565b600091825260d3602052604090912055565b611d28838361228d565b82611d33828261344d565b611cd48585856132b4565b6115df600080516020615c77833981519152828461208b565b606060998054610e1190615603565b600081815260d160205260409020805460609190611d8390615603565b80601f0160208091040260200160405190810160405280929190818152602001828054611daf90615603565b8015611dfc5780601f10611dd157610100808354040283529160200191611dfc565b820191906000526020600020905b815481529060010190602001808311611ddf57829003601f168201915b50505050509050919050565b600083815260d1602052604090208054611e2190615603565b15159050611e4557604051630817886d60e41b815260048101849052602401611218565b611e60600080516020615c7783398151915284610b5b6125ce565b611e9857611e6c6125ce565b83600080516020615c7783398151915260405163c8c801a760e01b8152600401611218939291906158ad565b600083815260d160205260409020611eb1908383614d45565b50505050565b6000611ec28261250d565b6000828152609e6020526040902054609d80549091908110611ee657611ee6615638565b9060005260206000209060060201600201549050919050565b6000611f0a82613602565b50600090815260d0602052604090205490565b6115df611f286125ce565b838361362b565b600081815260ce602052604090205460ff16611f615760405163db53ce7160e01b815260048101829052602401611218565b611f7a600080516020615bf783398151915282856136ff565b6001600160a01b038216611fa157604051630ca2c90160e21b815260040160405180910390fd5b611fba600080516020615bf7833981519152828461208b565b611fd3600080516020615c77833981519152828461208b565b611fec600080516020615c17833981519152828461208b565b612005600080516020615c178339815191528285611d1e565b61201e600080516020615c778339815191528285611d1e565b612037600080516020615bf78339815191528285611d1e565b7f744258a28673e8738e2812c0ab8e8dbd70352f8871b1febac0dd753d96d79f5883838360405161206a939291906158ce565b60405180910390a1505050565b600081815260cd6020526040812054610dfc565b612095838361228d565b826120a0828261344d565b611cd4858585613506565b6120b66112556125ce565b6120d25760405162461bcd60e51b815260040161121890615742565b611eb18484848461372d565b600091825260ca602090815260408084209484529381528383206001600160a01b0392909216835252205460ff1690565b6000610ff98280156121235761212361572c565b600085815260d3602052604090205490600160ff919091161b16151590565b6000610ff9600080516020615c7783398151915283856120de565b612165612b35565b6040516001600160a01b038216907ffb445f6ec07647d2bb7af72821e6b8b7303ec375e934d4a338d38ed5846c2d5690600090a26001600160a01b0316600090815260cb60205260409020805460ff19169055565b60606121c58261250d565b60006121dc60408051602081019091526000815290565b60a0549091506001600160a01b031661222857600081511161220d5760405180602001604052806000815250610ff9565b8061221784612532565b604051602001610f649291906158f2565b60a0546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610fa5565b61226561116284611287565b61226e81612b5f565b61128283836137a0565b61228461116282611287565b6115c3816137fc565b600090815260ca60209081526040808320938352929052206001015490565b60006122b78361250d565b506000918252609c602090815260408084206001600160a01b0393909316845291905290205490565b60008060606000806122f1866119ab565b600087815260cf602052604090205490955060ff1660028111156123175761231761572c565b600096875260d0602090815260408089205460cd90925290972054959790969395939450915050565b612348612b35565b6115c38161384a565b6060600061236a60408051602081019091526000815290565b60a0549091506001600160a01b03166123ca57600081511161239b5760405180602001604052806000815250612454565b806123a530613894565b6040516020016123b6929190615921565b604051602081830303815290604052612454565b60a060009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561241857600080fd5b505afa15801561242c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612454919081019061568e565b91505090565b60008060006124698585612a68565b9150915060005b818110156124bf5761249c83828151811061248d5761248d615638565b602002602001015160006138aa565b156124ad5760019350505050610dfc565b806124b781615711565b915050612470565b50600095945050505050565b6000610dfc8260006138aa565b60006001600160e01b031982166333cb74f560e11b1480610dfc57506301ffc9a760e01b6001600160e01b0319831614610dfc565b612516816139be565b6115c35760405162461bcd60e51b81526004016112189061587a565b6060600061253f83613a0a565b60010190506000816001600160401b0381111561255e5761255e61528a565b6040519080825280601f01601f191660200182016040528015612588576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846125c1576125c6565b612592565b509392505050565b60006125d8613ae2565b905090565b60006125e983856122ac565b90506000198114611eb157818110156126445760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401611218565b611eb183856126538585615965565b613b0c565b6000610dfc613c3b565b6001600160a01b0384166126c25760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401611218565b826127195760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401611218565b612722836139be565b1561276f5760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401611218565b61277a848484613c52565b6127848382613d06565b611eb1565b612792836139be565b6127ee5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401611218565b6127f7826139be565b6128515760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401611218565b6000838152609e6020526040812054609d8054909190811061287557612875615638565b906000526020600020906006020190506000609d609e600086815260200190815260200160002054815481106128ad576128ad615638565b9060005260206000209060060201905082826002015410156129245760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401611218565b80600101548260010154146129925760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401611218565b828260020160008282546129a69190615965565b92505081905550828160020160008282546129c1919061597c565b909155505060405183815284908690600080516020615c378339815191529060200160405180910390a3612a0685858560405180602001604052806000815250613d79565b611cd45760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401611218565b6060600080612a7685611a4b565b90506000816001600160401b03811115612a9257612a9261528a565b604051908082528060200260200182016040528015612abb578160200160208202803683370190505b5090506000805b83811015612b26576000612ad689836112cf565b905087612ae282611287565b1415612b1357808484612af481615711565b955081518110612b0657612b06615638565b6020026020010181815250505b5080612b1e81615711565b915050612ac2565b509093509150505b9250929050565b612b45612b406125ce565b613eda565b565b6115c3600080516020615c178339815191528261344d565b6001612b7160408301602084016159a3565b6002811115612b8257612b8261572c565b1415612c34578035341015612bb3576040516365a2b20160e01b815234600482015281356024820152604401611218565b612bc360a082016080830161504a565b6040516001600160a01b039190911690823580156108fc02916000818181858888f19350505050158015612bfb573d6000803e3d6000fd5b507f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a81604051612c2b91906159dc565b60405180910390a15b6002612c4660408301602084016159a3565b6002811115612c5757612c5761572c565b14156115c3576000612c6f606083016040840161504a565b905060006001600160a01b03821663dd62ed3e612c92608086016060870161504a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260440160206040518083038186803b158015612cd757600080fd5b505afa158015612ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0f9190615a48565b90508235811015612d3d5760405163355cd54b60e01b81526004810182905283356024820152604401611218565b6001600160a01b0382166323b872dd612d5c608086016060870161504a565b612d6c60a087016080880161504a565b6040516001600160e01b031960e085901b168152612d919291908835906004016158ce565b602060405180830381600087803b158015612dab57600080fd5b505af1158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de39190615a61565b507f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a8360405161206a91906159dc565b6000612e1d613c3b565b9050610ff984828585612662565b600082815260cd602090815260409182902083905581518481529081018390527f5e07998cef9cea674942c66f0ea7b0bce89ab9473ce240cc93d616c3491f8aeb910160405180910390a15050565b826001600160a01b0316612e8d826119ab565b6001600160a01b031614612eef5760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401611218565b6001600160a01b038216612f535760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401611218565b6000612f5e82611287565b90506000612f6b83611eb7565b9050612f78600084613f15565b612f8183613fac565b612f8b8584614057565b612f958484614178565b82846001600160a01b0316866001600160a01b0316600080516020615cde83398151915260405160405180910390a4611cd4565b6001600160a01b03163b151590565b600054610100900460ff16612fff5760405162461bcd60e51b815260040161121890615a7e565b611282838383614201565b600054610100900460ff161580801561302a5750600054600160ff909116105b8061304b575061303930612fc9565b15801561304b575060005460ff166001145b6130675760405162461bcd60e51b815260040161121890615794565b6000805460ff19166001179055801561308a576000805461ff0019166101001790555b613092614268565b61309c838361428f565b8015611282576000805461ff001916905560405160018152600080516020615c978339815191529060200161206a565b60cc80546001600160a01b0319166001600160a01b0383169081179091556040517f5e4a30f4224898dbac86adca855a5edd3b8341a3aeb2b6ff0f0b5a82c013b65a90600090a250565b600080516020615c57833981519152546001600160a01b031690565b6115c3612b35565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561316d57611282836143b2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a657600080fd5b505afa9250505080156131d6575060408051601f3d908101601f191682019092526131d391810190615a48565b60015b6132395760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611218565b600080516020615c5783398151915281146132a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611218565b5061128283838361444c565b6132bf8383836120de565b1561128257600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff191690556132fe6125ce565b6001600160a01b0316816001600160a01b0316847f6f9148fcdc32766ca802c14716295d56eab7ed848d0dba113966f40087c883908560405161334391815260200190565b60405180910390a4505050565b6133598161250d565b6000818152609e6020526040812054609d8054909190811061337d5761337d615638565b60009182526020909120600691909102016003810154600182015460028301549293506001600160a01b03909116916133b585613fac565b6133bf8386614057565b6133c885614471565b600085600080516020615c37833981519152836040516133ea91815260200190565b60405180910390a3600082867fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a460405185906000906001600160a01b03861690600080516020615cde833981519152908390a4611cd4565b6115df828261345a6125ce565b6136ff565b61346881613602565b6001600082815260cf602052604090205460ff16600281111561348d5761348d61572c565b146134c657600081815260cf6020526040908190205490516308c9ef2d60e11b815261121891839160ff90911690600190600401615ac9565b600081815260cf6020526040808220805460ff191690555182917fe2babfd5e77285a3c3dbc4b25592cbe4a7a26e97a7ac63067a22ebdaa9b82add91a250565b6135118383836120de565b61128257600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff191660011790556135526125ce565b6001600160a01b0316816001600160a01b0316847f4dc88bd74ca601684356789d5b3dbc9cd44275b2544e8d35041203703b7682328560405161334391815260200190565b60006135a3848461228d565b600084815260ca6020908152604080832088845282529182902060010185905590518581529192508391839187917f15f4a36186b2284157fe71215a07487f6c8bdc1203b3307c3e1fd9693011d3d3910160405180910390a450505050565b61360b816139be565b6115c3576040516321fbdd2b60e11b815260048101829052602401611218565b816001600160a01b0316836001600160a01b0316141561368d5760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401611218565b6001600160a01b038381166000818152609f602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b61370a8383836120de565b6112825780828460405163c8c801a760e01b8152600401611218939291906158ad565b613738848484612e7a565b6137448484848461467f565b611eb15760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401611218565b6137ab8260016147e2565b600082815260d06020526040908190208290555182907f1ebc57da8b3ebab98506502fbb73232ea29fbe86e4963a5a8c004810ad11190d906137f09084815260200190565b60405180910390a25050565b6138078160016147e2565b600081815260cf6020526040808220805460ff191660011790555182917f779fbee689bbd6f006ecb329206d35c7db7380f9837a8826fb8dc5cfcd3d33dd91a250565b60a080546001600160a01b0319166001600160a01b0383169081179091556040517f5252f52e45fc8ee6a7b43cef3645d23e9a470a34182b8b3a12627556635bfc9c90600090a250565b6060610dfc6001600160a01b0383166014614814565b600082815260cf602052604081205460ff16818160028111156138cf576138cf61572c565b146138de576000915050610dfc565b60006138e985611287565b90506138f681600061210f565b1561394b57600085815260d260205260409020546001600160a01b031680158015906139385750613936600080516020615c1783398151915283836120de565b155b156139495760009350505050610dfc565b505b6000613956866119ab565b600087815260d0602052604090205490915015801590613974575084155b156139a9576001600160a01b0381161580159061399f5750600086815260d060205260409020544211155b9350505050610dfc565b6001600160a01b031615159250610dfc915050565b609d5460009015801590610dfc57506000828152609e6020526040902054609d805484929081106139f1576139f1615638565b9060005260206000209060060201600001541492915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613a495772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613a75576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613a9357662386f26fc10000830492506010015b6305f5e1008310613aab576305f5e100830492506008015b6127108310613abf57612710830492506004015b60648310613ad1576064830492506002015b600a8310610dfc5760010192915050565b3360009081526097602052604081205460ff1615613b07575060131936013560601c90565b503390565b6001600160a01b038216613b755760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401611218565b613b7f82846149af565b613be5576000838152609e6020526040902054609d80549091908110613ba757613ba7615638565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b6000838152609c602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91016136f2565b6000613c4b609b80546001019055565b50609b5490565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050613ca081614a83565b613caa8484614178565b60405183906001600160a01b03861690600090600080516020615cde833981519152908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152609e6020526040902054609d80548392908110613d2a57613d2a615638565b90600052602060002090600602016002016000828254613d4a919061597c565b90915550506040518181528290600090600080516020615c378339815191529060200160405180910390a35050565b600080613d85856119ab565b9050613d99816001600160a01b0316612fc9565b8015613e1d57506040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015613de557600080fd5b505afa158015613df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1d9190615a61565b15613ecc576000816001600160a01b0316629ce20b613e3a6125ce565b898989896040518663ffffffff1660e01b8152600401613e5e959493929190615af6565b602060405180830381600087803b158015613e7857600080fd5b505af1158015613e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb09190615b34565b6001600160e01b031916629ce20b60e01b149250613ed2915050565b60019150505b949350505050565b6001600160a01b038116600090815260cb602052604090205460ff166115c35780604051632957ccdd60e21b81526004016112189190614f7c565b6000818152609e6020526040902054609d80548492908110613f3957613f39615638565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b0392831617905581908316613f73826119ab565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152609e6020526040812054609d80549091908110613fd057613fd0615638565b600091825260208220600560069092020190810154909250905b8181101561404857600083600501828154811061400957614009615638565b6000918252602080832090910154878352609c825260408084206001600160a01b0390921684529152812055508061404081615711565b915050613fea565b50611282600583016000614dc9565b6000818152609e6020526040812054609d8054909190811061407b5761407b615638565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152609f9091526040812080549091906140ca90600190615965565b905060008260000182815481106140e3576140e3615638565b9060005260206000200154905060008360010160008681526020019081526020016000205490508184600001828154811061412057614120615638565b6000918252602080832090910192909255838152600186019091526040808220839055868252812055835484908061415a5761415a615b51565b60019003818190600052602060002001600090559055505050505050565b6000818152609e6020526040902054609d8054849290811061419c5761419c615638565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152609f80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600054610100900460ff166142285760405162461bcd60e51b815260040161121890615a7e565b825161423b906098906020860190614de7565b50815161424f906099906020850190614de7565b50609a805460ff191660ff929092169190911790555050565b600054610100900460ff16612b455760405162461bcd60e51b815260040161121890615a7e565b600054610100900460ff16158080156142af5750600054600160ff909116105b806142d057506142be30612fc9565b1580156142d0575060005460ff166001145b6142ec5760405162461bcd60e51b815260040161121890615794565b6000805460ff19166001179055801561430f576000805461ff0019166101001790555b60005b828110156143815760016097600086868581811061433257614332615638565b9050602002016020810190614347919061504a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061437981615711565b915050614312565b508015611282576000805461ff001916905560405160018152600080516020615c978339815191529060200161206a565b6143bb81612fc9565b61441d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611218565b600080516020615c5783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61445583614bd5565b6000825111806144625750805b1561128257611eb18383614c15565b609d5460009061448390600190615965565b6000838152609e6020526040812054609d80549394509092849081106144ab576144ab615638565b60009182526020918290206040805160c08101825260069093029091018054835260018101548385015260028101548383015260038101546001600160a01b03908116606085015260048201541660808401526005810180548351818702810187019094528084529394919360a08601939283018282801561455657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614538575b505050505081525050905080609d838154811061457557614575615638565b600091825260209182902083516006909202019081558282015160018201556040830151600282015560608301516003820180546001600160a01b039283166001600160a01b031991821617909155608085015160048401805491909316911617905560a0830151805191926145f392600585019290910190614e5b565b505081516000908152609e602052604080822085905586825281205550609d80548061462157614621615b51565b60008281526020812060066000199093019283020181815560018101829055600281018290556003810180546001600160a01b03199081169091556004820180549091169055906146756005830182614dc9565b5050905550505050565b6000614693846001600160a01b0316612fc9565b156147da57836001600160a01b031663150b7a026146af6125ce565b8786866040518563ffffffff1660e01b81526004016146d19493929190615b67565b602060405180830381600087803b1580156146eb57600080fd5b505af192505050801561471b575060408051601f3d908101601f1916820190925261471891810190615b34565b60015b6147c0573d808015614749576040519150601f19603f3d011682016040523d82523d6000602084013e61474e565b606091505b5080516147b85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401611218565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613ed2565b506001613ed2565b6147ec82826138aa565b6115df576040516316af84a960e21b8152600481018390528115156024820152604401611218565b60606000614823836002615ba4565b61482e90600261597c565b6001600160401b038111156148455761484561528a565b6040519080825280601f01601f19166020018201604052801561486f576020820181803683370190505b509050600360fc1b8160008151811061488a5761488a615638565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106148b9576148b9615638565b60200101906001600160f81b031916908160001a90535060006148dd846002615ba4565b6148e890600161597c565b90505b6001811115614960576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061491c5761491c615638565b1a60f81b82828151811061493257614932615638565b60200101906001600160f81b031916908160001a90535060049490941c9361495981615bc3565b90506148eb565b508315610ff95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611218565b6000818152609e6020526040812054609d805483929081106149d3576149d3615638565b6000918252602082206005600690920201015491505b81811015614a78576000848152609e6020526040902054609d80546001600160a01b03881692908110614a1e57614a1e615638565b90600052602060002090600602016005018281548110614a4057614a40615638565b6000918252602090912001546001600160a01b03161415614a6657600192505050610dfc565b80614a7081615711565b9150506149e9565b506000949350505050565b609d805482516000908152609e6020908152604080832084905560018401855593909152835160069092027fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7b8101928355818501517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7c820155928401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7d84015560608401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7e840180546001600160a01b039283166001600160a01b03199182161790915560808601517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7f8601805491909316911617905560a084015180518594611eb1937fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf80909101920190614e5b565b614bde816143b2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614c2083612fc9565b614c7b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401611218565b600080846001600160a01b031684604051614c969190615bda565b600060405180830381855af49150503d8060008114614cd1576040519150601f19603f3d011682016040523d82523d6000602084013e614cd6565b606091505b5091509150614cfe8282604051806060016040528060278152602001615cb760279139614d07565b95945050505050565b60608315614d16575081610ff9565b610ff98383815115614d2b5781518083602001fd5b8060405162461bcd60e51b81526004016112189190614f50565b828054614d5190615603565b90600052602060002090601f016020900481019282614d735760008555614db9565b82601f10614d8c5782800160ff19823516178555614db9565b82800160010185558215614db9579182015b82811115614db9578235825591602001919060010190614d9e565b50614dc5929150614eb0565b5090565b50805460008255906000526020600020908101906115c39190614eb0565b828054614df390615603565b90600052602060002090601f016020900481019282614e155760008555614db9565b82601f10614e2e57805160ff1916838001178555614db9565b82800160010185558215614db9579182015b82811115614db9578251825591602001919060010190614e40565b828054828255906000526020600020908101928215614db9579160200282015b82811115614db957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614e7b565b5b80821115614dc55760008155600101614eb1565b6001600160e01b0319811681146115c357600080fd5b600060208284031215614eed57600080fd5b8135610ff981614ec5565b60005b83811015614f13578181015183820152602001614efb565b83811115611eb15750506000910152565b60008151808452614f3c816020860160208601614ef8565b601f01601f19169290920160200192915050565b602081526000610ff96020830184614f24565b600060208284031215614f7557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611a1657600080fd5b60008060408385031215614fba57600080fd5b614fc383614f90565b946020939093013593505050565b600080600060608486031215614fe657600080fd5b83359250614ff660208501614f90565b9150604084013590509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561503e57835183529284019291840191600101615022565b50909695505050505050565b60006020828403121561505c57600080fd5b610ff982614f90565b600060a0828403121561507757600080fd5b50919050565b6000806000806000610120868803121561509657600080fd5b61509f86614f90565b94506020860135935060408601359250606086013591506150c38760808801615065565b90509295509295909350565b6000806000606084860312156150e457600080fd5b6150ed84614f90565b9250614ff660208501614f90565b60008060006060848603121561511057600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261513957600080fd5b5081356001600160401b0381111561515057600080fd5b602083019150836020828501011115612b2e57600080fd5b60008060008060008060008060a0898b03121561518457600080fd5b88356001600160401b038082111561519b57600080fd5b6151a78c838d01615127565b909a50985060208b01359150808211156151c057600080fd5b6151cc8c838d01615127565b90985096508691506151e060408c01614f90565b95506151ee60608c01614f90565b945060808b013591508082111561520457600080fd5b818b0191508b601f83011261521857600080fd5b81358181111561522757600080fd5b8c60208260051b850101111561523c57600080fd5b6020830194508093505050509295985092959890939650565b60008060006060848603121561526a57600080fd5b833592506020840135915061528160408501614f90565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156152c8576152c861528a565b604052919050565b60006001600160401b038211156152e9576152e961528a565b50601f01601f191660200190565b600082601f83011261530857600080fd5b813561531b615316826152d0565b6152a0565b81815284602083860101111561533057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561536057600080fd5b61536983614f90565b915060208301356001600160401b0381111561538457600080fd5b615390858286016152f7565b9150509250929050565b600080604083850312156153ad57600080fd5b50508035926020909101359150565b80151581146115c357600080fd5b6000806000806000608086880312156153e257600080fd5b8535945060208601356001600160401b038111156153ff57600080fd5b61540b88828901615127565b909550935050604086013561541f816153bc565b91506150c360608701614f90565b60008060006040848603121561544257600080fd5b8335925060208401356001600160401b0381111561545f57600080fd5b61546b86828701615127565b9497909650939450505050565b6000806040838503121561548b57600080fd5b61549483614f90565b915060208301356154a4816153bc565b809150509250929050565b600080600080608085870312156154c557600080fd5b6154ce85614f90565b93506154dc60208601614f90565b92506040850135915060608501356001600160401b038111156154fe57600080fd5b61550a878288016152f7565b91505092959194509250565b6000806040838503121561552957600080fd5b823591506020830135600181106154a457600080fd5b600080600060e0848603121561555457600080fd5b83359250602084013591506152818560408601615065565b6000806040838503121561557f57600080fd5b8235915061558f60208401614f90565b90509250929050565b6001600160a01b038616815260ff8516602082015260a0604082018190526000906155c590830186614f24565b606083019490945250608001529392505050565b600080604083850312156155ec57600080fd5b6155f583614f90565b915061558f60208401614f90565b600181811c9082168061561757607f821691505b6020821081141561507757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008351615660818460208801614ef8565b64736c6f742f60d81b9083019081528351615682816005840160208801614ef8565b01600501949350505050565b6000602082840312156156a057600080fd5b81516001600160401b038111156156b657600080fd5b8201601f810184136156c757600080fd5b80516156d5615316826152d0565b8181528560208385010111156156ea57600080fd5b614cfe826020830160208601614ef8565b634e487b7160e01b600052601160045260246000fd5b6000600019821415615725576157256156fb565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b602080825260199082015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008351615904818460208801614ef8565b835190830190615918818360208801614ef8565b01949350505050565b60008351615933818460208801614ef8565b68636f6e74726163742f60b81b9083019081528351615959816009840160208801614ef8565b01600901949350505050565b600082821015615977576159776156fb565b500390565b6000821982111561598f5761598f6156fb565b500190565b803560038110611a1657600080fd5b6000602082840312156159b557600080fd5b610ff982615994565b600381106115c357634e487b7160e01b600052602160045260246000fd5b8135815260a081016159f060208401615994565b6159f9816159be565b6020830152615a0a60408401614f90565b6001600160a01b03818116604085015280615a2760608701614f90565b16606085015280615a3a60808701614f90565b166080850152505092915050565b600060208284031215615a5a57600080fd5b5051919050565b600060208284031215615a7357600080fd5b8151610ff9816153bc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260608101615ad9846159be565b836020830152615ae8836159be565b826040830152949350505050565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000615b2960a0830184614f24565b979650505050505050565b600060208284031215615b4657600080fd5b8151610ff981614ec5565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615b9a90830184614f24565b9695505050505050565b6000816000190483118215151615615bbe57615bbe6156fb565b500290565b600081615bd257615bd26156fb565b506000190190565b60008251615bec818460208701614ef8565b919091019291505056fefca69b310bd19d275687ebe00b254b0772cf7a367c3f81a9a5a433f831fdc1dc3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc6360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc449b0a7e0acc0a95c71947cb19fdd122b42abca9bdfbd6707ca4f1e3fdaef05e7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202a63832b55a067dfe1428a20bae643aa0bcee79e032a57959ec9e01301f952db64736f6c63430008090033"; + "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e8565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615daa620001206000396000818161153701528181611577015281816116b0015281816116f001526118230152615daa6000f3fe6080604052600436106104075760003560e01c806381e9ff1911610214578063b88d4fde1161011e578063df2a7fe1116100b6578063e8a3d4851161007a578063e8a3d48514610cd2578063e985e9c514610ce7578063f415999014610d34578063ff17e23214610d61578063ff85a97514610d8157600080fd5b8063df2a7fe114610c08578063df7f453b14610c28578063e345e0bc14610c61578063e4b50cb814610c81578063e71fb11014610cb257600080fd5b8063b88d4fde14610b00578063babb898d14610b13578063bfea1f9714610b33578063c2a366fb14610b53578063c58dbbed14610b73578063c87b56dd14610b93578063ce6da01a14610bb3578063d6fd317514610bc6578063d7a78db814610be857600080fd5b806395ea5717116101ac578063a22cb46511610170578063a22cb46514610a50578063a578c09314610a70578063a8fa8e0d14610aa0578063b4bd857914610ac0578063b5d6163514610ae057600080fd5b806395ea5717146109bb5780639c7525e6146109db5780639cc7f708146109fb578063a05b775f14610a1b578063a217fddf14610a3b57600080fd5b806381e9ff19146108c257806382d66d5f146108e457806383b2b27614610904578063840f7113146109245780638423df79146109445780638cb0a511146109585780638eb7a7761461096657806390eddd521461098657806395d89b41146109a657600080fd5b80633659cfe61161031557806352d1902d116102ad5780636dba2729116102715780636dba2729146108205780636f7caf411461084057806370a082311461086257806370f08160146108825780637dbded28146108a257600080fd5b806352d1902d14610772578063572b6c05146107875780635c41d2fe146107c05780636352211e146107e05780636623fc461461080057600080fd5b80633659cfe61461066a57806336e450411461068a5780633e7e8669146106aa57806342842e0e146106cc57806342966c68146106df5780634d93172d146106ff5780634f1ef2861461071f5780634f6ccce71461073257806351da912d1461075257600080fd5b806323287f24116103a3578063310ed7f011610367578063310ed7f0146105c157806331416a29146105d457806334d7a95e146105f457806334e37b8a1461062a5780633568dd291461064a57600080fd5b806323287f241461053b57806323b872dd1461054e578063263f3e7e146105615780632d33d27a146105815780632f745c59146105a157600080fd5b806301ffc9a71461040c57806306fdde0314610441578063081812fc14610463578063095ea7b31461049057806309c3dd87146104a55780630f485c02146104c557806315700052146104e657806318160ddd1461050657806320c5429b1461051b575b600080fd5b34801561041857600080fd5b5061042c610427366004614f0b565b610da1565b60405190151581526020015b60405180910390f35b34801561044d57600080fd5b50610456610e02565b6040516104389190614f80565b34801561046f57600080fd5b5061048361047e366004614f93565b610e94565b6040516104389190614fac565b6104a361049e366004614fd7565b610ee6565b005b3480156104b157600080fd5b506104566104c0366004614f93565b610eff565b6104d86104d3366004615001565b611000565b604051908152602001610438565b3480156104f257600080fd5b506104a3610501366004615036565b61103f565b34801561051257600080fd5b50609d546104d8565b34801561052757600080fd5b506104a3610536366004614f93565b61109f565b6104a3610549366004615069565b6110f3565b6104a361055c3660046150bb565b611193565b34801561056d57600080fd5b506104d861057c366004614f93565b6111d0565b34801561058d57600080fd5b5060cc54610483906001600160a01b031681565b3480156105ad57600080fd5b506104d86105bc366004614fd7565b611218565b6104a36105cf3660046150e7565b6112b9565b3480156105e057600080fd5b506104a36105ef36600461515b565b6112d6565b34801561060057600080fd5b5061048361060f366004614f93565b600090815260d260205260409020546001600160a01b031690565b34801561063657600080fd5b506104a3610645366004615036565b6114fb565b34801561065657600080fd5b506104a3610665366004614fd7565b61150f565b34801561067657600080fd5b506104a3610685366004615036565b61152c565b34801561069657600080fd5b506104a36106a5366004615248565b6115f2565b3480156106b657600080fd5b50609a5460405160ff9091168152602001610438565b6104a36106da3660046150bb565b611648565b3480156106eb57600080fd5b506104a36106fa366004614f93565b611663565b34801561070b57600080fd5b506104a361071a366004615036565b611678565b6104a361072d366004615340565b6116a5565b34801561073e57600080fd5b506104d861074d366004614f93565b61175b565b34801561075e57600080fd5b506104a361076d36600461538d565b6117ec565b34801561077e57600080fd5b506104d8611816565b34801561079357600080fd5b5061042c6107a2366004615036565b6001600160a01b031660009081526097602052604090205460ff1690565b3480156107cc57600080fd5b506104a36107db366004615036565b6118c4565b3480156107ec57600080fd5b506104836107fb366004614f93565b6118f4565b34801561080c57600080fd5b506104a361081b366004614f93565b611964565b34801561082c57600080fd5b5061042c61083b366004614fd7565b611979565b34801561084c57600080fd5b506104d8600080516020615cee83398151915281565b34801561086e57600080fd5b506104d861087d366004615036565b611994565b34801561088e57600080fd5b506104a361089d366004614fd7565b611a1c565b3480156108ae57600080fd5b506104a36108bd3660046153bd565b611a35565b3480156108ce57600080fd5b506104d8600080516020615c6e83398151915281565b3480156108f057600080fd5b506104a36108ff366004614fd7565b611c24565b34801561091057600080fd5b506104a361091f36600461538d565b611c3d565b34801561093057600080fd5b5060a054610483906001600160a01b031681565b34801561095057600080fd5b50600161042c565b6104a361049e366004615001565b34801561097257600080fd5b506104a3610981366004615248565b611c67565b34801561099257600080fd5b506104a36109a1366004614fd7565b611c87565b3480156109b257600080fd5b50610456611ca0565b3480156109c757600080fd5b506104566109d6366004614f93565b611caf565b3480156109e757600080fd5b506104a36109f6366004615420565b611d51565b348015610a0757600080fd5b506104d8610a16366004614f93565b611e00565b348015610a2757600080fd5b506104d8610a36366004614f93565b611e48565b348015610a4757600080fd5b506104d8600081565b348015610a5c57600080fd5b506104a3610a6b36600461546b565b611e66565b348015610a7c57600080fd5b5061042c610a8b366004614f93565b60ce6020526000908152604090205460ff1681565b348015610aac57600080fd5b506104a3610abb3660046150bb565b611e78565b348015610acc57600080fd5b506104d8610adb366004614f93565b611fc0565b348015610aec57600080fd5b506104a3610afb366004615248565b611fd4565b6104a3610b0e3660046154a2565b611ff4565b348015610b1f57600080fd5b5061042c610b2e366004615248565b612027565b348015610b3f57600080fd5b5061042c610b4e366004615509565b612058565b348015610b5f57600080fd5b5061042c610b6e366004614fd7565b61208b565b348015610b7f57600080fd5b506104a3610b8e366004615036565b6120a6565b348015610b9f57600080fd5b50610456610bae366004614f93565b612103565b6104a3610bc1366004615532565b6121a2565b348015610bd257600080fd5b506104d8600080516020615c8e83398151915281565b348015610bf457600080fd5b506104a3610c03366004614f93565b6121c1565b348015610c1457600080fd5b506104d8610c2336600461538d565b6121d6565b348015610c3457600080fd5b5061042c610c43366004615036565b6001600160a01b0316600090815260cb602052604090205460ff1690565b348015610c6d57600080fd5b506104d8610c7c36600461555f565b6121f5565b348015610c8d57600080fd5b50610ca1610c9c366004614f93565b612229565b60405161043895949392919061558b565b348015610cbe57600080fd5b506104a3610ccd366004615036565b612289565b348015610cde57600080fd5b5061045661229a565b348015610cf357600080fd5b5061042c610d023660046155cc565b6001600160a01b039182166000908152609f602090815260408083209390941682526002909201909152205460ff1690565b348015610d4057600080fd5b50610d54610d4f3660046155f6565b6123a3565b6040516104389190615636565b348015610d6d57600080fd5b5061042c610d7c366004614fd7565b61245c565b348015610d8d57600080fd5b5061042c610d9c366004614f93565b612476565b60006001600160e01b03198216630354d60560e61b1480610dd257506001600160e01b031982166380ac58cd60e01b145b80610ded57506001600160e01b031982166370b0048160e11b145b80610dfc5750610dfc82612483565b92915050565b606060988054610e119061567a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d9061567a565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b5050505050905090565b6000610e9f826124b8565b6000828152609e6020526040902054609d80549091908110610ec357610ec36156af565b60009182526020909120600460069092020101546001600160a01b031692915050565b60405163c03a3ff560e01b815260040160405180910390fd5b60606000610f1860408051602081019091526000815290565b60a0549091506001600160a01b0316610f78576000815111610f495760405180602001604052806000815250610ff9565b80610f53846124dd565b604051602001610f649291906156c5565b604051602081830303815290604052610ff9565b60a054604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b60006040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ff99190810190615705565b9392505050565b600061101461100d612579565b8584612588565b61101d84612603565b9050611034838261102d876111d0565b600061260d565b610ff9848284612734565b611047612a13565b6040516001600160a01b038216907f286f82d2b1e37b5e9f33e455d014b4a5f6c29388e6e41e1281d4c83e04f4265590600090a26001600160a01b0316600090815260cb60205260409020805460ff19166001179055565b6110b06110ab826111d0565b612a25565b600081815260cf6020526040808220805460ff191660021790555182917fdb43aa42235c8d63908794a952603e8d43a549383d13123c3d893a3fc2e6249591a250565b6110fc84612a25565b61110581612a3d565b600061111386866001612d5d565b90506000841161116a5760405162461bcd60e51b815260206004820181905260248201527f54455354204d4f44453a20457870697279206d757374206265203e207a65726f60448201526064015b60405180910390fd5b600081815260d060205260409020849055821561118b5761118b8184612d75565b505050505050565b6111a461119e612579565b50600090565b6111c05760405162461bcd60e51b815260040161116190615788565b6111cb838383612dc4565b505050565b60006111db826124b8565b6000828152609e6020526040902054609d805490919081106111ff576111ff6156af565b9060005260206000209060060201600101549050919050565b600061122383611994565b821061127c5760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401611161565b6001600160a01b0383166000908152609f602052604090208054839081106112a6576112a66156af565b9060005260206000200154905092915050565b6112cb6112c4612579565b8483612588565b6111cb838383612734565b600054610100900460ff16158080156112f65750600054600160ff909116105b80611317575061130530612f13565b158015611317575060005460ff166001145b6113335760405162461bcd60e51b8152600401611161906157da565b6000805460ff191660011790558015611356576000805461ff0019166101001790555b6001600160a01b03851661137d57604051630ca2c90160e21b815260040160405180910390fd5b6001600160a01b0384166113a457604051630ca2c90160e21b815260040160405180910390fd5b60005b828110156114125760008484838181106113c3576113c36156af565b90506020020160208101906113d89190615036565b6001600160a01b0316141561140057604051630ca2c90160e21b815260040160405180910390fd5b8061140a8161583e565b9150506113a7565b5061148689898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201829052509250612f22915050565b6114908383612f54565b61149984613016565b6001600160a01b038516600090815260cb60205260409020805460ff1916600117905580156114f0576000805461ff001916905560405160018152600080516020615d0e8339815191529060200160405180910390a15b505050505050505050565b611503612a13565b61150c81613016565b50565b611528600080516020615c8e8339815191528284611c67565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156115755760405162461bcd60e51b815260040161116190615859565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115a7613060565b6001600160a01b0316146115cd5760405162461bcd60e51b8152600401611161906158a5565b6115d68161307c565b6040805160008082526020820190925261150c91839190613084565b6115fa612579565b6001600160a01b0316816001600160a01b03161461163d576040516307ca099360e31b8152600481018490526001600160a01b0382166024820152604401611161565b6111cb8383836131fe565b6111cb83838360405180602001604052806000815250611ff4565b61166f6110ab826111d0565b61150c8161329a565b611680612a13565b61150c816001600160a01b03166000908152609760205260409020805460ff19169055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156116ee5760405162461bcd60e51b815260040161116190615859565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611720613060565b6001600160a01b0316146117465760405162461bcd60e51b8152600401611161906158a5565b61174f8261307c565b61152882826001613084565b6000611766609d5490565b82106117c05760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401611161565b609d82815481106117d3576117d36156af565b9060005260206000209060060201600001549050919050565b61180c600080516020615c8e833981519152611807846111d0565b613397565b6115288282612d75565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146118b15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401611161565b50600080516020615cce83398151915290565b6118cc612a13565b61150c816001600160a01b03166000908152609760205260409020805460ff19166001179055565b60006118ff826124b8565b6000828152609e6020526040902054609d80549091908110611923576119236156af565b60009182526020909120600360069092020101546001600160a01b031690508061195f5760405162461bcd60e51b8152600401611161906158f1565b919050565b6119706110ab826111d0565b61150c816133a9565b6000610ff9600080516020615c8e8339815191528385612027565b60006001600160a01b038216611a005760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401611161565b506001600160a01b03166000908152609f602052604090205490565b611528600080516020615c8e8339815191528284611fd4565b600085815260d1602052604090208054611a4e9061567a565b159050611a7157604051636f55f62b60e01b815260048101869052602401611161565b600085815260d160205260409020611a8a908585614d75565b508115611baf57600085815260ce60205260409020805460ff19168315151790556001600160a01b038116611ad257604051630ca2c90160e21b815260040160405180910390fd5b611ae4816001600160a01b0316612f13565b611b03578060405163d4daafa160e01b81526004016111619190614fac565b611b1c600080516020615c6e8339815191528683613450565b611b35600080516020615cee8339815191528683613450565b611b5c600080516020615cee83398151915286600080516020615c6e8339815191526134e1565b611b83600080516020615c8e83398151915286600080516020615c6e8339815191526134e1565b611baa600080516020615c6e83398151915286600080516020615c6e8339815191526134e1565b611c1d565b611bcf600080516020615cee83398151915286611bca612579565b613450565b611bf6600080516020615cee83398151915286600080516020615cee8339815191526134e1565b611c1d600080516020615c8e83398151915286600080516020615cee8339815191526134e1565b5050505050565b611528600080516020615cee8339815191528284611c67565b611c55600080516020615cee83398151915283613397565b600091825260d3602052604090912055565b611c7183836121d6565b82611c7c8282613397565b611c1d8585856131fe565b611528600080516020615cee8339815191528284611fd4565b606060998054610e119061567a565b600081815260d160205260409020805460609190611ccc9061567a565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf89061567a565b8015611d455780601f10611d1a57610100808354040283529160200191611d45565b820191906000526020600020905b815481529060010190602001808311611d2857829003601f168201915b50505050509050919050565b600083815260d1602052604090208054611d6a9061567a565b15159050611d8e57604051630817886d60e41b815260048101849052602401611161565b611da9600080516020615cee83398151915284610b2e612579565b611de157611db5612579565b83600080516020615cee83398151915260405163c8c801a760e01b815260040161116193929190615924565b600083815260d160205260409020611dfa908383614d75565b50505050565b6000611e0b826124b8565b6000828152609e6020526040902054609d80549091908110611e2f57611e2f6156af565b9060005260206000209060060201600201549050919050565b6000611e538261354c565b50600090815260d0602052604090205490565b611528611e71612579565b8383613575565b600081815260ce602052604090205460ff16611eaa5760405163db53ce7160e01b815260048101829052602401611161565b611ec3600080516020615c6e8339815191528285613649565b6001600160a01b038216611eea57604051630ca2c90160e21b815260040160405180910390fd5b611f03600080516020615c6e8339815191528284611fd4565b611f1c600080516020615cee8339815191528284611fd4565b611f35600080516020615c8e8339815191528284611fd4565b611f4e600080516020615c8e8339815191528285611c67565b611f67600080516020615cee8339815191528285611c67565b611f80600080516020615c6e8339815191528285611c67565b7f744258a28673e8738e2812c0ab8e8dbd70352f8871b1febac0dd753d96d79f58838383604051611fb393929190615945565b60405180910390a1505050565b600081815260cd6020526040812054610dfc565b611fde83836121d6565b82611fe98282613397565b611c1d858585613450565b611fff61119e612579565b61201b5760405162461bcd60e51b815260040161116190615788565b611dfa84848484613677565b600091825260ca602090815260408084209484529381528383206001600160a01b0392909216835252205460ff1690565b6000610ff982801561206c5761206c615772565b600085815260d3602052604090205490600160ff919091161b16151590565b6000610ff9600080516020615cee8339815191528385612027565b6120ae612a13565b6040516001600160a01b038216907ffb445f6ec07647d2bb7af72821e6b8b7303ec375e934d4a338d38ed5846c2d5690600090a26001600160a01b0316600090815260cb60205260409020805460ff19169055565b606061210e826124b8565b600061212560408051602081019091526000815290565b60a0549091506001600160a01b03166121715760008151116121565760405180602001604052806000815250610ff9565b80612160846124dd565b604051602001610f64929190615969565b60a0546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610fa5565b6121ae6110ab846111d0565b6121b883836136ea565b6111cb81612a3d565b6121cd6110ab826111d0565b61150c81613746565b600090815260ca60209081526040808320938352929052206001015490565b6000612200836124b8565b506000918252609c602090815260408084206001600160a01b0393909316845291905290205490565b600080606060008061223a866118f4565b600087815260cf602052604090205490955060ff16600281111561226057612260615772565b600096875260d0602090815260408089205460cd90925290972054959790969395939450915050565b612291612a13565b61150c81613794565b606060006122b360408051602081019091526000815290565b60a0549091506001600160a01b03166123135760008151116122e4576040518060200160405280600081525061239d565b806122ee306137de565b6040516020016122ff929190615998565b60405160208183030381529060405261239d565b60a060009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261239d9190810190615705565b91505090565b60606000806123b38686866137f4565b915091506000816001600160401b038111156123d1576123d161527d565b6040519080825280602002602001820160405280156123fa578160200160208202803683370190505b50905060005b828110156124515783818151811061241a5761241a6156af565b6020026020010151828281518110612434576124346156af565b6020908102919091010152806124498161583e565b915050612400565b509695505050505050565b60008061246b848460016137f4565b151595945050505050565b6000610dfc8260006138da565b60006001600160e01b031982166333cb74f560e11b1480610dfc57506301ffc9a760e01b6001600160e01b0319831614610dfc565b6124c1816139ee565b61150c5760405162461bcd60e51b8152600401611161906158f1565b606060006124ea83613a3a565b60010190506000816001600160401b038111156125095761250961527d565b6040519080825280601f01601f191660200182016040528015612533576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461256c57612571565b61253d565b509392505050565b6000612583613b12565b905090565b600061259483856121f5565b90506000198114611dfa57818110156125ef5760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401611161565b611dfa83856125fe85856159dc565b613b3c565b6000610dfc613c6b565b6001600160a01b03841661266d5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401611161565b826126c45760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401611161565b6126cd836139ee565b1561271a5760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401611161565b612725848484613c82565b61272f8382613d36565b611dfa565b61273d836139ee565b6127995760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401611161565b6127a2826139ee565b6127fc5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401611161565b6000838152609e6020526040812054609d80549091908110612820576128206156af565b906000526020600020906006020190506000609d609e60008681526020019081526020016000205481548110612858576128586156af565b9060005260206000209060060201905082826002015410156128cf5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401611161565b806001015482600101541461293d5760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401611161565b8282600201600082825461295191906159dc565b925050819055508281600201600082825461296c91906159f3565b909155505060405183815284908690600080516020615cae8339815191529060200160405180910390a36129b185858560405180602001604052806000815250613da9565b611c1d5760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401611161565b612a23612a1e612579565b613f0a565b565b61150c600080516020615c8e83398151915282613397565b6001612a4f6040830160208401615a1a565b6002811115612a6057612a60615772565b1415612b52578035341015612a91576040516365a2b20160e01b815234600482015281356024820152604401611161565b7f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a81604051612ac09190615a53565b60405180910390a16000612ada60a0830160808401615036565b6001600160a01b0316826000013560405160006040518083038185875af1925050503d8060008114612b28576040519150601f19603f3d011682016040523d82523d6000602084013e612b2d565b606091505b505090508061152857604051636d6cc4a760e01b815282356004820152602401611161565b6002612b646040830160208401615a1a565b6002811115612b7557612b75615772565b141561150c576000612b8d6060830160408401615036565b905060006001600160a01b03821663dd62ed3e612bb06080860160608701615036565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260440160206040518083038186803b158015612bf557600080fd5b505afa158015612c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2d9190615abf565b90508235811015612c5b5760405163355cd54b60e01b81526004810182905283356024820152604401611161565b7f435e19089f6ae5362a112155f011980907d2ff69b4c2bb894f8324260650ee6a83604051612c8a9190615a53565b60405180910390a160006001600160a01b0383166323b872dd612cb36080870160608801615036565b612cc360a0880160808901615036565b6040516001600160e01b031960e085901b168152612ce8929190893590600401615945565b602060405180830381600087803b158015612d0257600080fd5b505af1158015612d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3a9190615ad8565b905080611dfa57604051636d6cc4a760e01b815284356004820152602401611161565b6000612d67613c6b565b9050610ff98482858561260d565b600082815260cd602090815260409182902083905581518481529081018390527f5e07998cef9cea674942c66f0ea7b0bce89ab9473ce240cc93d616c3491f8aeb910160405180910390a15050565b826001600160a01b0316612dd7826118f4565b6001600160a01b031614612e395760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401611161565b6001600160a01b038216612e9d5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401611161565b6000612ea8826111d0565b90506000612eb583611e00565b9050612ec2600084613f45565b612ecb83613fdc565b612ed58584614087565b612edf84846141a8565b82846001600160a01b0316866001600160a01b0316600080516020615d5583398151915260405160405180910390a4611c1d565b6001600160a01b03163b151590565b600054610100900460ff16612f495760405162461bcd60e51b815260040161116190615af5565b6111cb838383614231565b600054610100900460ff1615808015612f745750600054600160ff909116105b80612f955750612f8330612f13565b158015612f95575060005460ff166001145b612fb15760405162461bcd60e51b8152600401611161906157da565b6000805460ff191660011790558015612fd4576000805461ff0019166101001790555b612fdc614298565b612fe683836142bf565b80156111cb576000805461ff001916905560405160018152600080516020615d0e83398151915290602001611fb3565b60cc80546001600160a01b0319166001600160a01b0383169081179091556040517f5e4a30f4224898dbac86adca855a5edd3b8341a3aeb2b6ff0f0b5a82c013b65a90600090a250565b600080516020615cce833981519152546001600160a01b031690565b61150c612a13565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156130b7576111cb836143e2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156130f057600080fd5b505afa925050508015613120575060408051601f3d908101601f1916820190925261311d91810190615abf565b60015b6131835760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611161565b600080516020615cce83398151915281146131f25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611161565b506111cb83838361447c565b613209838383612027565b156111cb57600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff19169055613248612579565b6001600160a01b0316816001600160a01b0316847f6f9148fcdc32766ca802c14716295d56eab7ed848d0dba113966f40087c883908560405161328d91815260200190565b60405180910390a4505050565b6132a3816124b8565b6000818152609e6020526040812054609d805490919081106132c7576132c76156af565b60009182526020909120600691909102016003810154600182015460028301549293506001600160a01b03909116916132ff85613fdc565b6133098386614087565b613312856144a1565b600085600080516020615cae8339815191528360405161333491815260200190565b60405180910390a3600082867fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a460405185906000906001600160a01b03861690600080516020615d55833981519152908390a4611c1d565b61152882826133a4612579565b613649565b6133b28161354c565b6001600082815260cf602052604090205460ff1660028111156133d7576133d7615772565b1461341057600081815260cf6020526040908190205490516308c9ef2d60e11b815261116191839160ff90911690600190600401615b40565b600081815260cf6020526040808220805460ff191690555182917fe2babfd5e77285a3c3dbc4b25592cbe4a7a26e97a7ac63067a22ebdaa9b82add91a250565b61345b838383612027565b6111cb57600082815260ca6020908152604080832086845282528083206001600160a01b03851684529091529020805460ff1916600117905561349c612579565b6001600160a01b0316816001600160a01b0316847f4dc88bd74ca601684356789d5b3dbc9cd44275b2544e8d35041203703b7682328560405161328d91815260200190565b60006134ed84846121d6565b600084815260ca6020908152604080832088845282529182902060010185905590518581529192508391839187917f15f4a36186b2284157fe71215a07487f6c8bdc1203b3307c3e1fd9693011d3d3910160405180910390a450505050565b613555816139ee565b61150c576040516321fbdd2b60e11b815260048101829052602401611161565b816001600160a01b0316836001600160a01b031614156135d75760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401611161565b6001600160a01b038381166000818152609f602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b613654838383612027565b6111cb5780828460405163c8c801a760e01b815260040161116193929190615924565b613682848484612dc4565b61368e848484846146af565b611dfa5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401611161565b6136f5826001614812565b600082815260d06020526040908190208290555182907f1ebc57da8b3ebab98506502fbb73232ea29fbe86e4963a5a8c004810ad11190d9061373a9084815260200190565b60405180910390a25050565b613751816001614812565b600081815260cf6020526040808220805460ff191660011790555182917f779fbee689bbd6f006ecb329206d35c7db7380f9837a8826fb8dc5cfcd3d33dd91a250565b60a080546001600160a01b0319166001600160a01b0383169081179091556040517f5252f52e45fc8ee6a7b43cef3645d23e9a470a34182b8b3a12627556635bfc9c90600090a250565b6060610dfc6001600160a01b0383166014614844565b606060008061380286611994565b90506000816001600160401b0381111561381e5761381e61527d565b604051908082528060200260200182016040528015613847578160200160208202803683370190505b5090506000805b838110156138cc5760006138628a83611218565b90508861386e826111d0565b148015613889575087158061388957506138898160006138da565b156138b95780848461389a8161583e565b9550815181106138ac576138ac6156af565b6020026020010181815250505b50806138c48161583e565b91505061384e565b509097909650945050505050565b600082815260cf602052604081205460ff16818160028111156138ff576138ff615772565b1461390e576000915050610dfc565b6000613919856111d0565b9050613926816000612058565b1561397b57600085815260d260205260409020546001600160a01b031680158015906139685750613966600080516020615c8e8339815191528383612027565b155b156139795760009350505050610dfc565b505b6000613986866118f4565b600087815260d06020526040902054909150158015906139a4575084155b156139d9576001600160a01b038116158015906139cf5750600086815260d060205260409020544211155b9350505050610dfc565b6001600160a01b031615159250610dfc915050565b609d5460009015801590610dfc57506000828152609e6020526040902054609d80548492908110613a2157613a216156af565b9060005260206000209060060201600001541492915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613a795772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613aa5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613ac357662386f26fc10000830492506010015b6305f5e1008310613adb576305f5e100830492506008015b6127108310613aef57612710830492506004015b60648310613b01576064830492506002015b600a8310610dfc5760010192915050565b3360009081526097602052604081205460ff1615613b37575060131936013560601c90565b503390565b6001600160a01b038216613ba55760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401611161565b613baf82846149df565b613c15576000838152609e6020526040902054609d80549091908110613bd757613bd76156af565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b6000838152609c602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b910161363c565b6000613c7b609b80546001019055565b50609b5490565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050613cd081614ab3565b613cda84846141a8565b60405183906001600160a01b03861690600090600080516020615d55833981519152908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152609e6020526040902054609d80548392908110613d5a57613d5a6156af565b90600052602060002090600602016002016000828254613d7a91906159f3565b90915550506040518181528290600090600080516020615cae8339815191529060200160405180910390a35050565b600080613db5856118f4565b9050613dc9816001600160a01b0316612f13565b8015613e4d57506040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a79060240160206040518083038186803b158015613e1557600080fd5b505afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d9190615ad8565b15613efc576000816001600160a01b0316629ce20b613e6a612579565b898989896040518663ffffffff1660e01b8152600401613e8e959493929190615b6d565b602060405180830381600087803b158015613ea857600080fd5b505af1158015613ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee09190615bab565b6001600160e01b031916629ce20b60e01b149250613f02915050565b60019150505b949350505050565b6001600160a01b038116600090815260cb602052604090205460ff1661150c5780604051632957ccdd60e21b81526004016111619190614fac565b6000818152609e6020526040902054609d80548492908110613f6957613f696156af565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b0392831617905581908316613fa3826118f4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152609e6020526040812054609d80549091908110614000576140006156af565b600091825260208220600560069092020190810154909250905b81811015614078576000836005018281548110614039576140396156af565b6000918252602080832090910154878352609c825260408084206001600160a01b039092168452915281205550806140708161583e565b91505061401a565b506111cb600583016000614df9565b6000818152609e6020526040812054609d805490919081106140ab576140ab6156af565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152609f9091526040812080549091906140fa906001906159dc565b90506000826000018281548110614113576141136156af565b90600052602060002001549050600083600101600086815260200190815260200160002054905081846000018281548110614150576141506156af565b6000918252602080832090910192909255838152600186019091526040808220839055868252812055835484908061418a5761418a615bc8565b60019003818190600052602060002001600090559055505050505050565b6000818152609e6020526040902054609d805484929081106141cc576141cc6156af565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152609f80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600054610100900460ff166142585760405162461bcd60e51b815260040161116190615af5565b825161426b906098906020860190614e17565b50815161427f906099906020850190614e17565b50609a805460ff191660ff929092169190911790555050565b600054610100900460ff16612a235760405162461bcd60e51b815260040161116190615af5565b600054610100900460ff16158080156142df5750600054600160ff909116105b8061430057506142ee30612f13565b158015614300575060005460ff166001145b61431c5760405162461bcd60e51b8152600401611161906157da565b6000805460ff19166001179055801561433f576000805461ff0019166101001790555b60005b828110156143b157600160976000868685818110614362576143626156af565b90506020020160208101906143779190615036565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806143a98161583e565b915050614342565b5080156111cb576000805461ff001916905560405160018152600080516020615d0e83398151915290602001611fb3565b6143eb81612f13565b61444d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611161565b600080516020615cce83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61448583614c05565b6000825111806144925750805b156111cb57611dfa8383614c45565b609d546000906144b3906001906159dc565b6000838152609e6020526040812054609d80549394509092849081106144db576144db6156af565b60009182526020918290206040805160c08101825260069093029091018054835260018101548385015260028101548383015260038101546001600160a01b03908116606085015260048201541660808401526005810180548351818702810187019094528084529394919360a08601939283018282801561458657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614568575b505050505081525050905080609d83815481106145a5576145a56156af565b600091825260209182902083516006909202019081558282015160018201556040830151600282015560608301516003820180546001600160a01b039283166001600160a01b031991821617909155608085015160048401805491909316911617905560a08301518051919261462392600585019290910190614e8b565b505081516000908152609e602052604080822085905586825281205550609d80548061465157614651615bc8565b60008281526020812060066000199093019283020181815560018101829055600281018290556003810180546001600160a01b03199081169091556004820180549091169055906146a56005830182614df9565b5050905550505050565b60006146c3846001600160a01b0316612f13565b1561480a57836001600160a01b031663150b7a026146df612579565b8786866040518563ffffffff1660e01b81526004016147019493929190615bde565b602060405180830381600087803b15801561471b57600080fd5b505af192505050801561474b575060408051601f3d908101601f1916820190925261474891810190615bab565b60015b6147f0573d808015614779576040519150601f19603f3d011682016040523d82523d6000602084013e61477e565b606091505b5080516147e85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401611161565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613f02565b506001613f02565b61481c82826138da565b611528576040516316af84a960e21b8152600481018390528115156024820152604401611161565b60606000614853836002615c1b565b61485e9060026159f3565b6001600160401b038111156148755761487561527d565b6040519080825280601f01601f19166020018201604052801561489f576020820181803683370190505b509050600360fc1b816000815181106148ba576148ba6156af565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106148e9576148e96156af565b60200101906001600160f81b031916908160001a905350600061490d846002615c1b565b6149189060016159f3565b90505b6001811115614990576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061494c5761494c6156af565b1a60f81b828281518110614962576149626156af565b60200101906001600160f81b031916908160001a90535060049490941c9361498981615c3a565b905061491b565b508315610ff95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611161565b6000818152609e6020526040812054609d80548392908110614a0357614a036156af565b6000918252602082206005600690920201015491505b81811015614aa8576000848152609e6020526040902054609d80546001600160a01b03881692908110614a4e57614a4e6156af565b90600052602060002090600602016005018281548110614a7057614a706156af565b6000918252602090912001546001600160a01b03161415614a9657600192505050610dfc565b80614aa08161583e565b915050614a19565b506000949350505050565b609d805482516000908152609e6020908152604080832084905560018401855593909152835160069092027fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7b8101928355818501517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7c820155928401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7d84015560608401517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7e840180546001600160a01b039283166001600160a01b03199182161790915560808601517fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf7f8601805491909316911617905560a084015180518594611dfa937fd26e832454299e9fabb89e0e5fffdc046d4e14431bc1bf607ffb2e8a1ddecf80909101920190614e8b565b614c0e816143e2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060614c5083612f13565b614cab5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401611161565b600080846001600160a01b031684604051614cc69190615c51565b600060405180830381855af49150503d8060008114614d01576040519150601f19603f3d011682016040523d82523d6000602084013e614d06565b606091505b5091509150614d2e8282604051806060016040528060278152602001615d2e60279139614d37565b95945050505050565b60608315614d46575081610ff9565b610ff98383815115614d5b5781518083602001fd5b8060405162461bcd60e51b81526004016111619190614f80565b828054614d819061567a565b90600052602060002090601f016020900481019282614da35760008555614de9565b82601f10614dbc5782800160ff19823516178555614de9565b82800160010185558215614de9579182015b82811115614de9578235825591602001919060010190614dce565b50614df5929150614ee0565b5090565b508054600082559060005260206000209081019061150c9190614ee0565b828054614e239061567a565b90600052602060002090601f016020900481019282614e455760008555614de9565b82601f10614e5e57805160ff1916838001178555614de9565b82800160010185558215614de9579182015b82811115614de9578251825591602001919060010190614e70565b828054828255906000526020600020908101928215614de9579160200282015b82811115614de957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614eab565b5b80821115614df55760008155600101614ee1565b6001600160e01b03198116811461150c57600080fd5b600060208284031215614f1d57600080fd5b8135610ff981614ef5565b60005b83811015614f43578181015183820152602001614f2b565b83811115611dfa5750506000910152565b60008151808452614f6c816020860160208601614f28565b601f01601f19169290920160200192915050565b602081526000610ff96020830184614f54565b600060208284031215614fa557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461195f57600080fd5b60008060408385031215614fea57600080fd5b614ff383614fc0565b946020939093013593505050565b60008060006060848603121561501657600080fd5b8335925061502660208501614fc0565b9150604084013590509250925092565b60006020828403121561504857600080fd5b610ff982614fc0565b600060a0828403121561506357600080fd5b50919050565b6000806000806000610120868803121561508257600080fd5b61508b86614fc0565b94506020860135935060408601359250606086013591506150af8760808801615051565b90509295509295909350565b6000806000606084860312156150d057600080fd5b6150d984614fc0565b925061502660208501614fc0565b6000806000606084860312156150fc57600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261512557600080fd5b5081356001600160401b0381111561513c57600080fd5b60208301915083602082850101111561515457600080fd5b9250929050565b60008060008060008060008060a0898b03121561517757600080fd5b88356001600160401b038082111561518e57600080fd5b61519a8c838d01615113565b909a50985060208b01359150808211156151b357600080fd5b6151bf8c838d01615113565b90985096508691506151d360408c01614fc0565b95506151e160608c01614fc0565b945060808b01359150808211156151f757600080fd5b818b0191508b601f83011261520b57600080fd5b81358181111561521a57600080fd5b8c60208260051b850101111561522f57600080fd5b6020830194508093505050509295985092959890939650565b60008060006060848603121561525d57600080fd5b833592506020840135915061527460408501614fc0565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156152bb576152bb61527d565b604052919050565b60006001600160401b038211156152dc576152dc61527d565b50601f01601f191660200190565b600082601f8301126152fb57600080fd5b813561530e615309826152c3565b615293565b81815284602083860101111561532357600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561535357600080fd5b61535c83614fc0565b915060208301356001600160401b0381111561537757600080fd5b615383858286016152ea565b9150509250929050565b600080604083850312156153a057600080fd5b50508035926020909101359150565b801515811461150c57600080fd5b6000806000806000608086880312156153d557600080fd5b8535945060208601356001600160401b038111156153f257600080fd5b6153fe88828901615113565b9095509350506040860135615412816153af565b91506150af60608701614fc0565b60008060006040848603121561543557600080fd5b8335925060208401356001600160401b0381111561545257600080fd5b61545e86828701615113565b9497909650939450505050565b6000806040838503121561547e57600080fd5b61548783614fc0565b91506020830135615497816153af565b809150509250929050565b600080600080608085870312156154b857600080fd5b6154c185614fc0565b93506154cf60208601614fc0565b92506040850135915060608501356001600160401b038111156154f157600080fd5b6154fd878288016152ea565b91505092959194509250565b6000806040838503121561551c57600080fd5b8235915060208301356001811061549757600080fd5b600080600060e0848603121561554757600080fd5b83359250602084013591506152748560408601615051565b6000806040838503121561557257600080fd5b8235915061558260208401614fc0565b90509250929050565b6001600160a01b038616815260ff8516602082015260a0604082018190526000906155b890830186614f54565b606083019490945250608001529392505050565b600080604083850312156155df57600080fd5b6155e883614fc0565b915061558260208401614fc0565b60008060006060848603121561560b57600080fd5b61561484614fc0565b925060208401359150604084013561562b816153af565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561566e57835183529284019291840191600101615652565b50909695505050505050565b600181811c9082168061568e57607f821691505b6020821081141561506357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516156d7818460208801614f28565b64736c6f742f60d81b90830190815283516156f9816005840160208801614f28565b01600501949350505050565b60006020828403121561571757600080fd5b81516001600160401b0381111561572d57600080fd5b8201601f8101841361573e57600080fd5b805161574c615309826152c3565b81815285602083850101111561576157600080fd5b614d2e826020830160208601614f28565b634e487b7160e01b600052602160045260246000fd5b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561585257615852615828565b5060010190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b602080825260199082015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000835161597b818460208801614f28565b83519083019061598f818360208801614f28565b01949350505050565b600083516159aa818460208801614f28565b68636f6e74726163742f60b81b90830190815283516159d0816009840160208801614f28565b01600901949350505050565b6000828210156159ee576159ee615828565b500390565b60008219821115615a0657615a06615828565b500190565b80356003811061195f57600080fd5b600060208284031215615a2c57600080fd5b610ff982615a0b565b6003811061150c57634e487b7160e01b600052602160045260246000fd5b8135815260a08101615a6760208401615a0b565b615a7081615a35565b6020830152615a8160408401614fc0565b6001600160a01b03818116604085015280615a9e60608701614fc0565b16606085015280615ab160808701614fc0565b166080850152505092915050565b600060208284031215615ad157600080fd5b5051919050565b600060208284031215615aea57600080fd5b8151610ff9816153af565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b83815260608101615b5084615a35565b836020830152615b5f83615a35565b826040830152949350505050565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000615ba060a0830184614f54565b979650505050505050565b600060208284031215615bbd57600080fd5b8151610ff981614ef5565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615c1190830184614f54565b9695505050505050565b6000816000190483118215151615615c3557615c35615828565b500290565b600081615c4957615c49615828565b506000190190565b60008251615c63818460208701614f28565b919091019291505056fefca69b310bd19d275687ebe00b254b0772cf7a367c3f81a9a5a433f831fdc1dc3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc6360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc449b0a7e0acc0a95c71947cb19fdd122b42abca9bdfbd6707ca4f1e3fdaef05e7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e06c985e166767a031af5a962284bb750d86d4fd7970a1a3831360682d9cb5f964736f6c63430008090033"; type GatewayTokenUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenInternalsTest.ts b/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenInternalsTest.ts index c09a64bcc..2cd31ef74 100644 --- a/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenInternalsTest.ts +++ b/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenInternalsTest.ts @@ -74,7 +74,7 @@ export interface GatewayTokenInternalsTestInterface extends utils.Interface { "getRoleAdmin(bytes32,uint256)": FunctionFragment; "getToken(uint256)": FunctionFragment; "getTokenBitmask(uint256)": FunctionFragment; - "getTokenIdsByOwnerAndNetwork(address,uint256)": FunctionFragment; + "getTokenIdsByOwnerAndNetwork(address,uint256,bool)": FunctionFragment; "grantRole(bytes32,uint256,address)": FunctionFragment; "hasRole(bytes32,uint256,address)": FunctionFragment; "initialize(string,string,address,address,address[])": FunctionFragment; @@ -330,7 +330,11 @@ export interface GatewayTokenInternalsTestInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "getTokenIdsByOwnerAndNetwork", - values: [PromiseOrValue, PromiseOrValue] + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] ): string; encodeFunctionData( functionFragment: "grantRole", @@ -1343,6 +1347,7 @@ export interface GatewayTokenInternalsTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber[]]>; @@ -1761,6 +1766,7 @@ export interface GatewayTokenInternalsTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -2175,6 +2181,7 @@ export interface GatewayTokenInternalsTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -2802,6 +2809,7 @@ export interface GatewayTokenInternalsTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3217,6 +3225,7 @@ export interface GatewayTokenInternalsTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; diff --git a/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenUpgradeTest.ts b/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenUpgradeTest.ts index e3a4aee96..dbe41c303 100644 --- a/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenUpgradeTest.ts +++ b/ethereum/gateway-eth-ts/src/contracts/typechain-types/test/contracts/GatewayTokenUpgradeTest.ts @@ -71,7 +71,7 @@ export interface GatewayTokenUpgradeTestInterface extends utils.Interface { "getRoleAdmin(bytes32,uint256)": FunctionFragment; "getToken(uint256)": FunctionFragment; "getTokenBitmask(uint256)": FunctionFragment; - "getTokenIdsByOwnerAndNetwork(address,uint256)": FunctionFragment; + "getTokenIdsByOwnerAndNetwork(address,uint256,bool)": FunctionFragment; "grantRole(bytes32,uint256,address)": FunctionFragment; "hasRole(bytes32,uint256,address)": FunctionFragment; "initialize(string,string,address,address,address[])": FunctionFragment; @@ -312,7 +312,11 @@ export interface GatewayTokenUpgradeTestInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "getTokenIdsByOwnerAndNetwork", - values: [PromiseOrValue, PromiseOrValue] + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] ): string; encodeFunctionData( functionFragment: "grantRole", @@ -1274,6 +1278,7 @@ export interface GatewayTokenUpgradeTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise<[BigNumber[]]>; @@ -1679,6 +1684,7 @@ export interface GatewayTokenUpgradeTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -2084,6 +2090,7 @@ export interface GatewayTokenUpgradeTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -2689,6 +2696,7 @@ export interface GatewayTokenUpgradeTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3091,6 +3099,7 @@ export interface GatewayTokenUpgradeTest extends BaseContract { getTokenIdsByOwnerAndNetwork( owner: PromiseOrValue, network: PromiseOrValue, + onlyActive: PromiseOrValue, overrides?: CallOverrides ): Promise; diff --git a/ethereum/smart-contract/.openzeppelin/goerli.json b/ethereum/smart-contract/.openzeppelin/goerli.json new file mode 100644 index 000000000..602896c23 --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/goerli.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0xE81411eA4Fe9D3b76245725350adAf46D7277cBb", + "txHash": "0x23746ee571ea8ddccda15d1f529275d152acc8c8da84650da397fb5e8f8e6bd0", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/mainnet.json b/ethereum/smart-contract/.openzeppelin/mainnet.json new file mode 100644 index 000000000..3f865998c --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/mainnet.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x991c75812Da4121C67A09769a86a683E54403e91", + "txHash": "0x070696085e7496c6db4be878ab3d2a8bae0a6dc7ec04bd1ac6681b2f46400602", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/polygon-mumbai.json b/ethereum/smart-contract/.openzeppelin/polygon-mumbai.json new file mode 100644 index 000000000..b61d8f5f8 --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/polygon-mumbai.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x896F51c639a3841EcD247d0355a96f7DE52f229D", + "txHash": "0x5606f54cbafcfa2925dc4906d077308a54a8534157c353debcbdf409e52b2057", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/polygon.json b/ethereum/smart-contract/.openzeppelin/polygon.json new file mode 100644 index 000000000..586619458 --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/polygon.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x49bC6621f46F1Ced0bcaBb690B2461EaE6391079", + "txHash": "0x4cd23f40d1dae40754aaa410c2bfb15243f6e4bad9b8a4f262f485939d274eb4", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-1101.json b/ethereum/smart-contract/.openzeppelin/unknown-1101.json new file mode 100644 index 000000000..37eabac6a --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-1101.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x7e10CB052f6f499008B4456aA08c74c17428Ec7E", + "txHash": "0x037b827f7b4e1cbf5b1fb615b25f101cce5a7add337a448fb12daaa6f1116899", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-11155111.json b/ethereum/smart-contract/.openzeppelin/unknown-11155111.json index 7ce7b335a..1927f8200 100644 --- a/ethereum/smart-contract/.openzeppelin/unknown-11155111.json +++ b/ethereum/smart-contract/.openzeppelin/unknown-11155111.json @@ -2,30 +2,13 @@ "manifestVersion": "3.2", "proxies": [ { - "address": "0x0E039DD0bD16F3D9d364bD72D6Dc8B910fDA9bfc", - "txHash": "0xe7c2dcc209ac76481fa2d24a3e1df4c64962306d8f4873c99370690f17671480", - "kind": "uups" - }, - { - "address": "0xa9336E7CbF07753D84d5de6e42Cb1976C30113e4", - "txHash": "0xbec356f8c366274ce7f088e0d189b540e7e1b8403925f638b3c34c8719255138", - "kind": "uups" - }, - { - "address": "0x5fb4A37a37098b3071c0424c20Ef92Eb0F3E203d", - "txHash": "0xd85f80470940e59765a762f2e2dcf0ce3067df0f5243c4272415576f57fff089", - "kind": "uups" - }, - { - "address": "0x24713fB097bB40f65c43AE8F7fd0e3C05AE6a640", - "txHash": "0x33fe38de1f6ab93aff8f125661732f085cd9006589c5b11c3dfef16da0088151", + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", "kind": "uups" } ], "impls": { - "f684e41541459525e101bd4cb6aa25e8b8af116a864140c859a4645704bd04f5": { - "address": "0xBA5a440Da610CDA35e509E24C861b72DB558fFeA", - "txHash": "0x5224a5e0c11261ef123c49606cda7bd8fc9d3a0636f9f03a0f2987903ffad31f", + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", "layout": { "solcVersion": "0.8.9", "storage": [ @@ -52,7 +35,7 @@ "slot": "1", "type": "t_array(t_uint256)50_storage", "contract": "ERC1967UpgradeUpgradeable", - "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" }, { "label": "__gap", @@ -63,36 +46,164 @@ "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" }, { - "label": "supportedFlags", + "label": "__gap", "offset": 0, "slot": "101", - "type": "t_struct(Bytes32Set)1746_storage", - "contract": "FlagsStorage", - "src": "contracts/FlagsStorage.sol:22" + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" }, { - "label": "superAdmin", + "label": "_tokenStates", "offset": 0, - "slot": "103", - "type": "t_address", - "contract": "FlagsStorage", - "src": "contracts/FlagsStorage.sol:23" + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" }, { - "label": "supportedFlagsMask", + "label": "_expirations", "offset": 0, - "slot": "104", - "type": "t_uint256", - "contract": "FlagsStorage", - "src": "contracts/FlagsStorage.sol:25" + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" }, { - "label": "flagIndexes", + "label": "_networks", "offset": 0, - "slot": "105", - "type": "t_mapping(t_bytes32,t_uint8)", - "contract": "FlagsStorage", - "src": "contracts/FlagsStorage.sol:27" + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" } ], "types": { @@ -100,14 +211,26 @@ "label": "address", "numberOfBytes": "20" }, - "t_array(t_bytes32)dyn_storage": { - "label": "bytes32[]", + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", "numberOfBytes": "32" }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, "t_array(t_uint256)50_storage": { "label": "uint256[50]", "numberOfBytes": "1600" }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, "t_bool": { "label": "bool", "numberOfBytes": "1" @@ -116,44 +239,608 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_uint256)": { - "label": "mapping(bytes32 => uint256)", + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", "numberOfBytes": "32" }, - "t_mapping(t_bytes32,t_uint8)": { - "label": "mapping(bytes32 => uint8)", + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], "numberOfBytes": "32" }, - "t_struct(Bytes32Set)1746_storage": { - "label": "struct EnumerableSet.Bytes32Set", + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", "members": [ { - "label": "_inner", - "type": "t_struct(Set)1552_storage", + "label": "members", + "type": "t_mapping(t_address,t_bool)", "offset": 0, "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" } ], "numberOfBytes": "64" }, - "t_struct(Set)1552_storage": { - "label": "struct EnumerableSet.Set", + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x7e10CB052f6f499008B4456aA08c74c17428Ec7E", + "txHash": "0x4eaa7ecb1c7813b9c020f169e768d3abd2728899f9d34c6705d7bb050108bc7f", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", "members": [ { - "label": "_values", - "type": "t_array(t_bytes32)dyn_storage", + "label": "members", + "type": "t_mapping(t_address,t_bool)", "offset": 0, "slot": "0" }, { - "label": "_indexes", - "type": "t_mapping(t_bytes32,t_uint256)", + "label": "adminRole", + "type": "t_bytes32", "offset": 0, "slot": "1" } ], "numberOfBytes": "64" }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, "t_uint256": { "label": "uint256", "numberOfBytes": "32" diff --git a/ethereum/smart-contract/.openzeppelin/unknown-1442.json b/ethereum/smart-contract/.openzeppelin/unknown-1442.json new file mode 100644 index 000000000..6600a9b6a --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-1442.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x127bFB9FD50b8b02A45Ab65593b1486fCA6f8119", + "txHash": "0x34f8bcc35a5cfa9f0cee80cce951233d77d844194b5a372f48b128e959f23604", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-42161.json b/ethereum/smart-contract/.openzeppelin/unknown-42161.json new file mode 100644 index 000000000..903cc1afb --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-42161.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x1BEe561f6F63d67131E7aeED7c166C83C1d7FA68", + "txHash": "0x345d72c7bf3a35678476a38ceb13895886f1a77bc1eb5f7796b2148f41654b3a", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-421613.json b/ethereum/smart-contract/.openzeppelin/unknown-421613.json new file mode 100644 index 000000000..6af6da20b --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-421613.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x4574e9415E865524C3f7a3e828B75dA117d33B89", + "txHash": "0xbb2130053712e81225c09b4aca10c017d60b6c853ceb4681940c35249e50d293", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-50.json b/ethereum/smart-contract/.openzeppelin/unknown-50.json new file mode 100644 index 000000000..0bd558c4d --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-50.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x8E6F91c5285124023C3f4b4BD25B2415F5646295", + "txHash": "0xc630b2f53024d6070d26dcfef8b170ee03019d1f147388110c942181eaa800cb", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/.openzeppelin/unknown-51.json b/ethereum/smart-contract/.openzeppelin/unknown-51.json new file mode 100644 index 000000000..3898a3d85 --- /dev/null +++ b/ethereum/smart-contract/.openzeppelin/unknown-51.json @@ -0,0 +1,856 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xF65b6396dF6B7e2D8a6270E3AB6c7BB08BAEF22E", + "kind": "uups" + } + ], + "impls": { + "cfcb36a799e24e26d73271d906cb30d38fdf02229f486b622421f6691184ce05": { + "address": "0x65Bb8eb7c66c107e379C1C5781268393303E4b50", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:53" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)19811)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:61" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:64" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayTokenV0", + "src": "test/contracts/v0/GatewayTokenV0.sol:66" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)19811": { + "label": "enum IGatewayTokenV0.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)19811)": { + "label": "mapping(uint256 => enum IGatewayTokenV0.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "aeb5ed961430213ca15a612b3bd371ffe6f8a1a68a8c0a863478fbb3d710eaf7": { + "address": "0x127bFB9FD50b8b02A45Ab65593b1486fCA6f8119", + "txHash": "0xb86b8d6ca9cb3579731a603a2bb1a61dcbe059e5087bac8e8eb3a57d61cfb985", + "layout": { + "solcVersion": "0.8.9", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:197" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_trustedForwarders", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_address,t_bool)", + "contract": "MultiERC2771Context", + "src": "contracts/MultiERC2771Context.sol:10" + }, + { + "label": "_name", + "offset": 0, + "slot": "152", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:43" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "153", + "type": "t_string_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:44" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "154", + "type": "t_uint8", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:45" + }, + { + "label": "_tokenIdGenerator", + "offset": 0, + "slot": "155", + "type": "t_struct(Counter)1032_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:46" + }, + { + "label": "_approvedValues", + "offset": 0, + "slot": "156", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:50" + }, + { + "label": "_allTokens", + "offset": 0, + "slot": "157", + "type": "t_array(t_struct(TokenData)4458_storage)dyn_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:52" + }, + { + "label": "_allTokensIndex", + "offset": 0, + "slot": "158", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:55" + }, + { + "label": "_addressData", + "offset": 0, + "slot": "159", + "type": "t_mapping(t_address,t_struct(AddressData)4470_storage)", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:57" + }, + { + "label": "metadataDescriptor", + "offset": 0, + "slot": "160", + "type": "t_contract(IERC3525MetadataDescriptorUpgradeable)7153", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:59" + }, + { + "label": "__gap", + "offset": 0, + "slot": "161", + "type": "t_array(t_uint256)41_storage", + "contract": "ERC3525Upgradeable", + "src": "@solvprotocol/erc-3525/ERC3525Upgradeable.sol:640" + }, + { + "label": "_roleDomain", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:60" + }, + { + "label": "_superAdmins", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_address,t_bool)", + "contract": "ParameterizedAccessControl", + "src": "contracts/ParameterizedAccessControl.sol:61" + }, + { + "label": "flagsStorage", + "offset": 0, + "slot": "204", + "type": "t_contract(IFlagsStorage)9642", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:15" + }, + { + "label": "_bitmasks", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "TokenBitMask", + "src": "contracts/TokenBitMask.sol:18" + }, + { + "label": "isNetworkDAOGoverned", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:59" + }, + { + "label": "_tokenStates", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_enum(TokenState)9650)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:67" + }, + { + "label": "_expirations", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:70" + }, + { + "label": "_networks", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:72" + }, + { + "label": "_issuingGatekeepers", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_uint256,t_address)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:75" + }, + { + "label": "_networkFeatures", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "GatewayToken", + "src": "contracts/GatewayToken.sol:78" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(TokenData)4458_storage)dyn_storage": { + "label": "struct ERC3525Upgradeable.TokenData[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)41_storage": { + "label": "uint256[41]", + "numberOfBytes": "1312" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IERC3525MetadataDescriptorUpgradeable)7153": { + "label": "contract IERC3525MetadataDescriptorUpgradeable", + "numberOfBytes": "20" + }, + "t_contract(IFlagsStorage)9642": { + "label": "contract IFlagsStorage", + "numberOfBytes": "20" + }, + "t_enum(TokenState)9650": { + "label": "enum IGatewayToken.TokenState", + "members": [ + "ACTIVE", + "FROZEN", + "REVOKED" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(AddressData)4470_storage)": { + "label": "mapping(address => struct ERC3525Upgradeable.AddressData)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)": { + "label": "mapping(bytes32 => struct ParameterizedAccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TokenState)9650)": { + "label": "mapping(uint256 => enum IGatewayToken.TokenState)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(RoleDomain)8999_storage)": { + "label": "mapping(uint256 => struct ParameterizedAccessControl.RoleDomain)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressData)4470_storage": { + "label": "struct ERC3525Upgradeable.AddressData", + "members": [ + { + "label": "ownedTokens", + "type": "t_array(t_uint256)dyn_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "ownedTokensIndex", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "approvals", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Counter)1032_storage": { + "label": "struct CountersUpgradeable.Counter", + "members": [ + { + "label": "_value", + "type": "t_uint256", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)8993_storage": { + "label": "struct ParameterizedAccessControl.RoleData", + "members": [ + { + "label": "members", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleDomain)8999_storage": { + "label": "struct ParameterizedAccessControl.RoleDomain", + "members": [ + { + "label": "roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)8993_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(TokenData)4458_storage": { + "label": "struct ERC3525Upgradeable.TokenData", + "members": [ + { + "label": "id", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "slot", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "balance", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "owner", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "approved", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "valueApprovals", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "192" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/ethereum/smart-contract/deploy/upgrade-v1.ts b/ethereum/smart-contract/deploy/upgrade-v1.ts index 7495814f3..45c561f63 100644 --- a/ethereum/smart-contract/deploy/upgrade-v1.ts +++ b/ethereum/smart-contract/deploy/upgrade-v1.ts @@ -5,9 +5,10 @@ import { ethers, upgrades } from 'hardhat'; const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { deployments, getNamedAccounts, upgrades } = hre; + const gatewayTokenFactoryV0 = await ethers.getContractFactory('GatewayTokenV0'); const gatewayTokenFactory = await ethers.getContractFactory('GatewayToken'); const deployedGatewayToken = await deployments.get('GatewayTokenProxy'); - await upgrades.forceImport(deployedGatewayToken.address, gatewayTokenFactory); + await upgrades.forceImport(deployedGatewayToken.address, gatewayTokenFactoryV0); await upgrades.upgradeProxy(deployedGatewayToken, gatewayTokenFactory); console.log('upgraded GatewayToken at ' + deployedGatewayToken.address); diff --git a/ethereum/smart-contract/hardhat.config.ts b/ethereum/smart-contract/hardhat.config.ts index 21bf78010..986547747 100644 --- a/ethereum/smart-contract/hardhat.config.ts +++ b/ethereum/smart-contract/hardhat.config.ts @@ -19,6 +19,7 @@ import { fund } from './tasks/fund'; import { printPrivateKey } from './tasks/printPrivateKey'; import { createWallet } from './tasks/createWallet'; import { addForwarder } from './tasks/addForwarder'; +import { execute } from './tasks/execute'; const derivedAccounts = { mnemonic: process.env.MNEMONIC || 'test test test test test test test test test test test junk', @@ -63,6 +64,11 @@ task('create-wallet', 'Create a test wallet').setAction(createWallet); task('add-forwarder', 'add a forwarder to the gateway token smart contract (e.g. to support a relayer)') .addParam('forwarder', 'The forwarder to add') .setAction(addForwarder); +task('execute', 'sign and send a transaction') + .addParam('tx', 'the transaction to sign as a hex string') + .addParam('to', 'the recipient of the transaction') + .addParam('value', 'the amount to send with the transaction') + .setAction(execute); // Set the default contracts path to "contracts" const defaultPath = './contracts'; diff --git a/ethereum/smart-contract/tasks/execute.ts b/ethereum/smart-contract/tasks/execute.ts new file mode 100644 index 000000000..db09a4899 --- /dev/null +++ b/ethereum/smart-contract/tasks/execute.ts @@ -0,0 +1,26 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import {BigNumber} from "ethers"; + +export const execute = async (args: any, hre: HardhatRuntimeEnvironment) => { + const { ethers, getNamedAccounts } = hre; + + if (!process.env.PRIVATE_KEY) throw new Error('PRIVATE_KEY env variable is not set'); + + const tx = args.tx; + const to = args.to; + const value = BigNumber.from(args.value); + + const [owner] = await ethers.getSigners(); + const signer = new ethers.Wallet(process.env.PRIVATE_KEY, owner.provider) + + const transactionReceipt = await signer.sendTransaction({ + from: signer.address, + to, + data: tx, + value + }); + + console.log('sent transaction', transactionReceipt); + + await transactionReceipt.wait(); +}; diff --git a/solana/Cargo.lock b/solana/Cargo.lock index 1bb828e18..4afff3180 100644 --- a/solana/Cargo.lock +++ b/solana/Cargo.lock @@ -3384,7 +3384,7 @@ dependencies = [ [[package]] name = "solana-gateway" -version = "0.3.0" +version = "0.3.1" dependencies = [ "borsh", "num-derive", From 338ee200bded85d6afc0f0dacb4d0efb28878f2a Mon Sep 17 00:00:00 2001 From: dankelleher Date: Fri, 30 Jun 2023 10:20:55 +0200 Subject: [PATCH 03/63] Lint fix --- ethereum/gatekeeper-cli/src/utils/oclif/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts b/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts index d6b61cb9c..c7a9b714e 100644 --- a/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts +++ b/ethereum/gatekeeper-cli/src/utils/oclif/utils.ts @@ -12,7 +12,7 @@ export const makeGatewayTs = async ({ readOnly = false, }: { provider: Provider, privateKey?: string, gatewayTokenAddress: string, fees?: GasPriceKey, gasLimit?: BigNumber, readOnly: boolean }):Promise => { const signer = privateKey ? getSigner(privateKey, provider) : undefined - const feeAmount = readOnly? {} :await estimateGasPrice(provider, fees) + const feeAmount = readOnly ? {} : await estimateGasPrice(provider, fees) return new GatewayTs(signer || provider, gatewayTokenAddress, {...feeAmount, gasLimit}) } From 6a8632f0c890fe6f500fc4c932d4d49dd47bb11f Mon Sep 17 00:00:00 2001 From: dankelleher Date: Fri, 30 Jun 2023 10:22:35 +0200 Subject: [PATCH 04/63] Version bump --- ethereum/gatekeeper-cli/README.md | 28 ++++++++++++++-------------- ethereum/gatekeeper-cli/package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ethereum/gatekeeper-cli/README.md b/ethereum/gatekeeper-cli/README.md index 757924046..3bb0732e2 100644 --- a/ethereum/gatekeeper-cli/README.md +++ b/ethereum/gatekeeper-cli/README.md @@ -78,7 +78,7 @@ $ npm install -g @identity.com/gateway-eth-cli $ gateway-eth COMMAND running command... $ gateway-eth (--version) -@identity.com/gateway-eth-cli/0.2.0-alpha.0 darwin-arm64 node-v18.16.0 +@identity.com/gateway-eth-cli/0.2.0-alpha.1 darwin-arm64 node-v18.16.0 $ gateway-eth --help [COMMAND] USAGE $ gateway-eth COMMAND @@ -155,7 +155,7 @@ EXAMPLES $ gateway-eth add-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/add-gatekeeper.ts)_ +_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/add-gatekeeper.ts)_ ## `gateway-eth add-network-authority ADDRESS` @@ -209,7 +209,7 @@ EXAMPLES $ gateway-eth add-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/add-network-authority.ts)_ +_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/add-network-authority.ts)_ ## `gateway-eth create-gatekeeper-network ID NAME` @@ -261,7 +261,7 @@ EXAMPLES $ gateway-eth create-gatekeeper-network ``` -_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/create-gatekeeper-network.ts)_ +_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/create-gatekeeper-network.ts)_ ## `gateway-eth freeze ADDRESS` @@ -315,7 +315,7 @@ EXAMPLES $ gateway-eth freeze 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/freeze.ts)_ +_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/freeze.ts)_ ## `gateway-eth get-gatekeeper-network ID` @@ -352,7 +352,7 @@ EXAMPLES $ gateway-eth get-gatekeeper-network ``` -_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/get-gatekeeper-network.ts)_ +_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/get-gatekeeper-network.ts)_ ## `gateway-eth get-token ADDRESS` @@ -395,7 +395,7 @@ EXAMPLES $ gateway-eth get 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/get-token.ts)_ +_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/get-token.ts)_ ## `gateway-eth help [COMMAND]` @@ -482,7 +482,7 @@ EXAMPLES $ gateway-eth issue 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/issue.ts)_ +_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/issue.ts)_ ## `gateway-eth listen ADDRESS` @@ -522,7 +522,7 @@ EXAMPLES $ gateway-eth listen 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/listen.ts)_ +_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/listen.ts)_ ## `gateway-eth refresh ADDRESS [EXPIRY]` @@ -577,7 +577,7 @@ EXAMPLES $ gateway-eth refresh 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 60 -n 123 ``` -_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/refresh.ts)_ +_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/refresh.ts)_ ## `gateway-eth remove-gatekeeper ADDRESS` @@ -631,7 +631,7 @@ EXAMPLES $ gateway-eth remove-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/remove-gatekeeper.ts)_ +_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/remove-gatekeeper.ts)_ ## `gateway-eth remove-network-authority ADDRESS` @@ -685,7 +685,7 @@ EXAMPLES $ gateway-eth remove-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/remove-network-authority.ts)_ +_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/remove-network-authority.ts)_ ## `gateway-eth revoke ADDRESS` @@ -739,7 +739,7 @@ EXAMPLES $ gateway-eth revoke 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/revoke.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/revoke.ts)_ +_See code: [dist/commands/revoke.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/revoke.ts)_ ## `gateway-eth unfreeze ADDRESS` @@ -793,7 +793,7 @@ EXAMPLES $ gateway-eth unfreeze 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/unfreeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.0/dist/commands/unfreeze.ts)_ +_See code: [dist/commands/unfreeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/unfreeze.ts)_ ## `gateway-eth verify ADDRESS` diff --git a/ethereum/gatekeeper-cli/package.json b/ethereum/gatekeeper-cli/package.json index 7525aad41..f092a5629 100644 --- a/ethereum/gatekeeper-cli/package.json +++ b/ethereum/gatekeeper-cli/package.json @@ -1,6 +1,6 @@ { "name": "@identity.com/gateway-eth-cli", - "version": "0.2.0-alpha.0", + "version": "0.2.0-alpha.1", "description": "Identity.com Gateway Protocol EVM CLI", "author": "dankelleher @dankelleher", "bin": { From 9d275d43ae1d411a2a9f501d43b0941b534f183d Mon Sep 17 00:00:00 2001 From: dankelleher Date: Tue, 11 Jul 2023 12:41:58 +0200 Subject: [PATCH 05/63] Post-upgrade fixes and cli improvements --- ethereum/gatekeeper-cli/README.md | 81 +++++++++++++++---- ethereum/gatekeeper-cli/package.json | 6 +- .../src/commands/rename-gatekeeper-network.ts | 53 ++++++++++++ .../gatekeeper-cli/src/utils/oclif/utils.ts | 3 +- ethereum/gatekeeper-cli/yarn.lock | 8 +- ethereum/gateway-eth-ts/package.json | 2 +- .../src/service/GatewayTsInternal.ts | 4 +- 7 files changed, 132 insertions(+), 25 deletions(-) create mode 100644 ethereum/gatekeeper-cli/src/commands/rename-gatekeeper-network.ts diff --git a/ethereum/gatekeeper-cli/README.md b/ethereum/gatekeeper-cli/README.md index 3bb0732e2..9e8448070 100644 --- a/ethereum/gatekeeper-cli/README.md +++ b/ethereum/gatekeeper-cli/README.md @@ -78,7 +78,7 @@ $ npm install -g @identity.com/gateway-eth-cli $ gateway-eth COMMAND running command... $ gateway-eth (--version) -@identity.com/gateway-eth-cli/0.2.0-alpha.1 darwin-arm64 node-v18.16.0 +@identity.com/gateway-eth-cli/0.2.0 darwin-arm64 node-v18.16.1 $ gateway-eth --help [COMMAND] USAGE $ gateway-eth COMMAND @@ -99,6 +99,7 @@ USAGE * [`gateway-eth refresh ADDRESS [EXPIRY]`](#gateway-eth-refresh-address-expiry) * [`gateway-eth remove-gatekeeper ADDRESS`](#gateway-eth-remove-gatekeeper-address) * [`gateway-eth remove-network-authority ADDRESS`](#gateway-eth-remove-network-authority-address) +* [`gateway-eth rename-gatekeeper-network ID NAME`](#gateway-eth-rename-gatekeeper-network-id-name) * [`gateway-eth revoke ADDRESS`](#gateway-eth-revoke-address) * [`gateway-eth unfreeze ADDRESS`](#gateway-eth-unfreeze-address) * [`gateway-eth verify ADDRESS`](#gateway-eth-verify-address) @@ -155,7 +156,7 @@ EXAMPLES $ gateway-eth add-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/add-gatekeeper.ts)_ +_See code: [dist/commands/add-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/add-gatekeeper.ts)_ ## `gateway-eth add-network-authority ADDRESS` @@ -209,7 +210,7 @@ EXAMPLES $ gateway-eth add-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/add-network-authority.ts)_ +_See code: [dist/commands/add-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/add-network-authority.ts)_ ## `gateway-eth create-gatekeeper-network ID NAME` @@ -261,7 +262,7 @@ EXAMPLES $ gateway-eth create-gatekeeper-network ``` -_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/create-gatekeeper-network.ts)_ +_See code: [dist/commands/create-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/create-gatekeeper-network.ts)_ ## `gateway-eth freeze ADDRESS` @@ -315,7 +316,7 @@ EXAMPLES $ gateway-eth freeze 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/freeze.ts)_ +_See code: [dist/commands/freeze.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/freeze.ts)_ ## `gateway-eth get-gatekeeper-network ID` @@ -352,7 +353,7 @@ EXAMPLES $ gateway-eth get-gatekeeper-network ``` -_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/get-gatekeeper-network.ts)_ +_See code: [dist/commands/get-gatekeeper-network.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/get-gatekeeper-network.ts)_ ## `gateway-eth get-token ADDRESS` @@ -395,7 +396,7 @@ EXAMPLES $ gateway-eth get 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/get-token.ts)_ +_See code: [dist/commands/get-token.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/get-token.ts)_ ## `gateway-eth help [COMMAND]` @@ -482,7 +483,7 @@ EXAMPLES $ gateway-eth issue 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/issue.ts)_ +_See code: [dist/commands/issue.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/issue.ts)_ ## `gateway-eth listen ADDRESS` @@ -522,7 +523,7 @@ EXAMPLES $ gateway-eth listen 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/listen.ts)_ +_See code: [dist/commands/listen.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/listen.ts)_ ## `gateway-eth refresh ADDRESS [EXPIRY]` @@ -577,7 +578,7 @@ EXAMPLES $ gateway-eth refresh 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 60 -n 123 ``` -_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/refresh.ts)_ +_See code: [dist/commands/refresh.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/refresh.ts)_ ## `gateway-eth remove-gatekeeper ADDRESS` @@ -631,7 +632,7 @@ EXAMPLES $ gateway-eth remove-gatekeeper 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/remove-gatekeeper.ts)_ +_See code: [dist/commands/remove-gatekeeper.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/remove-gatekeeper.ts)_ ## `gateway-eth remove-network-authority ADDRESS` @@ -685,7 +686,59 @@ EXAMPLES $ gateway-eth remove-network-authority 0x893F4Be53274353CD3379C87C8fd1cb4f8458F94 -n 123 ``` -_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0-alpha.1/dist/commands/remove-network-authority.ts)_ +_See code: [dist/commands/remove-network-authority.ts](https://github.com/identity-com/on-chain-identity-gateway/blob/v0.2.0/dist/commands/remove-network-authority.ts)_ + +## `gateway-eth rename-gatekeeper-network ID NAME` + +Rename a gatekeeper network + +``` +USAGE + $ gateway-eth rename-gatekeeper-network [ID] [NAME] [-h] [-p ] [-c + localhost|ethereum|sepolia|goerli|polygonMumbai|polygon|auroraTestnet|aurora|optimismGoerli|optimism|palmTestnet|pal + m|arbitrumGoerli|arbitrum|celo|celoAlfajores|avalancheCChain|avalancheCChainFuji|starknet|starknetGoerli|xdc|xdcApot + hem|bsc|cronos|fantom|gnosis|moonbeam|moonriver|polygonZkEVMTestnet|polygonZkEVM] [-t ] [-f ] [-g + ] [-w ] + +ARGUMENTS + ID ID of the new network + NAME New name of the new network + +FLAGS + -c, --chain=