From 9b0c1fa502b7c826aa0e66a3cc7b3dedf4e9dfba Mon Sep 17 00:00:00 2001 From: DancingAxolotl <5020980+DancingAxolotl@users.noreply.github.com> Date: Sat, 30 Jul 2022 11:48:11 +0200 Subject: [PATCH] Fixes migrating tests to goerli - fixed basic tests Fixing live tests --- package.json | 1 + pull-contracts-abi.sh | 3 + src/UnsInternal.ts | 2 +- src/config/resolver-keys.json | 51 +- src/config/uns-config.json | 90 +- src/contracts/uns/abi/proxyReader.json | 599 +++++++++ src/contracts/uns/abi/registry.json | 1583 ++++++++++++++++++++++++ src/contracts/uns/abi/resolver.json | 520 ++++++++ src/contracts/uns/proxyReader.ts | 568 +-------- src/contracts/uns/registry.ts | 985 +-------------- src/contracts/uns/resolver.ts | 267 +--- src/tests/Resolution.test.ts | 100 +- src/tests/Uns.test.ts | 10 +- src/tests/UnsInternal.test.ts | 23 +- src/tests/helpers.ts | 26 +- src/tests/providerMockData.ts | 6 +- src/tests/testData/liveData.json | 41 +- src/tests/testData/mockData.json | 30 +- 18 files changed, 2873 insertions(+), 2032 deletions(-) create mode 100755 pull-contracts-abi.sh create mode 100644 src/contracts/uns/abi/proxyReader.json create mode 100644 src/contracts/uns/abi/registry.json create mode 100644 src/contracts/uns/abi/resolver.json diff --git a/package.json b/package.json index 98e883b3..0310da95 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "config:pull": "yarn network-config:pull && yarn resolver-keys:pull", "network-config:pull": "curl https://raw.githubusercontent.com/unstoppabledomains/uns/main/uns-config.json -o src/config/uns-config.json", "resolver-keys:pull": "curl https://raw.githubusercontent.com/unstoppabledomains/uns/main/resolver-keys.json -o src/config/resolver-keys.json", + "contracts-abi:pull": "./pull-contracts-abi.sh", "prettier:fix": "prettier --write -l \"src/**/*.{ts,tsx,js,jsx,json,md}\"", "prepare": "([ -d ./.git ] && husky install) || echo \"Skip husky install since package does not have .git folder\"" }, diff --git a/pull-contracts-abi.sh b/pull-contracts-abi.sh new file mode 100755 index 00000000..6ea03850 --- /dev/null +++ b/pull-contracts-abi.sh @@ -0,0 +1,3 @@ +curl https://raw.githubusercontent.com/unstoppabledomains/uns/main/artifacts/ProxyReader.json -o src/contracts/uns/abi/proxyReader.json +curl https://raw.githubusercontent.com/unstoppabledomains/uns/main/artifacts/UNSRegistry.json -o src/contracts/uns/abi/registry.json +curl https://raw.githubusercontent.com/unstoppabledomains/uns/main/artifacts/Resolver.json -o src/contracts/uns/abi/resolver.json diff --git a/src/UnsInternal.ts b/src/UnsInternal.ts index 65561e9d..2bc6821b 100644 --- a/src/UnsInternal.ts +++ b/src/UnsInternal.ts @@ -33,7 +33,7 @@ export default class UnsInternal { 'polygon-mainnet': 'https://polygon-mainnet.g.alchemy.com/v2/iG-oHZ2FvjqC9D43O5q9sj62out5ubsy', 'polygon-mumbai': - 'https://polygon-mumbai.g.alchemy.com/v2/YtQwLH1UOmRGgQp_Rg1TXvFWSWeV5Y02', + 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }; readonly network: string; diff --git a/src/config/resolver-keys.json b/src/config/resolver-keys.json index 42f3b336..71799963 100644 --- a/src/config/resolver-keys.json +++ b/src/config/resolver-keys.json @@ -1,8 +1,8 @@ { - "version": "2.1.1", + "version": "2.1.5", "information": { - "description": "This file desribes all resolver keys with a defined meaning and related metadata used by Unstoppable Domains UNS Registry", - "documentation": "https://docs.unstoppabledomains.com/domain-registry-essentials/records-reference", + "description": "This file describes all resolver keys with a defined meaning and related metadata used by Unstoppable Domains UNS Registry", + "documentation": "https://docs.unstoppabledomains.com/developer-toolkit/records-reference/", "contribution": "https://github.com/unstoppabledomains/uns/blob/main/resolver-keys.json" }, "keys": { @@ -436,6 +436,16 @@ "validationRegex": "^(G|P)[a-zA-HJ-NP-Z0-9]{25,39}$", "deprecated": false }, + "crypto.YLD.address": { + "deprecatedKeyName": "YLD", + "deprecated": false, + "validationRegex": "^0x[a-fA-F0-9]{40}$" + }, + "crypto.OKT.address": { + "deprecatedKeyName": "OKT", + "validationRegex": "^0x[a-fA-F0-9]{40}$|^ex[a-zA-HJ-NP-Z0-9]{6,90}$", + "deprecated": false + }, "crypto.ELA.version.ELA.address": { "deprecatedKeyName": "ELA_ELA", "validationRegex": "E[a-zA-HJ-NP-Z0-9]{33}", @@ -466,6 +476,11 @@ "validationRegex": "^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$", "deprecated": false }, + "crypto.USDT.version.OKC.address": { + "deprecatedKeyName": "USDT_OKC", + "validationRegex": "^0x[a-fA-F0-9]{40}$|^ex[a-zA-HJ-NP-Z0-9]{6,90}$", + "deprecated": false + }, "crypto.FTM.version.ERC20.address": { "deprecatedKeyName": "FTM_ERC20", "validationRegex": "^0x[a-fA-F0-9]{40}$", @@ -1181,6 +1196,11 @@ "validationRegex": "^0x[a-fA-F0-9]{40}$", "deprecated": false }, + "crypto.BLOCKS.address": { + "deprecatedKeyName": "BLOCKS", + "validationRegex": "^0x[a-fA-F0-9]{40}$", + "deprecated": false + }, "crypto.SHIB.version.ERC20.address": { "deprecatedKeyName": "SHIB_ERC20", "validationRegex": "^0x[a-fA-F0-9]{40}$", @@ -2410,6 +2430,31 @@ "deprecatedKeyName": "DPI_MATIC", "validationRegex": null, "deprecated": false + }, + "crypto.DOG.version.MATIC.address": { + "deprecatedKeyName": "DOG_MATIC", + "validationRegex": null, + "deprecated": false + }, + "crypto.DOG.version.BEP20.address": { + "deprecatedKeyName": "DOG_BEP20", + "validationRegex": "^0x[a-fA-F0-9]{40}$", + "deprecated": false + }, + "crypto.DOG.version.ERC20.address": { + "deprecatedKeyName": "DOG_ERC20", + "validationRegex": "^0x[a-fA-F0-9]{40}$", + "deprecated": false + }, + "crypto.DOG.version.AETH.address": { + "deprecatedKeyName": "DOG_AETH", + "validationRegex": null, + "deprecated": false + }, + "crypto.DOG.version.OP.address": { + "deprecatedKeyName": "DOG_OP", + "validationRegex": null, + "deprecated": false } } } diff --git a/src/config/uns-config.json b/src/config/uns-config.json index debac89c..3f9b28b8 100644 --- a/src/config/uns-config.json +++ b/src/config/uns-config.json @@ -1,5 +1,5 @@ { - "version": "0.4.0", + "version": "0.5.1", "networks": { "1": { "contracts": { @@ -100,95 +100,11 @@ } } }, - "4": { - "contracts": { - "UNSRegistry": { - "address": "0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086", - "implementation": "0xc479D7A65243f7Eb1641F06a6C04E5F06cb5c4F7", - "legacyAddresses": [], - "deploymentBlock": "0x85e628", - "forwarder": "0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086" - }, - "CNSRegistry": { - "address": "0xAad76bea7CFEc82927239415BB18D2e93518ecBB", - "legacyAddresses": [], - "deploymentBlock": "0x7232bc", - "forwarder": "0xdf5CC97216785398D5C77348e68fc9461108f85d" - }, - "MintingManager": { - "address": "0xdAAf99A920D31F4f5720e4667b12b24e54A03070", - "implementation": "0x38Fa95a0AC0E59D6e2845eFADBc17aF0FF9c7089", - "legacyAddresses": [], - "deploymentBlock": "0x85e629", - "forwarder": "0xfB13e29C4D31a48B4Cd61131Cf3b681416e11681" - }, - "ProxyAdmin": { - "address": "0xaf9815005A208d1460b6fC60B4f90B9f2185E88c", - "legacyAddresses": [], - "deploymentBlock": "0x85e627" - }, - "SignatureController": { - "address": "0x66a5e3e2C27B4ce4F46BBd975270BE154748D164", - "legacyAddresses": [], - "deploymentBlock": "0x7232be" - }, - "MintingController": { - "address": "0x51765307AeB3Df2E647014a2C501d5324212467c", - "legacyAddresses": [], - "deploymentBlock": "0x7232bf", - "deprecated": true - }, - "WhitelistedMinter": { - "address": "0xbcB32f13f90978a9e059E8Cb40FaA9e6619d98e7", - "legacyAddresses": [], - "deploymentBlock": "0x7232c6", - "deprecated": true - }, - "URIPrefixController": { - "address": "0xe1d2e4B9f0518CA5c803073C3dFa886470627237", - "legacyAddresses": [], - "deploymentBlock": "0x7232c0", - "deprecated": true - }, - "DomainZoneController": { - "address": "0x6f8F96A566663C1d4fEe70edD37E9b62Fe39dE5D", - "legacyAddresses": [], - "deploymentBlock": "0x7232c2", - "deprecated": true - }, - "Resolver": { - "address": "0x95AE1515367aa64C462c71e87157771165B1287A", - "legacyAddresses": [], - "deploymentBlock": "0x7232cf", - "forwarder": "0xE172D8557d6F342b1b2976dE784F6Dff6ABC0a37" - }, - "ProxyReader": { - "address": "0xE6729D224D00b3dd4FC731C4Ee3274E35Da06578", - "legacyAddresses": [ - "0x299974AeD8911bcbd2C61262605b89F591a53E83", - "0x9F19473F6a98a715176291c930558E1954fd3D1e", - "0x3A2e74CF832cbA3d77E72708d55370119E4323a6" - ], - "deploymentBlock": "0x8dc79a" - }, - "TwitterValidationOperator": { - "address": "0x9ea4A63184ebE9CBA55CD1af473D98075Aa02b4C", - "legacyAddresses": ["0x1CB337b3b208dc29a6AcE8d11Bb591b66c5Dd83d"], - "deploymentBlock": "0x86935e" - }, - "FreeMinter": { - "address": "0x84214215904cDEbA9044ECf95F3eBF009185AAf4", - "legacyAddresses": [], - "deploymentBlock": "0x740d93", - "deprecated": true - } - } - }, "5": { "contracts": { "UNSRegistry": { "address": "0x070e83FCed225184E67c86302493ffFCDB953f71", - "implementation": "0x4473e84898E3F58feEFb7529dfF9E83Ff26CCae9", + "implementation": "0xe42Cae86552020ABb3C4D9d212B43f0e33C381D7", "legacyAddresses": [], "deploymentBlock": "0x5b57ea", "forwarder": "0x070e83FCed225184E67c86302493ffFCDB953f71" @@ -466,7 +382,7 @@ "address": "0x2a93C52E7B6E7054870758e15A1446E769EdfB93", "legacyAddresses": [], "deploymentBlock": "0x0189f713", - "implementation": "0xAc1a1F2136BfDe3a353a95C0676Cd0d55f311ee3", + "implementation": "0x267f251B85B2003B98645195D085021C5B6e928c", "forwarder": "0x2a93C52E7B6E7054870758e15A1446E769EdfB93" }, "CNSRegistry": { diff --git a/src/contracts/uns/abi/proxyReader.json b/src/contracts/uns/abi/proxyReader.json new file mode 100644 index 00000000..fb52ca5c --- /dev/null +++ b/src/contracts/uns/abi/proxyReader.json @@ -0,0 +1,599 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ProxyReader", + "sourceName": "contracts/ProxyReader.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IUNSRegistry", + "name": "unsRegistry", + "type": "address" + }, + { + "internalType": "contract ICNSRegistry", + "name": "cnsRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "label", + "type": "string" + } + ], + "name": "childIdOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getByHash", + "outputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getData", + "outputs": [ + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getDataByHash", + "outputs": [ + { + "internalType": "address", + "name": "resolver", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "getDataByHashForMany", + "outputs": [ + { + "internalType": "address[]", + "name": "resolvers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "string[][]", + "name": "keys", + "type": "string[][]" + }, + { + "internalType": "string[][]", + "name": "values", + "type": "string[][]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "getDataForMany", + "outputs": [ + { + "internalType": "address[]", + "name": "resolvers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "string[][]", + "name": "values", + "type": "string[][]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getMany", + "outputs": [ + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getManyByHash", + "outputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isApprovedOrOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "ownerOfForMany", + "outputs": [ + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "registryOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "resolverOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "reverseOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200316c3803806200316c833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c612fcb620001a1600039600081816104e60152818161096f01528181610d5f01528181610dab0152818161141501528181611465015281816115e9015281816119c101528181611ee301528181611f7801526122bd0152600081816105840152818161068a0152818161080101528181610a1401528181610ad201528181610c2c01528181610ce101528181610e5101528181611365015281816113ef015281816116360152818161174d01528181611a5d01528181611c1501528181611cbc01528181611e5c01528181611f28015281816120a50152818161214c01526124010152612fcb6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063869b8884116100c3578063b3f9e4cb1161007c578063b3f9e4cb1461037e578063b85afd2814610391578063c15ae7cf146103b2578063c87b56dd146103d2578063e985e9c5146103e5578063ffa1ad74146103f857600080fd5b8063869b8884146102b457806391015f6b146102d7578063933c051d146102f9578063a3f4df7e1461031b578063a81ce6f91461034b578063ac9650d81461035e57600080fd5b80634f558e79116101155780634f558e79146102265780636352211e14610239578063672b9f811461024c57806368b62d321461026d57806370a082311461028e5780637e37479e146102a157600080fd5b806301ffc9a71461015d5780630328075514610185578063081812fc146101a85780631bd8cc1a146101d35780631be5e7ed146101f3578063430c208114610213575b600080fd5b61017061016b3660046128a7565b61041c565b60405190151581526020015b60405180910390f35b61019861019336600461285e565b610489565b60405161017c9493929190612ba1565b6101bb6101b636600461298c565b6104ac565b6040516001600160a01b03909116815260200161017c565b6101e66101e1366004612734565b610607565b60405161017c9190612d8d565b6102066102013660046128cf565b6107da565b60405161017c9190612e2a565b610170610221366004612662565b610925565b61017061023436600461298c565b610a8e565b6101bb61024736600461298c565b610a99565b61025f61025a366004612a05565b610aa4565b60405161017c929190612e3d565b61028061027b3660046129bc565b610c12565b60405190815260200161017c565b61028061029c3660046125f2565b610cbd565b6102806102af3660046125f2565b610e2f565b6102c76102c236600461280f565b610ecd565b60405161017c9493929190612c40565b6102ea6102e5366004612734565b611141565b60405161017c93929190612b75565b61030c6103073660046126cc565b611161565b60405161017c93929190612bfd565b610206604051806040016040528060118152602001702aa7299d10283937bc3c902932b0b232b960791b81525081565b6101bb61035936600461298c565b61134c565b61037161036c36600461268d565b611491565b60405161017c9190612c8d565b6101bb61038c36600461298c565b6115af565b6103a461039f36600461285e565b61166d565b60405161017c929190612da0565b6103c56103c036600461268d565b6118a3565b60405161017c9190612bea565b6102066103e036600461298c565b61197b565b6101706103f336600461262a565b611ae3565b61020660405180604001604052806005815260200164302e322e3360d81b81525081565b60006001600160e01b031982166324cd4b9560e21b148061044d57506001600160e01b03198216636fa624af60e11b145b8061046857506001600160e01b031982166308da864d60e31b145b8061048357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008060608061049a878787611b33565b93509350935093505b93509350935093565b60006104b782611e1c565b6104c357506000919050565b6104cc82611edf565b61056e5760405163020604bf60e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063081812fc906024015b60206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610569919061260e565b610483565b60405163020604bf60e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063081812fc906024015b60206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610483919061260e565b6060826001600160401b0381111561062f57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561066257816020015b606081526020019060019003908161064d5790505b50905061066e82611edf565b1561071e57604051630dec660d60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631bd8cc1a906106c390879087908790600401612cee565b60006040518083038186803b1580156106db57600080fd5b505afa1580156106ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610717919081019061277d565b90506107d3565b600061072983611f5f565b90506001600160a01b0381163b1515801561074357508315155b156107d157604051630dec660d60e11b81526001600160a01b03821690631bd8cc1a9061077890889088908890600401612cee565b60006040518083038186803b15801561079057600080fd5b505afa9250505080156107c557506040513d6000823e601f3d908101601f191682016040526107c2919081019061277d565b60015b6107ce576107d1565b91505b505b9392505050565b60606107e582611edf565b1561088e57604051631be5e7ed60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631be5e7ed9061083a90879087908790600401612e06565b60006040518083038186803b15801561085257600080fd5b505afa158015610866573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107179190810190612904565b600061089983611f5f565b90506001600160a01b0381163b156107d157604051631be5e7ed60e01b81526001600160a01b03821690631be5e7ed906108db90889088908890600401612e06565b60006040518083038186803b1580156108f357600080fd5b505afa9250505080156107c557506040513d6000823e601f3d908101601f191682016040526107c29190810190612904565b600061093082611e1c565b61093c57506000610483565b61094582611edf565b6109ee5760405163430c208160e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063430c20819060440160206040518083038186803b1580156109b157600080fd5b505afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612887565b6107d3565b60405163430c208160e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063430c20819060440160206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612887565b600061048382611e1c565b600061048382611fff565b606080610ab083611edf565b15610b615760405163672b9f8160e01b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063672b9f819060440160006040518083038186803b158015610b1c57600080fd5b505afa158015610b30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b589190810190612936565b91509150610c0b565b6000610b6c84611f5f565b90506001600160a01b0381163b15610c095760405163672b9f8160e01b815260048101869052602481018590526001600160a01b0382169063672b9f819060440160006040518083038186803b158015610bc557600080fd5b505afa925050508015610bfa57506040513d6000823e601f3d908101601f19168201604052610bf79190810190612936565b60015b610c0357610c09565b90935091505b505b9250929050565b60405163345b169960e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368b62d3290610c6590879087908790600401612e62565b60206040518083038186803b158015610c7d57600080fd5b505afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb591906129a4565b949350505050565b6040516370a0823160e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b91906129a4565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610483576040516370a0823160e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610ded57600080fd5b505afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2591906129a4565b6107d39082612ef0565b604051633f1ba3cf60e11b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637e37479e9060240160206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048391906129a4565b6060808080846001600160401b03811115610ef857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f21578160200160208202803683370190505b509350846001600160401b03811115610f4a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f73578160200160208202803683370190505b509250846001600160401b03811115610f9c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610fcf57816020015b6060815260200190600190039081610fba5790505b509150846001600160401b03811115610ff857634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561102b57816020015b60608152602001906001900390816110165790505b50905060005b858110156111355761106a898989898581811061105e57634e487b7160e01b600052603260045260246000fd5b90506020020135611b33565b88858151811061108a57634e487b7160e01b600052603260045260246000fd5b602002602001018886815181106110b157634e487b7160e01b600052603260045260246000fd5b602002602001018887815181106110d857634e487b7160e01b600052603260045260246000fd5b602002602001018888815181106110ff57634e487b7160e01b600052603260045260246000fd5b6020908102919091010193909352929091526001600160a01b03928316909152911690528061112d81612f38565b915050611031565b50945094509450949050565b6000806060611151868686612020565b9250925092505b93509350939050565b60608080836001600160401b0381111561118b57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111b4578160200160208202803683370190505b509250836001600160401b038111156111dd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611206578160200160208202803683370190505b509150836001600160401b0381111561122f57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561126257816020015b606081526020019060019003908161124d5790505b50905060005b84811015611341576112a1888888888581811061129557634e487b7160e01b600052603260045260246000fd5b90506020020135612020565b8684815181106112c157634e487b7160e01b600052603260045260246000fd5b602002602001018685815181106112e857634e487b7160e01b600052603260045260246000fd5b6020026020010186868151811061130f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101929092526001600160a01b03928316909152911690528061133981612f38565b915050611268565b509450945094915050565b604051634f558e7960e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e799060240160206040518083038186803b1580156113af57600080fd5b505afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e79190612887565b1561141357507f0000000000000000000000000000000000000000000000000000000000000000919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061145d57506000611451836122a4565b6001600160a01b031614155b1561148957507f0000000000000000000000000000000000000000000000000000000000000000919050565b506000919050565b6060816001600160401b038111156114b957634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114ec57816020015b60608152602001906001900390816114d75790505b50905060005b828110156115a85761156a3085858481811061151e57634e487b7160e01b600052603260045260246000fd5b90506020028101906115309190612e7c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122f492505050565b82828151811061158a57634e487b7160e01b600052603260045260246000fd5b602002602001018190525080806115a090612f38565b9150506114f2565b5092915050565b60006115ba82611e1c565b6115c657506000919050565b6115cf82611edf565b6116205760405163b3f9e4cb60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb90602401610519565b60405163b3f9e4cb60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb906024016105b7565b606080836001600160401b0381111561169657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156116c957816020015b60608152602001906001900390816116b45790505b509150836001600160401b038111156116f257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561172557816020015b60608152602001906001900390816117105790505b50905061173183611edf565b156117e35760405163170b5fa560e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b85afd289061178690889088908890600401612dc5565b60006040518083038186803b15801561179e57600080fd5b505afa1580156117b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117da91908101906127af565b9150915061189b565b60006117ee84611f5f565b90506001600160a01b0381163b1515801561180857508415155b156118995760405163170b5fa560e31b81526001600160a01b0382169063b85afd289061183d90899089908990600401612dc5565b60006040518083038186803b15801561185557600080fd5b505afa92505050801561188a57506040513d6000823e601f3d908101601f1916820160405261188791908101906127af565b60015b61189357611899565b90935091505b505b935093915050565b6060816001600160401b038111156118cb57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156118f4578160200160208202803683370190505b50905060005b828110156115a85761193184848381811061192557634e487b7160e01b600052603260045260246000fd5b90506020020135611fff565b82828151811061195157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061197381612f38565b9150506118fa565b606061198682611e1c565b61199e57505060408051602081019091526000815290565b6119a782611edf565b611a475760405163c87b56dd60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c87b56dd9060240160006040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105699190810190612904565b60405163c87b56dd60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c87b56dd9060240160006040518083038186803b158015611aa757600080fd5b505afa158015611abb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104839190810190612904565b60405162461bcd60e51b815260206004820152601f60248201527f50726f78795265616465723a20554e535550504f525445445f4d4554484f440060448201526000906064015b60405180910390fd5b600080606080856001600160401b03811115611b5f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b9257816020015b6060815260200190600190039081611b7d5790505b509150856001600160401b03811115611bbb57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611bee57816020015b6060815260200190600190039081611bd95790505b509050611bfa85611edf565b15611d535760405163b3f9e4cb60e01b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb9060240160206040518083038186803b158015611c5f57600080fd5b505afa158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c97919061260e565b9350611ca2856123e8565b60405163170b5fa560e31b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b85afd2890611cf5908a908a908a90600401612dc5565b60006040518083038186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d4991908101906127af565b90925090506104a3565b611d5c85611f5f565b9350611d67856122a4565b92506001600160a01b0384163b15158015611d83575060008251115b156104a35760405163170b5fa560e31b81526001600160a01b0385169063b85afd2890611db8908a908a908a90600401612dc5565b60006040518083038186803b158015611dd057600080fd5b505afa925050508015611e0557506040513d6000823e601f3d908101601f19168201604052611e0291908101906127af565b60015b611e0e576104a3565b909250905093509350935093565b6000611e2782611edf565b611e46576000611e36836122a4565b6001600160a01b03161415610483565b604051634f558e7960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e79906024015b60206040518083038186803b158015611ea757600080fd5b505afa158015611ebb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104839190612887565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615806104835750604051634f558e7960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e7990602401611e8f565b60405163b3f9e4cb60e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb906024015b60206040518083038186803b158015611fc357600080fd5b505afa925050508015611ff3575060408051601f3d908101601f19168201909252611ff09181019061260e565b60015b61048357506000919050565b600061200a82611edf565b61201757610569826122a4565b610483826123e8565b6000806060846001600160401b0381111561204b57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561207e57816020015b60608152602001906001900390816120695790505b50905061208a84611edf565b156121e05760405163b3f9e4cb60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb9060240160206040518083038186803b1580156120ef57600080fd5b505afa158015612103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612127919061260e565b9250612132846123e8565b604051630dec660d60e11b81529092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631bd8cc1a9061218590899089908990600401612cee565b60006040518083038186803b15801561219d57600080fd5b505afa1580156121b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121d9919081019061277d565b9050611158565b6121e984611f5f565b92506121f4846122a4565b91506001600160a01b0383163b1515801561220e57508415155b1561115857604051630dec660d60e11b81526001600160a01b03841690631bd8cc1a9061224390899089908990600401612cee565b60006040518083038186803b15801561225b57600080fd5b505afa92505050801561229057506040513d6000823e601f3d908101601f1916820160405261228d919081019061277d565b60015b61229957611158565b905093509350939050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401611fab565b60606001600160a01b0383163b61235c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401611b2a565b600080846001600160a01b0316846040516123779190612b59565b600060405180830381855af49150503d80600081146123b2576040519150601f19603f3d011682016040523d82523d6000602084013e6123b7565b606091505b50915091506123df8282604051806060016040528060278152602001612f9860279139612438565b95945050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401611fab565b606083156124475750816107d3565b8251156124575782518084602001fd5b8160405162461bcd60e51b8152600401611b2a9190612e2a565b60008083601f840112612482578182fd5b5081356001600160401b03811115612498578182fd5b6020830191508360208260051b8501011115610c0b57600080fd5b600082601f8301126124c3578081fd5b815160206001600160401b03808311156124df576124df612f69565b8260051b6124ee838201612ec0565b8481528381019087850183890186018a1015612508578788fd5b8793505b8684101561254557805185811115612522578889fd5b6125308b88838d0101612591565b8452506001939093019291850191850161250c565b5098975050505050505050565b60008083601f840112612563578182fd5b5081356001600160401b03811115612579578182fd5b602083019150836020828501011115610c0b57600080fd5b600082601f8301126125a1578081fd5b81516001600160401b038111156125ba576125ba612f69565b6125cd601f8201601f1916602001612ec0565b8181528460208386010111156125e1578283fd5b610cb5826020830160208701612f08565b600060208284031215612603578081fd5b81356107d381612f7f565b60006020828403121561261f578081fd5b81516107d381612f7f565b6000806040838503121561263c578081fd5b823561264781612f7f565b9150602083013561265781612f7f565b809150509250929050565b60008060408385031215612674578182fd5b823561267f81612f7f565b946020939093013593505050565b6000806020838503121561269f578182fd5b82356001600160401b038111156126b4578283fd5b6126c085828601612471565b90969095509350505050565b600080600080604085870312156126e1578182fd5b84356001600160401b03808211156126f7578384fd5b61270388838901612471565b9096509450602087013591508082111561271b578384fd5b5061272887828801612471565b95989497509550505050565b600080600060408486031215612748578283fd5b83356001600160401b0381111561275d578384fd5b61276986828701612471565b909790965060209590950135949350505050565b60006020828403121561278e578081fd5b81516001600160401b038111156127a3578182fd5b610cb5848285016124b3565b600080604083850312156127c1578182fd5b82516001600160401b03808211156127d7578384fd5b6127e3868387016124b3565b935060208501519150808211156127f8578283fd5b50612805858286016124b3565b9150509250929050565b60008060008060408587031215612824578081fd5b84356001600160401b038082111561283a578283fd5b61284688838901612471565b9096509450602087013591508082111561271b578283fd5b600080600060408486031215612872578081fd5b83356001600160401b0381111561275d578182fd5b600060208284031215612898578081fd5b815180151581146107d3578182fd5b6000602082840312156128b8578081fd5b81356001600160e01b0319811681146107d3578182fd5b6000806000604084860312156128e3578081fd5b83356001600160401b038111156128f8578182fd5b61276986828701612552565b600060208284031215612915578081fd5b81516001600160401b0381111561292a578182fd5b610cb584828501612591565b60008060408385031215612948578182fd5b82516001600160401b038082111561295e578384fd5b61296a86838701612591565b9350602085015191508082111561297f578283fd5b5061280585828601612591565b60006020828403121561299d578081fd5b5035919050565b6000602082840312156129b5578081fd5b5051919050565b6000806000604084860312156129d0578081fd5b8335925060208401356001600160401b038111156129ec578182fd5b6129f886828701612552565b9497909650939450505050565b60008060408385031215612a17578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015612a5e5781516001600160a01b031687529582019590820190600101612a39565b509495945050505050565b600082825180855260208086019550808260051b840101818601855b84811015612ab357601f19868403018952612aa1838351612ac0565b98840198925090830190600101612a85565b5090979650505050505050565b6000815180845260208085019450848260051b8601828601855b85811015612ab3578383038952612af2838351612b04565b98850198925090840190600101612ada565b60008151808452612b1c816020860160208601612f08565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008251612b6b818460208701612f08565b9190910192915050565b6001600160a01b038481168252831660208201526060604082018190526000906123df90830184612ac0565b6001600160a01b03858116825284166020820152608060408201819052600090612bcd90830185612ac0565b8281036060840152612bdf8185612ac0565b979650505050505050565b6020815260006107d36020830184612a26565b606081526000612c106060830186612a26565b8281036020840152612c228186612a26565b90508281036040840152612c368185612a69565b9695505050505050565b608081526000612c536080830187612a26565b8281036020840152612c658187612a26565b90508281036040840152612c798186612a69565b90508281036060840152612bdf8185612a69565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015612ce157603f19888603018452612ccf858351612b04565b94509285019290850190600101612cb3565b5092979650505050505050565b6040808252810183905260006060600585901b8301810190830186835b87811015612d7957858403605f190183528135368a9003601e19018112612d30578586fd5b8901803560206001600160401b03821115612d49578788fd5b8136038c1315612d57578788fd5b612d648783838601612b30565b96509485019493909301925050600101612d0b565b505050602092909201929092529392505050565b6020815260006107d36020830184612ac0565b604081526000612db36040830185612ac0565b82810360208401526123df8185612ac0565b6040808252810183905260006001600160fb1b03841115612de4578081fd5b8360051b80866060850137820160600190815260209091019190915292915050565b604081526000612e1a604083018587612b30565b9050826020830152949350505050565b6020815260006107d36020830184612b04565b604081526000612e506040830185612b04565b82810360208401526123df8185612b04565b8381526040602082015260006123df604083018486612b30565b6000808335601e19843603018112612e92578283fd5b8301803591506001600160401b03821115612eab578283fd5b602001915036819003821315610c0b57600080fd5b604051601f8201601f191681016001600160401b0381118282101715612ee857612ee8612f69565b604052919050565b60008219821115612f0357612f03612f53565b500190565b60005b83811015612f23578181015183820152602001612f0b565b83811115612f32576000848401525b50505050565b6000600019821415612f4c57612f4c612f53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612f9457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000804000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063869b8884116100c3578063b3f9e4cb1161007c578063b3f9e4cb1461037e578063b85afd2814610391578063c15ae7cf146103b2578063c87b56dd146103d2578063e985e9c5146103e5578063ffa1ad74146103f857600080fd5b8063869b8884146102b457806391015f6b146102d7578063933c051d146102f9578063a3f4df7e1461031b578063a81ce6f91461034b578063ac9650d81461035e57600080fd5b80634f558e79116101155780634f558e79146102265780636352211e14610239578063672b9f811461024c57806368b62d321461026d57806370a082311461028e5780637e37479e146102a157600080fd5b806301ffc9a71461015d5780630328075514610185578063081812fc146101a85780631bd8cc1a146101d35780631be5e7ed146101f3578063430c208114610213575b600080fd5b61017061016b3660046128a7565b61041c565b60405190151581526020015b60405180910390f35b61019861019336600461285e565b610489565b60405161017c9493929190612ba1565b6101bb6101b636600461298c565b6104ac565b6040516001600160a01b03909116815260200161017c565b6101e66101e1366004612734565b610607565b60405161017c9190612d8d565b6102066102013660046128cf565b6107da565b60405161017c9190612e2a565b610170610221366004612662565b610925565b61017061023436600461298c565b610a8e565b6101bb61024736600461298c565b610a99565b61025f61025a366004612a05565b610aa4565b60405161017c929190612e3d565b61028061027b3660046129bc565b610c12565b60405190815260200161017c565b61028061029c3660046125f2565b610cbd565b6102806102af3660046125f2565b610e2f565b6102c76102c236600461280f565b610ecd565b60405161017c9493929190612c40565b6102ea6102e5366004612734565b611141565b60405161017c93929190612b75565b61030c6103073660046126cc565b611161565b60405161017c93929190612bfd565b610206604051806040016040528060118152602001702aa7299d10283937bc3c902932b0b232b960791b81525081565b6101bb61035936600461298c565b61134c565b61037161036c36600461268d565b611491565b60405161017c9190612c8d565b6101bb61038c36600461298c565b6115af565b6103a461039f36600461285e565b61166d565b60405161017c929190612da0565b6103c56103c036600461268d565b6118a3565b60405161017c9190612bea565b6102066103e036600461298c565b61197b565b6101706103f336600461262a565b611ae3565b61020660405180604001604052806005815260200164302e322e3360d81b81525081565b60006001600160e01b031982166324cd4b9560e21b148061044d57506001600160e01b03198216636fa624af60e11b145b8061046857506001600160e01b031982166308da864d60e31b145b8061048357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008060608061049a878787611b33565b93509350935093505b93509350935093565b60006104b782611e1c565b6104c357506000919050565b6104cc82611edf565b61056e5760405163020604bf60e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063081812fc906024015b60206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610569919061260e565b610483565b60405163020604bf60e21b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063081812fc906024015b60206040518083038186803b1580156105cf57600080fd5b505afa1580156105e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610483919061260e565b6060826001600160401b0381111561062f57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561066257816020015b606081526020019060019003908161064d5790505b50905061066e82611edf565b1561071e57604051630dec660d60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631bd8cc1a906106c390879087908790600401612cee565b60006040518083038186803b1580156106db57600080fd5b505afa1580156106ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610717919081019061277d565b90506107d3565b600061072983611f5f565b90506001600160a01b0381163b1515801561074357508315155b156107d157604051630dec660d60e11b81526001600160a01b03821690631bd8cc1a9061077890889088908890600401612cee565b60006040518083038186803b15801561079057600080fd5b505afa9250505080156107c557506040513d6000823e601f3d908101601f191682016040526107c2919081019061277d565b60015b6107ce576107d1565b91505b505b9392505050565b60606107e582611edf565b1561088e57604051631be5e7ed60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631be5e7ed9061083a90879087908790600401612e06565b60006040518083038186803b15801561085257600080fd5b505afa158015610866573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107179190810190612904565b600061089983611f5f565b90506001600160a01b0381163b156107d157604051631be5e7ed60e01b81526001600160a01b03821690631be5e7ed906108db90889088908890600401612e06565b60006040518083038186803b1580156108f357600080fd5b505afa9250505080156107c557506040513d6000823e601f3d908101601f191682016040526107c29190810190612904565b600061093082611e1c565b61093c57506000610483565b61094582611edf565b6109ee5760405163430c208160e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063430c20819060440160206040518083038186803b1580156109b157600080fd5b505afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612887565b6107d3565b60405163430c208160e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063430c20819060440160206040518083038186803b158015610a5657600080fd5b505afa158015610a6a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612887565b600061048382611e1c565b600061048382611fff565b606080610ab083611edf565b15610b615760405163672b9f8160e01b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063672b9f819060440160006040518083038186803b158015610b1c57600080fd5b505afa158015610b30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b589190810190612936565b91509150610c0b565b6000610b6c84611f5f565b90506001600160a01b0381163b15610c095760405163672b9f8160e01b815260048101869052602481018590526001600160a01b0382169063672b9f819060440160006040518083038186803b158015610bc557600080fd5b505afa925050508015610bfa57506040513d6000823e601f3d908101601f19168201604052610bf79190810190612936565b60015b610c0357610c09565b90935091505b505b9250929050565b60405163345b169960e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906368b62d3290610c6590879087908790600401612e62565b60206040518083038186803b158015610c7d57600080fd5b505afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb591906129a4565b949350505050565b6040516370a0823160e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b91906129a4565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610483576040516370a0823160e01b81526001600160a01b0384811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610ded57600080fd5b505afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2591906129a4565b6107d39082612ef0565b604051633f1ba3cf60e11b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637e37479e9060240160206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048391906129a4565b6060808080846001600160401b03811115610ef857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f21578160200160208202803683370190505b509350846001600160401b03811115610f4a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f73578160200160208202803683370190505b509250846001600160401b03811115610f9c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610fcf57816020015b6060815260200190600190039081610fba5790505b509150846001600160401b03811115610ff857634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561102b57816020015b60608152602001906001900390816110165790505b50905060005b858110156111355761106a898989898581811061105e57634e487b7160e01b600052603260045260246000fd5b90506020020135611b33565b88858151811061108a57634e487b7160e01b600052603260045260246000fd5b602002602001018886815181106110b157634e487b7160e01b600052603260045260246000fd5b602002602001018887815181106110d857634e487b7160e01b600052603260045260246000fd5b602002602001018888815181106110ff57634e487b7160e01b600052603260045260246000fd5b6020908102919091010193909352929091526001600160a01b03928316909152911690528061112d81612f38565b915050611031565b50945094509450949050565b6000806060611151868686612020565b9250925092505b93509350939050565b60608080836001600160401b0381111561118b57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111b4578160200160208202803683370190505b509250836001600160401b038111156111dd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611206578160200160208202803683370190505b509150836001600160401b0381111561122f57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561126257816020015b606081526020019060019003908161124d5790505b50905060005b84811015611341576112a1888888888581811061129557634e487b7160e01b600052603260045260246000fd5b90506020020135612020565b8684815181106112c157634e487b7160e01b600052603260045260246000fd5b602002602001018685815181106112e857634e487b7160e01b600052603260045260246000fd5b6020026020010186868151811061130f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101929092526001600160a01b03928316909152911690528061133981612f38565b915050611268565b509450945094915050565b604051634f558e7960e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e799060240160206040518083038186803b1580156113af57600080fd5b505afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e79190612887565b1561141357507f0000000000000000000000000000000000000000000000000000000000000000919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061145d57506000611451836122a4565b6001600160a01b031614155b1561148957507f0000000000000000000000000000000000000000000000000000000000000000919050565b506000919050565b6060816001600160401b038111156114b957634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114ec57816020015b60608152602001906001900390816114d75790505b50905060005b828110156115a85761156a3085858481811061151e57634e487b7160e01b600052603260045260246000fd5b90506020028101906115309190612e7c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122f492505050565b82828151811061158a57634e487b7160e01b600052603260045260246000fd5b602002602001018190525080806115a090612f38565b9150506114f2565b5092915050565b60006115ba82611e1c565b6115c657506000919050565b6115cf82611edf565b6116205760405163b3f9e4cb60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb90602401610519565b60405163b3f9e4cb60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb906024016105b7565b606080836001600160401b0381111561169657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156116c957816020015b60608152602001906001900390816116b45790505b509150836001600160401b038111156116f257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561172557816020015b60608152602001906001900390816117105790505b50905061173183611edf565b156117e35760405163170b5fa560e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b85afd289061178690889088908890600401612dc5565b60006040518083038186803b15801561179e57600080fd5b505afa1580156117b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117da91908101906127af565b9150915061189b565b60006117ee84611f5f565b90506001600160a01b0381163b1515801561180857508415155b156118995760405163170b5fa560e31b81526001600160a01b0382169063b85afd289061183d90899089908990600401612dc5565b60006040518083038186803b15801561185557600080fd5b505afa92505050801561188a57506040513d6000823e601f3d908101601f1916820160405261188791908101906127af565b60015b61189357611899565b90935091505b505b935093915050565b6060816001600160401b038111156118cb57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156118f4578160200160208202803683370190505b50905060005b828110156115a85761193184848381811061192557634e487b7160e01b600052603260045260246000fd5b90506020020135611fff565b82828151811061195157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061197381612f38565b9150506118fa565b606061198682611e1c565b61199e57505060408051602081019091526000815290565b6119a782611edf565b611a475760405163c87b56dd60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c87b56dd9060240160006040518083038186803b158015611a0b57600080fd5b505afa158015611a1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105699190810190612904565b60405163c87b56dd60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c87b56dd9060240160006040518083038186803b158015611aa757600080fd5b505afa158015611abb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104839190810190612904565b60405162461bcd60e51b815260206004820152601f60248201527f50726f78795265616465723a20554e535550504f525445445f4d4554484f440060448201526000906064015b60405180910390fd5b600080606080856001600160401b03811115611b5f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b9257816020015b6060815260200190600190039081611b7d5790505b509150856001600160401b03811115611bbb57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611bee57816020015b6060815260200190600190039081611bd95790505b509050611bfa85611edf565b15611d535760405163b3f9e4cb60e01b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb9060240160206040518083038186803b158015611c5f57600080fd5b505afa158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c97919061260e565b9350611ca2856123e8565b60405163170b5fa560e31b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b85afd2890611cf5908a908a908a90600401612dc5565b60006040518083038186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d4991908101906127af565b90925090506104a3565b611d5c85611f5f565b9350611d67856122a4565b92506001600160a01b0384163b15158015611d83575060008251115b156104a35760405163170b5fa560e31b81526001600160a01b0385169063b85afd2890611db8908a908a908a90600401612dc5565b60006040518083038186803b158015611dd057600080fd5b505afa925050508015611e0557506040513d6000823e601f3d908101601f19168201604052611e0291908101906127af565b60015b611e0e576104a3565b909250905093509350935093565b6000611e2782611edf565b611e46576000611e36836122a4565b6001600160a01b03161415610483565b604051634f558e7960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e79906024015b60206040518083038186803b158015611ea757600080fd5b505afa158015611ebb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104839190612887565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615806104835750604051634f558e7960e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634f558e7990602401611e8f565b60405163b3f9e4cb60e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb906024015b60206040518083038186803b158015611fc357600080fd5b505afa925050508015611ff3575060408051601f3d908101601f19168201909252611ff09181019061260e565b60015b61048357506000919050565b600061200a82611edf565b61201757610569826122a4565b610483826123e8565b6000806060846001600160401b0381111561204b57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561207e57816020015b60608152602001906001900390816120695790505b50905061208a84611edf565b156121e05760405163b3f9e4cb60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b3f9e4cb9060240160206040518083038186803b1580156120ef57600080fd5b505afa158015612103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612127919061260e565b9250612132846123e8565b604051630dec660d60e11b81529092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631bd8cc1a9061218590899089908990600401612cee565b60006040518083038186803b15801561219d57600080fd5b505afa1580156121b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121d9919081019061277d565b9050611158565b6121e984611f5f565b92506121f4846122a4565b91506001600160a01b0383163b1515801561220e57508415155b1561115857604051630dec660d60e11b81526001600160a01b03841690631bd8cc1a9061224390899089908990600401612cee565b60006040518083038186803b15801561225b57600080fd5b505afa92505050801561229057506040513d6000823e601f3d908101601f1916820160405261228d919081019061277d565b60015b61229957611158565b905093509350939050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401611fab565b60606001600160a01b0383163b61235c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401611b2a565b600080846001600160a01b0316846040516123779190612b59565b600060405180830381855af49150503d80600081146123b2576040519150601f19603f3d011682016040523d82523d6000602084013e6123b7565b606091505b50915091506123df8282604051806060016040528060278152602001612f9860279139612438565b95945050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401611fab565b606083156124475750816107d3565b8251156124575782518084602001fd5b8160405162461bcd60e51b8152600401611b2a9190612e2a565b60008083601f840112612482578182fd5b5081356001600160401b03811115612498578182fd5b6020830191508360208260051b8501011115610c0b57600080fd5b600082601f8301126124c3578081fd5b815160206001600160401b03808311156124df576124df612f69565b8260051b6124ee838201612ec0565b8481528381019087850183890186018a1015612508578788fd5b8793505b8684101561254557805185811115612522578889fd5b6125308b88838d0101612591565b8452506001939093019291850191850161250c565b5098975050505050505050565b60008083601f840112612563578182fd5b5081356001600160401b03811115612579578182fd5b602083019150836020828501011115610c0b57600080fd5b600082601f8301126125a1578081fd5b81516001600160401b038111156125ba576125ba612f69565b6125cd601f8201601f1916602001612ec0565b8181528460208386010111156125e1578283fd5b610cb5826020830160208701612f08565b600060208284031215612603578081fd5b81356107d381612f7f565b60006020828403121561261f578081fd5b81516107d381612f7f565b6000806040838503121561263c578081fd5b823561264781612f7f565b9150602083013561265781612f7f565b809150509250929050565b60008060408385031215612674578182fd5b823561267f81612f7f565b946020939093013593505050565b6000806020838503121561269f578182fd5b82356001600160401b038111156126b4578283fd5b6126c085828601612471565b90969095509350505050565b600080600080604085870312156126e1578182fd5b84356001600160401b03808211156126f7578384fd5b61270388838901612471565b9096509450602087013591508082111561271b578384fd5b5061272887828801612471565b95989497509550505050565b600080600060408486031215612748578283fd5b83356001600160401b0381111561275d578384fd5b61276986828701612471565b909790965060209590950135949350505050565b60006020828403121561278e578081fd5b81516001600160401b038111156127a3578182fd5b610cb5848285016124b3565b600080604083850312156127c1578182fd5b82516001600160401b03808211156127d7578384fd5b6127e3868387016124b3565b935060208501519150808211156127f8578283fd5b50612805858286016124b3565b9150509250929050565b60008060008060408587031215612824578081fd5b84356001600160401b038082111561283a578283fd5b61284688838901612471565b9096509450602087013591508082111561271b578283fd5b600080600060408486031215612872578081fd5b83356001600160401b0381111561275d578182fd5b600060208284031215612898578081fd5b815180151581146107d3578182fd5b6000602082840312156128b8578081fd5b81356001600160e01b0319811681146107d3578182fd5b6000806000604084860312156128e3578081fd5b83356001600160401b038111156128f8578182fd5b61276986828701612552565b600060208284031215612915578081fd5b81516001600160401b0381111561292a578182fd5b610cb584828501612591565b60008060408385031215612948578182fd5b82516001600160401b038082111561295e578384fd5b61296a86838701612591565b9350602085015191508082111561297f578283fd5b5061280585828601612591565b60006020828403121561299d578081fd5b5035919050565b6000602082840312156129b5578081fd5b5051919050565b6000806000604084860312156129d0578081fd5b8335925060208401356001600160401b038111156129ec578182fd5b6129f886828701612552565b9497909650939450505050565b60008060408385031215612a17578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015612a5e5781516001600160a01b031687529582019590820190600101612a39565b509495945050505050565b600082825180855260208086019550808260051b840101818601855b84811015612ab357601f19868403018952612aa1838351612ac0565b98840198925090830190600101612a85565b5090979650505050505050565b6000815180845260208085019450848260051b8601828601855b85811015612ab3578383038952612af2838351612b04565b98850198925090840190600101612ada565b60008151808452612b1c816020860160208601612f08565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008251612b6b818460208701612f08565b9190910192915050565b6001600160a01b038481168252831660208201526060604082018190526000906123df90830184612ac0565b6001600160a01b03858116825284166020820152608060408201819052600090612bcd90830185612ac0565b8281036060840152612bdf8185612ac0565b979650505050505050565b6020815260006107d36020830184612a26565b606081526000612c106060830186612a26565b8281036020840152612c228186612a26565b90508281036040840152612c368185612a69565b9695505050505050565b608081526000612c536080830187612a26565b8281036020840152612c658187612a26565b90508281036040840152612c798186612a69565b90508281036060840152612bdf8185612a69565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015612ce157603f19888603018452612ccf858351612b04565b94509285019290850190600101612cb3565b5092979650505050505050565b6040808252810183905260006060600585901b8301810190830186835b87811015612d7957858403605f190183528135368a9003601e19018112612d30578586fd5b8901803560206001600160401b03821115612d49578788fd5b8136038c1315612d57578788fd5b612d648783838601612b30565b96509485019493909301925050600101612d0b565b505050602092909201929092529392505050565b6020815260006107d36020830184612ac0565b604081526000612db36040830185612ac0565b82810360208401526123df8185612ac0565b6040808252810183905260006001600160fb1b03841115612de4578081fd5b8360051b80866060850137820160600190815260209091019190915292915050565b604081526000612e1a604083018587612b30565b9050826020830152949350505050565b6020815260006107d36020830184612b04565b604081526000612e506040830185612b04565b82810360208401526123df8185612b04565b8381526040602082015260006123df604083018486612b30565b6000808335601e19843603018112612e92578283fd5b8301803591506001600160401b03821115612eab578283fd5b602001915036819003821315610c0b57600080fd5b604051601f8201601f191681016001600160401b0381118282101715612ee857612ee8612f69565b604052919050565b60008219821115612f0357612f03612f53565b500190565b60005b83811015612f23578181015183820152602001612f0b565b83811115612f32576000848401525b50505050565b6000600019821415612f4c57612f4c612f53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612f9457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000804000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/contracts/uns/abi/registry.json b/src/contracts/uns/abi/registry.json new file mode 100644 index 00000000..2c2247b8 --- /dev/null +++ b/src/contracts/uns/abi/registry.json @@ -0,0 +1,1583 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UNSRegistry", + "sourceName": "contracts/UNSRegistry.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "string", + "name": "keyIndex", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + } + ], + "name": "NewKey", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "NewURI", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "prefix", + "type": "string" + } + ], + "name": "NewURIPrefix", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "RemoveReverse", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ResetRecords", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "string", + "name": "keyIndex", + "type": "string" + }, + { + "indexed": true, + "internalType": "string", + "name": "valueIndex", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "name": "Set", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "SetReverse", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "WithdrawnBatch", + "type": "event" + }, + { + "inputs": [], + "name": "BATCH_LIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + } + ], + "name": "addKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "label", + "type": "string" + } + ], + "name": "childIdOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "bytes", + "name": "depositData", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "depositToPolygon", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IForwarder.ForwardRequest", + "name": "req", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getByHash", + "outputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + } + ], + "name": "getKey", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "hashes", + "type": "uint256[]" + } + ], + "name": "getKeys", + "outputs": [ + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getMany", + "outputs": [ + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getManyByHash", + "outputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mintingManager", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isApprovedOrOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "name": "mintWithRecords", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "nonceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "reconfigure", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "removeReverse", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "reset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "resolverOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "reverseOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "root", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "name": "safeMintWithRecords", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeMintWithRecords", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "set", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setByHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "registry", + "type": "address" + } + ], + "name": "setCNSRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "clientChainManager", + "type": "address" + } + ], + "name": "setChildChainManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setMany", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setManyByHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setReverse", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "rootChainManager", + "type": "address" + } + ], + "name": "setRootChainManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "prefix", + "type": "string" + } + ], + "name": "setTokenURIPrefix", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct IForwarder.ForwardRequest", + "name": "req", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "withdrawBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "name": "withdrawFromPolygon", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "withdrawWithMetadata", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061520b806100206000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c80637e37479e116101ff578063b85afd281161011a578063d3fc9864116100ad578063efda4d3e1161007c578063efda4d3e146108e7578063f25eb5c1146108fa578063f5c1f76e14610902578063ffa1ad741461091557600080fd5b8063d3fc98641461087e578063e985e9c514610891578063ebf0c717146108cd578063ec129eea146108d457600080fd5b8063c87b56dd116100e9578063c87b56dd14610832578063cd279c7c14610845578063ce92b33e14610858578063cf2c52cb1461086b57600080fd5b8063b85afd28146107d8578063b88d4fde146107f9578063bb5b27e11461080c578063c4d66de81461081f57600080fd5b8063a22cb46511610192578063ab3b87fe11610161578063ab3b87fe1461078c578063b0f591771461079f578063b3f9e4cb146107b2578063b55bc617146107c557600080fd5b8063a22cb4651461073a578063a3f4df7e1461074d578063a424740014610779578063a5e584dc146104df57600080fd5b80639559c0bd116101ce5780639559c0bd1461070457806395d89b411461070c57806399e0dd7c146107145780639c8d41561461072757600080fd5b80637e37479e146106a15780637f139a00146106cb57806394d008ef146106de5780639508b1c4146106f157600080fd5b806342966c68116102ef5780636352211e116102825780636ccbae5f116102515780636ccbae5f1461064757806370a0823114610668578063728a44d81461067b578063764a81bb1461068e57600080fd5b80636352211e146105df578063638e5c78146105f2578063672b9f811461060557806368b62d321461062657600080fd5b80634a72584d116102be5780634a72584d1461058a5780634f558e791461059d57806350382c1a146105b0578063572b6c05146105c357600080fd5b806342966c681461053e578063430c2081146105515780634348b5621461056457806347c816991461057757600080fd5b80631bf7e13e11610367578063310bd74b11610336578063310bd74b146104f2578063384e9a551461050557806340c10f191461051857806342842e0e1461052b57600080fd5b80631bf7e13e146104a657806323b872dd146104b957806327f18975146104cc5780632e1a7d4d146104df57600080fd5b8063095ea7b3116103a3578063095ea7b314610432578063150b7a02146104475780631bd8cc1a146104735780631be5e7ed1461049357600080fd5b806301ffc9a7146103ca57806306fdde03146103f2578063081812fc14610407575b600080fd5b6103dd6103d8366004614883565b610939565b60405190151581526020015b60405180910390f35b6103fa61094a565b6040516103e99190614dbe565b61041a610415366004614ac4565b6109dc565b6040516001600160a01b0390911681526020016103e9565b61044561044036600461441a565b610a03565b005b61045a6104553660046142c4565b610a58565b6040516001600160e01b031990911681526020016103e9565b610486610481366004614722565b610bae565b6040516103e99190614d1f565b6103fa6104a13660046149eb565b610cce565b6103fa6104b4366004614a65565b610d19565b6104456104c7366004614284565b610e24565b6104456104da3660046146b2565b610eaa565b6104456104ed366004614ac4565b610f25565b610445610500366004614ac4565b610fa1565b610445610513366004614ac4565b61100f565b61044561052636600461441a565b6110ce565b610445610539366004614284565b61111b565b61044561054c366004614ac4565b611136565b6103dd61055f36600461441a565b6111ad565b61044561057236600461449e565b6111b9565b61044561058536600461498d565b61121e565b610445610598366004614b0c565b611290565b6103dd6105ab366004614ac4565b611309565b6104456105be366004614a20565b611328565b6103dd6105d1366004614214565b6001600160a01b0316301490565b61041a6105ed366004614ac4565b61135b565b610445610600366004614ac4565b6113bb565b610618610613366004614b5c565b611406565b6040516103e9929190614dd1565b610639610634366004614adc565b61141e565b6040519081526020016103e9565b610639610655366004614ac4565b6000908152610100602052604090205490565b610639610676366004614214565b611460565b610445610689366004614214565b6114e6565b61044561069c366004614214565b61158d565b6106396106af366004614214565b6001600160a01b03166000908152610135602052604090205490565b6104456106d9366004614214565b61163c565b6104456106ec366004614445565b6116db565b6104456106ff3660046148bb565b61172a565b610639601481565b6103fa6117b1565b61044561072236600461495a565b6117c0565b61044561073536600461476b565b611846565b61044561074836600461439d565b6119c9565b6103fa6040518060400160405280600d81526020016c554e533a20526567697374727960981b81525081565b6103dd610787366004614a65565b6119db565b61044561079a36600461441a565b611a26565b6104456107ad36600461449e565b611a9e565b61041a6107c0366004614ac4565b611b27565b6104456107d336600461462a565b611b51565b6107eb6107e6366004614722565b611c01565b6040516103e9929190614d32565b610445610807366004614334565b611d69565b6103fa61081a366004614ac4565b611de3565b61044561082d366004614214565b611e85565b6103fa610840366004614ac4565b611fff565b610445610853366004614445565b612065565b6104456108663660046146b2565b6120ef565b6104456108793660046143c8565b612161565b61044561088c366004614445565b61223e565b6103dd61089f36600461424c565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000610639565b6104456108e23660046146b2565b6122ba565b6104456108f536600461454f565b61232c565b6104456123ba565b61048661091036600461476b565b612440565b6103fa604051806040016040528060058152602001640302e352e360dc1b81525081565b60006109448261251d565b92915050565b60606065805461095990615107565b80601f016020809104026020016040519081016040528092919081815260200182805461098590615107565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e78261256d565b506000908152606960205260409020546001600160a01b031690565b8030331415610a4057610a146125cc565b8114610a3b5760405162461bcd60e51b8152600401610a3290614ed8565b60405180910390fd5b610a49565b610a49816125e1565b610a53838361260f565b505050565b60007f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378546001600160a01b0316610a8d612732565b6001600160a01b03161415610b4f57610aa4612732565b6001600160a01b03166342966c68856040518263ffffffff1660e01b8152600401610ad191815260200190565b600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050821580159150610b195750610b1982840184614851565b15610b3757610b283085612741565b610b32858561288f565b610b41565b610b418585612741565b50630a85bd0160e11b610ba5565b60405162461bcd60e51b815260206004820152602560248201527f52656769737472793a204552433732315f524543454956494e475f50524f4849604482015264109255115160da1b6064820152608401610a32565b95945050505050565b6060826001600160401b03811115610bd657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c0957816020015b6060815260200190600190039081610bf45790505b50905060005b83811015610cc657610c88858583818110610c3a57634e487b7160e01b600052603260045260246000fd5b9050602002810190610c4c9190614f9c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612930915050565b828281518110610ca857634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610cbe90615142565b915050610c0f565b509392505050565b6060610d1184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612930915050565b949350505050565b606060005a9050610d2b8585856119db565b610d875760405162461bcd60e51b815260206004820152602760248201527f554e535265676973747279466f727761726465723a205349474e41545552455f6044820152661253959053125160ca1b6064820152608401610a32565b610e19610d976020870187614214565b30604088013584610dab60608b018b614f9c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525061296592505050565b9150505b9392505050565b80610e36610e30612732565b82612a54565b610e525760405162461bcd60e51b8152600401610a3290614df6565b8130331415610e8657610e636125cc565b8114610e815760405162461bcd60e51b8152600401610a3290614ed8565b610e8f565b610e8f816125e1565b610e9883612ad2565b610ea3858585612b3f565b5050505050565b80610eb6610e30612732565b610ed25760405162461bcd60e51b8152600401610a3290614df6565b8130331415610f0657610ee36125cc565b8114610f015760405162461bcd60e51b8152600401610a3290614ed8565b610f0f565b610f0f816125e1565b610f1c8787878787612ce6565b50505050505050565b610f2e8161135b565b6001600160a01b0316610f3f612732565b6001600160a01b031614610f955760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a20494e56414c49445f544f4b454e5f4f574e45520000006044820152606401610a32565b610f9e81612d65565b50565b80610fad610e30612732565b610fc95760405162461bcd60e51b8152600401610a3290614df6565b8130331415610ffd57610fda6125cc565b8114610ff85760405162461bcd60e51b8152600401610a3290614ed8565b611006565b611006816125e1565b610a5383612ad2565b80611018612732565b6001600160a01b031661102a8261135b565b6001600160a01b0316146110805760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a2053454e4445525f49535f4e4f545f4f574e45520000006044820152606401610a32565b81303314156110b4576110916125cc565b81146110af5760405162461bcd60e51b8152600401610a3290614ed8565b6110bd565b6110bd816125e1565b610a536110c8612732565b84612e0c565b6110d6612e54565b6001600160a01b03166110e7612732565b6001600160a01b03161461110d5760405162461bcd60e51b8152600401610a3290614f5a565b6111178282612741565b5050565b610a5383838360405180602001604052806000815250611d69565b80611142610e30612732565b61115e5760405162461bcd60e51b8152600401610a3290614df6565b81303314156111925761116f6125cc565b811461118d5760405162461bcd60e51b8152600401610a3290614ed8565b61119b565b61119b816125e1565b6111a483612ad2565b610a5383612d65565b6000610e1d8383612a54565b610134546001600160a01b03166111ce612732565b6001600160a01b0316146111f45760405162461bcd60e51b8152600401610a3290614e91565b611214888888888888888860405180602001604052806000815250612f67565b5050505050505050565b8061122a610e30612732565b6112465760405162461bcd60e51b8152600401610a3290614df6565b813033141561127a576112576125cc565b81146112755760405162461bcd60e51b8152600401610a3290614ed8565b611283565b611283816125e1565b610f1c8787878787612fc2565b8061129c610e30612732565b6112b85760405162461bcd60e51b8152600401610a3290614df6565b81303314156112ec576112c96125cc565b81146112e75760405162461bcd60e51b8152600401610a3290614ed8565b6112f5565b6112f5816125e1565b611301868686866130a1565b505050505050565b6000818152606760205260408120546001600160a01b03161515610944565b610f9e8160405160200161133c9190614c26565b6040516020818303038152906040528051906020012060001c82613141565b6000818152606760205260408120546001600160a01b0316806109445760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a32565b806113c7610e30612732565b6113e35760405162461bcd60e51b8152600401610a3290614df6565b6113f56113ee612732565b3084612b3f565b611117611400612732565b8361288f565b606080611413848461316d565b909590945092505050565b6000610d118484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061318e92505050565b60006001600160a01b0382166114ca5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a32565b506001600160a01b031660009081526068602052604090205490565b6000805160206151df833981519152546001600160a01b03161561155b5760405162461bcd60e51b815260206004820152602660248201527f52656769737472793a20524f4f545f434841494e5f4d414e454745525f4e4f546044820152655f454d50545960d01b6064820152608401610a32565b806000805160206151df8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b7f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b87546001600160a01b0316156116155760405162461bcd60e51b815260206004820152602760248201527f52656769737472793a204348494c445f434841494e5f4d414e454745525f4e4f604482015266545f454d50545960c81b6064820152608401610a32565b807f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b8761156c565b7f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378546001600160a01b0316156116b45760405162461bcd60e51b815260206004820181905260248201527f52656769737472793a20434e535f52454749535452595f4e4f545f454d5054596044820152606401610a32565b807f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec9237861156c565b6116e3612e54565b6001600160a01b03166116f4612732565b6001600160a01b03161461171a5760405162461bcd60e51b8152600401610a3290614f5a565b6117248484612741565b50505050565b611734878761323b565b61173c612732565b6001600160a01b031661174e8661135b565b6001600160a01b0316146117a45760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a2053454e4445525f49535f4e4f545f4f574e45520000006044820152606401610a32565b610f1c84848484896132aa565b60606066805461095990615107565b610134546001600160a01b03166117d5612732565b6001600160a01b0316146117fb5760405162461bcd60e51b8152600401610a3290614e91565b6118086101338383613ff4565b507f4b120d6a959a84a520fa48f5f937cca0e79129423487af7901213b5d2e89313b828260405161183a929190614daa565b60405180910390a15050565b8060148111156118985760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a20455843454544535f42415443485f4c494d49540000006044820152606401610a32565b60005b818110156119795760008484838181106118c557634e487b7160e01b600052603260045260246000fd5b9050602002013590506118d78161135b565b6001600160a01b03166118e8612732565b6001600160a01b0316148160405160200161192f91907f52656769737472793a20494e56414c49445f544f4b454e5f4f574e45522000008152601e810191909152603e0190565b6040516020818303038152906040529061195c5760405162461bcd60e51b8152600401610a329190614dbe565b5061196681612d65565b508061197181615142565b91505061189b565b50611982612732565b6001600160a01b03167ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df84846040516119bc929190614d57565b60405180910390a2505050565b6111176119d4612732565b8383613334565b6000610d116119e985615053565b3085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061340392505050565b80611a32610e30612732565b611a4e5760405162461bcd60e51b8152600401610a3290614df6565b8130331415611a8257611a5f6125cc565b8114611a7d5760405162461bcd60e51b8152600401610a3290614ed8565b611a8b565b611a8b816125e1565b611724611a978461135b565b8585612b3f565b610134546001600160a01b0316611ab3612732565b6001600160a01b031614611ad95760405162461bcd60e51b8152600401610a3290614e91565b611b1a888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355b92505050565b611214848484848b6132aa565b6000818152606760205260408120546001600160a01b0316611b4a576000610944565b3092915050565b610134546001600160a01b0316611b66612732565b6001600160a01b031614611b8c5760405162461bcd60e51b8152600401610a3290614e91565b611301868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506135a792505050565b606080836001600160401b03811115611c2a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611c5d57816020015b6060815260200190600190039081611c485790505b509150836001600160401b03811115611c8657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611cb957816020015b6060815260200190600190039081611ca45790505b50905060005b84811015611d6057611cf7868683818110611cea57634e487b7160e01b600052603260045260246000fd5b905060200201358561316d565b848381518110611d1757634e487b7160e01b600052603260045260246000fd5b60200260200101848481518110611d3e57634e487b7160e01b600052603260045260246000fd5b6020026020010182905282905250508080611d5890615142565b915050611cbf565b50935093915050565b81611d75610e30612732565b611d915760405162461bcd60e51b8152600401610a3290614df6565b8230331415611dc557611da26125cc565b8114611dc05760405162461bcd60e51b8152600401610a3290614ed8565b611dce565b611dce816125e1565b611dd784612ad2565b611301868686866135f4565b600081815260c960205260409020805460609190611e0090615107565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2c90615107565b8015611e795780601f10611e4e57610100808354040283529160200191611e79565b820191906000526020600020905b815481529060010190602001808311611e5c57829003601f168201915b50505050509050919050565b600054610100900460ff1615808015611ea55750600054600160ff909116105b80611ebf5750303b158015611ebf575060005460ff166001145b611f225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a32565b6000805460ff191660011790558015611f45576000805461ff0019166101001790555b61013480546001600160a01b0319166001600160a01b0384161790556040805180820182526013815272556e73746f707061626c6520446f6d61696e7360681b60208083019190915282518084019093526002835261155160f21b90830152611fad91613627565b611fb5613675565b611fbd613675565b8015611117576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161183a565b606061200a8261256d565b600061201461369e565b905060008151116120345760405180602001604052806000815250610e1d565b8061203e846136ae565b60405160200161204f929190614c91565b6040516020818303038152906040529392505050565b610134546001600160a01b031661207a612732565b6001600160a01b0316146120a05760405162461bcd60e51b8152600401610a3290614e91565b611724848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020810190915290815292506135a7915050565b806120fb610e30612732565b6121175760405162461bcd60e51b8152600401610a3290614df6565b813033141561214b576121286125cc565b81146121465760405162461bcd60e51b8152600401610a3290614ed8565b612154565b612154816125e1565b610f1c87878787876132aa565b7f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b87546001600160a01b0316612194612732565b6001600160a01b0316146121ba5760405162461bcd60e51b8152600401610a3290614f5a565b60208114156121dd5760006121d182840184614ac4565b90506117248482612741565b60006121eb828401846147aa565b805190915060005b818110156113015761222c8684838151811061221f57634e487b7160e01b600052603260045260246000fd5b6020026020010151612741565b8061223681615142565b9150506121f3565b610134546001600160a01b0316612253612732565b6001600160a01b0316146122795760405162461bcd60e51b8152600401610a3290614e91565b611724848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355b92505050565b806122c6610e30612732565b6122e25760405162461bcd60e51b8152600401610a3290614df6565b8130331415612316576122f36125cc565b81146123115760405162461bcd60e51b8152600401610a3290614ed8565b61231f565b61231f816125e1565b610f1c87878787876137c7565b610134546001600160a01b0316612341612732565b6001600160a01b0316146123675760405162461bcd60e51b8152600401610a3290614e91565b6123ae8a8a8a8a8a8a8a8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f6792505050565b50505050505050505050565b60006123c4612732565b6001600160a01b038116600090815261013560205260409020549091506124375760405162461bcd60e51b815260206004820152602160248201527f52656769737472793a20524556455253455f5245434f52445f49535f454d50546044820152605960f81b6064820152608401610a32565b610f9e816137dd565b6060816001600160401b0381111561246857634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561249b57816020015b60608152602001906001900390816124865790505b50905060005b82811015612516576124d88484838181106124cc57634e487b7160e01b600052603260045260246000fd5b90506020020135611de3565b8282815181106124f857634e487b7160e01b600052603260045260246000fd5b6020026020010181905250808061250e90615142565b9150506124a1565b5092915050565b60006001600160e01b031982166380ac58cd60e01b148061254e57506001600160e01b03198216635b5e139f60e01b145b8061094457506301ffc9a760e01b6001600160e01b0319831614610944565b6000818152606760205260409020546001600160a01b0316610f9e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a32565b6000303314156125de5750601f193601355b90565b600081815261010060205260409020546125fc906001615010565b6000918252610100602052604090912055565b600061261a8261135b565b9050806001600160a01b0316836001600160a01b031614156126885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a32565b806001600160a01b031661269a612732565b6001600160a01b031614806126b657506126b68161089f612732565b6127285760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610a32565b610a538383613822565b600061273c613890565b905090565b6001600160a01b0382166127975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a32565b6000818152606760205260409020546001600160a01b0316156127fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a32565b612808600083836138ac565b6001600160a01b0382166000908152606860205260408120805460019290612831908490615010565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000612899612e54565b90506128a58183613822565b6000805160206151df83398151915254604080516020808201869052825180830390910181528183019283905263e3dec8fb60e01b9092526001600160a01b0390921691829163e3dec8fb91612902918891309190604401614cc0565b600060405180830381600087803b15801561291c57600080fd5b505af1158015611214573d6000803e3d6000fd5b6060610e1d836040516020016129469190614c26565b6040516020818303038152906040528051906020012060001c836138d4565b6060612970856125e1565b600080876001600160a01b03168661298a8b8a8989613993565b6040516129979190614c26565b60006040518083038160008787f1925050503d80600081146129d5576040519150601f19603f3d011682016040523d82523d6000602084013e6129da565b606091505b5090925090506129eb603f87615028565b5a11612a0757634e487b7160e01b600052600160045260246000fd5b612a4782826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c45440000000000008152506139c3565b9998505050505050505050565b600080612a608361135b565b9050806001600160a01b0316846001600160a01b03161480612aa757506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80610d115750836001600160a01b0316612ac0846109dc565b6001600160a01b031614949350505050565b612adb816139fc565b604051602001612aed91815260200190565b60408051601f198184030181528282528051602091820120600085815260cb9092529181209190915582917f185c30856dadb58bf097c1f665a52ada7029752dbcad008ea3fefc73bee8c9fe9190a250565b826001600160a01b0316612b528261135b565b6001600160a01b031614612bb65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610a32565b6001600160a01b038216612c185760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a32565b612c238383836138ac565b612c2e600082613822565b6001600160a01b0383166000908152606860205260408120805460019290612c5790849061503c565b90915550506001600160a01b0382166000908152606860205260408120805460019290612c85908490615010565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8481101561130157612d53868683818110612d1457634e487b7160e01b600052603260045260246000fd5b90506020020135858584818110612d3b57634e487b7160e01b600052603260045260246000fd5b9050602002810190612d4d9190614f9c565b856130a1565b80612d5d81615142565b915050612ce9565b6000612d708261135b565b9050612d7e816000846138ac565b612d89600083613822565b6001600160a01b0381166000908152606860205260408120805460019290612db290849061503c565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821660008181526101356020526040808220849055518392917feb76a21470988c474a21f690cc28fee1ed511bd812dc3c21fd0f49c5e5d4708a91a35050565b6000806000805160206151df8339815191525460405163721804d360e11b81523060048201526001600160a01b039091169150600090829063e43009a69060240160206040518083038186803b158015612ead57600080fd5b505afa158015612ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee5919061486b565b60405163e66f960360e01b8152600481018290529091506001600160a01b0383169063e66f96039060240160206040518083038186803b158015612f2857600080fd5b505afa158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190614230565b9250505090565b612faa898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506135a7915050565b612fb7858585858c6132aa565b505050505050505050565b60008585604051602001612fd7929190614c81565b60408051601f198184030181528282528051602091820120601f890182900482028401820190925287835290925061302b918391899089908190840183828082843760009201919091525061314192505050565b6113018187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250889250613a28915050565b6130aa84613b63565b6130f65760405162461bcd60e51b815260206004820152601c60248201527f5265636f726453746f726167653a204b45595f4e4f545f464f554e44000000006044820152606401610a32565b6117248461310386611de3565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250613a28915050565b61314a82613b63565b61111757600082815260c9602090815260409091208251610a5392840190614074565b60608061317984611de3565b915061318584846138d4565b90509250929050565b60008151600014156131da5760405162461bcd60e51b815260206004820152601560248201527452656769737472793a204c4142454c5f454d50545960581b6044820152606401610a32565b82826040516020016131ec9190614c26565b6040516020818303038152906040528051906020012060405160200161321c929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209392505050565b6000805160206151df83398151915254604051633805550f60e01b81526001600160a01b03909116908190633805550f9061327c9086908690600401614daa565b600060405180830381600087803b15801561329657600080fd5b505af1158015610f1c573d6000803e3d6000fd5b60005b84811015611301576133228686838181106132d857634e487b7160e01b600052603260045260246000fd5b90506020028101906132ea9190614f9c565b86868581811061330a57634e487b7160e01b600052603260045260246000fd5b905060200281019061331c9190614f9c565b86612fc2565b8061332c81615142565b9150506132ad565b816001600160a01b0316836001600160a01b031614156133965760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a32565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6040838101519051636ccbae5f60e01b8152600481019190915260009081903090636ccbae5f9060240160206040518083038186803b15801561344557600080fd5b505afa158015613459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347d919061486b565b9050600061352b8660600151805190602001208688602001516040516020016134cb9392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b905081866020015114801561355157508551613551906001600160a01b03168286613b89565b9695505050505050565b6135658383612741565b817fc5beef08f693b11c316c0c8394a377a0033c9cf701b8cd8afd79cecef60c3952826040516135959190614dbe565b60405180910390a2610a538383613cd9565b6135b2848483613d1a565b827fc5beef08f693b11c316c0c8394a377a0033c9cf701b8cd8afd79cecef60c3952836040516135e29190614dbe565b60405180910390a26117248484613cd9565b6135ff848484612b3f565b61360b84848484613d4d565b6117245760405162461bcd60e51b8152600401610a3290614e3f565b600054610100900460ff1661364e5760405162461bcd60e51b8152600401610a3290614f0f565b8151613661906065906020850190614074565b508051610a53906066906020840190614074565b600054610100900460ff1661369c5760405162461bcd60e51b8152600401610a3290614f0f565b565b6060610133805461095990615107565b6060816136d25750506040805180820190915260018152600360fc1b602082015290565b8160005b81156136fc57806136e681615142565b91506136f59050600a83615028565b91506136d6565b6000816001600160401b0381111561372457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561374e576020820181803683370190505b5090505b8415610d115761376360018361503c565b9150613770600a8661515d565b61377b906030615010565b60f81b81838151811061379e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506137c0600a86615028565b9450613752565b6137d081612ad2565b610ea385858585856132aa565b6001600160a01b03811660008181526101356020526040808220829055517ffcf5eec0cfa3e6332f5f0e63ec242d71f866a61d121d6cdf5c2eb3b668a26c4f9190a250565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906138578261135b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000303314156138a7575060331936013560601c90565b503390565b6001600160a01b0383166000908152610135602052604090205415610a5357610a53836137dd565b606060ca60006138e3846139fc565b81526020019081526020016000206000848152602001908152602001600020805461390d90615107565b80601f016020809104026020016040519081016040528092919081815260200182805461393990615107565b80156139865780601f1061395b57610100808354040283529160200191613986565b820191906000526020600020905b81548152906001019060200180831161396957829003601f168201915b5050505050905092915050565b60608285856040516020016139aa93929190614c42565b6040516020818303038152906040529050949350505050565b606083156139d2575081610e1d565b8251156139e25782518084602001fd5b8160405162461bcd60e51b8152600401610a329190614dbe565b600081815260cb602052604081205415613a2457600082815260cb6020526040902054610944565b5090565b60ca6000613a35836139fc565b815260200190815260200160002060008581526020019081526020016000208054613a5f90615107565b15159050613ab65782604051613a759190614c26565b6040518091039020817f7ae4f661958fbecc2f77be6b0eb280d2a6f604b29e1e7221c82b9da0c4af7f8685604051613aad9190614dbe565b60405180910390a35b8160ca6000613ac4846139fc565b815260200190815260200160002060008681526020019081526020016000209080519060200190613af6929190614074565b5081604051613b059190614c26565b604051809103902083604051613b1b9190614c26565b6040518091039020827f851ffe8e74d5015261dba0a1f9e1b0e5d42c5af5d2ad1908fee897c7d80a0d928686604051613b55929190614dd1565b60405180910390a450505050565b600081815260c9602052604081208054829190613b7f90615107565b9050119050919050565b6000806000613b988585613e5e565b90925090506000816004811115613bbf57634e487b7160e01b600052602160045260246000fd5b148015613bdd5750856001600160a01b0316826001600160a01b0316145b15613bed57600192505050610e1d565b600080876001600160a01b0316631626ba7e60e01b8888604051602401613c15929190614d91565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613c539190614c26565b600060405180830381855afa9150503d8060008114613c8e576040519150601f19603f3d011682016040523d82523d6000602084013e613c93565b606091505b5091509150818015613ca6575080516020145b8015613ccd57508051630b135d3f60e11b90613ccb908301602090810190840161486b565b145b98975050505050505050565b61dead6001600160a01b03831614801590613d0b57506001600160a01b03821660009081526101356020526040902054155b15611117576111178282612e0c565b613d248383612741565b613d316000848484613d4d565b610a535760405162461bcd60e51b8152600401610a3290614e3f565b60006001600160a01b0384163b15613e5657836001600160a01b031663150b7a02613d76612732565b8786866040518563ffffffff1660e01b8152600401613d989493929190614cec565b602060405180830381600087803b158015613db257600080fd5b505af1925050508015613de2575060408051601f3d908101601f19168201909252613ddf9181019061489f565b60015b613e3c573d808015613e10576040519150601f19603f3d011682016040523d82523d6000602084013e613e15565b606091505b508051613e345760405162461bcd60e51b8152600401610a3290614e3f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d11565b506001610d11565b600080825160411415613e955760208301516040840151606085015160001a613e8987828585613ece565b94509450505050613ec7565b825160401415613ebf5760208301516040840151613eb4868383613fbb565b935093505050613ec7565b506000905060025b9250929050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613f055750600090506003613fb2565b8460ff16601b14158015613f1d57508460ff16601c14155b15613f2e5750600090506004613fb2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613f82573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fab57600060019250925050613fb2565b9150600090505b94509492505050565b6000806001600160ff1b03831681613fd860ff86901c601b615010565b9050613fe687828885613ece565b935093505050935093915050565b82805461400090615107565b90600052602060002090601f0160209004810192826140225760008555614068565b82601f1061403b5782800160ff19823516178555614068565b82800160010185558215614068579182015b8281111561406857823582559160200191906001019061404d565b50613a249291506140e8565b82805461408090615107565b90600052602060002090601f0160209004810192826140a25760008555614068565b82601f106140bb57805160ff1916838001178555614068565b82800160010185558215614068579182015b828111156140685782518255916020019190600101906140cd565b5b80821115613a2457600081556001016140e9565b60006001600160401b038311156141165761411661519d565b614129601f8401601f1916602001614fe0565b905082815283838301111561413d57600080fd5b828260208301376000602084830101529392505050565b803561415f816151b3565b919050565b60008083601f840112614175578182fd5b5081356001600160401b0381111561418b578182fd5b6020830191508360208260051b8501011115613ec757600080fd5b8035801515811461415f57600080fd5b60008083601f8401126141c7578182fd5b5081356001600160401b038111156141dd578182fd5b602083019150836020828501011115613ec757600080fd5b600082601f830112614205578081fd5b610e1d838335602085016140fd565b600060208284031215614225578081fd5b8135610e1d816151b3565b600060208284031215614241578081fd5b8151610e1d816151b3565b6000806040838503121561425e578081fd5b8235614269816151b3565b91506020830135614279816151b3565b809150509250929050565b600080600060608486031215614298578081fd5b83356142a3816151b3565b925060208401356142b3816151b3565b929592945050506040919091013590565b6000806000806000608086880312156142db578081fd5b85356142e6816151b3565b945060208601356142f6816151b3565b93506040860135925060608601356001600160401b03811115614317578182fd5b614323888289016141b6565b969995985093965092949392505050565b60008060008060808587031215614349578182fd5b8435614354816151b3565b93506020850135614364816151b3565b92506040850135915060608501356001600160401b03811115614385578182fd5b614391878288016141f5565b91505092959194509250565b600080604083850312156143af578182fd5b82356143ba816151b3565b9150613185602084016141a6565b6000806000604084860312156143dc578081fd5b83356143e7816151b3565b925060208401356001600160401b03811115614401578182fd5b61440d868287016141b6565b9497909650939450505050565b6000806040838503121561442c578182fd5b8235614437816151b3565b946020939093013593505050565b6000806000806060858703121561445a578182fd5b8435614465816151b3565b93506020850135925060408501356001600160401b03811115614486578283fd5b614492878288016141b6565b95989497509550505050565b60008060008060008060008060a0898b0312156144b9578586fd5b88356144c4816151b3565b97506020890135965060408901356001600160401b03808211156144e6578788fd5b6144f28c838d016141b6565b909850965060608b013591508082111561450a578485fd5b6145168c838d01614164565b909650945060808b013591508082111561452e578384fd5b5061453b8b828c01614164565b999c989b5096995094979396929594505050565b60008060008060008060008060008060c08b8d03121561456d578384fd5b6145768b614154565b995060208b0135985060408b01356001600160401b0380821115614598578586fd5b6145a48e838f016141b6565b909a50985060608d01359150808211156145bc578586fd5b6145c88e838f01614164565b909850965060808d01359150808211156145e0578586fd5b6145ec8e838f01614164565b909650945060a08d0135915080821115614604578384fd5b506146118d828e016141b6565b915080935050809150509295989b9194979a5092959850565b60008060008060008060808789031215614642578384fd5b863561464d816151b3565b95506020870135945060408701356001600160401b038082111561466f578586fd5b61467b8a838b016141b6565b90965094506060890135915080821115614693578384fd5b506146a089828a016141b6565b979a9699509497509295939492505050565b6000806000806000606086880312156146c9578283fd5b85356001600160401b03808211156146df578485fd5b6146eb89838a01614164565b90975095506020880135915080821115614703578485fd5b5061471088828901614164565b96999598509660400135949350505050565b600080600060408486031215614736578081fd5b83356001600160401b0381111561474b578182fd5b61475786828701614164565b909790965060209590950135949350505050565b6000806020838503121561477d578182fd5b82356001600160401b03811115614792578283fd5b61479e85828601614164565b90969095509350505050565b600060208083850312156147bc578182fd5b82356001600160401b03808211156147d2578384fd5b818501915085601f8301126147e5578384fd5b8135818111156147f7576147f761519d565b8060051b9150614808848301614fe0565b8181528481019084860184860187018a1015614822578788fd5b8795505b83861015614844578035835260019590950194918601918601614826565b5098975050505050505050565b600060208284031215614862578081fd5b610e1d826141a6565b60006020828403121561487c578081fd5b5051919050565b600060208284031215614894578081fd5b8135610e1d816151c8565b6000602082840312156148b0578081fd5b8151610e1d816151c8565b60008060008060008060006080888a0312156148d5578081fd5b87356001600160401b03808211156148eb578283fd5b6148f78b838c016141b6565b909950975060208a0135965060408a0135915080821115614916578283fd5b6149228b838c01614164565b909650945060608a013591508082111561493a578283fd5b506149478a828b01614164565b989b979a50959850939692959293505050565b6000806020838503121561496c578182fd5b82356001600160401b03811115614981578283fd5b61479e858286016141b6565b6000806000806000606086880312156149a4578283fd5b85356001600160401b03808211156149ba578485fd5b6149c689838a016141b6565b909750955060208801359150808211156149de578485fd5b50614710888289016141b6565b6000806000604084860312156149ff578081fd5b83356001600160401b03811115614a14578182fd5b614757868287016141b6565b600060208284031215614a31578081fd5b81356001600160401b03811115614a46578182fd5b8201601f81018413614a56578182fd5b610d11848235602084016140fd565b600080600060408486031215614a79578081fd5b83356001600160401b0380821115614a8f578283fd5b9085019060808288031215614aa2578283fd5b90935060208501359080821115614ab7578283fd5b5061440d868287016141b6565b600060208284031215614ad5578081fd5b5035919050565b600080600060408486031215614af0578081fd5b8335925060208401356001600160401b03811115614401578182fd5b60008060008060608587031215614b21578182fd5b8435935060208501356001600160401b03811115614b3d578283fd5b614b49878288016141b6565b9598909750949560400135949350505050565b60008060408385031215614b6e578182fd5b50508035926020909101359150565b600081518084526020808501808196508360051b81019150828601855b85811015614bc4578284038952614bb2848351614bfa565b98850198935090840190600101614b9a565b5091979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452614c128160208601602086016150db565b601f01601f19169290920160200192915050565b60008251614c388184602087016150db565b9190910192915050565b60008451614c548184602089016150db565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b8183823760009101908152919050565b60008351614ca38184602088016150db565b835190830190614cb78183602088016150db565b01949350505050565b6001600160a01b03848116825283166020820152606060408201819052600090610ba590830184614bfa565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061355190830184614bfa565b602081526000610e1d6020830184614b7d565b604081526000614d456040830185614b7d565b8281036020840152610e198185614b7d565b6020808252810182905260006001600160fb1b03831115614d76578081fd5b8260051b808560408501379190910160400190815292915050565b828152604060208201526000610d116040830184614bfa565b602081526000610d11602083018486614bd1565b602081526000610e1d6020830184614bfa565b604081526000614de46040830185614bfa565b8281036020840152610e198185614bfa565b60208082526029908201527f52656769737472793a2053454e4445525f49535f4e4f545f415050524f5645446040820152682fa7a92fa7aba722a960b91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526027908201527f52656769737472793a2053454e4445525f49535f4e4f545f4d494e54494e475f60408201526626a0a720a3a2a960c91b606082015260800190565b60208082526017908201527f52656769737472793a20544f4b454e5f494e56414c4944000000000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526022908201527f52656769737472793a20494e53554646494349454e545f5045524d495353494f6040820152614e5360f01b606082015260800190565b6000808335601e19843603018112614fb2578283fd5b8301803591506001600160401b03821115614fcb578283fd5b602001915036819003821315613ec757600080fd5b604051601f8201601f191681016001600160401b03811182821017156150085761500861519d565b604052919050565b6000821982111561502357615023615171565b500190565b60008261503757615037615187565b500490565b60008282101561504e5761504e615171565b500390565b600060808236031215615064578081fd5b604051608081016001600160401b0382821081831117156150875761508761519d565b8160405284359150615098826151b3565b818352602085013560208401526040850135604084015260608501359150808211156150c2578384fd5b506150cf368286016141f5565b60608301525092915050565b60005b838110156150f65781810151838201526020016150de565b838111156117245750506000910152565b600181811c9082168061511b57607f821691505b6020821081141561513c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561515657615156615171565b5060010190565b60008261516c5761516c615187565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f9e57600080fd5b6001600160e01b031981168114610f9e57600080fdfebe2bb46ac0377341a1ec5c3116d70fd5029d704bd46292e58f6265dd177ebafea164736f6c6343000804000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103c55760003560e01c80637e37479e116101ff578063b85afd281161011a578063d3fc9864116100ad578063efda4d3e1161007c578063efda4d3e146108e7578063f25eb5c1146108fa578063f5c1f76e14610902578063ffa1ad741461091557600080fd5b8063d3fc98641461087e578063e985e9c514610891578063ebf0c717146108cd578063ec129eea146108d457600080fd5b8063c87b56dd116100e9578063c87b56dd14610832578063cd279c7c14610845578063ce92b33e14610858578063cf2c52cb1461086b57600080fd5b8063b85afd28146107d8578063b88d4fde146107f9578063bb5b27e11461080c578063c4d66de81461081f57600080fd5b8063a22cb46511610192578063ab3b87fe11610161578063ab3b87fe1461078c578063b0f591771461079f578063b3f9e4cb146107b2578063b55bc617146107c557600080fd5b8063a22cb4651461073a578063a3f4df7e1461074d578063a424740014610779578063a5e584dc146104df57600080fd5b80639559c0bd116101ce5780639559c0bd1461070457806395d89b411461070c57806399e0dd7c146107145780639c8d41561461072757600080fd5b80637e37479e146106a15780637f139a00146106cb57806394d008ef146106de5780639508b1c4146106f157600080fd5b806342966c68116102ef5780636352211e116102825780636ccbae5f116102515780636ccbae5f1461064757806370a0823114610668578063728a44d81461067b578063764a81bb1461068e57600080fd5b80636352211e146105df578063638e5c78146105f2578063672b9f811461060557806368b62d321461062657600080fd5b80634a72584d116102be5780634a72584d1461058a5780634f558e791461059d57806350382c1a146105b0578063572b6c05146105c357600080fd5b806342966c681461053e578063430c2081146105515780634348b5621461056457806347c816991461057757600080fd5b80631bf7e13e11610367578063310bd74b11610336578063310bd74b146104f2578063384e9a551461050557806340c10f191461051857806342842e0e1461052b57600080fd5b80631bf7e13e146104a657806323b872dd146104b957806327f18975146104cc5780632e1a7d4d146104df57600080fd5b8063095ea7b3116103a3578063095ea7b314610432578063150b7a02146104475780631bd8cc1a146104735780631be5e7ed1461049357600080fd5b806301ffc9a7146103ca57806306fdde03146103f2578063081812fc14610407575b600080fd5b6103dd6103d8366004614883565b610939565b60405190151581526020015b60405180910390f35b6103fa61094a565b6040516103e99190614dbe565b61041a610415366004614ac4565b6109dc565b6040516001600160a01b0390911681526020016103e9565b61044561044036600461441a565b610a03565b005b61045a6104553660046142c4565b610a58565b6040516001600160e01b031990911681526020016103e9565b610486610481366004614722565b610bae565b6040516103e99190614d1f565b6103fa6104a13660046149eb565b610cce565b6103fa6104b4366004614a65565b610d19565b6104456104c7366004614284565b610e24565b6104456104da3660046146b2565b610eaa565b6104456104ed366004614ac4565b610f25565b610445610500366004614ac4565b610fa1565b610445610513366004614ac4565b61100f565b61044561052636600461441a565b6110ce565b610445610539366004614284565b61111b565b61044561054c366004614ac4565b611136565b6103dd61055f36600461441a565b6111ad565b61044561057236600461449e565b6111b9565b61044561058536600461498d565b61121e565b610445610598366004614b0c565b611290565b6103dd6105ab366004614ac4565b611309565b6104456105be366004614a20565b611328565b6103dd6105d1366004614214565b6001600160a01b0316301490565b61041a6105ed366004614ac4565b61135b565b610445610600366004614ac4565b6113bb565b610618610613366004614b5c565b611406565b6040516103e9929190614dd1565b610639610634366004614adc565b61141e565b6040519081526020016103e9565b610639610655366004614ac4565b6000908152610100602052604090205490565b610639610676366004614214565b611460565b610445610689366004614214565b6114e6565b61044561069c366004614214565b61158d565b6106396106af366004614214565b6001600160a01b03166000908152610135602052604090205490565b6104456106d9366004614214565b61163c565b6104456106ec366004614445565b6116db565b6104456106ff3660046148bb565b61172a565b610639601481565b6103fa6117b1565b61044561072236600461495a565b6117c0565b61044561073536600461476b565b611846565b61044561074836600461439d565b6119c9565b6103fa6040518060400160405280600d81526020016c554e533a20526567697374727960981b81525081565b6103dd610787366004614a65565b6119db565b61044561079a36600461441a565b611a26565b6104456107ad36600461449e565b611a9e565b61041a6107c0366004614ac4565b611b27565b6104456107d336600461462a565b611b51565b6107eb6107e6366004614722565b611c01565b6040516103e9929190614d32565b610445610807366004614334565b611d69565b6103fa61081a366004614ac4565b611de3565b61044561082d366004614214565b611e85565b6103fa610840366004614ac4565b611fff565b610445610853366004614445565b612065565b6104456108663660046146b2565b6120ef565b6104456108793660046143c8565b612161565b61044561088c366004614445565b61223e565b6103dd61089f36600461424c565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6000610639565b6104456108e23660046146b2565b6122ba565b6104456108f536600461454f565b61232c565b6104456123ba565b61048661091036600461476b565b612440565b6103fa604051806040016040528060058152602001640302e352e360dc1b81525081565b60006109448261251d565b92915050565b60606065805461095990615107565b80601f016020809104026020016040519081016040528092919081815260200182805461098590615107565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e78261256d565b506000908152606960205260409020546001600160a01b031690565b8030331415610a4057610a146125cc565b8114610a3b5760405162461bcd60e51b8152600401610a3290614ed8565b60405180910390fd5b610a49565b610a49816125e1565b610a53838361260f565b505050565b60007f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378546001600160a01b0316610a8d612732565b6001600160a01b03161415610b4f57610aa4612732565b6001600160a01b03166342966c68856040518263ffffffff1660e01b8152600401610ad191815260200190565b600060405180830381600087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050821580159150610b195750610b1982840184614851565b15610b3757610b283085612741565b610b32858561288f565b610b41565b610b418585612741565b50630a85bd0160e11b610ba5565b60405162461bcd60e51b815260206004820152602560248201527f52656769737472793a204552433732315f524543454956494e475f50524f4849604482015264109255115160da1b6064820152608401610a32565b95945050505050565b6060826001600160401b03811115610bd657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c0957816020015b6060815260200190600190039081610bf45790505b50905060005b83811015610cc657610c88858583818110610c3a57634e487b7160e01b600052603260045260246000fd5b9050602002810190610c4c9190614f9c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612930915050565b828281518110610ca857634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610cbe90615142565b915050610c0f565b509392505050565b6060610d1184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612930915050565b949350505050565b606060005a9050610d2b8585856119db565b610d875760405162461bcd60e51b815260206004820152602760248201527f554e535265676973747279466f727761726465723a205349474e41545552455f6044820152661253959053125160ca1b6064820152608401610a32565b610e19610d976020870187614214565b30604088013584610dab60608b018b614f9c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525061296592505050565b9150505b9392505050565b80610e36610e30612732565b82612a54565b610e525760405162461bcd60e51b8152600401610a3290614df6565b8130331415610e8657610e636125cc565b8114610e815760405162461bcd60e51b8152600401610a3290614ed8565b610e8f565b610e8f816125e1565b610e9883612ad2565b610ea3858585612b3f565b5050505050565b80610eb6610e30612732565b610ed25760405162461bcd60e51b8152600401610a3290614df6565b8130331415610f0657610ee36125cc565b8114610f015760405162461bcd60e51b8152600401610a3290614ed8565b610f0f565b610f0f816125e1565b610f1c8787878787612ce6565b50505050505050565b610f2e8161135b565b6001600160a01b0316610f3f612732565b6001600160a01b031614610f955760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a20494e56414c49445f544f4b454e5f4f574e45520000006044820152606401610a32565b610f9e81612d65565b50565b80610fad610e30612732565b610fc95760405162461bcd60e51b8152600401610a3290614df6565b8130331415610ffd57610fda6125cc565b8114610ff85760405162461bcd60e51b8152600401610a3290614ed8565b611006565b611006816125e1565b610a5383612ad2565b80611018612732565b6001600160a01b031661102a8261135b565b6001600160a01b0316146110805760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a2053454e4445525f49535f4e4f545f4f574e45520000006044820152606401610a32565b81303314156110b4576110916125cc565b81146110af5760405162461bcd60e51b8152600401610a3290614ed8565b6110bd565b6110bd816125e1565b610a536110c8612732565b84612e0c565b6110d6612e54565b6001600160a01b03166110e7612732565b6001600160a01b03161461110d5760405162461bcd60e51b8152600401610a3290614f5a565b6111178282612741565b5050565b610a5383838360405180602001604052806000815250611d69565b80611142610e30612732565b61115e5760405162461bcd60e51b8152600401610a3290614df6565b81303314156111925761116f6125cc565b811461118d5760405162461bcd60e51b8152600401610a3290614ed8565b61119b565b61119b816125e1565b6111a483612ad2565b610a5383612d65565b6000610e1d8383612a54565b610134546001600160a01b03166111ce612732565b6001600160a01b0316146111f45760405162461bcd60e51b8152600401610a3290614e91565b611214888888888888888860405180602001604052806000815250612f67565b5050505050505050565b8061122a610e30612732565b6112465760405162461bcd60e51b8152600401610a3290614df6565b813033141561127a576112576125cc565b81146112755760405162461bcd60e51b8152600401610a3290614ed8565b611283565b611283816125e1565b610f1c8787878787612fc2565b8061129c610e30612732565b6112b85760405162461bcd60e51b8152600401610a3290614df6565b81303314156112ec576112c96125cc565b81146112e75760405162461bcd60e51b8152600401610a3290614ed8565b6112f5565b6112f5816125e1565b611301868686866130a1565b505050505050565b6000818152606760205260408120546001600160a01b03161515610944565b610f9e8160405160200161133c9190614c26565b6040516020818303038152906040528051906020012060001c82613141565b6000818152606760205260408120546001600160a01b0316806109445760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a32565b806113c7610e30612732565b6113e35760405162461bcd60e51b8152600401610a3290614df6565b6113f56113ee612732565b3084612b3f565b611117611400612732565b8361288f565b606080611413848461316d565b909590945092505050565b6000610d118484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061318e92505050565b60006001600160a01b0382166114ca5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a32565b506001600160a01b031660009081526068602052604090205490565b6000805160206151df833981519152546001600160a01b03161561155b5760405162461bcd60e51b815260206004820152602660248201527f52656769737472793a20524f4f545f434841494e5f4d414e454745525f4e4f546044820152655f454d50545960d01b6064820152608401610a32565b806000805160206151df8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b7f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b87546001600160a01b0316156116155760405162461bcd60e51b815260206004820152602760248201527f52656769737472793a204348494c445f434841494e5f4d414e454745525f4e4f604482015266545f454d50545960c81b6064820152608401610a32565b807f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b8761156c565b7f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378546001600160a01b0316156116b45760405162461bcd60e51b815260206004820181905260248201527f52656769737472793a20434e535f52454749535452595f4e4f545f454d5054596044820152606401610a32565b807f8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec9237861156c565b6116e3612e54565b6001600160a01b03166116f4612732565b6001600160a01b03161461171a5760405162461bcd60e51b8152600401610a3290614f5a565b6117248484612741565b50505050565b611734878761323b565b61173c612732565b6001600160a01b031661174e8661135b565b6001600160a01b0316146117a45760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a2053454e4445525f49535f4e4f545f4f574e45520000006044820152606401610a32565b610f1c84848484896132aa565b60606066805461095990615107565b610134546001600160a01b03166117d5612732565b6001600160a01b0316146117fb5760405162461bcd60e51b8152600401610a3290614e91565b6118086101338383613ff4565b507f4b120d6a959a84a520fa48f5f937cca0e79129423487af7901213b5d2e89313b828260405161183a929190614daa565b60405180910390a15050565b8060148111156118985760405162461bcd60e51b815260206004820152601d60248201527f52656769737472793a20455843454544535f42415443485f4c494d49540000006044820152606401610a32565b60005b818110156119795760008484838181106118c557634e487b7160e01b600052603260045260246000fd5b9050602002013590506118d78161135b565b6001600160a01b03166118e8612732565b6001600160a01b0316148160405160200161192f91907f52656769737472793a20494e56414c49445f544f4b454e5f4f574e45522000008152601e810191909152603e0190565b6040516020818303038152906040529061195c5760405162461bcd60e51b8152600401610a329190614dbe565b5061196681612d65565b508061197181615142565b91505061189b565b50611982612732565b6001600160a01b03167ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df84846040516119bc929190614d57565b60405180910390a2505050565b6111176119d4612732565b8383613334565b6000610d116119e985615053565b3085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061340392505050565b80611a32610e30612732565b611a4e5760405162461bcd60e51b8152600401610a3290614df6565b8130331415611a8257611a5f6125cc565b8114611a7d5760405162461bcd60e51b8152600401610a3290614ed8565b611a8b565b611a8b816125e1565b611724611a978461135b565b8585612b3f565b610134546001600160a01b0316611ab3612732565b6001600160a01b031614611ad95760405162461bcd60e51b8152600401610a3290614e91565b611b1a888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355b92505050565b611214848484848b6132aa565b6000818152606760205260408120546001600160a01b0316611b4a576000610944565b3092915050565b610134546001600160a01b0316611b66612732565b6001600160a01b031614611b8c5760405162461bcd60e51b8152600401610a3290614e91565b611301868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506135a792505050565b606080836001600160401b03811115611c2a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611c5d57816020015b6060815260200190600190039081611c485790505b509150836001600160401b03811115611c8657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611cb957816020015b6060815260200190600190039081611ca45790505b50905060005b84811015611d6057611cf7868683818110611cea57634e487b7160e01b600052603260045260246000fd5b905060200201358561316d565b848381518110611d1757634e487b7160e01b600052603260045260246000fd5b60200260200101848481518110611d3e57634e487b7160e01b600052603260045260246000fd5b6020026020010182905282905250508080611d5890615142565b915050611cbf565b50935093915050565b81611d75610e30612732565b611d915760405162461bcd60e51b8152600401610a3290614df6565b8230331415611dc557611da26125cc565b8114611dc05760405162461bcd60e51b8152600401610a3290614ed8565b611dce565b611dce816125e1565b611dd784612ad2565b611301868686866135f4565b600081815260c960205260409020805460609190611e0090615107565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2c90615107565b8015611e795780601f10611e4e57610100808354040283529160200191611e79565b820191906000526020600020905b815481529060010190602001808311611e5c57829003601f168201915b50505050509050919050565b600054610100900460ff1615808015611ea55750600054600160ff909116105b80611ebf5750303b158015611ebf575060005460ff166001145b611f225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a32565b6000805460ff191660011790558015611f45576000805461ff0019166101001790555b61013480546001600160a01b0319166001600160a01b0384161790556040805180820182526013815272556e73746f707061626c6520446f6d61696e7360681b60208083019190915282518084019093526002835261155160f21b90830152611fad91613627565b611fb5613675565b611fbd613675565b8015611117576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161183a565b606061200a8261256d565b600061201461369e565b905060008151116120345760405180602001604052806000815250610e1d565b8061203e846136ae565b60405160200161204f929190614c91565b6040516020818303038152906040529392505050565b610134546001600160a01b031661207a612732565b6001600160a01b0316146120a05760405162461bcd60e51b8152600401610a3290614e91565b611724848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020810190915290815292506135a7915050565b806120fb610e30612732565b6121175760405162461bcd60e51b8152600401610a3290614df6565b813033141561214b576121286125cc565b81146121465760405162461bcd60e51b8152600401610a3290614ed8565b612154565b612154816125e1565b610f1c87878787876132aa565b7f8bea9a6f8afd34f4e29c585f854e0cc5161431bf5fc299d468454d33dce53b87546001600160a01b0316612194612732565b6001600160a01b0316146121ba5760405162461bcd60e51b8152600401610a3290614f5a565b60208114156121dd5760006121d182840184614ac4565b90506117248482612741565b60006121eb828401846147aa565b805190915060005b818110156113015761222c8684838151811061221f57634e487b7160e01b600052603260045260246000fd5b6020026020010151612741565b8061223681615142565b9150506121f3565b610134546001600160a01b0316612253612732565b6001600160a01b0316146122795760405162461bcd60e51b8152600401610a3290614e91565b611724848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355b92505050565b806122c6610e30612732565b6122e25760405162461bcd60e51b8152600401610a3290614df6565b8130331415612316576122f36125cc565b81146123115760405162461bcd60e51b8152600401610a3290614ed8565b61231f565b61231f816125e1565b610f1c87878787876137c7565b610134546001600160a01b0316612341612732565b6001600160a01b0316146123675760405162461bcd60e51b8152600401610a3290614e91565b6123ae8a8a8a8a8a8a8a8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f6792505050565b50505050505050505050565b60006123c4612732565b6001600160a01b038116600090815261013560205260409020549091506124375760405162461bcd60e51b815260206004820152602160248201527f52656769737472793a20524556455253455f5245434f52445f49535f454d50546044820152605960f81b6064820152608401610a32565b610f9e816137dd565b6060816001600160401b0381111561246857634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561249b57816020015b60608152602001906001900390816124865790505b50905060005b82811015612516576124d88484838181106124cc57634e487b7160e01b600052603260045260246000fd5b90506020020135611de3565b8282815181106124f857634e487b7160e01b600052603260045260246000fd5b6020026020010181905250808061250e90615142565b9150506124a1565b5092915050565b60006001600160e01b031982166380ac58cd60e01b148061254e57506001600160e01b03198216635b5e139f60e01b145b8061094457506301ffc9a760e01b6001600160e01b0319831614610944565b6000818152606760205260409020546001600160a01b0316610f9e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a32565b6000303314156125de5750601f193601355b90565b600081815261010060205260409020546125fc906001615010565b6000918252610100602052604090912055565b600061261a8261135b565b9050806001600160a01b0316836001600160a01b031614156126885760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a32565b806001600160a01b031661269a612732565b6001600160a01b031614806126b657506126b68161089f612732565b6127285760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610a32565b610a538383613822565b600061273c613890565b905090565b6001600160a01b0382166127975760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a32565b6000818152606760205260409020546001600160a01b0316156127fc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a32565b612808600083836138ac565b6001600160a01b0382166000908152606860205260408120805460019290612831908490615010565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000612899612e54565b90506128a58183613822565b6000805160206151df83398151915254604080516020808201869052825180830390910181528183019283905263e3dec8fb60e01b9092526001600160a01b0390921691829163e3dec8fb91612902918891309190604401614cc0565b600060405180830381600087803b15801561291c57600080fd5b505af1158015611214573d6000803e3d6000fd5b6060610e1d836040516020016129469190614c26565b6040516020818303038152906040528051906020012060001c836138d4565b6060612970856125e1565b600080876001600160a01b03168661298a8b8a8989613993565b6040516129979190614c26565b60006040518083038160008787f1925050503d80600081146129d5576040519150601f19603f3d011682016040523d82523d6000602084013e6129da565b606091505b5090925090506129eb603f87615028565b5a11612a0757634e487b7160e01b600052600160045260246000fd5b612a4782826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c45440000000000008152506139c3565b9998505050505050505050565b600080612a608361135b565b9050806001600160a01b0316846001600160a01b03161480612aa757506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80610d115750836001600160a01b0316612ac0846109dc565b6001600160a01b031614949350505050565b612adb816139fc565b604051602001612aed91815260200190565b60408051601f198184030181528282528051602091820120600085815260cb9092529181209190915582917f185c30856dadb58bf097c1f665a52ada7029752dbcad008ea3fefc73bee8c9fe9190a250565b826001600160a01b0316612b528261135b565b6001600160a01b031614612bb65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610a32565b6001600160a01b038216612c185760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a32565b612c238383836138ac565b612c2e600082613822565b6001600160a01b0383166000908152606860205260408120805460019290612c5790849061503c565b90915550506001600160a01b0382166000908152606860205260408120805460019290612c85908490615010565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8481101561130157612d53868683818110612d1457634e487b7160e01b600052603260045260246000fd5b90506020020135858584818110612d3b57634e487b7160e01b600052603260045260246000fd5b9050602002810190612d4d9190614f9c565b856130a1565b80612d5d81615142565b915050612ce9565b6000612d708261135b565b9050612d7e816000846138ac565b612d89600083613822565b6001600160a01b0381166000908152606860205260408120805460019290612db290849061503c565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821660008181526101356020526040808220849055518392917feb76a21470988c474a21f690cc28fee1ed511bd812dc3c21fd0f49c5e5d4708a91a35050565b6000806000805160206151df8339815191525460405163721804d360e11b81523060048201526001600160a01b039091169150600090829063e43009a69060240160206040518083038186803b158015612ead57600080fd5b505afa158015612ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee5919061486b565b60405163e66f960360e01b8152600481018290529091506001600160a01b0383169063e66f96039060240160206040518083038186803b158015612f2857600080fd5b505afa158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f609190614230565b9250505090565b612faa898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506135a7915050565b612fb7858585858c6132aa565b505050505050505050565b60008585604051602001612fd7929190614c81565b60408051601f198184030181528282528051602091820120601f890182900482028401820190925287835290925061302b918391899089908190840183828082843760009201919091525061314192505050565b6113018187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250889250613a28915050565b6130aa84613b63565b6130f65760405162461bcd60e51b815260206004820152601c60248201527f5265636f726453746f726167653a204b45595f4e4f545f464f554e44000000006044820152606401610a32565b6117248461310386611de3565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250613a28915050565b61314a82613b63565b61111757600082815260c9602090815260409091208251610a5392840190614074565b60608061317984611de3565b915061318584846138d4565b90509250929050565b60008151600014156131da5760405162461bcd60e51b815260206004820152601560248201527452656769737472793a204c4142454c5f454d50545960581b6044820152606401610a32565b82826040516020016131ec9190614c26565b6040516020818303038152906040528051906020012060405160200161321c929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209392505050565b6000805160206151df83398151915254604051633805550f60e01b81526001600160a01b03909116908190633805550f9061327c9086908690600401614daa565b600060405180830381600087803b15801561329657600080fd5b505af1158015610f1c573d6000803e3d6000fd5b60005b84811015611301576133228686838181106132d857634e487b7160e01b600052603260045260246000fd5b90506020028101906132ea9190614f9c565b86868581811061330a57634e487b7160e01b600052603260045260246000fd5b905060200281019061331c9190614f9c565b86612fc2565b8061332c81615142565b9150506132ad565b816001600160a01b0316836001600160a01b031614156133965760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a32565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6040838101519051636ccbae5f60e01b8152600481019190915260009081903090636ccbae5f9060240160206040518083038186803b15801561344557600080fd5b505afa158015613459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347d919061486b565b9050600061352b8660600151805190602001208688602001516040516020016134cb9392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b905081866020015114801561355157508551613551906001600160a01b03168286613b89565b9695505050505050565b6135658383612741565b817fc5beef08f693b11c316c0c8394a377a0033c9cf701b8cd8afd79cecef60c3952826040516135959190614dbe565b60405180910390a2610a538383613cd9565b6135b2848483613d1a565b827fc5beef08f693b11c316c0c8394a377a0033c9cf701b8cd8afd79cecef60c3952836040516135e29190614dbe565b60405180910390a26117248484613cd9565b6135ff848484612b3f565b61360b84848484613d4d565b6117245760405162461bcd60e51b8152600401610a3290614e3f565b600054610100900460ff1661364e5760405162461bcd60e51b8152600401610a3290614f0f565b8151613661906065906020850190614074565b508051610a53906066906020840190614074565b600054610100900460ff1661369c5760405162461bcd60e51b8152600401610a3290614f0f565b565b6060610133805461095990615107565b6060816136d25750506040805180820190915260018152600360fc1b602082015290565b8160005b81156136fc57806136e681615142565b91506136f59050600a83615028565b91506136d6565b6000816001600160401b0381111561372457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561374e576020820181803683370190505b5090505b8415610d115761376360018361503c565b9150613770600a8661515d565b61377b906030615010565b60f81b81838151811061379e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506137c0600a86615028565b9450613752565b6137d081612ad2565b610ea385858585856132aa565b6001600160a01b03811660008181526101356020526040808220829055517ffcf5eec0cfa3e6332f5f0e63ec242d71f866a61d121d6cdf5c2eb3b668a26c4f9190a250565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906138578261135b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000303314156138a7575060331936013560601c90565b503390565b6001600160a01b0383166000908152610135602052604090205415610a5357610a53836137dd565b606060ca60006138e3846139fc565b81526020019081526020016000206000848152602001908152602001600020805461390d90615107565b80601f016020809104026020016040519081016040528092919081815260200182805461393990615107565b80156139865780601f1061395b57610100808354040283529160200191613986565b820191906000526020600020905b81548152906001019060200180831161396957829003601f168201915b5050505050905092915050565b60608285856040516020016139aa93929190614c42565b6040516020818303038152906040529050949350505050565b606083156139d2575081610e1d565b8251156139e25782518084602001fd5b8160405162461bcd60e51b8152600401610a329190614dbe565b600081815260cb602052604081205415613a2457600082815260cb6020526040902054610944565b5090565b60ca6000613a35836139fc565b815260200190815260200160002060008581526020019081526020016000208054613a5f90615107565b15159050613ab65782604051613a759190614c26565b6040518091039020817f7ae4f661958fbecc2f77be6b0eb280d2a6f604b29e1e7221c82b9da0c4af7f8685604051613aad9190614dbe565b60405180910390a35b8160ca6000613ac4846139fc565b815260200190815260200160002060008681526020019081526020016000209080519060200190613af6929190614074565b5081604051613b059190614c26565b604051809103902083604051613b1b9190614c26565b6040518091039020827f851ffe8e74d5015261dba0a1f9e1b0e5d42c5af5d2ad1908fee897c7d80a0d928686604051613b55929190614dd1565b60405180910390a450505050565b600081815260c9602052604081208054829190613b7f90615107565b9050119050919050565b6000806000613b988585613e5e565b90925090506000816004811115613bbf57634e487b7160e01b600052602160045260246000fd5b148015613bdd5750856001600160a01b0316826001600160a01b0316145b15613bed57600192505050610e1d565b600080876001600160a01b0316631626ba7e60e01b8888604051602401613c15929190614d91565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613c539190614c26565b600060405180830381855afa9150503d8060008114613c8e576040519150601f19603f3d011682016040523d82523d6000602084013e613c93565b606091505b5091509150818015613ca6575080516020145b8015613ccd57508051630b135d3f60e11b90613ccb908301602090810190840161486b565b145b98975050505050505050565b61dead6001600160a01b03831614801590613d0b57506001600160a01b03821660009081526101356020526040902054155b15611117576111178282612e0c565b613d248383612741565b613d316000848484613d4d565b610a535760405162461bcd60e51b8152600401610a3290614e3f565b60006001600160a01b0384163b15613e5657836001600160a01b031663150b7a02613d76612732565b8786866040518563ffffffff1660e01b8152600401613d989493929190614cec565b602060405180830381600087803b158015613db257600080fd5b505af1925050508015613de2575060408051601f3d908101601f19168201909252613ddf9181019061489f565b60015b613e3c573d808015613e10576040519150601f19603f3d011682016040523d82523d6000602084013e613e15565b606091505b508051613e345760405162461bcd60e51b8152600401610a3290614e3f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d11565b506001610d11565b600080825160411415613e955760208301516040840151606085015160001a613e8987828585613ece565b94509450505050613ec7565b825160401415613ebf5760208301516040840151613eb4868383613fbb565b935093505050613ec7565b506000905060025b9250929050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613f055750600090506003613fb2565b8460ff16601b14158015613f1d57508460ff16601c14155b15613f2e5750600090506004613fb2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613f82573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fab57600060019250925050613fb2565b9150600090505b94509492505050565b6000806001600160ff1b03831681613fd860ff86901c601b615010565b9050613fe687828885613ece565b935093505050935093915050565b82805461400090615107565b90600052602060002090601f0160209004810192826140225760008555614068565b82601f1061403b5782800160ff19823516178555614068565b82800160010185558215614068579182015b8281111561406857823582559160200191906001019061404d565b50613a249291506140e8565b82805461408090615107565b90600052602060002090601f0160209004810192826140a25760008555614068565b82601f106140bb57805160ff1916838001178555614068565b82800160010185558215614068579182015b828111156140685782518255916020019190600101906140cd565b5b80821115613a2457600081556001016140e9565b60006001600160401b038311156141165761411661519d565b614129601f8401601f1916602001614fe0565b905082815283838301111561413d57600080fd5b828260208301376000602084830101529392505050565b803561415f816151b3565b919050565b60008083601f840112614175578182fd5b5081356001600160401b0381111561418b578182fd5b6020830191508360208260051b8501011115613ec757600080fd5b8035801515811461415f57600080fd5b60008083601f8401126141c7578182fd5b5081356001600160401b038111156141dd578182fd5b602083019150836020828501011115613ec757600080fd5b600082601f830112614205578081fd5b610e1d838335602085016140fd565b600060208284031215614225578081fd5b8135610e1d816151b3565b600060208284031215614241578081fd5b8151610e1d816151b3565b6000806040838503121561425e578081fd5b8235614269816151b3565b91506020830135614279816151b3565b809150509250929050565b600080600060608486031215614298578081fd5b83356142a3816151b3565b925060208401356142b3816151b3565b929592945050506040919091013590565b6000806000806000608086880312156142db578081fd5b85356142e6816151b3565b945060208601356142f6816151b3565b93506040860135925060608601356001600160401b03811115614317578182fd5b614323888289016141b6565b969995985093965092949392505050565b60008060008060808587031215614349578182fd5b8435614354816151b3565b93506020850135614364816151b3565b92506040850135915060608501356001600160401b03811115614385578182fd5b614391878288016141f5565b91505092959194509250565b600080604083850312156143af578182fd5b82356143ba816151b3565b9150613185602084016141a6565b6000806000604084860312156143dc578081fd5b83356143e7816151b3565b925060208401356001600160401b03811115614401578182fd5b61440d868287016141b6565b9497909650939450505050565b6000806040838503121561442c578182fd5b8235614437816151b3565b946020939093013593505050565b6000806000806060858703121561445a578182fd5b8435614465816151b3565b93506020850135925060408501356001600160401b03811115614486578283fd5b614492878288016141b6565b95989497509550505050565b60008060008060008060008060a0898b0312156144b9578586fd5b88356144c4816151b3565b97506020890135965060408901356001600160401b03808211156144e6578788fd5b6144f28c838d016141b6565b909850965060608b013591508082111561450a578485fd5b6145168c838d01614164565b909650945060808b013591508082111561452e578384fd5b5061453b8b828c01614164565b999c989b5096995094979396929594505050565b60008060008060008060008060008060c08b8d03121561456d578384fd5b6145768b614154565b995060208b0135985060408b01356001600160401b0380821115614598578586fd5b6145a48e838f016141b6565b909a50985060608d01359150808211156145bc578586fd5b6145c88e838f01614164565b909850965060808d01359150808211156145e0578586fd5b6145ec8e838f01614164565b909650945060a08d0135915080821115614604578384fd5b506146118d828e016141b6565b915080935050809150509295989b9194979a5092959850565b60008060008060008060808789031215614642578384fd5b863561464d816151b3565b95506020870135945060408701356001600160401b038082111561466f578586fd5b61467b8a838b016141b6565b90965094506060890135915080821115614693578384fd5b506146a089828a016141b6565b979a9699509497509295939492505050565b6000806000806000606086880312156146c9578283fd5b85356001600160401b03808211156146df578485fd5b6146eb89838a01614164565b90975095506020880135915080821115614703578485fd5b5061471088828901614164565b96999598509660400135949350505050565b600080600060408486031215614736578081fd5b83356001600160401b0381111561474b578182fd5b61475786828701614164565b909790965060209590950135949350505050565b6000806020838503121561477d578182fd5b82356001600160401b03811115614792578283fd5b61479e85828601614164565b90969095509350505050565b600060208083850312156147bc578182fd5b82356001600160401b03808211156147d2578384fd5b818501915085601f8301126147e5578384fd5b8135818111156147f7576147f761519d565b8060051b9150614808848301614fe0565b8181528481019084860184860187018a1015614822578788fd5b8795505b83861015614844578035835260019590950194918601918601614826565b5098975050505050505050565b600060208284031215614862578081fd5b610e1d826141a6565b60006020828403121561487c578081fd5b5051919050565b600060208284031215614894578081fd5b8135610e1d816151c8565b6000602082840312156148b0578081fd5b8151610e1d816151c8565b60008060008060008060006080888a0312156148d5578081fd5b87356001600160401b03808211156148eb578283fd5b6148f78b838c016141b6565b909950975060208a0135965060408a0135915080821115614916578283fd5b6149228b838c01614164565b909650945060608a013591508082111561493a578283fd5b506149478a828b01614164565b989b979a50959850939692959293505050565b6000806020838503121561496c578182fd5b82356001600160401b03811115614981578283fd5b61479e858286016141b6565b6000806000806000606086880312156149a4578283fd5b85356001600160401b03808211156149ba578485fd5b6149c689838a016141b6565b909750955060208801359150808211156149de578485fd5b50614710888289016141b6565b6000806000604084860312156149ff578081fd5b83356001600160401b03811115614a14578182fd5b614757868287016141b6565b600060208284031215614a31578081fd5b81356001600160401b03811115614a46578182fd5b8201601f81018413614a56578182fd5b610d11848235602084016140fd565b600080600060408486031215614a79578081fd5b83356001600160401b0380821115614a8f578283fd5b9085019060808288031215614aa2578283fd5b90935060208501359080821115614ab7578283fd5b5061440d868287016141b6565b600060208284031215614ad5578081fd5b5035919050565b600080600060408486031215614af0578081fd5b8335925060208401356001600160401b03811115614401578182fd5b60008060008060608587031215614b21578182fd5b8435935060208501356001600160401b03811115614b3d578283fd5b614b49878288016141b6565b9598909750949560400135949350505050565b60008060408385031215614b6e578182fd5b50508035926020909101359150565b600081518084526020808501808196508360051b81019150828601855b85811015614bc4578284038952614bb2848351614bfa565b98850198935090840190600101614b9a565b5091979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452614c128160208601602086016150db565b601f01601f19169290920160200192915050565b60008251614c388184602087016150db565b9190910192915050565b60008451614c548184602089016150db565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b8183823760009101908152919050565b60008351614ca38184602088016150db565b835190830190614cb78183602088016150db565b01949350505050565b6001600160a01b03848116825283166020820152606060408201819052600090610ba590830184614bfa565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061355190830184614bfa565b602081526000610e1d6020830184614b7d565b604081526000614d456040830185614b7d565b8281036020840152610e198185614b7d565b6020808252810182905260006001600160fb1b03831115614d76578081fd5b8260051b808560408501379190910160400190815292915050565b828152604060208201526000610d116040830184614bfa565b602081526000610d11602083018486614bd1565b602081526000610e1d6020830184614bfa565b604081526000614de46040830185614bfa565b8281036020840152610e198185614bfa565b60208082526029908201527f52656769737472793a2053454e4445525f49535f4e4f545f415050524f5645446040820152682fa7a92fa7aba722a960b91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526027908201527f52656769737472793a2053454e4445525f49535f4e4f545f4d494e54494e475f60408201526626a0a720a3a2a960c91b606082015260800190565b60208082526017908201527f52656769737472793a20544f4b454e5f494e56414c4944000000000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526022908201527f52656769737472793a20494e53554646494349454e545f5045524d495353494f6040820152614e5360f01b606082015260800190565b6000808335601e19843603018112614fb2578283fd5b8301803591506001600160401b03821115614fcb578283fd5b602001915036819003821315613ec757600080fd5b604051601f8201601f191681016001600160401b03811182821017156150085761500861519d565b604052919050565b6000821982111561502357615023615171565b500190565b60008261503757615037615187565b500490565b60008282101561504e5761504e615171565b500390565b600060808236031215615064578081fd5b604051608081016001600160401b0382821081831117156150875761508761519d565b8160405284359150615098826151b3565b818352602085013560208401526040850135604084015260608501359150808211156150c2578384fd5b506150cf368286016141f5565b60608301525092915050565b60005b838110156150f65781810151838201526020016150de565b838111156117245750506000910152565b600181811c9082168061511b57607f821691505b6020821081141561513c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561515657615156615171565b5060010190565b60008261516c5761516c615187565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f9e57600080fd5b6001600160e01b031981168114610f9e57600080fdfebe2bb46ac0377341a1ec5c3116d70fd5029d704bd46292e58f6265dd177ebafea164736f6c6343000804000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/contracts/uns/abi/resolver.json b/src/contracts/uns/abi/resolver.json new file mode 100644 index 00000000..63670069 --- /dev/null +++ b/src/contracts/uns/abi/resolver.json @@ -0,0 +1,520 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Resolver", + "sourceName": "dot-crypto/contracts/Resolver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract CNSRegistry", + "name": "registry", + "type": "address" + }, + { + "internalType": "contract MintingController", + "name": "mintingController", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "string", + "name": "keyIndex", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + } + ], + "name": "NewKey", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ResetRecords", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "string", + "name": "keyIndex", + "type": "string" + }, + { + "indexed": true, + "internalType": "string", + "name": "valueIndex", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "name": "Set", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "get", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getByHash", + "outputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getMany", + "outputs": [ + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256[]", + "name": "keyHashes", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getManyByHash", + "outputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "keyHash", + "type": "uint256" + } + ], + "name": "hashToKey", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256[]", + "name": "hashes", + "type": "uint256[]" + } + ], + "name": "hashesToKeys", + "outputs": [ + { + "internalType": "string[]", + "name": "", + "type": "string[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "nonceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "preconfigure", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "reconfigure", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "reconfigureFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "reset", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "resetFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "set", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "setFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "setMany", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string[]", + "name": "keys", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "values", + "type": "string[]" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "setManyFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200240a3803806200240a833981016040819052620000349162000160565b8180600160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050806001600160a01b0316637b1039996040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009757600080fd5b505afa158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000d2919081019062000137565b6001600160a01b0316826001600160a01b031614620000f057600080fd5b600580546001600160a01b0319166001600160a01b039290921691909117905550620001ea565b80516200012481620001c5565b92915050565b80516200012481620001df565b6000602082840312156200014a57600080fd5b600062000158848462000117565b949350505050565b600080604083850312156200017457600080fd5b60006200018285856200012a565b925050602062000195858286016200012a565b9150509250929050565b60006200012482620001b9565b600062000124826200019f565b6001600160a01b031690565b620001d0816200019f565b8114620001dc57600080fd5b50565b620001d081620001ac565b61221080620001fa6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638c87a4ea116100a2578063b87abc1111610071578063b87abc1114610244578063c597407314610257578063ce92b33e1461026a578063e837ae741461027d578063ec129eea146102905761010b565b80638c87a4ea146101ea5780638f69c188146101fd578063a3557e6c14610210578063b85afd28146102235761010b565b806347c81699116100de57806347c8169914610181578063672b9f81146101945780636ccbae5f146101b55780637b103999146101d55761010b565b80631bd8cc1a146101105780631be5e7ed146101395780632c3d376d14610159578063310bd74b1461016c575b600080fd5b61012361011e3660046117b4565b6102a3565b6040516101309190611eee565b60405180910390f35b61014c610147366004611aec565b6104f2565b6040516101309190611fd6565b61014c610167366004611b21565b610673565b61017f61017a366004611b21565b610714565b005b61017f61018f3660046119b5565b6107c0565b6101a76101a2366004611b94565b6108ef565b604051610130929190611fe7565b6101c86101c3366004611b21565b6109c3565b604051610130919061204c565b6101dd6109d5565b6040516101309190611ea9565b6101236101f836600461191d565b6109e5565b61017f61020b366004611878565b610a74565b61017f61021e366004611878565b610af0565b610236610231366004611951565b610b1b565b604051610130929190611eff565b61017f610252366004611b3f565b610ca9565b61017f610265366004611a39565b610d43565b61017f610278366004611808565b610df9565b61017f61028b366004611808565b610e97565b61017f61029e366004611808565b610f4e565b60015460405163b3f9e4cb60e01b815260609183916001600160a01b039091169063b3f9e4cb906102d890849060040161204c565b60206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610328919081019061178e565b6001600160a01b0316306001600160a01b0316146103615760405162461bcd60e51b81526004016103589061201c565b60405180910390fd5b604080518581526020808702820101909152849060609082801561039957816020015b60608152602001906001900390816103845790505b506000868152600360205260408120549192505b838110156104e557600087815260026020908152604080832085845290915290208989838181106103da57fe5b602002820190508035601e19368490030181126103f657600080fd5b909101602081019150356001600160401b0381111561041457600080fd5b3681900382131561042457600080fd5b604051610432929190611e70565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f810185900485028301850190935282825290929091908301828280156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b50505050508382815181106104d257fe5b60209081029190910101526001016103ad565b5090979650505050505050565b60015460405163b3f9e4cb60e01b815260609183916001600160a01b039091169063b3f9e4cb9061052790849060040161204c565b60206040518083038186803b15801561053f57600080fd5b505afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610577919081019061178e565b6001600160a01b0316306001600160a01b0316146105a75760405162461bcd60e51b81526004016103589061201c565b6000838152600260209081526040808320600383528184205484529091529081902090516105d6908690611e7d565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f810185900485028301850190935282825290929091908301828280156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b505050505091505092915050565b60008181526004602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b50505050509050919050565b60015460405163430c208160e01b815282916001600160a01b03169063430c2081906107469033908590600401611ec5565b60206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107969190810190611997565b6107b25760405162461bcd60e51b81526004016103589061202c565b6107bc4283610fec565b5050565b60015460405163430c208160e01b815282916001600160a01b03169063430c2081906107f29033908590600401611ec5565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108429190810190611997565b61085e5760405162461bcd60e51b81526004016103589061202c565b6108e7600360008481526020019081526020016000205487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525088925061108e915050565b505050505050565b60015460405163b3f9e4cb60e01b8152606091829184916001600160a01b03169063b3f9e4cb9061092490849060040161204c565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610974919081019061178e565b6001600160a01b0316306001600160a01b0316146109a45760405162461bcd60e51b81526004016103589061201c565b6109ad85610673565b92506109b983856104f2565b9150509250929050565b60009081526020819052604090205490565b6001546001600160a01b03165b90565b6060600082519050606081604051908082528060200260200182016040528015610a2357816020015b6060815260200190600190039081610a0e5790505b50905060005b82811015610a6c57610a4d858281518110610a4057fe5b6020026020010151610673565b828281518110610a5957fe5b6020908102919091010152600101610a29565b509392505050565b610acf63ce92b33e60e01b858585604051602401610a9493929190611f24565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092178252519020838361129f565b600082815260036020526040902054610aea908585856113c3565b50505050565b610b1063ec129eea60e01b858585604051602401610a9493929190611f24565b610aea84848461140a565b60015460405163b3f9e4cb60e01b8152606091829184916001600160a01b03169063b3f9e4cb90610b5090849060040161204c565b60206040518083038186803b158015610b6857600080fd5b505afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba0919081019061178e565b6001600160a01b0316306001600160a01b031614610bd05760405162461bcd60e51b81526004016103589061201c565b8451604080518281526020808402820101909152818015610c0557816020015b6060815260200190600190039081610bf05790505b50935080604051908082528060200260200182016040528015610c3c57816020015b6060815260200190600190039081610c275790505b50925060005b81811015610c9f57610c67878281518110610c5957fe5b6020026020010151876108ef565b8651879084908110610c7557fe5b60200260200101868481518110610c8857fe5b602090810291909101019190915252600101610c42565b5050509250929050565b610d3463310bd74b60e01b84604051602401610cc5919061204c565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417845291519092208251601f8601839004830281018301909352848352918691869086908190840183828082843760009201919091525061129f92505050565b610d3e4284610fec565b505050565b610d676347c8169960e01b8888888888604051602401610cc5959493929190611f96565b610df0600360008581526020019081526020016000205488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525089925061108e915050565b50505050505050565b60015460405163430c208160e01b815282916001600160a01b03169063430c208190610e2b9033908590600401611ec5565b60206040518083038186803b158015610e4357600080fd5b505afa158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e7b9190810190611997565b610acf5760405162461bcd60e51b81526004016103589061202c565b6005546040516355138f0d60e11b81526001600160a01b039091169063aa271e1a90610ec7903390600401611eb7565b60206040518083038186803b158015610edf57600080fd5b505afa158015610ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f179190810190611997565b610f335760405162461bcd60e51b81526004016103589061203c565b600081815260036020526040902054610d3e908484846113c3565b60015460405163430c208160e01b815282916001600160a01b03169063430c208190610f809033908590600401611ec5565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd09190810190611997565b610b105760405162461bcd60e51b81526004016103589061202c565b600081815260036020526040808220849055600154905163538361a760e01b81526001600160a01b039091169163538361a79161102d91859160040161205a565b600060405180830381600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b50506040518392507f185c30856dadb58bf097c1f665a52ada7029752dbcad008ea3fefc73bee8c9fe9150600090a25050565b825160208085019190912060008381526002835260408082208883529093528281209251919290916110c1908790611e7d565b908152604051602091819003919091018120546001805463538361a760e01b84526002918316156101000260001901909216041592506001600160a01b03169063538361a7906111179086908690600401612075565b600060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b50505060008481526002602090815260408083208a8452909152908190209051869250611173908890611e7d565b90815260200160405180910390209080519060200190611194929190611521565b50600082815260046020526040902054600260001961010060018416150201909116046111dc57600082815260046020908152604090912086516111da92880190611521565b505b801561123157846040516111f09190611e7d565b6040518091039020837f7ae4f661958fbecc2f77be6b0eb280d2a6f604b29e1e7221c82b9da0c4af7f86876040516112289190611fd6565b60405180910390a35b8360405161123f9190611e7d565b6040518091039020856040516112559190611e7d565b6040518091039020847f851ffe8e74d5015261dba0a1f9e1b0e5d42c5af5d2ad1908fee897c7d80a0d92888860405161128f929190611fe7565b60405180910390a4505050505050565b6000828152602081815260408083205490519092916112f59185916112e9916112ce918a913091899101611e39565b60405160208183030381529060405280519060200120611414565b9063ffffffff61144416565b90506001600160a01b0381161580159061138c575060015460405163430c208160e01b81526001600160a01b039091169063430c20819061133c9084908890600401611ee0565b60206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061138c9190810190611997565b6113a85760405162461bcd60e51b81526004016103589061200c565b50505060009081526020819052604090208054600101905550565b825160005b818110156108e757611402868683815181106113e057fe5b60200260200101518684815181106113f457fe5b60200260200101518661108e565b6001016113c8565b610f334282610fec565b6000816040516020016114279190611e89565b604051602081830303815290604052805190602001209050919050565b600081516041146114575750600061151b565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561149d576000935050505061151b565b8060ff16601b141580156114b557508060ff16601c14155b156114c6576000935050505061151b565b600186828585604051600081526020016040526040516114e99493929190611f58565b6020604051602081039080840390855afa15801561150b573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061156257805160ff191683800117855561158f565b8280016001018555821561158f579182015b8281111561158f578251825591602001919060010190611574565b5061159b92915061159f565b5090565b6109e291905b8082111561159b57600081556001016115a5565b805161151b816121a4565b60008083601f8401126115d657600080fd5b5081356001600160401b038111156115ed57600080fd5b60208301915083602082028301111561160557600080fd5b9250929050565b600082601f83011261161d57600080fd5b813561163061162b826120a9565b612083565b81815260209384019390925082018360005b8381101561166e57813586016116588882611734565b8452506020928301929190910190600101611642565b5050505092915050565b600082601f83011261168957600080fd5b813561169761162b826120a9565b915081818352602084019350602081019050838560208402820111156116bc57600080fd5b60005b8381101561166e57816116d28882611783565b84525060209283019291909101906001016116bf565b805161151b816121bb565b60008083601f84011261170557600080fd5b5081356001600160401b0381111561171c57600080fd5b60208301915083600182028301111561160557600080fd5b600082601f83011261174557600080fd5b813561175361162b826120c9565b9150808252602083016020830185838301111561176f57600080fd5b61177a83828461214b565b50505092915050565b803561151b816121c4565b6000602082840312156117a057600080fd5b60006117ac84846115b9565b949350505050565b6000806000604084860312156117c957600080fd5b83356001600160401b038111156117df57600080fd5b6117eb868287016115c4565b935093505060206117fe86828701611783565b9150509250925092565b60008060006060848603121561181d57600080fd5b83356001600160401b0381111561183357600080fd5b61183f8682870161160c565b93505060208401356001600160401b0381111561185b57600080fd5b6118678682870161160c565b92505060406117fe86828701611783565b6000806000806080858703121561188e57600080fd5b84356001600160401b038111156118a457600080fd5b6118b08782880161160c565b94505060208501356001600160401b038111156118cc57600080fd5b6118d88782880161160c565b93505060406118e987828801611783565b92505060608501356001600160401b0381111561190557600080fd5b61191187828801611734565b91505092959194509250565b60006020828403121561192f57600080fd5b81356001600160401b0381111561194557600080fd5b6117ac84828501611678565b6000806040838503121561196457600080fd5b82356001600160401b0381111561197a57600080fd5b61198685828601611678565b92505060206109b985828601611783565b6000602082840312156119a957600080fd5b60006117ac84846116e8565b6000806000806000606086880312156119cd57600080fd5b85356001600160401b038111156119e357600080fd5b6119ef888289016116f3565b955095505060208601356001600160401b03811115611a0d57600080fd5b611a19888289016116f3565b93509350506040611a2c88828901611783565b9150509295509295909350565b60008060008060008060006080888a031215611a5457600080fd5b87356001600160401b03811115611a6a57600080fd5b611a768a828b016116f3565b975097505060208801356001600160401b03811115611a9457600080fd5b611aa08a828b016116f3565b95509550506040611ab38a828b01611783565b93505060608801356001600160401b03811115611acf57600080fd5b611adb8a828b016116f3565b925092505092959891949750929550565b60008060408385031215611aff57600080fd5b82356001600160401b03811115611b1557600080fd5b61198685828601611734565b600060208284031215611b3357600080fd5b60006117ac8484611783565b600080600060408486031215611b5457600080fd5b6000611b608686611783565b93505060208401356001600160401b03811115611b7c57600080fd5b611b88868287016116f3565b92509250509250925092565b60008060408385031215611ba757600080fd5b60006119868585611783565b6000611bbf8383611ccb565b9392505050565b611bcf8161212a565b82525050565b611bcf81612108565b611bcf611bea82612108565b612183565b6000611bfa826120f6565b611c0481856120fa565b935083602082028501611c16856120f0565b8060005b85811015611c505784840389528151611c338582611bb3565b9450611c3e836120f0565b60209a909a0199925050600101611c1a565b5091979650505050505050565b611bcf816109e2565b611bcf611c72826109e2565b6109e2565b611bcf81612135565b6000611c8c83856120fa565b9350611c9983858461214b565b611ca283612194565b9093019392505050565b6000611cb88385612103565b9350611cc583858461214b565b50500190565b6000611cd6826120f6565b611ce081856120fa565b9350611cf0818560208601612157565b611ca281612194565b6000611d04826120f6565b611d0e8185612103565b9350611d1e818560208601612157565b9290920192915050565b6000611d35601c83612103565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000611d6e6011836120fa565b70494e56414c49445f5349474e415455524560781b815260200192915050565b6000611d9b601d836120fa565b7f5245534f4c5645525f44455441434845445f46524f4d5f444f4d41494e000000815260200192915050565b6000611dd4601f836120fa565b7f53454e4445525f49535f4e4f545f415050524f5645445f4f525f4f574e455200815260200192915050565b6000611e0d6014836120fa565b7329a2a72222a92fa4a9afa727aa2fa6a4a72a22a960611b815260200192915050565b611bcf81612124565b6000611e458286611c66565b602082019150611e558285611bde565b601482019150611e658284611c66565b506020019392505050565b60006117ac828486611cac565b6000611bbf8284611cf9565b6000611e9482611d28565b9150611ea08284611c66565b50602001919050565b6020810161151b8284611bd5565b6020810161151b8284611bc6565b60408101611ed38285611bc6565b611bbf6020830184611c5d565b60408101611ed38285611bd5565b60208082528101611bbf8184611bef565b60408082528101611f108185611bef565b905081810360208301526117ac8184611bef565b60608082528101611f358186611bef565b90508181036020830152611f498185611bef565b90506117ac6040830184611c5d565b60808101611f668287611c5d565b611f736020830186611e30565b611f806040830185611c5d565b611f8d6060830184611c5d565b95945050505050565b60608082528101611fa8818789611c80565b90508181036020830152611fbd818587611c80565b9050611fcc6040830184611c5d565b9695505050505050565b60208082528101611bbf8184611ccb565b60408082528101611ff88185611ccb565b905081810360208301526117ac8184611ccb565b6020808252810161151b81611d61565b6020808252810161151b81611d8e565b6020808252810161151b81611dc7565b6020808252810161151b81611e00565b6020810161151b8284611c5d565b604081016120688285611c5d565b611bbf6020830184611c77565b60408101611ed38285611c5d565b6040518181016001600160401b03811182821017156120a157600080fd5b604052919050565b60006001600160401b038211156120bf57600080fd5b5060209081020190565b60006001600160401b038211156120df57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061151b82612118565b151590565b6001600160a01b031690565b60ff1690565b600061151b82612140565b600061151b826109e2565b600061151b82612108565b82818337506000910152565b60005b8381101561217257818101518382015260200161215a565b83811115610aea5750506000910152565b600061151b82600061151b8261219e565b601f01601f191690565b60601b90565b6121ad81612108565b81146121b857600080fd5b50565b6121ad81612113565b6121ad816109e256fea365627a7a7231582037190f09dc189a06dcc6eeadc898d75e015f965898d0f670749fc4c926cca2ef6c6578706572696d656e74616cf564736f6c634300050c0040", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638c87a4ea116100a2578063b87abc1111610071578063b87abc1114610244578063c597407314610257578063ce92b33e1461026a578063e837ae741461027d578063ec129eea146102905761010b565b80638c87a4ea146101ea5780638f69c188146101fd578063a3557e6c14610210578063b85afd28146102235761010b565b806347c81699116100de57806347c8169914610181578063672b9f81146101945780636ccbae5f146101b55780637b103999146101d55761010b565b80631bd8cc1a146101105780631be5e7ed146101395780632c3d376d14610159578063310bd74b1461016c575b600080fd5b61012361011e3660046117b4565b6102a3565b6040516101309190611eee565b60405180910390f35b61014c610147366004611aec565b6104f2565b6040516101309190611fd6565b61014c610167366004611b21565b610673565b61017f61017a366004611b21565b610714565b005b61017f61018f3660046119b5565b6107c0565b6101a76101a2366004611b94565b6108ef565b604051610130929190611fe7565b6101c86101c3366004611b21565b6109c3565b604051610130919061204c565b6101dd6109d5565b6040516101309190611ea9565b6101236101f836600461191d565b6109e5565b61017f61020b366004611878565b610a74565b61017f61021e366004611878565b610af0565b610236610231366004611951565b610b1b565b604051610130929190611eff565b61017f610252366004611b3f565b610ca9565b61017f610265366004611a39565b610d43565b61017f610278366004611808565b610df9565b61017f61028b366004611808565b610e97565b61017f61029e366004611808565b610f4e565b60015460405163b3f9e4cb60e01b815260609183916001600160a01b039091169063b3f9e4cb906102d890849060040161204c565b60206040518083038186803b1580156102f057600080fd5b505afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610328919081019061178e565b6001600160a01b0316306001600160a01b0316146103615760405162461bcd60e51b81526004016103589061201c565b60405180910390fd5b604080518581526020808702820101909152849060609082801561039957816020015b60608152602001906001900390816103845790505b506000868152600360205260408120549192505b838110156104e557600087815260026020908152604080832085845290915290208989838181106103da57fe5b602002820190508035601e19368490030181126103f657600080fd5b909101602081019150356001600160401b0381111561041457600080fd5b3681900382131561042457600080fd5b604051610432929190611e70565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f810185900485028301850190935282825290929091908301828280156104c15780601f10610496576101008083540402835291602001916104c1565b820191906000526020600020905b8154815290600101906020018083116104a457829003601f168201915b50505050508382815181106104d257fe5b60209081029190910101526001016103ad565b5090979650505050505050565b60015460405163b3f9e4cb60e01b815260609183916001600160a01b039091169063b3f9e4cb9061052790849060040161204c565b60206040518083038186803b15801561053f57600080fd5b505afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610577919081019061178e565b6001600160a01b0316306001600160a01b0316146105a75760405162461bcd60e51b81526004016103589061201c565b6000838152600260209081526040808320600383528184205484529091529081902090516105d6908690611e7d565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f810185900485028301850190935282825290929091908301828280156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b505050505091505092915050565b60008181526004602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156107085780601f106106dd57610100808354040283529160200191610708565b820191906000526020600020905b8154815290600101906020018083116106eb57829003601f168201915b50505050509050919050565b60015460405163430c208160e01b815282916001600160a01b03169063430c2081906107469033908590600401611ec5565b60206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107969190810190611997565b6107b25760405162461bcd60e51b81526004016103589061202c565b6107bc4283610fec565b5050565b60015460405163430c208160e01b815282916001600160a01b03169063430c2081906107f29033908590600401611ec5565b60206040518083038186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108429190810190611997565b61085e5760405162461bcd60e51b81526004016103589061202c565b6108e7600360008481526020019081526020016000205487878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525088925061108e915050565b505050505050565b60015460405163b3f9e4cb60e01b8152606091829184916001600160a01b03169063b3f9e4cb9061092490849060040161204c565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610974919081019061178e565b6001600160a01b0316306001600160a01b0316146109a45760405162461bcd60e51b81526004016103589061201c565b6109ad85610673565b92506109b983856104f2565b9150509250929050565b60009081526020819052604090205490565b6001546001600160a01b03165b90565b6060600082519050606081604051908082528060200260200182016040528015610a2357816020015b6060815260200190600190039081610a0e5790505b50905060005b82811015610a6c57610a4d858281518110610a4057fe5b6020026020010151610673565b828281518110610a5957fe5b6020908102919091010152600101610a29565b509392505050565b610acf63ce92b33e60e01b858585604051602401610a9493929190611f24565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092178252519020838361129f565b600082815260036020526040902054610aea908585856113c3565b50505050565b610b1063ec129eea60e01b858585604051602401610a9493929190611f24565b610aea84848461140a565b60015460405163b3f9e4cb60e01b8152606091829184916001600160a01b03169063b3f9e4cb90610b5090849060040161204c565b60206040518083038186803b158015610b6857600080fd5b505afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba0919081019061178e565b6001600160a01b0316306001600160a01b031614610bd05760405162461bcd60e51b81526004016103589061201c565b8451604080518281526020808402820101909152818015610c0557816020015b6060815260200190600190039081610bf05790505b50935080604051908082528060200260200182016040528015610c3c57816020015b6060815260200190600190039081610c275790505b50925060005b81811015610c9f57610c67878281518110610c5957fe5b6020026020010151876108ef565b8651879084908110610c7557fe5b60200260200101868481518110610c8857fe5b602090810291909101019190915252600101610c42565b5050509250929050565b610d3463310bd74b60e01b84604051602401610cc5919061204c565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417845291519092208251601f8601839004830281018301909352848352918691869086908190840183828082843760009201919091525061129f92505050565b610d3e4284610fec565b505050565b610d676347c8169960e01b8888888888604051602401610cc5959493929190611f96565b610df0600360008581526020019081526020016000205488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525089925061108e915050565b50505050505050565b60015460405163430c208160e01b815282916001600160a01b03169063430c208190610e2b9033908590600401611ec5565b60206040518083038186803b158015610e4357600080fd5b505afa158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e7b9190810190611997565b610acf5760405162461bcd60e51b81526004016103589061202c565b6005546040516355138f0d60e11b81526001600160a01b039091169063aa271e1a90610ec7903390600401611eb7565b60206040518083038186803b158015610edf57600080fd5b505afa158015610ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f179190810190611997565b610f335760405162461bcd60e51b81526004016103589061203c565b600081815260036020526040902054610d3e908484846113c3565b60015460405163430c208160e01b815282916001600160a01b03169063430c208190610f809033908590600401611ec5565b60206040518083038186803b158015610f9857600080fd5b505afa158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd09190810190611997565b610b105760405162461bcd60e51b81526004016103589061202c565b600081815260036020526040808220849055600154905163538361a760e01b81526001600160a01b039091169163538361a79161102d91859160040161205a565b600060405180830381600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b50506040518392507f185c30856dadb58bf097c1f665a52ada7029752dbcad008ea3fefc73bee8c9fe9150600090a25050565b825160208085019190912060008381526002835260408082208883529093528281209251919290916110c1908790611e7d565b908152604051602091819003919091018120546001805463538361a760e01b84526002918316156101000260001901909216041592506001600160a01b03169063538361a7906111179086908690600401612075565b600060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b50505060008481526002602090815260408083208a8452909152908190209051869250611173908890611e7d565b90815260200160405180910390209080519060200190611194929190611521565b50600082815260046020526040902054600260001961010060018416150201909116046111dc57600082815260046020908152604090912086516111da92880190611521565b505b801561123157846040516111f09190611e7d565b6040518091039020837f7ae4f661958fbecc2f77be6b0eb280d2a6f604b29e1e7221c82b9da0c4af7f86876040516112289190611fd6565b60405180910390a35b8360405161123f9190611e7d565b6040518091039020856040516112559190611e7d565b6040518091039020847f851ffe8e74d5015261dba0a1f9e1b0e5d42c5af5d2ad1908fee897c7d80a0d92888860405161128f929190611fe7565b60405180910390a4505050505050565b6000828152602081815260408083205490519092916112f59185916112e9916112ce918a913091899101611e39565b60405160208183030381529060405280519060200120611414565b9063ffffffff61144416565b90506001600160a01b0381161580159061138c575060015460405163430c208160e01b81526001600160a01b039091169063430c20819061133c9084908890600401611ee0565b60206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061138c9190810190611997565b6113a85760405162461bcd60e51b81526004016103589061200c565b50505060009081526020819052604090208054600101905550565b825160005b818110156108e757611402868683815181106113e057fe5b60200260200101518684815181106113f457fe5b60200260200101518661108e565b6001016113c8565b610f334282610fec565b6000816040516020016114279190611e89565b604051602081830303815290604052805190602001209050919050565b600081516041146114575750600061151b565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561149d576000935050505061151b565b8060ff16601b141580156114b557508060ff16601c14155b156114c6576000935050505061151b565b600186828585604051600081526020016040526040516114e99493929190611f58565b6020604051602081039080840390855afa15801561150b573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061156257805160ff191683800117855561158f565b8280016001018555821561158f579182015b8281111561158f578251825591602001919060010190611574565b5061159b92915061159f565b5090565b6109e291905b8082111561159b57600081556001016115a5565b805161151b816121a4565b60008083601f8401126115d657600080fd5b5081356001600160401b038111156115ed57600080fd5b60208301915083602082028301111561160557600080fd5b9250929050565b600082601f83011261161d57600080fd5b813561163061162b826120a9565b612083565b81815260209384019390925082018360005b8381101561166e57813586016116588882611734565b8452506020928301929190910190600101611642565b5050505092915050565b600082601f83011261168957600080fd5b813561169761162b826120a9565b915081818352602084019350602081019050838560208402820111156116bc57600080fd5b60005b8381101561166e57816116d28882611783565b84525060209283019291909101906001016116bf565b805161151b816121bb565b60008083601f84011261170557600080fd5b5081356001600160401b0381111561171c57600080fd5b60208301915083600182028301111561160557600080fd5b600082601f83011261174557600080fd5b813561175361162b826120c9565b9150808252602083016020830185838301111561176f57600080fd5b61177a83828461214b565b50505092915050565b803561151b816121c4565b6000602082840312156117a057600080fd5b60006117ac84846115b9565b949350505050565b6000806000604084860312156117c957600080fd5b83356001600160401b038111156117df57600080fd5b6117eb868287016115c4565b935093505060206117fe86828701611783565b9150509250925092565b60008060006060848603121561181d57600080fd5b83356001600160401b0381111561183357600080fd5b61183f8682870161160c565b93505060208401356001600160401b0381111561185b57600080fd5b6118678682870161160c565b92505060406117fe86828701611783565b6000806000806080858703121561188e57600080fd5b84356001600160401b038111156118a457600080fd5b6118b08782880161160c565b94505060208501356001600160401b038111156118cc57600080fd5b6118d88782880161160c565b93505060406118e987828801611783565b92505060608501356001600160401b0381111561190557600080fd5b61191187828801611734565b91505092959194509250565b60006020828403121561192f57600080fd5b81356001600160401b0381111561194557600080fd5b6117ac84828501611678565b6000806040838503121561196457600080fd5b82356001600160401b0381111561197a57600080fd5b61198685828601611678565b92505060206109b985828601611783565b6000602082840312156119a957600080fd5b60006117ac84846116e8565b6000806000806000606086880312156119cd57600080fd5b85356001600160401b038111156119e357600080fd5b6119ef888289016116f3565b955095505060208601356001600160401b03811115611a0d57600080fd5b611a19888289016116f3565b93509350506040611a2c88828901611783565b9150509295509295909350565b60008060008060008060006080888a031215611a5457600080fd5b87356001600160401b03811115611a6a57600080fd5b611a768a828b016116f3565b975097505060208801356001600160401b03811115611a9457600080fd5b611aa08a828b016116f3565b95509550506040611ab38a828b01611783565b93505060608801356001600160401b03811115611acf57600080fd5b611adb8a828b016116f3565b925092505092959891949750929550565b60008060408385031215611aff57600080fd5b82356001600160401b03811115611b1557600080fd5b61198685828601611734565b600060208284031215611b3357600080fd5b60006117ac8484611783565b600080600060408486031215611b5457600080fd5b6000611b608686611783565b93505060208401356001600160401b03811115611b7c57600080fd5b611b88868287016116f3565b92509250509250925092565b60008060408385031215611ba757600080fd5b60006119868585611783565b6000611bbf8383611ccb565b9392505050565b611bcf8161212a565b82525050565b611bcf81612108565b611bcf611bea82612108565b612183565b6000611bfa826120f6565b611c0481856120fa565b935083602082028501611c16856120f0565b8060005b85811015611c505784840389528151611c338582611bb3565b9450611c3e836120f0565b60209a909a0199925050600101611c1a565b5091979650505050505050565b611bcf816109e2565b611bcf611c72826109e2565b6109e2565b611bcf81612135565b6000611c8c83856120fa565b9350611c9983858461214b565b611ca283612194565b9093019392505050565b6000611cb88385612103565b9350611cc583858461214b565b50500190565b6000611cd6826120f6565b611ce081856120fa565b9350611cf0818560208601612157565b611ca281612194565b6000611d04826120f6565b611d0e8185612103565b9350611d1e818560208601612157565b9290920192915050565b6000611d35601c83612103565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000611d6e6011836120fa565b70494e56414c49445f5349474e415455524560781b815260200192915050565b6000611d9b601d836120fa565b7f5245534f4c5645525f44455441434845445f46524f4d5f444f4d41494e000000815260200192915050565b6000611dd4601f836120fa565b7f53454e4445525f49535f4e4f545f415050524f5645445f4f525f4f574e455200815260200192915050565b6000611e0d6014836120fa565b7329a2a72222a92fa4a9afa727aa2fa6a4a72a22a960611b815260200192915050565b611bcf81612124565b6000611e458286611c66565b602082019150611e558285611bde565b601482019150611e658284611c66565b506020019392505050565b60006117ac828486611cac565b6000611bbf8284611cf9565b6000611e9482611d28565b9150611ea08284611c66565b50602001919050565b6020810161151b8284611bd5565b6020810161151b8284611bc6565b60408101611ed38285611bc6565b611bbf6020830184611c5d565b60408101611ed38285611bd5565b60208082528101611bbf8184611bef565b60408082528101611f108185611bef565b905081810360208301526117ac8184611bef565b60608082528101611f358186611bef565b90508181036020830152611f498185611bef565b90506117ac6040830184611c5d565b60808101611f668287611c5d565b611f736020830186611e30565b611f806040830185611c5d565b611f8d6060830184611c5d565b95945050505050565b60608082528101611fa8818789611c80565b90508181036020830152611fbd818587611c80565b9050611fcc6040830184611c5d565b9695505050505050565b60208082528101611bbf8184611ccb565b60408082528101611ff88185611ccb565b905081810360208301526117ac8184611ccb565b6020808252810161151b81611d61565b6020808252810161151b81611d8e565b6020808252810161151b81611dc7565b6020808252810161151b81611e00565b6020810161151b8284611c5d565b604081016120688285611c5d565b611bbf6020830184611c77565b60408101611ed38285611c5d565b6040518181016001600160401b03811182821017156120a157600080fd5b604052919050565b60006001600160401b038211156120bf57600080fd5b5060209081020190565b60006001600160401b038211156120df57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061151b82612118565b151590565b6001600160a01b031690565b60ff1690565b600061151b82612140565b600061151b826109e2565b600061151b82612108565b82818337506000910152565b60005b8381101561217257818101518382015260200161215a565b83811115610aea5750506000910152565b600061151b82600061151b8261219e565b601f01601f191690565b60601b90565b6121ad81612108565b81146121b857600080fd5b50565b6121ad81612113565b6121ad816109e256fea365627a7a7231582037190f09dc189a06dcc6eeadc898d75e015f965898d0f670749fc4c926cca2ef6c6578706572696d656e74616cf564736f6c634300050c0040", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/contracts/uns/proxyReader.ts b/src/contracts/uns/proxyReader.ts index 71a69eb4..b031874d 100644 --- a/src/contracts/uns/proxyReader.ts +++ b/src/contracts/uns/proxyReader.ts @@ -1,566 +1,2 @@ -export default [ - { - inputs: [ - { - internalType: 'contract IUNSRegistry', - name: 'unsRegistry', - type: 'address', - }, - { - internalType: 'contract ICNSRegistry', - name: 'cnsRegistry', - type: 'address', - }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - inputs: [], - name: 'NAME', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'VERSION', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'balanceOf', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'childIdOf', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'exists', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string', - name: 'key', - type: 'string', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'get', - outputs: [ - { - internalType: 'string', - name: 'value', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getApproved', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'keyHash', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getByHash', - outputs: [ - { - internalType: 'string', - name: 'key', - type: 'string', - }, - { - internalType: 'string', - name: 'value', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getData', - outputs: [ - { - internalType: 'address', - name: 'resolver', - type: 'address', - }, - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256[]', - name: 'keyHashes', - type: 'uint256[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getDataByHash', - outputs: [ - { - internalType: 'address', - name: 'resolver', - type: 'address', - }, - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256[]', - name: 'keyHashes', - type: 'uint256[]', - }, - { - internalType: 'uint256[]', - name: 'tokenIds', - type: 'uint256[]', - }, - ], - name: 'getDataByHashForMany', - outputs: [ - { - internalType: 'address[]', - name: 'resolvers', - type: 'address[]', - }, - { - internalType: 'address[]', - name: 'owners', - type: 'address[]', - }, - { - internalType: 'string[][]', - name: 'keys', - type: 'string[][]', - }, - { - internalType: 'string[][]', - name: 'values', - type: 'string[][]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'uint256[]', - name: 'tokenIds', - type: 'uint256[]', - }, - ], - name: 'getDataForMany', - outputs: [ - { - internalType: 'address[]', - name: 'resolvers', - type: 'address[]', - }, - { - internalType: 'address[]', - name: 'owners', - type: 'address[]', - }, - { - internalType: 'string[][]', - name: 'values', - type: 'string[][]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getMany', - outputs: [ - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256[]', - name: 'keyHashes', - type: 'uint256[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getManyByHash', - outputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - name: 'isApprovedForAll', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'isApprovedOrOwner', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'bytes[]', - name: 'data', - type: 'bytes[]', - }, - ], - name: 'multicall', - outputs: [ - { - internalType: 'bytes[]', - name: 'results', - type: 'bytes[]', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'ownerOf', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256[]', - name: 'tokenIds', - type: 'uint256[]', - }, - ], - name: 'ownerOfForMany', - outputs: [ - { - internalType: 'address[]', - name: 'owners', - type: 'address[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'registryOf', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'resolverOf', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'bytes4', - name: 'interfaceId', - type: 'bytes4', - }, - ], - name: 'supportsInterface', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'tokenURI', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - - { - inputs: [{internalType: 'address', name: 'addr', type: 'address'}], - name: 'reverseOf', - outputs: [{internalType: 'uint256', name: '', type: 'uint256'}], - stateMutability: 'view', - type: 'function', - }, -]; +import ProxyReader from './abi/proxyReader.json'; +export default ProxyReader.abi; diff --git a/src/contracts/uns/registry.ts b/src/contracts/uns/registry.ts index cd28f355..647dc3f6 100644 --- a/src/contracts/uns/registry.ts +++ b/src/contracts/uns/registry.ts @@ -1,983 +1,2 @@ -export default [ - { - constant: true, - inputs: [ - { - internalType: 'bytes4', - name: 'interfaceId', - type: 'bytes4', - }, - ], - name: 'supportsInterface', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'controlledTransferFrom', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - { - internalType: 'bytes', - name: '_data', - type: 'bytes', - }, - ], - name: 'controlledSafeMintChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [], - name: 'name', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getApproved', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'approve', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'resolveTo', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'transferFrom', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'controlledResolveTo', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'safeTransferFrom', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'burn', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'isApprovedOrOwner', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'updateId', - type: 'uint256', - }, - ], - name: 'sync', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'bytes', - name: '_data', - type: 'bytes', - }, - ], - name: 'controlledSafeTransferFrom', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'burnChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'ownerOf', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [], - name: 'renounceController', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'balanceOf', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'safeMintChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'childOf', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - payable: false, - stateMutability: 'pure', - type: 'function', - }, - { - constant: true, - inputs: [], - name: 'symbol', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'safeTransferFromChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'transferFromChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'bool', - name: 'approved', - type: 'bool', - }, - ], - name: 'setApprovalForAll', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'account', - type: 'address', - }, - ], - name: 'addController', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'resolverOf', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'address', - name: 'account', - type: 'address', - }, - ], - name: 'isController', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'controlledMintChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'bytes', - name: '_data', - type: 'bytes', - }, - ], - name: 'safeTransferFrom', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - { - internalType: 'bytes', - name: '_data', - type: 'bytes', - }, - ], - name: 'safeTransferFromChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'tokenURI', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - { - internalType: 'bytes', - name: '_data', - type: 'bytes', - }, - ], - name: 'safeMintChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'string', - name: 'prefix', - type: 'string', - }, - ], - name: 'controlledSetTokenURIPrefix', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - internalType: 'string', - name: 'label', - type: 'string', - }, - ], - name: 'mintChild', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: false, - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'controlledBurn', - outputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'function', - }, - { - constant: true, - inputs: [ - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'address', - name: 'operator', - type: 'address', - }, - ], - name: 'isApprovedForAll', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - payable: false, - stateMutability: 'view', - type: 'function', - }, - { - constant: true, - inputs: [], - name: 'root', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - payable: false, - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [], - payable: false, - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'string', - name: 'uri', - type: 'string', - }, - ], - name: 'NewURI', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'string', - name: 'prefix', - type: 'string', - }, - ], - name: 'NewURIPrefix', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'to', - type: 'address', - }, - ], - name: 'Resolve', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'resolver', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'updateId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'Sync', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'from', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'to', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'Transfer', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'approved', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'Approval', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { - indexed: false, - internalType: 'bool', - name: 'approved', - type: 'bool', - }, - ], - name: 'ApprovalForAll', - type: 'event', - }, -]; +import Registry from './abi/registry.json'; +export default Registry.abi; diff --git a/src/contracts/uns/resolver.ts b/src/contracts/uns/resolver.ts index 5bd87b5a..ca3db415 100644 --- a/src/contracts/uns/resolver.ts +++ b/src/contracts/uns/resolver.ts @@ -1,265 +1,2 @@ -export default [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'string', - name: 'keyIndex', - type: 'string', - }, - { - indexed: false, - internalType: 'string', - name: 'key', - type: 'string', - }, - ], - name: 'NewKey', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'ResetRecords', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'string', - name: 'keyIndex', - type: 'string', - }, - { - indexed: true, - internalType: 'string', - name: 'valueIndex', - type: 'string', - }, - { - indexed: false, - internalType: 'string', - name: 'key', - type: 'string', - }, - { - indexed: false, - internalType: 'string', - name: 'value', - type: 'string', - }, - ], - name: 'Set', - type: 'event', - }, - { - inputs: [ - { - internalType: 'string', - name: 'key', - type: 'string', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'get', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'keyHash', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getByHash', - outputs: [ - { - internalType: 'string', - name: 'key', - type: 'string', - }, - { - internalType: 'string', - name: 'value', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getMany', - outputs: [ - { - internalType: 'string[]', - name: '', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256[]', - name: 'keyHashes', - type: 'uint256[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'getManyByHash', - outputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'reconfigure', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'reset', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string', - name: 'key', - type: 'string', - }, - { - internalType: 'string', - name: 'value', - type: 'string', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'set', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'string[]', - name: 'keys', - type: 'string[]', - }, - { - internalType: 'string[]', - name: 'values', - type: 'string[]', - }, - { - internalType: 'uint256', - name: 'tokenId', - type: 'uint256', - }, - ], - name: 'setMany', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, -]; +import Resolver from './abi/resolver.json'; +export default Resolver.abi; diff --git a/src/tests/Resolution.test.ts b/src/tests/Resolution.test.ts index 811c7706..65b02bca 100644 --- a/src/tests/Resolution.test.ts +++ b/src/tests/Resolution.test.ts @@ -58,7 +58,7 @@ beforeEach(() => { sourceConfig: { uns: { locations: { - Layer1: {url: protocolLink(), network: 'rinkeby'}, + Layer1: {url: protocolLink(), network: 'goerli'}, Layer2: { url: protocolLink(ProviderProtocol.http, 'UNSL2'), network: 'polygon-mumbai', @@ -76,8 +76,7 @@ describe('Resolution', () => { describe('.Basic setup', () => { it('should work with autonetwork url configuration', async () => { const polygonUrl = protocolLink(ProviderProtocol.http, 'UNSL2'); - const rinkebyUrl = protocolLink(); - const goerliUrl = rinkebyUrl.replace('rinkeby', 'goerli'); + const rinkebyUrl = protocolLink().replace('goerli', 'rinkeby'); // use rinkeby as custom network here // mocking getNetworkConfigs because no access to inner provider.request const UnsGetNetworkOriginal = Uns.autoNetwork; if (!isLive()) { @@ -238,7 +237,7 @@ describe('Resolution', () => { it('should work with autonetwork provider configuration', async () => { const provider = new FetchProvider( 'UDAPI', - protocolLink().replace('rinkeby', 'mainnet'), + protocolLink().replace('goerli', 'mainnet'), ); const polygonUrl = protocolLink(ProviderProtocol.http, 'UNSL2'); const polygonProvider = new FetchProvider(UnsLocation.Layer2, polygonUrl); @@ -298,7 +297,7 @@ describe('Resolution', () => { }); it('should fail because of unsupported test network for uns', async () => { - const blockchainUrl = protocolLink().replace('rinkeby', 'ropsten'); + const blockchainUrl = protocolLink().replace('goerli', 'ropsten'); const polygonUrl = protocolLink(ProviderProtocol.http, 'UNSL2'); const mockedProvider = new FetchProvider( NamingServiceName.UNS, @@ -511,7 +510,7 @@ describe('Resolution', () => { locations: { Layer1: { url: protocolLink(ProviderProtocol.http, 'UNSL1'), - network: 'rinkeby', + network: 'goerli', }, Layer2: { url: protocolLink(ProviderProtocol.http, 'UNSL2'), @@ -646,7 +645,7 @@ describe('Resolution', () => { }); describe('.Crypto', () => { - it(`domains "brad.crypto" and "Brad.crypto" should return the same results`, async () => { + it(`domains "reseller-test-udtesting-459239285.crypto" and "RESELLER-test-UDTESTING-459239285.crypto" should return the same results`, async () => { const eyes = mockAsyncMethods(uns, { get: { resolver: '0xBD5F5ec7ed5f19b53726344540296C02584A5237', @@ -656,8 +655,14 @@ describe('Resolution', () => { }, }, }); - const capital = await resolution.addr('Brad.crypto', 'eth'); - const lower = await resolution.addr('brad.crypto', 'eth'); + const capital = await resolution.addr( + 'RESELLER-test-UDTESTING-459239285.crypto', + 'eth', + ); + const lower = await resolution.addr( + 'reseller-test-udtesting-459239285.crypto', + 'eth', + ); expectSpyToBeCalled(eyes, 2); expect(capital).toStrictEqual(lower); }); @@ -763,7 +768,7 @@ describe('Resolution', () => { uns: { locations: { Layer1: { - network: 'rinkeby', + network: 'goerli', provider: provider as unknown as Web3Version1Provider, }, Layer2: { @@ -777,7 +782,10 @@ describe('Resolution', () => { mockAsyncMethod(uns.unsl2.readerContract, 'call', () => Promise.resolve([NullAddress, NullAddress, {}]), ); - const ethAddress = await resolution.addr('brad.crypto', 'ETH'); + const ethAddress = await resolution.addr( + 'reseller-test-udtesting-459239285.crypto', + 'ETH', + ); // expect each mock to be called at least once. expectSpyToBeCalled([eye]); @@ -805,7 +813,7 @@ describe('Resolution', () => { uns: { locations: { Layer1: { - network: 'rinkeby', + network: 'goerli', provider: provider as unknown as Web3Version1Provider, }, Layer2: { @@ -828,7 +836,7 @@ describe('Resolution', () => { it('should work for ethers jsonrpc provider', async () => { const provider = new JsonRpcProvider( protocolLink(ProviderProtocol.http), - 'rinkeby', + 'goerli', ); const polygonProvider = new JsonRpcProvider( protocolLink(ProviderProtocol.http, 'UNSL2'), @@ -837,7 +845,7 @@ describe('Resolution', () => { const resolution = Resolution.fromEthersProvider({ uns: { locations: { - Layer1: {network: 'rinkeby', provider}, + Layer1: {network: 'goerli', provider}, Layer2: {network: 'polygon-mumbai', provider: polygonProvider}, }, }, @@ -849,14 +857,17 @@ describe('Resolution', () => { const eye = mockAsyncMethod(provider, 'call', (params) => Promise.resolve(caseMock(params, RpcProviderTestCases)), ); - const ethAddress = await resolution.addr('brad.crypto', 'ETH'); + const ethAddress = await resolution.addr( + 'reseller-test-udtesting-459239285.crypto', + 'ETH', + ); expectSpyToBeCalled([eye]); expect(ethAddress).toBe('0x8aaD44321A86b170879d7A244c1e8d360c99DdA8'); }); it('should work with ethers default provider', async () => { const provider = new InfuraProvider( - 'rinkeby', + 'goerli', '213fff28936343858ca9c5115eff1419', ); const polygonProvider = new InfuraProvider( @@ -870,7 +881,7 @@ describe('Resolution', () => { const resolution = Resolution.fromEthersProvider({ uns: { locations: { - Layer1: {network: 'rinkeby', provider}, + Layer1: {network: 'goerli', provider}, Layer2: {network: 'polygon-mumbai', provider: polygonProvider}, }, }, @@ -879,7 +890,10 @@ describe('Resolution', () => { mockAsyncMethod(uns.unsl2.readerContract, 'call', (params) => Promise.resolve([NullAddress, NullAddress, {}]), ); - const ethAddress = await resolution.addr('brad.crypto', 'eth'); + const ethAddress = await resolution.addr( + 'reseller-test-udtesting-459239285.crypto', + 'eth', + ); expectSpyToBeCalled([eye]); expect(ethAddress).toBe('0x8aaD44321A86b170879d7A244c1e8d360c99DdA8'); }); @@ -1001,10 +1015,6 @@ describe('Resolution', () => { '0x1C42088b82f6Fa5fB883A14240C4E066dDFf1517', 'crypto.LTC.address': 'MTnTNwKikiMi97Teq8XQRabL9SZ4HjnKNB', 'crypto.ADA.address': '', - 'ipfs.html.value': - 'QmYqX8D8SkaF5YcpaWMyi5xM43UEteFiSNKYsjLcdvCWud', - 'ipfs.redirect_domain.value': - 'https://abbfe6z95qov3d40hf6j30g7auo7afhp.mypinata.cloud/ipfs/QmYqX8D8SkaF5YcpaWMyi5xM43UEteFiSNKYsjLcdvCWud', }); }); }); @@ -1024,7 +1034,7 @@ describe('Resolution', () => { network: 'custom', proxyReaderAddress: '0x332a8191905fa8e6eea7350b5799f225b8ed30a9', - url: 'https://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', + url: 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }, }, }, @@ -1215,32 +1225,32 @@ describe('Resolution', () => { it('should return cns mainnet registry address #1', async () => { const spies = mockAsyncMethods(uns, { - registryAddress: UnsConfig.networks[4].contracts.CNSRegistry.address, + registryAddress: UnsConfig.networks[5].contracts.CNSRegistry.address, }); const registryAddress = await resolution.registryAddress( 'udtestdev-crewe.crypto', ); expectSpyToBeCalled(spies); expect(registryAddress).toBe( - UnsConfig.networks[4].contracts.CNSRegistry.address, + UnsConfig.networks[5].contracts.CNSRegistry.address, ); }); it('should return uns mainnet registry address', async () => { const spies = mockAsyncMethods(uns, { - registryAddress: UnsConfig.networks[4].contracts.UNSRegistry.address, + registryAddress: UnsConfig.networks[5].contracts.UNSRegistry.address, }); const registryAddress = await resolution.registryAddress( - 'udtestdev-check.wallet', + 'uns-devtest-265f8f.wallet', ); expectSpyToBeCalled(spies); expect(registryAddress).toBe( - UnsConfig.networks[4].contracts.UNSRegistry.address, + UnsConfig.networks[5].contracts.UNSRegistry.address, ); }); it('should return uns l2 mainnet registry address if domain exists on both', async () => { const spies = mockAsyncMethods(uns.unsl1, { - registryAddress: UnsConfig.networks[4].contracts.UNSRegistry.address, + registryAddress: UnsConfig.networks[5].contracts.UNSRegistry.address, }); const spies2 = mockAsyncMethods(uns.unsl2, { registryAddress: @@ -1579,10 +1589,10 @@ describe('Resolution', () => { // https://github.com/rust-ethereum/ethabi // // # getDataForMany return data - // ethabi encode params -v 'address[]' '[7fb83000b8ed59d3ead22f0d584df3a85fbc0086,95ae1515367aa64c462c71e87157771165b1287a,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000]' -v 'address[]' '[0e43f36e4b986dfbe1a75cacfa60ca2bd44ae962,499dd6d875787869670900a2130223d85d4f6aa7,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000]' -v 'string[][]' '[[],[],[],[],[],[],[]]' + // ethabi encode params -v 'address[]' '[070e83fced225184e67c86302493fffcdb953f71,95ae1515367aa64c462c71e87157771165b1287a,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000]' -v 'address[]' '[0e43f36e4b986dfbe1a75cacfa60ca2bd44ae962,499dd6d875787869670900a2130223d85d4f6aa7,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,0000000000000000000000000000000000000000]' -v 'string[][]' '[[],[],[],[],[],[],[]]' // # registryOf return data - // ethabi encode params -v address 7fb83000b8ed59d3ead22f0d584df3a85fbc0086 - // ethabi encode params -v address aad76bea7cfec82927239415bb18d2e93518ecbb + // ethabi encode params -v address 070e83fced225184e67c86302493fffcdb953f71 + // ethabi encode params -v address 801452cfac27e79a11c6b185986fde09e8637589 // ethabi encode params -v address 0000000000000000000000000000000000000000 // ethabi encode params -v address 0000000000000000000000000000000000000000 // ethabi encode params -v address 0000000000000000000000000000000000000000 @@ -1592,7 +1602,7 @@ describe('Resolution', () => { // ethabi encode params -v 'bytes[]' '[...]' # put the output of the commands above into the array const mockValuesL1 = { callEth: - '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000005e00000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000000070000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc008600000000000000000000000095ae1515367aa64c462c71e87157771165b1287a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000e43f36e4b986dfbe1a75cacfa60ca2bd44ae962000000000000000000000000499dd6d875787869670900a2130223d85d4f6aa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc00860000000000000000000000000000000000000000000000000000000000000020000000000000000000000000aad76bea7cfec82927239415bb18d2e93518ecbb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000', + '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000005e00000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000007000000000000000000000000070e83fced225184e67c86302493fffcdb953f7100000000000000000000000095ae1515367aa64c462c71e87157771165b1287a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000e43f36e4b986dfbe1a75cacfa60ca2bd44ae962000000000000000000000000499dd6d875787869670900a2130223d85d4f6aa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000070e83fced225184e67c86302493fffcdb953f710000000000000000000000000000000000000000000000000000000000000020000000000000000000000000801452cfac27e79a11c6b185986fde09e86375890000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000', }; // # getDataForMany return data // ethabi encode params -v 'address[]' '[0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,2a93c52e7b6e7054870758e15a1446e769edfb93,2a93c52e7b6e7054870758e15a1446e769edfb93,0000000000000000000000000000000000000000,2a93c52e7b6e7054870758e15a1446e769edfb93,0000000000000000000000000000000000000000]' -v 'address[]' '[0000000000000000000000000000000000000000,0000000000000000000000000000000000000000,499dd6d875787869670900a2130223d85d4f6aa7,499dd6d875787869670900a2130223d85d4f6aa7,0000000000000000000000000000000000000000,499dd6d875787869670900a2130223d85d4f6aa7,0000000000000000000000000000000000000000]' -v 'string[][]' '[[],[],[],[],[],[],[]]' @@ -1620,7 +1630,7 @@ describe('Resolution', () => { ]); const location = await resolution.locations([ - 'udtestdev-check.wallet', + 'reseller-test-udtesting-459239285.crypto', 'brad.crypto', 'udtestdev-test-l2-domain-784391.wallet', 'udtestdev-test-l1-and-l2-ownership.wallet', @@ -1628,23 +1638,23 @@ describe('Resolution', () => { 'uns-devtest-testnet-domain.zil', 'zns-devtest-testnet-domain.zil', ]); - expect(location['udtestdev-check.wallet']).toEqual({ - registryAddress: '0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086', - resolverAddress: '0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086', - networkId: 4, + expect(location['reseller-test-udtesting-459239285.crypto']).toEqual({ + registryAddress: '0x070e83FCed225184E67c86302493ffFCDB953f71', + resolverAddress: '0x070e83FCed225184E67c86302493ffFCDB953f71', + networkId: 5, blockchain: BlockchainType.ETH, ownerAddress: '0x0e43F36e4B986dfbE1a75cacfA60cA2bD44Ae962', blockchainProviderUrl: - 'https://eth-rinkeby.alchemyapi.io/v2/ZDERxOLIj120dh2-Io2Q9RTh9RfWEssT', + 'https://eth-goerli.alchemyapi.io/v2/J-ff_OlmWzw41ocqwpkRccHdfqSZML4q', }); expect(location['brad.crypto']).toEqual({ - registryAddress: '0xAad76bea7CFEc82927239415BB18D2e93518ecBB', + registryAddress: '0x801452cFAC27e79a11c6b185986fdE09e8637589', resolverAddress: '0x95AE1515367aa64C462c71e87157771165B1287A', - networkId: 4, + networkId: 5, blockchain: BlockchainType.ETH, ownerAddress: '0x499dD6D875787869670900a2130223D85d4F6Aa7', blockchainProviderUrl: - 'https://eth-rinkeby.alchemyapi.io/v2/ZDERxOLIj120dh2-Io2Q9RTh9RfWEssT', + 'https://eth-goerli.alchemyapi.io/v2/J-ff_OlmWzw41ocqwpkRccHdfqSZML4q', }); expect(location['udtestdev-test-l2-domain-784391.wallet']).toEqual({ registryAddress: '0x2a93C52E7B6E7054870758e15A1446E769EdfB93', @@ -1653,7 +1663,7 @@ describe('Resolution', () => { blockchain: BlockchainType.MATIC, ownerAddress: '0x499dD6D875787869670900a2130223D85d4F6Aa7', blockchainProviderUrl: - 'https://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', + 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }); expect(location['udtestdev-test-l1-and-l2-ownership.wallet']).toEqual({ registryAddress: '0x2a93C52E7B6E7054870758e15A1446E769EdfB93', @@ -1662,7 +1672,7 @@ describe('Resolution', () => { blockchain: BlockchainType.MATIC, ownerAddress: '0x499dD6D875787869670900a2130223D85d4F6Aa7', blockchainProviderUrl: - 'https://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', + 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }); expect( location['testing-domain-doesnt-exist-12345abc.blockchain'], @@ -1675,7 +1685,7 @@ describe('Resolution', () => { blockchain: BlockchainType.MATIC, ownerAddress: '0x499dD6D875787869670900a2130223D85d4F6Aa7', blockchainProviderUrl: - 'https://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', + 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }); expect(location['zns-devtest-testnet-domain.zil']).toEqual({ registryAddress: 'zil1hyj6m5w4atcn7s806s69r0uh5g4t84e8gp6nps', diff --git a/src/tests/Uns.test.ts b/src/tests/Uns.test.ts index 8e33616e..efd7d5fb 100644 --- a/src/tests/Uns.test.ts +++ b/src/tests/Uns.test.ts @@ -45,7 +45,7 @@ beforeEach(async () => { locations: { Layer1: { url: protocolLink(ProviderProtocol.http, 'UNSL1'), - network: 'rinkeby', + network: 'goerli', }, Layer2: { url: protocolLink(ProviderProtocol.http, 'UNSL2'), @@ -62,7 +62,7 @@ beforeEach(async () => { describe('UNS', () => { it('should define the default uns contract', () => { expect(uns).toBeDefined(); - expect(uns.unsl1.network).toBe('rinkeby'); + expect(uns.unsl1.network).toBe('goerli'); expect(uns.unsl1.url).toBe(protocolLink()); expect(uns.unsl2.network).toBe('polygon-mumbai'); expect(uns.unsl2.url).toBe(protocolLink(ProviderProtocol.http, 'UNSL2')); @@ -1155,7 +1155,7 @@ describe('UNS', () => { 'udtestdev-265f8f.crypto', ); expect(registryAddress).toBe( - UnsConfig.networks[4].contracts.CNSRegistry.address, + UnsConfig.networks[5].contracts.CNSRegistry.address, ); }); @@ -1168,7 +1168,7 @@ describe('UNS', () => { mockAPICalls('uns_registry_address_tests', protocolLink()); const registryAddress = await uns.registryAddress('some-domain.888'); expect(registryAddress).toBe( - UnsConfig.networks[4].contracts.UNSRegistry.address, + UnsConfig.networks[5].contracts.UNSRegistry.address, ); }); @@ -1472,7 +1472,7 @@ describe('UNS', () => { sourceConfig: { uns: { locations: { - Layer1: {url, provider, network: 'rinkeby'}, + Layer1: {url, provider, network: 'goerli'}, Layer2: {network: 'polygon-mumbai', provider: polygonProvider}, }, }, diff --git a/src/tests/UnsInternal.test.ts b/src/tests/UnsInternal.test.ts index 9524178a..e9de396c 100644 --- a/src/tests/UnsInternal.test.ts +++ b/src/tests/UnsInternal.test.ts @@ -28,7 +28,7 @@ beforeEach(async () => { UnsLocation.Layer1, { url: protocolLink(ProviderProtocol.http, 'UNSL1'), - network: 'rinkeby', + network: 'goerli', }, BlockchainType.ETH, ); @@ -334,24 +334,15 @@ describe('UnsInternal', () => { protocolLink(ProviderProtocol.http, 'UNSL1'), ); const location = await unsInternalL1.locations([ - 'udtestdev-check.wallet', - 'brad.crypto', + 'reseller-test-udtesting-459239285.crypto', 'testing-domain-doesnt-exist-12345abc.blockchain', ]); - expect(location['udtestdev-check.wallet']).toEqual({ - registryAddress: '0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086', - resolverAddress: '0x7fb83000B8eD59D3eAD22f0D584Df3a85fBC0086', - networkId: 4, + expect(location['reseller-test-udtesting-459239285.crypto']).toEqual({ + registryAddress: '0x801452cFAC27e79a11c6b185986fdE09e8637589', + resolverAddress: '0x0555344A5F440Bd1d8cb6B42db46c5e5D4070437', + networkId: 5, blockchain: BlockchainType.ETH, - ownerAddress: '0x0e43F36e4B986dfbE1a75cacfA60cA2bD44Ae962', - blockchainProviderUrl: protocolLink(ProviderProtocol.http, 'UNSL1'), - }); - expect(location['brad.crypto']).toEqual({ - registryAddress: '0xAad76bea7CFEc82927239415BB18D2e93518ecBB', - resolverAddress: '0x95AE1515367aa64C462c71e87157771165B1287A', - networkId: 4, - blockchain: BlockchainType.ETH, - ownerAddress: '0x499dD6D875787869670900a2130223D85d4F6Aa7', + ownerAddress: '0xe586d5Bf4d7779498648DF67b73c88a712E4359d', blockchainProviderUrl: protocolLink(ProviderProtocol.http, 'UNSL1'), }); expect( diff --git a/src/tests/helpers.ts b/src/tests/helpers.ts index e6f7d2c4..57ee85f2 100644 --- a/src/tests/helpers.ts +++ b/src/tests/helpers.ts @@ -7,21 +7,21 @@ import ConfigurationError, { ConfigurationErrorCode, } from '../errors/configurationError'; import DnsRecordsError, {DnsRecordsErrorCode} from '../errors/dnsRecordsError'; -import {NamingServiceName} from '../types/publicTypes'; -export const MainnetUrl = 'https://eth-rinkeby.alchemyapi.io'; +export const MainnetUrl = 'https://eth-goerli.alchemyapi.io'; export const ZilliqaUrl = 'https://api.zilliqa.com'; export const DefaultUrl = 'https://unstoppabledomains.com/api/v1'; export const CryptoDomainWithTwitterVerification = 'reseller-test-udtesting-052523593694.crypto'; export const CryptoDomainWithUsdtMultiChainRecords = - 'test-usdt-and-dns-records.crypto'; + 'reseller-test-udtesting-459239285.crypto'; export const ZilDomainWithUsdtMultiChainRecords = 'reseller-test-udtesting-422508414817.zil'; export const CryptoDomainLayerOneWithNoResolver = 'udtestdev-test-l1-domain-no-resolver.crypto'; -export const CryptoDomainWithAllRecords = 'test-usdt-and-dns-records.crypto'; +export const CryptoDomainWithAllRecords = + 'uns-devtest-crypto-domain-all-records.crypto'; export const ZilDomainWithAllRecords = 'test-usdt-and-dns-records.zil'; export const ZilDomainWithNoResolver = 'udtestdev-test-l1-domain-no-resolver.zil'; @@ -32,7 +32,7 @@ export const WalletDomainLayerTwoWithNoRecords = export const WalletDomainOnBothLayers = 'udtestdev-test-l1-and-l2-ownership.wallet'; export const CryptoDomainWithoutGunDbRecords = - 'test-usdt-and-dns-records.crypto'; + 'reseller-test-udtesting-459239285.crypto'; try { // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -189,13 +189,13 @@ export function protocolLink( if (namingService === 'UNSL2') { return providerProtocol === ProviderProtocol.wss - ? `wss://eth-rinkeby.alchemyapi.io/v2/${secret}` - : `https://eth-rinkeby.alchemyapi.io/v2/${secret}`; + ? `wss://eth-goerli.alchemyapi.io/v2/${secret}` + : `https://eth-goerli.alchemyapi.io/v2/${secret}`; } return providerProtocol === ProviderProtocol.wss - ? `wss://eth-rinkeby.alchemyapi.io/v2/${secret}` - : `https://eth-rinkeby.alchemyapi.io/v2/${secret}`; + ? `wss://eth-goerli.alchemyapi.io/v2/${secret}` + : `https://eth-goerli.alchemyapi.io/v2/${secret}`; } export enum ProviderProtocol { @@ -218,11 +218,11 @@ export const caseMock = ( const ethereumDefaultProviders = { UNSL1: { - http: 'https://eth-rinkeby.alchemyapi.io/v2/ZDERxOLIj120dh2-Io2Q9RTh9RfWEssT', - wss: 'wss://eth-rinkeby.alchemyapi.io/v2/ZDERxOLIj120dh2-Io2Q9RTh9RfWEssT', + http: 'https://eth-goerli.alchemyapi.io/v2/J-ff_OlmWzw41ocqwpkRccHdfqSZML4q', + wss: 'wss://eth-goerli.alchemyapi.io/v2/J-ff_OlmWzw41ocqwpkRccHdfqSZML4q', }, UNSL2: { - http: 'https://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', - wss: 'wss://polygon-mumbai.g.alchemy.com/v2/c4bb906ed6904c42b19c95825fe55f39', + http: 'https://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', + wss: 'wss://polygon-mumbai.g.alchemy.com/v2/ymbY17ik_HyGfXnPWxBAGhuZE7MwtErX', }, }; diff --git a/src/tests/providerMockData.ts b/src/tests/providerMockData.ts index ee5dd6cc..464e2e23 100644 --- a/src/tests/providerMockData.ts +++ b/src/tests/providerMockData.ts @@ -1,8 +1,8 @@ import {RpcProviderTestCase} from '../types'; import UnsConfig from '../config/uns-config.json'; const ProxyReaderAddress = - UnsConfig.networks[4].contracts.ProxyReader.address.toLowerCase(); -const ResolverAddress = UnsConfig.networks[4].contracts.Resolver.address; + UnsConfig.networks[5].contracts.ProxyReader.address.toLowerCase(); +const ResolverAddress = UnsConfig.networks[5].contracts.Resolver.address; export const RpcProviderTestCases: RpcProviderTestCase = [ { @@ -322,7 +322,7 @@ export const RpcProviderTestCases: RpcProviderTestCase = [ { name: 'should get standard keys from legacy resolver > Get all standard records from legacy provider', request: { - data: '0x91015f6b00000000000000000000000000000000000000000000000000000000000000408afb596177f2d6b5c08aeda27ee030e76c3d5b4fab69de453beab1f1195eb73100000000000000000000000000000000000000000000000000000000000001e10000000000000000000000000000000000000000000000000000000000003c200000000000000000000000000000000000000000000000000000000000003c600000000000000000000000000000000000000000000000000000000000003ca00000000000000000000000000000000000000000000000000000000000003ce00000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003d600000000000000000000000000000000000000000000000000000000000003da00000000000000000000000000000000000000000000000000000000000003de00000000000000000000000000000000000000000000000000000000000003e200000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003ea00000000000000000000000000000000000000000000000000000000000003ee00000000000000000000000000000000000000000000000000000000000003f200000000000000000000000000000000000000000000000000000000000003f600000000000000000000000000000000000000000000000000000000000003fa00000000000000000000000000000000000000000000000000000000000003fe00000000000000000000000000000000000000000000000000000000000004020000000000000000000000000000000000000000000000000000000000000406000000000000000000000000000000000000000000000000000000000000040a000000000000000000000000000000000000000000000000000000000000040e00000000000000000000000000000000000000000000000000000000000004120000000000000000000000000000000000000000000000000000000000000416000000000000000000000000000000000000000000000000000000000000041a000000000000000000000000000000000000000000000000000000000000041e00000000000000000000000000000000000000000000000000000000000004220000000000000000000000000000000000000000000000000000000000000426000000000000000000000000000000000000000000000000000000000000042a000000000000000000000000000000000000000000000000000000000000042e00000000000000000000000000000000000000000000000000000000000004320000000000000000000000000000000000000000000000000000000000000436000000000000000000000000000000000000000000000000000000000000043a000000000000000000000000000000000000000000000000000000000000043e00000000000000000000000000000000000000000000000000000000000004420000000000000000000000000000000000000000000000000000000000000446000000000000000000000000000000000000000000000000000000000000044a000000000000000000000000000000000000000000000000000000000000044e00000000000000000000000000000000000000000000000000000000000004520000000000000000000000000000000000000000000000000000000000000456000000000000000000000000000000000000000000000000000000000000045a000000000000000000000000000000000000000000000000000000000000045e00000000000000000000000000000000000000000000000000000000000004620000000000000000000000000000000000000000000000000000000000000466000000000000000000000000000000000000000000000000000000000000046a000000000000000000000000000000000000000000000000000000000000046e00000000000000000000000000000000000000000000000000000000000004720000000000000000000000000000000000000000000000000000000000000476000000000000000000000000000000000000000000000000000000000000047a000000000000000000000000000000000000000000000000000000000000047e00000000000000000000000000000000000000000000000000000000000004820000000000000000000000000000000000000000000000000000000000000486000000000000000000000000000000000000000000000000000000000000048a000000000000000000000000000000000000000000000000000000000000048e00000000000000000000000000000000000000000000000000000000000004920000000000000000000000000000000000000000000000000000000000000496000000000000000000000000000000000000000000000000000000000000049a000000000000000000000000000000000000000000000000000000000000049e00000000000000000000000000000000000000000000000000000000000004a200000000000000000000000000000000000000000000000000000000000004a600000000000000000000000000000000000000000000000000000000000004aa00000000000000000000000000000000000000000000000000000000000004ae00000000000000000000000000000000000000000000000000000000000004b200000000000000000000000000000000000000000000000000000000000004b600000000000000000000000000000000000000000000000000000000000004ba00000000000000000000000000000000000000000000000000000000000004be00000000000000000000000000000000000000000000000000000000000004c200000000000000000000000000000000000000000000000000000000000004c600000000000000000000000000000000000000000000000000000000000004ca00000000000000000000000000000000000000000000000000000000000004ce00000000000000000000000000000000000000000000000000000000000004d200000000000000000000000000000000000000000000000000000000000004d600000000000000000000000000000000000000000000000000000000000004da00000000000000000000000000000000000000000000000000000000000004de00000000000000000000000000000000000000000000000000000000000004e200000000000000000000000000000000000000000000000000000000000004e600000000000000000000000000000000000000000000000000000000000004ea00000000000000000000000000000000000000000000000000000000000004ee00000000000000000000000000000000000000000000000000000000000004f200000000000000000000000000000000000000000000000000000000000004f600000000000000000000000000000000000000000000000000000000000004fa00000000000000000000000000000000000000000000000000000000000004fe00000000000000000000000000000000000000000000000000000000000005020000000000000000000000000000000000000000000000000000000000000506000000000000000000000000000000000000000000000000000000000000050a000000000000000000000000000000000000000000000000000000000000050e00000000000000000000000000000000000000000000000000000000000005120000000000000000000000000000000000000000000000000000000000000516000000000000000000000000000000000000000000000000000000000000051a000000000000000000000000000000000000000000000000000000000000051e00000000000000000000000000000000000000000000000000000000000005220000000000000000000000000000000000000000000000000000000000000528000000000000000000000000000000000000000000000000000000000000052c000000000000000000000000000000000000000000000000000000000000053000000000000000000000000000000000000000000000000000000000000005340000000000000000000000000000000000000000000000000000000000000538000000000000000000000000000000000000000000000000000000000000053c00000000000000000000000000000000000000000000000000000000000005400000000000000000000000000000000000000000000000000000000000000546000000000000000000000000000000000000000000000000000000000000054a00000000000000000000000000000000000000000000000000000000000005500000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000055c000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000005640000000000000000000000000000000000000000000000000000000000000568000000000000000000000000000000000000000000000000000000000000056c000000000000000000000000000000000000000000000000000000000000057000000000000000000000000000000000000000000000000000000000000005740000000000000000000000000000000000000000000000000000000000000578000000000000000000000000000000000000000000000000000000000000057c000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000005840000000000000000000000000000000000000000000000000000000000000588000000000000000000000000000000000000000000000000000000000000058c00000000000000000000000000000000000000000000000000000000000005900000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000059a000000000000000000000000000000000000000000000000000000000000059e00000000000000000000000000000000000000000000000000000000000005a200000000000000000000000000000000000000000000000000000000000005a600000000000000000000000000000000000000000000000000000000000005aa00000000000000000000000000000000000000000000000000000000000005ae00000000000000000000000000000000000000000000000000000000000005b200000000000000000000000000000000000000000000000000000000000005b600000000000000000000000000000000000000000000000000000000000005ba00000000000000000000000000000000000000000000000000000000000005be00000000000000000000000000000000000000000000000000000000000005c200000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005ca00000000000000000000000000000000000000000000000000000000000005ce00000000000000000000000000000000000000000000000000000000000005d200000000000000000000000000000000000000000000000000000000000005d600000000000000000000000000000000000000000000000000000000000005da00000000000000000000000000000000000000000000000000000000000005de00000000000000000000000000000000000000000000000000000000000005e200000000000000000000000000000000000000000000000000000000000005e600000000000000000000000000000000000000000000000000000000000005ea00000000000000000000000000000000000000000000000000000000000005ee00000000000000000000000000000000000000000000000000000000000005f200000000000000000000000000000000000000000000000000000000000005f600000000000000000000000000000000000000000000000000000000000005fa00000000000000000000000000000000000000000000000000000000000005fe00000000000000000000000000000000000000000000000000000000000006020000000000000000000000000000000000000000000000000000000000000606000000000000000000000000000000000000000000000000000000000000060a000000000000000000000000000000000000000000000000000000000000060e00000000000000000000000000000000000000000000000000000000000006120000000000000000000000000000000000000000000000000000000000000616000000000000000000000000000000000000000000000000000000000000061a000000000000000000000000000000000000000000000000000000000000061e00000000000000000000000000000000000000000000000000000000000006220000000000000000000000000000000000000000000000000000000000000626000000000000000000000000000000000000000000000000000000000000062a000000000000000000000000000000000000000000000000000000000000062e00000000000000000000000000000000000000000000000000000000000006320000000000000000000000000000000000000000000000000000000000000636000000000000000000000000000000000000000000000000000000000000063a000000000000000000000000000000000000000000000000000000000000063e00000000000000000000000000000000000000000000000000000000000006420000000000000000000000000000000000000000000000000000000000000646000000000000000000000000000000000000000000000000000000000000064a000000000000000000000000000000000000000000000000000000000000064e00000000000000000000000000000000000000000000000000000000000006520000000000000000000000000000000000000000000000000000000000000656000000000000000000000000000000000000000000000000000000000000065a000000000000000000000000000000000000000000000000000000000000065e00000000000000000000000000000000000000000000000000000000000006620000000000000000000000000000000000000000000000000000000000000666000000000000000000000000000000000000000000000000000000000000066a000000000000000000000000000000000000000000000000000000000000066e00000000000000000000000000000000000000000000000000000000000006720000000000000000000000000000000000000000000000000000000000000676000000000000000000000000000000000000000000000000000000000000067a000000000000000000000000000000000000000000000000000000000000067e00000000000000000000000000000000000000000000000000000000000006820000000000000000000000000000000000000000000000000000000000000686000000000000000000000000000000000000000000000000000000000000068a000000000000000000000000000000000000000000000000000000000000068e00000000000000000000000000000000000000000000000000000000000006920000000000000000000000000000000000000000000000000000000000000696000000000000000000000000000000000000000000000000000000000000069a000000000000000000000000000000000000000000000000000000000000069e00000000000000000000000000000000000000000000000000000000000006a200000000000000000000000000000000000000000000000000000000000006a600000000000000000000000000000000000000000000000000000000000006aa00000000000000000000000000000000000000000000000000000000000006ae00000000000000000000000000000000000000000000000000000000000006b200000000000000000000000000000000000000000000000000000000000006b600000000000000000000000000000000000000000000000000000000000006ba00000000000000000000000000000000000000000000000000000000000006be00000000000000000000000000000000000000000000000000000000000006c200000000000000000000000000000000000000000000000000000000000006c600000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006ce00000000000000000000000000000000000000000000000000000000000006d200000000000000000000000000000000000000000000000000000000000006d600000000000000000000000000000000000000000000000000000000000006da00000000000000000000000000000000000000000000000000000000000006de00000000000000000000000000000000000000000000000000000000000006e200000000000000000000000000000000000000000000000000000000000006e600000000000000000000000000000000000000000000000000000000000006ea00000000000000000000000000000000000000000000000000000000000006ee00000000000000000000000000000000000000000000000000000000000006f200000000000000000000000000000000000000000000000000000000000006f600000000000000000000000000000000000000000000000000000000000006fa00000000000000000000000000000000000000000000000000000000000006fe00000000000000000000000000000000000000000000000000000000000007020000000000000000000000000000000000000000000000000000000000000706000000000000000000000000000000000000000000000000000000000000070a000000000000000000000000000000000000000000000000000000000000070e00000000000000000000000000000000000000000000000000000000000007120000000000000000000000000000000000000000000000000000000000000716000000000000000000000000000000000000000000000000000000000000071a000000000000000000000000000000000000000000000000000000000000071e00000000000000000000000000000000000000000000000000000000000007220000000000000000000000000000000000000000000000000000000000000726000000000000000000000000000000000000000000000000000000000000072a000000000000000000000000000000000000000000000000000000000000072e00000000000000000000000000000000000000000000000000000000000007320000000000000000000000000000000000000000000000000000000000000738000000000000000000000000000000000000000000000000000000000000073e00000000000000000000000000000000000000000000000000000000000007440000000000000000000000000000000000000000000000000000000000000748000000000000000000000000000000000000000000000000000000000000074c00000000000000000000000000000000000000000000000000000000000007520000000000000000000000000000000000000000000000000000000000000758000000000000000000000000000000000000000000000000000000000000075e00000000000000000000000000000000000000000000000000000000000007640000000000000000000000000000000000000000000000000000000000000768000000000000000000000000000000000000000000000000000000000000076c000000000000000000000000000000000000000000000000000000000000077000000000000000000000000000000000000000000000000000000000000007740000000000000000000000000000000000000000000000000000000000000778000000000000000000000000000000000000000000000000000000000000077e0000000000000000000000000000000000000000000000000000000000000784000000000000000000000000000000000000000000000000000000000000078a00000000000000000000000000000000000000000000000000000000000007900000000000000000000000000000000000000000000000000000000000000796000000000000000000000000000000000000000000000000000000000000079c00000000000000000000000000000000000000000000000000000000000007a200000000000000000000000000000000000000000000000000000000000007a600000000000000000000000000000000000000000000000000000000000007aa00000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007b400000000000000000000000000000000000000000000000000000000000007b800000000000000000000000000000000000000000000000000000000000007bc00000000000000000000000000000000000000000000000000000000000007c000000000000000000000000000000000000000000000000000000000000007c600000000000000000000000000000000000000000000000000000000000007cc00000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000007d400000000000000000000000000000000000000000000000000000000000007d800000000000000000000000000000000000000000000000000000000000007dc00000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e400000000000000000000000000000000000000000000000000000000000007e800000000000000000000000000000000000000000000000000000000000007ec00000000000000000000000000000000000000000000000000000000000007f200000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000007fc000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000008040000000000000000000000000000000000000000000000000000000000000808000000000000000000000000000000000000000000000000000000000000080c00000000000000000000000000000000000000000000000000000000000008100000000000000000000000000000000000000000000000000000000000000816000000000000000000000000000000000000000000000000000000000000081c00000000000000000000000000000000000000000000000000000000000008220000000000000000000000000000000000000000000000000000000000000828000000000000000000000000000000000000000000000000000000000000082e00000000000000000000000000000000000000000000000000000000000008320000000000000000000000000000000000000000000000000000000000000838000000000000000000000000000000000000000000000000000000000000083e00000000000000000000000000000000000000000000000000000000000008420000000000000000000000000000000000000000000000000000000000000848000000000000000000000000000000000000000000000000000000000000084c00000000000000000000000000000000000000000000000000000000000008500000000000000000000000000000000000000000000000000000000000000856000000000000000000000000000000000000000000000000000000000000085c00000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000000000000000000000000000000000000864000000000000000000000000000000000000000000000000000000000000086a000000000000000000000000000000000000000000000000000000000000086e00000000000000000000000000000000000000000000000000000000000008720000000000000000000000000000000000000000000000000000000000000876000000000000000000000000000000000000000000000000000000000000087a000000000000000000000000000000000000000000000000000000000000087e00000000000000000000000000000000000000000000000000000000000008820000000000000000000000000000000000000000000000000000000000000888000000000000000000000000000000000000000000000000000000000000088e00000000000000000000000000000000000000000000000000000000000008920000000000000000000000000000000000000000000000000000000000000896000000000000000000000000000000000000000000000000000000000000089c00000000000000000000000000000000000000000000000000000000000008a200000000000000000000000000000000000000000000000000000000000008a600000000000000000000000000000000000000000000000000000000000008aa00000000000000000000000000000000000000000000000000000000000008ae00000000000000000000000000000000000000000000000000000000000008b200000000000000000000000000000000000000000000000000000000000008b600000000000000000000000000000000000000000000000000000000000008bc00000000000000000000000000000000000000000000000000000000000008c200000000000000000000000000000000000000000000000000000000000008c600000000000000000000000000000000000000000000000000000000000008ca00000000000000000000000000000000000000000000000000000000000008ce00000000000000000000000000000000000000000000000000000000000008d200000000000000000000000000000000000000000000000000000000000008d800000000000000000000000000000000000000000000000000000000000008de00000000000000000000000000000000000000000000000000000000000008e200000000000000000000000000000000000000000000000000000000000008e600000000000000000000000000000000000000000000000000000000000008ec00000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000000000000000000000000000000000008f400000000000000000000000000000000000000000000000000000000000008f800000000000000000000000000000000000000000000000000000000000008fc000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009040000000000000000000000000000000000000000000000000000000000000908000000000000000000000000000000000000000000000000000000000000090c000000000000000000000000000000000000000000000000000000000000091000000000000000000000000000000000000000000000000000000000000009140000000000000000000000000000000000000000000000000000000000000918000000000000000000000000000000000000000000000000000000000000091c000000000000000000000000000000000000000000000000000000000000092000000000000000000000000000000000000000000000000000000000000009240000000000000000000000000000000000000000000000000000000000000928000000000000000000000000000000000000000000000000000000000000092c000000000000000000000000000000000000000000000000000000000000093000000000000000000000000000000000000000000000000000000000000009340000000000000000000000000000000000000000000000000000000000000938000000000000000000000000000000000000000000000000000000000000093c00000000000000000000000000000000000000000000000000000000000009420000000000000000000000000000000000000000000000000000000000000948000000000000000000000000000000000000000000000000000000000000094e0000000000000000000000000000000000000000000000000000000000000954000000000000000000000000000000000000000000000000000000000000095a000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000009640000000000000000000000000000000000000000000000000000000000000968000000000000000000000000000000000000000000000000000000000000096c000000000000000000000000000000000000000000000000000000000000097000000000000000000000000000000000000000000000000000000000000009740000000000000000000000000000000000000000000000000000000000000978000000000000000000000000000000000000000000000000000000000000097c00000000000000000000000000000000000000000000000000000000000009800000000000000000000000000000000000000000000000000000000000000986000000000000000000000000000000000000000000000000000000000000098a000000000000000000000000000000000000000000000000000000000000098e00000000000000000000000000000000000000000000000000000000000009920000000000000000000000000000000000000000000000000000000000000996000000000000000000000000000000000000000000000000000000000000099c00000000000000000000000000000000000000000000000000000000000009a200000000000000000000000000000000000000000000000000000000000009a800000000000000000000000000000000000000000000000000000000000009ac00000000000000000000000000000000000000000000000000000000000009b000000000000000000000000000000000000000000000000000000000000009b400000000000000000000000000000000000000000000000000000000000009b800000000000000000000000000000000000000000000000000000000000009bc00000000000000000000000000000000000000000000000000000000000009c000000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000009c800000000000000000000000000000000000000000000000000000000000009cc00000000000000000000000000000000000000000000000000000000000009d000000000000000000000000000000000000000000000000000000000000009d400000000000000000000000000000000000000000000000000000000000009d800000000000000000000000000000000000000000000000000000000000009dc00000000000000000000000000000000000000000000000000000000000009e000000000000000000000000000000000000000000000000000000000000009e400000000000000000000000000000000000000000000000000000000000009e800000000000000000000000000000000000000000000000000000000000009ec00000000000000000000000000000000000000000000000000000000000009f000000000000000000000000000000000000000000000000000000000000009f400000000000000000000000000000000000000000000000000000000000009f800000000000000000000000000000000000000000000000000000000000009fc0000000000000000000000000000000000000000000000000000000000000a020000000000000000000000000000000000000000000000000000000000000a080000000000000000000000000000000000000000000000000000000000000a0c0000000000000000000000000000000000000000000000000000000000000a100000000000000000000000000000000000000000000000000000000000000a140000000000000000000000000000000000000000000000000000000000000a1a0000000000000000000000000000000000000000000000000000000000000a200000000000000000000000000000000000000000000000000000000000000a260000000000000000000000000000000000000000000000000000000000000a2a0000000000000000000000000000000000000000000000000000000000000a2e0000000000000000000000000000000000000000000000000000000000000a320000000000000000000000000000000000000000000000000000000000000a360000000000000000000000000000000000000000000000000000000000000a3a0000000000000000000000000000000000000000000000000000000000000a3e0000000000000000000000000000000000000000000000000000000000000a420000000000000000000000000000000000000000000000000000000000000a460000000000000000000000000000000000000000000000000000000000000a4a0000000000000000000000000000000000000000000000000000000000000a4e0000000000000000000000000000000000000000000000000000000000000a540000000000000000000000000000000000000000000000000000000000000a5a0000000000000000000000000000000000000000000000000000000000000a5e0000000000000000000000000000000000000000000000000000000000000a620000000000000000000000000000000000000000000000000000000000000a660000000000000000000000000000000000000000000000000000000000000a6a0000000000000000000000000000000000000000000000000000000000000a6e0000000000000000000000000000000000000000000000000000000000000a720000000000000000000000000000000000000000000000000000000000000a760000000000000000000000000000000000000000000000000000000000000a7a0000000000000000000000000000000000000000000000000000000000000a800000000000000000000000000000000000000000000000000000000000000a860000000000000000000000000000000000000000000000000000000000000a8c0000000000000000000000000000000000000000000000000000000000000a920000000000000000000000000000000000000000000000000000000000000a980000000000000000000000000000000000000000000000000000000000000a9c0000000000000000000000000000000000000000000000000000000000000aa00000000000000000000000000000000000000000000000000000000000000aa40000000000000000000000000000000000000000000000000000000000000aa80000000000000000000000000000000000000000000000000000000000000aac0000000000000000000000000000000000000000000000000000000000000ab00000000000000000000000000000000000000000000000000000000000000ab60000000000000000000000000000000000000000000000000000000000000abc0000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000000000000000000000000000000000000000000ac40000000000000000000000000000000000000000000000000000000000000ac80000000000000000000000000000000000000000000000000000000000000acc0000000000000000000000000000000000000000000000000000000000000ad00000000000000000000000000000000000000000000000000000000000000ad40000000000000000000000000000000000000000000000000000000000000ad80000000000000000000000000000000000000000000000000000000000000adc0000000000000000000000000000000000000000000000000000000000000ae20000000000000000000000000000000000000000000000000000000000000ae60000000000000000000000000000000000000000000000000000000000000aea0000000000000000000000000000000000000000000000000000000000000aee0000000000000000000000000000000000000000000000000000000000000af20000000000000000000000000000000000000000000000000000000000000af60000000000000000000000000000000000000000000000000000000000000afa0000000000000000000000000000000000000000000000000000000000000afe0000000000000000000000000000000000000000000000000000000000000b020000000000000000000000000000000000000000000000000000000000000b060000000000000000000000000000000000000000000000000000000000000b0a0000000000000000000000000000000000000000000000000000000000000b0e0000000000000000000000000000000000000000000000000000000000000b120000000000000000000000000000000000000000000000000000000000000b160000000000000000000000000000000000000000000000000000000000000b1a0000000000000000000000000000000000000000000000000000000000000b1e0000000000000000000000000000000000000000000000000000000000000b240000000000000000000000000000000000000000000000000000000000000b2a0000000000000000000000000000000000000000000000000000000000000b2e0000000000000000000000000000000000000000000000000000000000000b320000000000000000000000000000000000000000000000000000000000000b380000000000000000000000000000000000000000000000000000000000000b3e0000000000000000000000000000000000000000000000000000000000000b440000000000000000000000000000000000000000000000000000000000000b4a0000000000000000000000000000000000000000000000000000000000000b4e0000000000000000000000000000000000000000000000000000000000000b540000000000000000000000000000000000000000000000000000000000000b5a0000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000b640000000000000000000000000000000000000000000000000000000000000b680000000000000000000000000000000000000000000000000000000000000b6c0000000000000000000000000000000000000000000000000000000000000b700000000000000000000000000000000000000000000000000000000000000b740000000000000000000000000000000000000000000000000000000000000b780000000000000000000000000000000000000000000000000000000000000b7c0000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000b840000000000000000000000000000000000000000000000000000000000000b880000000000000000000000000000000000000000000000000000000000000b8c0000000000000000000000000000000000000000000000000000000000000b900000000000000000000000000000000000000000000000000000000000000b940000000000000000000000000000000000000000000000000000000000000b980000000000000000000000000000000000000000000000000000000000000b9c0000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000ba40000000000000000000000000000000000000000000000000000000000000ba80000000000000000000000000000000000000000000000000000000000000bac0000000000000000000000000000000000000000000000000000000000000bb00000000000000000000000000000000000000000000000000000000000000bb40000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000bbc0000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000bc40000000000000000000000000000000000000000000000000000000000000bc80000000000000000000000000000000000000000000000000000000000000bcc0000000000000000000000000000000000000000000000000000000000000bd00000000000000000000000000000000000000000000000000000000000000bd60000000000000000000000000000000000000000000000000000000000000bdc0000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000be40000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4554482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a494c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c54432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4554432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e45514c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c494e4b2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e555344432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4241542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5245502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a52582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4441492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4243482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e584d522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e444153482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e454f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e535754482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e444f47452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5852502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a45432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5945432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4144412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e454f532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e584c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e424e422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e414e4f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e57415645532e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b4d442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e41452e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52534b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e57414e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53545241542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5542512e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58545a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f54412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5645542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5154554d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4943582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4447422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e585a432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e42555253542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4443522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58454d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c534b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e41544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e534d4152542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e545041592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4752532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4253562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4741532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5452582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5654484f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4243442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b494e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52564e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e41524b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5856472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414c474f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e45424c2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58504d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e452e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e424e54592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e43524f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5457542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001563727970746f2e5349455252412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e565359532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e484956452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e48542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e454e4a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5946492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d54412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434f4d502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e42414c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414d504c2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c454e442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e544c4f532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5844432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5853542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53545241582e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e5349474e412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e494d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e475541502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e63727970746f2e454c412e76657273696f6e2e454c412e616464726573730000000000000000000000000000000000000000000000000000000000000000001e63727970746f2e454c412e76657273696f6e2e4553432e616464726573730000000000000000000000000000000000000000000000000000000000000000002163727970746f2e555344542e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e555344542e76657273696f6e2e54524f4e2e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e555344542e76657273696f6e2e454f532e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e555344542e76657273696f6e2e4f4d4e492e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e46544d2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e46544d2e76657273696f6e2e424550322e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e46544d2e76657273696f6e2e4f504552412e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e465553452e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e465553452e76657273696f6e2e465553452e61646472657373000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e45524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011736f6369616c2e70617969642e6e616d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014736f6369616c2e706963747572652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000001177686f69732e656d61696c2e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001477686f69732e666f725f73616c652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f697066732e68746d6c2e76616c75650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a697066732e72656469726563745f646f6d61696e2e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000e647765622e697066732e68617368000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001462726f777365722e72656469726563745f75726c000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b62726f777365722e7072656665727265645f70726f746f636f6c730000000000000000000000000000000000000000000000000000000000000000000000001467756e64622e757365726e616d652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000001667756e64622e7075626c69635f6b65792e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000012736f6369616c2e696d6167652e76616c756500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017736f6369616c2e747769747465722e757365726e616d65000000000000000000000000000000000000000000000000000000000000000000000000000000002276616c69646174696f6e2e736f6369616c2e747769747465722e757365726e616d65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e666f7277617264696e672e75726c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005646e732e410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e41414141000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e414141412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e41465344420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e41465344422e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e41504c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e41504c2e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e43414100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4341412e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e43444e534b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f646e732e43444e534b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e43445300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4344532e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e43455254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e434552542e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e434e414d450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e434e414d452e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4353594e430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4353594e432e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e44484349440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e44484349442e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e444c5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e444c562e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e444e414d450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e444e414d452e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e444e534b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e444e534b45592e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e44530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e44532e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e45554934380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e45554934382e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e45554936340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e45554936342e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e48494e464f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e48494e464f2e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e48495000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4849502e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e48545450530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e48545450532e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e49505345434b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010646e732e49505345434b45592e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e4b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4b45592e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4b580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4b582e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e4c4f4300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4c4f432e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4d580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4d582e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4e415054520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4e415054522e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4e530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4e532e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e4e534543000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e4e5345432e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4e534543330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4e534543332e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e4e53454333504152414d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012646e732e4e53454333504152414d2e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e4f50454e5047504b45590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012646e732e4f50454e5047504b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e50545200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5054522e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e52500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e52502e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e52525349470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e52525349472e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e53494700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5349472e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e534d494d454100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e534d494d45412e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e534f4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e534f412e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e53525600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5352562e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e53534846500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e53534846502e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e53564342000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e535643422e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e54410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e54412e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e544b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e544b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e544c5341000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e544c53412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e54534947000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e545349472e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e54585400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5458542e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e55524900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5552492e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e5a4f4e454d4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e5a4f4e454d442e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e444f542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e554e492e76657273696f6e2e584441492e6164647265737300000000000000000000000000000000000000000000000000000000000000001263727970746f2e534f4c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4943502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e54484554412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e574254432e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e574254432e76657273696f6e2e584441492e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e46494c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434441492e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b534d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4b422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414156452e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e534849422e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e534849422e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e534849422e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e43454c2e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001463727970746f2e43555344432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434554482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414d502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e43414b452e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e43414b452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e4d494f54412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4654542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d4b522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e544655454c2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4c41592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c554e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415641582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c454f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002563727970746f2e534146454d4f4f4e2e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002563727970746f2e534146454d4f4f4e2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5553542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e52554e452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e484241522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e54454c2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e54454c2e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e43485a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e53555348492e76657273696f6e2e46414e544f4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e45474c442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e415641582e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e424550322e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e54524f4e2e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e484254432e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e484254432e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e534e582e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e484f542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e484f542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e4541522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e484e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53544554482e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4e45584f2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4e45584f2e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5041582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5354582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4d414e412e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4d414e412e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d44582e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d44582e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a454e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415252522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e424e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4c5553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4c5553442e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001163727970746f2e53432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e485553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e485553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4352562e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4352562e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e4352562e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e554d412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f63727970746f2e5752582e76657273696f6e2e424550322e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e5752582e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001163727970746f2e41522e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4d472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e47542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e514e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434853422e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f53542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e584d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b43532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4c50542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4c50542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001563727970746f2e5853555348492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e43555344542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e464c4f572e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414e4b522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4842432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5647582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4645492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414b452e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414b452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e434b422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e574f4f2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e574f4f2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001463727970746f2e544954414e2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4d492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d494e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e534554482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5253522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4f58592e76657273696f6e2e534f4c414e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4f58592e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e52454e2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e52454e2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e5843482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e45524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e42455032302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e48524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5553444e2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e424348412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c52432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001563727970746f2e50554e4449582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4552472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e57494e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e5058532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e54524942452e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4149442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4153442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43554e492e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43454c4f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e44454e542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e534e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4645472e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4645472e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e534b4c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e414c5553442e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d49522e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d49522e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e474c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e504158472e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e504158472e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4346582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e554f532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e535643532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e474e4f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e555344502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4156412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414c43582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4557542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544f4e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e524c432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4158532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e415544494f2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5856532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414e442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e42414e442e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4d522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e494e4a2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e494e4a2e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e574158502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5551432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f54582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e46554e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e4f4345414e2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e53414e442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e53414e442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5241592e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e414e432e76657273696f6e2e54455252412e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e414e432e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000002163727970746f2e535553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e535553442e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b4c562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e42544353542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414b542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e53544d582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e50524f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e585052542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e53524d2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e53524d2e76657273696f6e2e534f4c414e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52504c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414749582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43454c522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4645542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f58542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415244522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4154482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e31305345542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e504f4c592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e475553442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4b4e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4356432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4754432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e535445454d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f524e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4545502e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4545502e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4858524f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4f5242532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414c5048412e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414c5048412e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e444f444f2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e444f444f2e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f474e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4e434c2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4b4e434c2e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4e434c2e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d45442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e584155542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e564c582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5048412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4f42452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e504552502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5848562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4554412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e534555522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4f4e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e48594452412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a4b532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e435350522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d544c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e4e552e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a4d542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c4f432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544b4f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e45544e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e5542542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5542542e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e455852442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4d582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5249462e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53544f524a2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53544f524a2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4156412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4450492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4450492e76657273696f6e2e4d415449432e61646472657373', + data: '0x91015f6b00000000000000000000000000000000000000000000000000000000000000408afb596177f2d6b5c08aeda27ee030e76c3d5b4fab69de453beab1f1195eb73100000000000000000000000000000000000000000000000000000000000001ea0000000000000000000000000000000000000000000000000000000000003d400000000000000000000000000000000000000000000000000000000000003d800000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000003e400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003ec00000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000003f800000000000000000000000000000000000000000000000000000000000003fc000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004040000000000000000000000000000000000000000000000000000000000000408000000000000000000000000000000000000000000000000000000000000040c000000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004140000000000000000000000000000000000000000000000000000000000000418000000000000000000000000000000000000000000000000000000000000041c000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004240000000000000000000000000000000000000000000000000000000000000428000000000000000000000000000000000000000000000000000000000000042c000000000000000000000000000000000000000000000000000000000000043000000000000000000000000000000000000000000000000000000000000004340000000000000000000000000000000000000000000000000000000000000438000000000000000000000000000000000000000000000000000000000000043c000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004440000000000000000000000000000000000000000000000000000000000000448000000000000000000000000000000000000000000000000000000000000044c000000000000000000000000000000000000000000000000000000000000045000000000000000000000000000000000000000000000000000000000000004540000000000000000000000000000000000000000000000000000000000000458000000000000000000000000000000000000000000000000000000000000045c000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000004640000000000000000000000000000000000000000000000000000000000000468000000000000000000000000000000000000000000000000000000000000046c000000000000000000000000000000000000000000000000000000000000047000000000000000000000000000000000000000000000000000000000000004740000000000000000000000000000000000000000000000000000000000000478000000000000000000000000000000000000000000000000000000000000047c000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000004840000000000000000000000000000000000000000000000000000000000000488000000000000000000000000000000000000000000000000000000000000048c000000000000000000000000000000000000000000000000000000000000049000000000000000000000000000000000000000000000000000000000000004940000000000000000000000000000000000000000000000000000000000000498000000000000000000000000000000000000000000000000000000000000049c00000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000004a400000000000000000000000000000000000000000000000000000000000004a800000000000000000000000000000000000000000000000000000000000004ac00000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000004b400000000000000000000000000000000000000000000000000000000000004b800000000000000000000000000000000000000000000000000000000000004bc00000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004c400000000000000000000000000000000000000000000000000000000000004c800000000000000000000000000000000000000000000000000000000000004cc00000000000000000000000000000000000000000000000000000000000004d000000000000000000000000000000000000000000000000000000000000004d400000000000000000000000000000000000000000000000000000000000004d800000000000000000000000000000000000000000000000000000000000004dc00000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000004e400000000000000000000000000000000000000000000000000000000000004e800000000000000000000000000000000000000000000000000000000000004ec00000000000000000000000000000000000000000000000000000000000004f000000000000000000000000000000000000000000000000000000000000004f400000000000000000000000000000000000000000000000000000000000004f800000000000000000000000000000000000000000000000000000000000004fc000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005040000000000000000000000000000000000000000000000000000000000000508000000000000000000000000000000000000000000000000000000000000050c000000000000000000000000000000000000000000000000000000000000051000000000000000000000000000000000000000000000000000000000000005140000000000000000000000000000000000000000000000000000000000000518000000000000000000000000000000000000000000000000000000000000051c000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005240000000000000000000000000000000000000000000000000000000000000528000000000000000000000000000000000000000000000000000000000000052c000000000000000000000000000000000000000000000000000000000000053000000000000000000000000000000000000000000000000000000000000005340000000000000000000000000000000000000000000000000000000000000538000000000000000000000000000000000000000000000000000000000000053c00000000000000000000000000000000000000000000000000000000000005420000000000000000000000000000000000000000000000000000000000000546000000000000000000000000000000000000000000000000000000000000054a000000000000000000000000000000000000000000000000000000000000054e00000000000000000000000000000000000000000000000000000000000005520000000000000000000000000000000000000000000000000000000000000556000000000000000000000000000000000000000000000000000000000000055a000000000000000000000000000000000000000000000000000000000000055e00000000000000000000000000000000000000000000000000000000000005640000000000000000000000000000000000000000000000000000000000000568000000000000000000000000000000000000000000000000000000000000056e0000000000000000000000000000000000000000000000000000000000000574000000000000000000000000000000000000000000000000000000000000057a000000000000000000000000000000000000000000000000000000000000057e00000000000000000000000000000000000000000000000000000000000005820000000000000000000000000000000000000000000000000000000000000586000000000000000000000000000000000000000000000000000000000000058a000000000000000000000000000000000000000000000000000000000000058e00000000000000000000000000000000000000000000000000000000000005920000000000000000000000000000000000000000000000000000000000000596000000000000000000000000000000000000000000000000000000000000059a000000000000000000000000000000000000000000000000000000000000059e00000000000000000000000000000000000000000000000000000000000005a200000000000000000000000000000000000000000000000000000000000005a600000000000000000000000000000000000000000000000000000000000005aa00000000000000000000000000000000000000000000000000000000000005ae00000000000000000000000000000000000000000000000000000000000005b400000000000000000000000000000000000000000000000000000000000005b800000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000005c400000000000000000000000000000000000000000000000000000000000005c800000000000000000000000000000000000000000000000000000000000005cc00000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005d400000000000000000000000000000000000000000000000000000000000005d800000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000005e000000000000000000000000000000000000000000000000000000000000005e400000000000000000000000000000000000000000000000000000000000005e800000000000000000000000000000000000000000000000000000000000005ec00000000000000000000000000000000000000000000000000000000000005f000000000000000000000000000000000000000000000000000000000000005f400000000000000000000000000000000000000000000000000000000000005f800000000000000000000000000000000000000000000000000000000000005fc000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006040000000000000000000000000000000000000000000000000000000000000608000000000000000000000000000000000000000000000000000000000000060c000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000006140000000000000000000000000000000000000000000000000000000000000618000000000000000000000000000000000000000000000000000000000000061c000000000000000000000000000000000000000000000000000000000000062000000000000000000000000000000000000000000000000000000000000006240000000000000000000000000000000000000000000000000000000000000628000000000000000000000000000000000000000000000000000000000000062c000000000000000000000000000000000000000000000000000000000000063000000000000000000000000000000000000000000000000000000000000006340000000000000000000000000000000000000000000000000000000000000638000000000000000000000000000000000000000000000000000000000000063c000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006440000000000000000000000000000000000000000000000000000000000000648000000000000000000000000000000000000000000000000000000000000064c000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000006540000000000000000000000000000000000000000000000000000000000000658000000000000000000000000000000000000000000000000000000000000065c000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006640000000000000000000000000000000000000000000000000000000000000668000000000000000000000000000000000000000000000000000000000000066c000000000000000000000000000000000000000000000000000000000000067000000000000000000000000000000000000000000000000000000000000006740000000000000000000000000000000000000000000000000000000000000678000000000000000000000000000000000000000000000000000000000000067c000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000006840000000000000000000000000000000000000000000000000000000000000688000000000000000000000000000000000000000000000000000000000000068c000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006940000000000000000000000000000000000000000000000000000000000000698000000000000000000000000000000000000000000000000000000000000069c00000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000006a400000000000000000000000000000000000000000000000000000000000006a800000000000000000000000000000000000000000000000000000000000006ac00000000000000000000000000000000000000000000000000000000000006b000000000000000000000000000000000000000000000000000000000000006b400000000000000000000000000000000000000000000000000000000000006b800000000000000000000000000000000000000000000000000000000000006bc00000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006c400000000000000000000000000000000000000000000000000000000000006c800000000000000000000000000000000000000000000000000000000000006cc00000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006d800000000000000000000000000000000000000000000000000000000000006dc00000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000006e400000000000000000000000000000000000000000000000000000000000006e800000000000000000000000000000000000000000000000000000000000006ec00000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006f400000000000000000000000000000000000000000000000000000000000006f800000000000000000000000000000000000000000000000000000000000006fc000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000007040000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000070c000000000000000000000000000000000000000000000000000000000000071000000000000000000000000000000000000000000000000000000000000007140000000000000000000000000000000000000000000000000000000000000718000000000000000000000000000000000000000000000000000000000000071c000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000007240000000000000000000000000000000000000000000000000000000000000728000000000000000000000000000000000000000000000000000000000000072c000000000000000000000000000000000000000000000000000000000000073000000000000000000000000000000000000000000000000000000000000007340000000000000000000000000000000000000000000000000000000000000738000000000000000000000000000000000000000000000000000000000000073c000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007440000000000000000000000000000000000000000000000000000000000000748000000000000000000000000000000000000000000000000000000000000074c00000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000756000000000000000000000000000000000000000000000000000000000000075c00000000000000000000000000000000000000000000000000000000000007620000000000000000000000000000000000000000000000000000000000000766000000000000000000000000000000000000000000000000000000000000076a00000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000000000000000000000000000000000776000000000000000000000000000000000000000000000000000000000000077c00000000000000000000000000000000000000000000000000000000000007820000000000000000000000000000000000000000000000000000000000000786000000000000000000000000000000000000000000000000000000000000078a000000000000000000000000000000000000000000000000000000000000078e00000000000000000000000000000000000000000000000000000000000007920000000000000000000000000000000000000000000000000000000000000796000000000000000000000000000000000000000000000000000000000000079c00000000000000000000000000000000000000000000000000000000000007a200000000000000000000000000000000000000000000000000000000000007a800000000000000000000000000000000000000000000000000000000000007ae00000000000000000000000000000000000000000000000000000000000007b200000000000000000000000000000000000000000000000000000000000007b800000000000000000000000000000000000000000000000000000000000007be00000000000000000000000000000000000000000000000000000000000007c400000000000000000000000000000000000000000000000000000000000007c800000000000000000000000000000000000000000000000000000000000007cc00000000000000000000000000000000000000000000000000000000000007d200000000000000000000000000000000000000000000000000000000000007d600000000000000000000000000000000000000000000000000000000000007da00000000000000000000000000000000000000000000000000000000000007de00000000000000000000000000000000000000000000000000000000000007e200000000000000000000000000000000000000000000000000000000000007e800000000000000000000000000000000000000000000000000000000000007ee00000000000000000000000000000000000000000000000000000000000007f200000000000000000000000000000000000000000000000000000000000007f600000000000000000000000000000000000000000000000000000000000007fa00000000000000000000000000000000000000000000000000000000000007fe00000000000000000000000000000000000000000000000000000000000008020000000000000000000000000000000000000000000000000000000000000806000000000000000000000000000000000000000000000000000000000000080a000000000000000000000000000000000000000000000000000000000000080e0000000000000000000000000000000000000000000000000000000000000814000000000000000000000000000000000000000000000000000000000000081a000000000000000000000000000000000000000000000000000000000000081e00000000000000000000000000000000000000000000000000000000000008220000000000000000000000000000000000000000000000000000000000000826000000000000000000000000000000000000000000000000000000000000082a000000000000000000000000000000000000000000000000000000000000082e00000000000000000000000000000000000000000000000000000000000008320000000000000000000000000000000000000000000000000000000000000838000000000000000000000000000000000000000000000000000000000000083e0000000000000000000000000000000000000000000000000000000000000844000000000000000000000000000000000000000000000000000000000000084a00000000000000000000000000000000000000000000000000000000000008500000000000000000000000000000000000000000000000000000000000000854000000000000000000000000000000000000000000000000000000000000085a00000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000000000000000000000000000000000000864000000000000000000000000000000000000000000000000000000000000086a000000000000000000000000000000000000000000000000000000000000086e00000000000000000000000000000000000000000000000000000000000008720000000000000000000000000000000000000000000000000000000000000878000000000000000000000000000000000000000000000000000000000000087e00000000000000000000000000000000000000000000000000000000000008820000000000000000000000000000000000000000000000000000000000000886000000000000000000000000000000000000000000000000000000000000088c000000000000000000000000000000000000000000000000000000000000089000000000000000000000000000000000000000000000000000000000000008940000000000000000000000000000000000000000000000000000000000000898000000000000000000000000000000000000000000000000000000000000089c00000000000000000000000000000000000000000000000000000000000008a000000000000000000000000000000000000000000000000000000000000008a400000000000000000000000000000000000000000000000000000000000008aa00000000000000000000000000000000000000000000000000000000000008b000000000000000000000000000000000000000000000000000000000000008b400000000000000000000000000000000000000000000000000000000000008b800000000000000000000000000000000000000000000000000000000000008be00000000000000000000000000000000000000000000000000000000000008c400000000000000000000000000000000000000000000000000000000000008c800000000000000000000000000000000000000000000000000000000000008cc00000000000000000000000000000000000000000000000000000000000008d000000000000000000000000000000000000000000000000000000000000008d400000000000000000000000000000000000000000000000000000000000008d800000000000000000000000000000000000000000000000000000000000008de00000000000000000000000000000000000000000000000000000000000008e400000000000000000000000000000000000000000000000000000000000008e800000000000000000000000000000000000000000000000000000000000008ec00000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000000000000000000000000000000000008f400000000000000000000000000000000000000000000000000000000000008fa000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009040000000000000000000000000000000000000000000000000000000000000908000000000000000000000000000000000000000000000000000000000000090e00000000000000000000000000000000000000000000000000000000000009120000000000000000000000000000000000000000000000000000000000000916000000000000000000000000000000000000000000000000000000000000091a000000000000000000000000000000000000000000000000000000000000091e00000000000000000000000000000000000000000000000000000000000009220000000000000000000000000000000000000000000000000000000000000926000000000000000000000000000000000000000000000000000000000000092a000000000000000000000000000000000000000000000000000000000000092e00000000000000000000000000000000000000000000000000000000000009320000000000000000000000000000000000000000000000000000000000000936000000000000000000000000000000000000000000000000000000000000093a000000000000000000000000000000000000000000000000000000000000093e00000000000000000000000000000000000000000000000000000000000009420000000000000000000000000000000000000000000000000000000000000946000000000000000000000000000000000000000000000000000000000000094a000000000000000000000000000000000000000000000000000000000000094e00000000000000000000000000000000000000000000000000000000000009520000000000000000000000000000000000000000000000000000000000000956000000000000000000000000000000000000000000000000000000000000095a000000000000000000000000000000000000000000000000000000000000095e0000000000000000000000000000000000000000000000000000000000000964000000000000000000000000000000000000000000000000000000000000096a00000000000000000000000000000000000000000000000000000000000009700000000000000000000000000000000000000000000000000000000000000976000000000000000000000000000000000000000000000000000000000000097c00000000000000000000000000000000000000000000000000000000000009820000000000000000000000000000000000000000000000000000000000000986000000000000000000000000000000000000000000000000000000000000098a000000000000000000000000000000000000000000000000000000000000098e00000000000000000000000000000000000000000000000000000000000009920000000000000000000000000000000000000000000000000000000000000996000000000000000000000000000000000000000000000000000000000000099a000000000000000000000000000000000000000000000000000000000000099e00000000000000000000000000000000000000000000000000000000000009a200000000000000000000000000000000000000000000000000000000000009a800000000000000000000000000000000000000000000000000000000000009ac00000000000000000000000000000000000000000000000000000000000009b000000000000000000000000000000000000000000000000000000000000009b400000000000000000000000000000000000000000000000000000000000009b800000000000000000000000000000000000000000000000000000000000009be00000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000009ca00000000000000000000000000000000000000000000000000000000000009ce00000000000000000000000000000000000000000000000000000000000009d200000000000000000000000000000000000000000000000000000000000009d600000000000000000000000000000000000000000000000000000000000009da00000000000000000000000000000000000000000000000000000000000009de00000000000000000000000000000000000000000000000000000000000009e200000000000000000000000000000000000000000000000000000000000009e600000000000000000000000000000000000000000000000000000000000009ea00000000000000000000000000000000000000000000000000000000000009ee00000000000000000000000000000000000000000000000000000000000009f200000000000000000000000000000000000000000000000000000000000009f600000000000000000000000000000000000000000000000000000000000009fa00000000000000000000000000000000000000000000000000000000000009fe0000000000000000000000000000000000000000000000000000000000000a020000000000000000000000000000000000000000000000000000000000000a060000000000000000000000000000000000000000000000000000000000000a0a0000000000000000000000000000000000000000000000000000000000000a0e0000000000000000000000000000000000000000000000000000000000000a120000000000000000000000000000000000000000000000000000000000000a160000000000000000000000000000000000000000000000000000000000000a1a0000000000000000000000000000000000000000000000000000000000000a1e0000000000000000000000000000000000000000000000000000000000000a240000000000000000000000000000000000000000000000000000000000000a2a0000000000000000000000000000000000000000000000000000000000000a2e0000000000000000000000000000000000000000000000000000000000000a320000000000000000000000000000000000000000000000000000000000000a360000000000000000000000000000000000000000000000000000000000000a3c0000000000000000000000000000000000000000000000000000000000000a420000000000000000000000000000000000000000000000000000000000000a480000000000000000000000000000000000000000000000000000000000000a4c0000000000000000000000000000000000000000000000000000000000000a500000000000000000000000000000000000000000000000000000000000000a540000000000000000000000000000000000000000000000000000000000000a580000000000000000000000000000000000000000000000000000000000000a5c0000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000a640000000000000000000000000000000000000000000000000000000000000a680000000000000000000000000000000000000000000000000000000000000a6c0000000000000000000000000000000000000000000000000000000000000a700000000000000000000000000000000000000000000000000000000000000a760000000000000000000000000000000000000000000000000000000000000a7c0000000000000000000000000000000000000000000000000000000000000a800000000000000000000000000000000000000000000000000000000000000a840000000000000000000000000000000000000000000000000000000000000a880000000000000000000000000000000000000000000000000000000000000a8c0000000000000000000000000000000000000000000000000000000000000a900000000000000000000000000000000000000000000000000000000000000a940000000000000000000000000000000000000000000000000000000000000a980000000000000000000000000000000000000000000000000000000000000a9c0000000000000000000000000000000000000000000000000000000000000aa20000000000000000000000000000000000000000000000000000000000000aa80000000000000000000000000000000000000000000000000000000000000aae0000000000000000000000000000000000000000000000000000000000000ab40000000000000000000000000000000000000000000000000000000000000aba0000000000000000000000000000000000000000000000000000000000000abe0000000000000000000000000000000000000000000000000000000000000ac20000000000000000000000000000000000000000000000000000000000000ac60000000000000000000000000000000000000000000000000000000000000aca0000000000000000000000000000000000000000000000000000000000000ace0000000000000000000000000000000000000000000000000000000000000ad20000000000000000000000000000000000000000000000000000000000000ad80000000000000000000000000000000000000000000000000000000000000ade0000000000000000000000000000000000000000000000000000000000000ae20000000000000000000000000000000000000000000000000000000000000ae60000000000000000000000000000000000000000000000000000000000000aea0000000000000000000000000000000000000000000000000000000000000aee0000000000000000000000000000000000000000000000000000000000000af20000000000000000000000000000000000000000000000000000000000000af60000000000000000000000000000000000000000000000000000000000000afa0000000000000000000000000000000000000000000000000000000000000afe0000000000000000000000000000000000000000000000000000000000000b040000000000000000000000000000000000000000000000000000000000000b080000000000000000000000000000000000000000000000000000000000000b0c0000000000000000000000000000000000000000000000000000000000000b100000000000000000000000000000000000000000000000000000000000000b140000000000000000000000000000000000000000000000000000000000000b180000000000000000000000000000000000000000000000000000000000000b1c0000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000b240000000000000000000000000000000000000000000000000000000000000b280000000000000000000000000000000000000000000000000000000000000b2c0000000000000000000000000000000000000000000000000000000000000b300000000000000000000000000000000000000000000000000000000000000b340000000000000000000000000000000000000000000000000000000000000b380000000000000000000000000000000000000000000000000000000000000b3c0000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000b460000000000000000000000000000000000000000000000000000000000000b4c0000000000000000000000000000000000000000000000000000000000000b500000000000000000000000000000000000000000000000000000000000000b540000000000000000000000000000000000000000000000000000000000000b5a0000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000b660000000000000000000000000000000000000000000000000000000000000b6c0000000000000000000000000000000000000000000000000000000000000b700000000000000000000000000000000000000000000000000000000000000b760000000000000000000000000000000000000000000000000000000000000b7c0000000000000000000000000000000000000000000000000000000000000b820000000000000000000000000000000000000000000000000000000000000b860000000000000000000000000000000000000000000000000000000000000b8a0000000000000000000000000000000000000000000000000000000000000b8e0000000000000000000000000000000000000000000000000000000000000b920000000000000000000000000000000000000000000000000000000000000b960000000000000000000000000000000000000000000000000000000000000b9a0000000000000000000000000000000000000000000000000000000000000b9e0000000000000000000000000000000000000000000000000000000000000ba20000000000000000000000000000000000000000000000000000000000000ba60000000000000000000000000000000000000000000000000000000000000baa0000000000000000000000000000000000000000000000000000000000000bae0000000000000000000000000000000000000000000000000000000000000bb20000000000000000000000000000000000000000000000000000000000000bb60000000000000000000000000000000000000000000000000000000000000bba0000000000000000000000000000000000000000000000000000000000000bbe0000000000000000000000000000000000000000000000000000000000000bc20000000000000000000000000000000000000000000000000000000000000bc60000000000000000000000000000000000000000000000000000000000000bca0000000000000000000000000000000000000000000000000000000000000bce0000000000000000000000000000000000000000000000000000000000000bd20000000000000000000000000000000000000000000000000000000000000bd60000000000000000000000000000000000000000000000000000000000000bda0000000000000000000000000000000000000000000000000000000000000bde0000000000000000000000000000000000000000000000000000000000000be20000000000000000000000000000000000000000000000000000000000000be60000000000000000000000000000000000000000000000000000000000000bea0000000000000000000000000000000000000000000000000000000000000bee0000000000000000000000000000000000000000000000000000000000000bf20000000000000000000000000000000000000000000000000000000000000bf80000000000000000000000000000000000000000000000000000000000000bfe0000000000000000000000000000000000000000000000000000000000000c020000000000000000000000000000000000000000000000000000000000000c060000000000000000000000000000000000000000000000000000000000000c0a0000000000000000000000000000000000000000000000000000000000000c0e0000000000000000000000000000000000000000000000000000000000000c120000000000000000000000000000000000000000000000000000000000000c160000000000000000000000000000000000000000000000000000000000000c1a0000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4554482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a494c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c54432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4554432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e45514c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c494e4b2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e555344432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4241542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5245502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a52582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4441492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4243482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e584d522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e444153482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e454f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e535754482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e444f47452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5852502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a45432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5945432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4144412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e454f532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e584c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e424e422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e414e4f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e57415645532e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b4d442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e41452e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52534b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e57414e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53545241542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5542512e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58545a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f54412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5645542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5154554d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4943582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4447422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e585a432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e42555253542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4443522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58454d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c534b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e41544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e534d4152542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e545041592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4752532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4253562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4741532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5452582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5654484f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4243442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4254542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b494e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52564e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e41524b2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5856472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414c474f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e45424c2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e58504d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4e452e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e424e54592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e43524f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5457542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001563727970746f2e5349455252412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e565359532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e484956452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e48542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e454e4a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5946492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d54412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434f4d502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e42414c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414d504c2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c454e442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e544c4f532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5844432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5853542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53545241582e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e5349474e412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e494d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e475541502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e594c442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4b542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e63727970746f2e454c412e76657273696f6e2e454c412e616464726573730000000000000000000000000000000000000000000000000000000000000000001e63727970746f2e454c412e76657273696f6e2e4553432e616464726573730000000000000000000000000000000000000000000000000000000000000000002163727970746f2e555344542e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e555344542e76657273696f6e2e54524f4e2e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e555344542e76657273696f6e2e454f532e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e555344542e76657273696f6e2e4f4d4e492e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e555344542e76657273696f6e2e4f4b432e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e46544d2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e46544d2e76657273696f6e2e424550322e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e46544d2e76657273696f6e2e4f504552412e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e465553452e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e465553452e76657273696f6e2e465553452e61646472657373000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4d415449432e76657273696f6e2e45524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011736f6369616c2e70617969642e6e616d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014736f6369616c2e706963747572652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000001177686f69732e656d61696c2e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001477686f69732e666f725f73616c652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f697066732e68746d6c2e76616c75650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a697066732e72656469726563745f646f6d61696e2e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000e647765622e697066732e68617368000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001462726f777365722e72656469726563745f75726c000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b62726f777365722e7072656665727265645f70726f746f636f6c730000000000000000000000000000000000000000000000000000000000000000000000001467756e64622e757365726e616d652e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000001667756e64622e7075626c69635f6b65792e76616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000012736f6369616c2e696d6167652e76616c756500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017736f6369616c2e747769747465722e757365726e616d65000000000000000000000000000000000000000000000000000000000000000000000000000000002276616c69646174696f6e2e736f6369616c2e747769747465722e757365726e616d65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e666f7277617264696e672e75726c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005646e732e410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e41414141000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e414141412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e41465344420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e41465344422e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e41504c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e41504c2e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e43414100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4341412e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e43444e534b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f646e732e43444e534b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e43445300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4344532e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e43455254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e434552542e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e434e414d450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e434e414d452e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4353594e430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4353594e432e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e44484349440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e44484349442e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e444c5600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e444c562e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e444e414d450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e444e414d452e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e444e534b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e444e534b45592e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e44530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e44532e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e45554934380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e45554934382e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e45554936340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e45554936342e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e48494e464f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e48494e464f2e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e48495000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4849502e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e48545450530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e48545450532e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e49505345434b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010646e732e49505345434b45592e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e4b455900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4b45592e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4b580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4b582e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e4c4f4300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e4c4f432e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4d580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4d582e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4e415054520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4e415054522e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e4e530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e4e532e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e4e534543000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e4e5345432e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e4e534543330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e4e534543332e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e4e53454333504152414d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012646e732e4e53454333504152414d2e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e4f50454e5047504b45590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012646e732e4f50454e5047504b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e50545200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5054522e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e52500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e52502e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e52525349470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e52525349472e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e53494700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5349472e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e534d494d454100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e534d494d45412e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e534f4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e534f412e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e53525600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5352562e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009646e732e53534846500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d646e732e53534846502e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e53564342000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e535643422e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006646e732e54410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e54412e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e544b4559000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e544b45592e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e544c5341000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e544c53412e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008646e732e54534947000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c646e732e545349472e74746c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e54585400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5458542e74746c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007646e732e55524900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b646e732e5552492e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a646e732e5a4f4e454d4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e646e732e5a4f4e454d442e74746c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e444f542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e554e492e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e554e492e76657273696f6e2e584441492e6164647265737300000000000000000000000000000000000000000000000000000000000000001263727970746f2e534f4c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e425553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4943502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e54484554412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e574254432e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e574254432e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e574254432e76657273696f6e2e584441492e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e46494c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434441492e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b534d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4b422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414156452e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e414156452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001563727970746f2e424c4f434b532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e534849422e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e534849422e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e534849422e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e43454c2e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e43454c2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001463727970746f2e43555344432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434554482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414d502e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e43414b452e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e43414b452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e4d494f54412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4654542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d4b522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e544655454c2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4c41592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4c554e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415641582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c454f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002563727970746f2e534146454d4f4f4e2e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002563727970746f2e534146454d4f4f4e2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5553542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e52554e452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e484241522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e54454c2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e54454c2e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e43485a2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e53555348492e76657273696f6e2e46414e544f4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53555348492e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e45474c442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e415641582e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e545553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e424550322e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e545553442e76657273696f6e2e54524f4e2e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e484254432e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e484254432e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e534e582e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e534e582e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e484f542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e484f542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e4541522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e484e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e53544554482e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4e45584f2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4e45584f2e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5041582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5354582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4d414e412e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4d414e412e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d44582e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d44582e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a454e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415252522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e424e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4c5553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4c5553442e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4752542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001163727970746f2e53432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e485553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e485553442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4352562e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4352562e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e4352562e76657273696f6e2e46414e544f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e554d412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f63727970746f2e5752582e76657273696f6e2e424550322e6164647265737300000000000000000000000000000000000000000000000000000000000000002063727970746f2e5752582e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001163727970746f2e41522e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4d472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e47542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e514e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e434853422e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f53542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e584d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b43532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4c50542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4c50542e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001563727970746f2e5853555348492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e43555344542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e464c4f572e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414e4b522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4842432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5647582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4645492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414b452e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414b452e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e31494e43482e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e434b422e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e574f4f2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e574f4f2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001463727970746f2e544954414e2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f4d492e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d494e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e534554482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5253522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4f58592e76657273696f6e2e534f4c414e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4f58592e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e52454e2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e52454e2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e5843482e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e45524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e42455032302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002363727970746f2e52454e4254432e76657273696f6e2e48524332302e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e5553444e2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e424348412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c52432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001563727970746f2e50554e4449582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4552472e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e57494e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4e5058532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e54524942452e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4149442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4153442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43554e492e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43454c4f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e44454e542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e534e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4645472e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4645472e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e534b4c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e414c5553442e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d49522e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4d49522e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001263727970746f2e474c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e504158472e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e504158472e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4346582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e554f532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e535643532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e524545462e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e474e4f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e555344502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4156412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414c43582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4557542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544f4e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e524c432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4158532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e415544494f2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5856532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e42414e442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e42414e442e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4d522e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e494e4a2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e494e4a2e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e574158502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5551432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e494f54582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e46554e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e4f4345414e2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e53414e442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e53414e442e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e435453492e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5241592e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e414e432e76657273696f6e2e54455252412e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e414e432e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000001f63727970746f2e49512e76657273696f6e2e4d415449432e6164647265737300000000000000000000000000000000000000000000000000000000000000002163727970746f2e535553442e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e535553442e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4b4c562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e42544353542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544c4d2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414b542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e53544d582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e50524f4d2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e585052542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e53524d2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002163727970746f2e53524d2e76657273696f6e2e534f4c414e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e52504c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e414749582e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e43454c522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4645542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f58542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e415244522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4154482e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e31305345542e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e504f4c592e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e475553442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4b4e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4356432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4754432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e535445454d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f524e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4545502e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4545502e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4858524f2e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4f5242532e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414c5048412e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e414c5048412e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e444f444f2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e444f444f2e76657273696f6e2e42455032302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4f474e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4e434c2e76657273696f6e2e45524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e4b4e434c2e76657273696f6e2e46414e544f4d2e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002163727970746f2e4b4e434c2e76657273696f6e2e48524332302e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d45442e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e584155542e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e564c582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5048412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4b4f42452e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e504552502e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5848562e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4554412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e534555522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001363727970746f2e4d4f4e412e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e414e542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001463727970746f2e48594452412e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a4b532e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5358502e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e435350522e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4d544c2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001163727970746f2e4e552e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5a4d542e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4c4f432e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e544b4f2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e45544e2e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e5542542e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e5542542e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000001363727970746f2e455852442e6164647265737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4e4d582e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e5249462e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53544f524a2e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002263727970746f2e53544f524a2e76657273696f6e2e48524332302e61646472657373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001263727970746f2e4156412e616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002063727970746f2e4450492e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e4450492e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e444f472e76657273696f6e2e4d415449432e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e444f472e76657273696f6e2e42455032302e61646472657373000000000000000000000000000000000000000000000000000000000000002063727970746f2e444f472e76657273696f6e2e45524332302e61646472657373000000000000000000000000000000000000000000000000000000000000001f63727970746f2e444f472e76657273696f6e2e414554482e6164647265737300000000000000000000000000000000000000000000000000000000000000001d63727970746f2e444f472e76657273696f6e2e4f502e61646472657373000000', to: '0x1bdc0fd4fbabeed3e611fd6195fcd5d41dcef393', }, response: diff --git a/src/tests/testData/liveData.json b/src/tests/testData/liveData.json index e2bf66c8..082aa280 100644 --- a/src/tests/testData/liveData.json +++ b/src/tests/testData/liveData.json @@ -1,36 +1,21 @@ { "cryptoDomainMetadata": { - "name": "test-usdt-and-dns-records.crypto", - "description": "A CNS or UNS blockchain domain. Use it to resolve your cryptocurrency addresses and decentralized websites.\nhttps://gateway.pinata.cloud/ipfs/QmQ38zzQHVfqMoLWq2VeiMLHHYki9XktzXxLYTWXt8cydu", - "external_url": "https://unstoppabledomains.com/search?searchTerm=test-usdt-and-dns-records.crypto", - "image": "https://storage.googleapis.com/dot-crypto-metadata-api/images/unstoppabledomains.svg", + "name": "reseller-test-udtesting-459239285.crypto", + "description": "A CNS or UNS blockchain domain. Use it to resolve your cryptocurrency addresses and decentralized websites.", "properties": { "records": { - "crypto.ADA.address": "DdzFFzCqrhssjmxkChyAHE9MdHJkEc4zsZe7jgum6RtGzKLkUanN1kPZ1ipVPBLwVq2TWrhmPsAvArcr47Pp1VNKmZTh6jv8ctAFVCkj", - "crypto.BCH.address": "qzx048ez005q4yhphqu2pylpfc3hy88zzu4lu6q9j8", - "crypto.BTC.address": "1MUFCFhhuApRqfbqNby6Jvvp6gbYx6yWhR", - "crypto.ETH.address": "0xe7474D07fD2FA286e7e0aa23cd107F8379085037", - "crypto.LTC.address": "ltc1qj03wgu07dqytxz4r9arc4taz2u7mzuz38xpuu4", - "crypto.USDC.address": "0x666574cAdedEB4a0f282fF0C2B3588617E29e6A0", - "crypto.USDT.version.EOS.address": "letsminesome", - "crypto.USDT.version.ERC20.address": "0xe7474D07fD2FA286e7e0aa23cd107F8379085037", - "crypto.USDT.version.OMNI.address": "19o6LvAdCPkjLi83VsjrCsmvQZUirT4KXJ", - "crypto.USDT.version.TRON.address": "TNemhXhpX7MwzZJa3oXvfCjo5pEeXrfN2h", - "crypto.XRP.address": "rMXToC1316oNyqwgQpWgSrzMUU9R6UDizW", - "crypto.ZIL.address": "zil1xftz4cd425mer6jxmtl29l28xr0zu8s5hnp9he", - "dns.A": "[\"10.0.0.1\",\"10.0.0.3\"]", - "dns.A.ttl": "98", - "dns.AAAA": "[]", - "dns.ttl": "128", - "ipfs.html.value": "QmQ38zzQHVfqMoLWq2VeiMLHHYki9XktzXxLYTWXt8cydu", - "ipfs.redirect_domain.value": "google.com", - "whois.email.value": "johnny@unstoppabledomains.com" + "crypto.DAI.address": "", + "crypto.ETH.address": "0x084Ac37CDEfE1d3b68a63c08B203EFc3ccAB9742", + "crypto.USDT.version.ERC20.address": "" } }, + "external_url": "https://unstoppabledomains.com/search?searchTerm=reseller-test-udtesting-459239285.crypto", + "image": "https://metadata.unstoppabledomains.com/image-src/reseller-test-udtesting-459239285.crypto.svg", + "image_url": "https://metadata.unstoppabledomains.com/image-src/reseller-test-udtesting-459239285.crypto.svg", "attributes": [ { "trait_type": "domain", - "value": "test-usdt-and-dns-records.crypto" + "value": "reseller-test-udtesting-459239285.crypto" }, { "trait_type": "level", @@ -38,18 +23,14 @@ }, { "trait_type": "length", - "value": 25 - }, - { - "trait_type": "IPFS Content", - "value": "QmQ38zzQHVfqMoLWq2VeiMLHHYki9XktzXxLYTWXt8cydu" + "value": 33 }, { "trait_type": "type", "value": "standard" } ], - "image_data": "\n \n unstoppabledomains_dot_crypto-\n Created with Sketch.\n \n \n \n \n \n .CRYPTO\n \n \n test-usdt-and-dns-records\n \n \n \n \n \n \n \n", + "image_data": "\n \n unstoppabledomains_dot_crypto-\n Created with Sketch.\n \n \n \n \n \n .CRYPTO\n \n \n reseller-test-udtesting-45923...\n \n \n \n \n \n \n \n", "background_color": "4C47F7" }, "zilDomainMetadata": { diff --git a/src/tests/testData/mockData.json b/src/tests/testData/mockData.json index bce64e54..27bcc833 100644 --- a/src/tests/testData/mockData.json +++ b/src/tests/testData/mockData.json @@ -142,7 +142,7 @@ "params": [ { "data": "0x4f558e79644d751c0e0112006e6d5d5d9234c9d3fae5a4646ff88a754d7fa1ed09794e94", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -164,7 +164,7 @@ "params": [ { "data": "0x4f558e794118ebbd893ecbb9f5d7a817c7d8039c1bd991b56ea243e2ae84d0a1b2c950a7", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -184,7 +184,7 @@ "params": [ { "data": "0x4f558e790f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -204,7 +204,7 @@ "params": [ { "data": "0x4f558e795c828ec285c0bf152a30a325b3963661a80cb87641d60920344caf04d4a0f31e", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -224,7 +224,7 @@ "params": [ { "data": "0x4f558e791e3f482b3363eb4710dae2cb2183128e272eafbe137f686851c1caea32502230", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -246,7 +246,7 @@ "params": [ { "data": "0x4f558e790f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -323,7 +323,7 @@ "params": [ { "data": "0x4f558e79ed0afd72b0ca62d74b891a3c8a70d90f88b8c386f188fd455bc53f58f0079334", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -364,7 +364,7 @@ "params": [ { "data": "0xa81ce6f970702ccf2d95c2c8ff666f5e4dde0ed0e83d7d7407fff6f593d4e277aac0a40c", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -372,7 +372,7 @@ "RESPONSE": { "jsonrpc": "2.0", "id": 1, - "result": "0x000000000000000000000000aad76bea7cfec82927239415bb18d2e93518ecbb" + "result": "0x000000000000000000000000801452cfac27e79a11c6b185986fde09e8637589" } }, { @@ -384,7 +384,7 @@ "params": [ { "data": "0xa81ce6f98e3f4a48d9806259e049ea529c5be0c6433ff147ad781caf8014d196c388e1df", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -392,7 +392,7 @@ "RESPONSE": { "jsonrpc": "2.0", "id": 1, - "result": "0x0000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc0086" + "result": "0x000000000000000000000000070e83fced225184e67c86302493fffcdb953f71" } }, { @@ -411,7 +411,7 @@ "RESPONSE": { "jsonrpc": "2.0", "id": 1, - "result": "0x0000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc0086" + "result": "0x000000000000000000000000070e83fced225184e67c86302493fffcdb953f71" } }, { @@ -423,7 +423,7 @@ "params": [ { "data": "0xa81ce6f99319b0a972ee595115c81afa667fc78253ff07a82fc635b39d528c759c979ebc", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -445,7 +445,7 @@ "params": [ { "data": "0xac9650d800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000000e4933c051d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000377b84a993689f621bf64877f62cf52f43fca88607c03d5d7bd72ca9a814446cf756e4e998dbffd803c21d23b06cd855cdc7a4b57706c95964a37e24b47c10fc92ebdfc3a84caa7244ea6c94a45ab1b8ffa60959949b72e435f172e03447784e5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a81ce6f977b84a993689f621bf64877f62cf52f43fca88607c03d5d7bd72ca9a814446cf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a81ce6f9756e4e998dbffd803c21d23b06cd855cdc7a4b57706c95964a37e24b47c10fc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024a81ce6f92ebdfc3a84caa7244ea6c94a45ab1b8ffa60959949b72e435f172e03447784e500000000000000000000000000000000000000000000000000000000", - "to": "0xe6729d224d00b3dd4fc731c4ee3274e35da06578" + "to": "0xe3b961856c417d081a02cba0161a051268f52677" }, "latest" ] @@ -453,7 +453,7 @@ "RESPONSE": { "jsonrpc": "2.0", "id": 1, - "result": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000030000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc008600000000000000000000000095ae1515367aa64c462c71e87157771165b1287a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000e43f36e4b986dfbe1a75cacfa60ca2bd44ae962000000000000000000000000499dd6d875787869670900a2130223d85d4f6aa7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000007fb83000b8ed59d3ead22f0d584df3a85fbc00860000000000000000000000000000000000000000000000000000000000000020000000000000000000000000aad76bea7cfec82927239415bb18d2e93518ecbb00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000" + "result": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000003000000000000000000000000070e83fced225184e67c86302493fffcdb953f7100000000000000000000000095ae1515367aa64c462c71e87157771165b1287a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000e43f36e4b986dfbe1a75cacfa60ca2bd44ae962000000000000000000000000499dd6d875787869670900a2130223d85d4f6aa7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000070e83fced225184e67c86302493fffcdb953f710000000000000000000000000000000000000000000000000000000000000020000000000000000000000000801452cfac27e79a11c6b185986fde09e863758900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000" } } ],