[ { "inputs": [ { "internalType": "address", "name": "_initialHolder", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessDenied", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationUsed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Burnt", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "source", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "requested", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "assigned", "type": "uint256" } ], "name": "RoleUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fromVal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toVal", "type": "uint256" } ], "name": "VotingPowerChanged", "type": "event" }, { "inputs": [], "name": "CANCEL_AUTHORIZATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DELEGATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_BURNS_ON_BEHALF", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_DELEGATIONS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_DELEGATIONS_ON_BEHALF", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_EIP2612_PERMITS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_EIP3009_RECEPTIONS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_EIP3009_TRANSFERS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_ERC1363_APPROVALS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_ERC1363_TRANSFERS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_OWN_BURNS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_TRANSFERS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_TRANSFERS_ON_BEHALF", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEATURE_UNSAFE_TRANSFERS", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RECEIVE_WITH_AUTHORIZATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_ACCESS_MANAGER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_ERC20_RECEIVER", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_ERC20_SENDER", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_TOKEN_CREATOR", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_TOKEN_DESTROYER", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_UPGRADE_MANAGER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TRANSFER_WITH_AUTHORIZATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "remaining", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approveAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "approveAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "authorizationState", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "cancelAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint256", "name": "exp", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "entireSupplyHistory", "outputs": [ { "components": [ { "internalType": "uint64", "name": "k", "type": "uint64" }, { "internalType": "uint192", "name": "v", "type": "uint192" } ], "internalType": "struct AdvancedERC20.KV[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "features", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getInitializedVersion", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "getRole", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintAndCall", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mintAndCall", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "exp", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractOwner", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "initialHolder", "type": "address" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "uint256", "name": "initialFeatures", "type": "uint256" } ], "name": "postConstruct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "receiveWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeMint", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNum", "type": "uint256" } ], "name": "totalSupplyAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "totalSupplyHistory", "outputs": [ { "internalType": "uint64", "name": "k", "type": "uint64" }, { "internalType": "uint192", "name": "v", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupplyHistoryLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "transferAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "transferFromAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFromAndCall", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "transferWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "unsafeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_mask", "type": "uint256" } ], "name": "updateFeatures", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "role", "type": "uint256" } ], "name": "updateRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "votingDelegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "uint256", "name": "blockNum", "type": "uint256" } ], "name": "votingPowerAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "votingPowerHistory", "outputs": [ { "internalType": "uint64", "name": "k", "type": "uint64" }, { "internalType": "uint192", "name": "v", "type": "uint192" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "votingPowerHistoryLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "votingPowerHistoryOf", "outputs": [ { "components": [ { "internalType": "uint64", "name": "k", "type": "uint64" }, { "internalType": "uint192", "name": "v", "type": "uint192" } ], "internalType": "struct AdvancedERC20.KV[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "votingPowerOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162004aa638038062004aa6833981016040819052620000349162000a45565b33604051806040016040528060078152602001662634bd31b7b4b760c91b815250604051806040016040528060038152602001622624ad60e91b815250836b1da8594328c1fd53ddc0000061ffff60008060019054906101000a900460ff16159050808015620000ab5750600054600160ff909116105b80620000c75750303b158015620000c7575060005460ff166001145b6200011f5760405162461bcd60e51b815260206004820152602e602482015260008051602062004a4683398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000143576000805461ff0019166101001790555b801562000179576000805461ff00191690556040516001815260008051602062004a668339815191529060200160405180910390a15b506200018a86868686868662000197565b5050505050505062000c40565b600054610100900460ff1615808015620001b85750600054600160ff909116105b80620001d45750303b158015620001d4575060005460ff166001145b620002285760405162461bcd60e51b815260206004820152602e602482015260008051602062004a4683398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000116565b6000805460ff1916600117905580156200024c576000805461ff0019166101001790555b60008651116200029f5760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206e616d65206973206e6f74207365740000000000000000000000604482015260640162000116565b6000855111620002f25760405162461bcd60e51b815260206004820152601760248201527f746f6b656e2073796d626f6c206973206e6f7420736574000000000000000000604482015260640162000116565b603362000300878262000b1c565b5060346200030f868262000b1c565b508215806200032657506001600160a01b03841615155b620003825760405162461bcd60e51b815260206004820152602560248201527f5f696e697469616c486f6c646572206e6f742073657420287a65726f20616464604482015264726573732960d81b606482015260840162000116565b82156200039557620003958484620003fd565b6001600160a01b038716151580620003ac57508115155b15620003be57620003be878362000662565b8015620003f4576000805461ff00191690556040516001815260008051602062004a668339815191529060200160405180910390a15b50505050505050565b6001600160a01b038216620004445760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000116565b60355481810111620004a35760405162461bcd60e51b815260206004820152602160248201527f7a65726f2076616c7565206f722061726974686d65746963206f766572666c6f6044820152607760f81b606482015260840162000116565b6035546001600160c01b0390620004bc90839062000bfe565b11156200050c5760405162461bcd60e51b815260206004820152601f60248201527f746f74616c20737570706c79206f766572666c6f77202875696e743139322900604482015260640162000116565b806035600082825462000520919062000bfe565b90915550506001600160a01b038216600090815260366020526040812080548392906200054f90849062000bfe565b909155506200056e90506039620020a4620006ef60201b178362000706565b50506001600160a01b038083166000908152603760205260408120546200059a92339291168462000889565b6040518181526001600160a01b0383169033907f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f09060200160405180910390a36040518181526001600160a01b0383169060009033907fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f9060200160405180910390a46040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16620006cf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000116565b620006de8260001980620009dd565b620006eb308280620009dd565b5050565b6000620006fd828462000bfe565b90505b92915050565b82546000908190156200075f5784548590620007259060019062000c14565b8154811062000738576200073862000c2a565b6000918252602090912001546801000000000000000090046001600160c01b031662000762565b60005b6001600160c01b031691506200077982848660201c565b855490915015801590620007c657508454439086906200079c9060019062000c14565b81548110620007af57620007af62000c2a565b6000918252602090912001546001600160401b0316145b156200082a57845481908690620007e09060019062000c14565b81548110620007f357620007f362000c2a565b9060005260206000200160000160086101000a8154816001600160c01b0302191690836001600160c01b0316021790555062000881565b604080518082019091526001600160401b0343811682526001600160c01b0380841660208085019182528954600181018b5560008b8152919091209451915190921668010000000000000000029216919091179101555b935093915050565b816001600160a01b0316836001600160a01b03161480620008a8575080155b620009d7576001600160a01b0383161562000942576001600160a01b0383166000908152603860209081526040822091908190620008f490849062000a37901b620020b0178662000706565b91509150856001600160a01b0316876001600160a01b031660008051602062004a86833981519152848460405162000936929190918252602082015260400190565b60405180910390a35050505b6001600160a01b03821615620009d7576001600160a01b038216600090815260386020908152604082209190819062000989908490620006ef901b620020a4178662000706565b91509150846001600160a01b0316876001600160a01b031660008051602062004a868339815191528484604051620009cb929190918252602082015260400190565b60405180910390a35050505b50505050565b6001600160a01b03831660008181526001602090815260409182902084905581518581529081018490527fe9be537308880e0f56b7d7cfd7abf85f14c4934486d138f848b92a0cbaf659b4910160405180910390a2505050565b6000620006fd828462000c14565b60006020828403121562000a5857600080fd5b81516001600160a01b038116811462000a7057600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000aa257607f821691505b60208210810362000ac357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b1757600081815260208120601f850160051c8101602086101562000af25750805b601f850160051c820191505b8181101562000b135782815560010162000afe565b5050505b505050565b81516001600160401b0381111562000b385762000b3862000a77565b62000b508162000b49845462000a8d565b8462000ac9565b602080601f83116001811462000b88576000841562000b6f5750858301515b600019600386901b1c1916600185901b17855562000b13565b600085815260208120601f198616915b8281101562000bb95788860151825594840194600190910190840162000b98565b508582101562000bd85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000700576200070062000be8565b8181038181111562000700576200070062000be8565b634e487b7160e01b600052603260045260246000fd5b613df68062000c506000396000f3fe608060405234801561001057600080fd5b506004361061043e5760003560e01c806387793f3e11610236578063b88d4fde1161013b578063d9169487116100c3578063e94a010211610087578063e94a010214610a22578063e98f5ba714610a5b578063ef55bec614610a65578063f63c2f8214610a78578063f9cf927114610a8057600080fd5b8063d91694871461097e578063dd62ed3e146109a5578063e3ee160e146109de578063e62cac76146109f1578063e7a324dc146109fb57600080fd5b8063c5ff500c1161010a578063c5ff500c14610928578063cae9ca5114610932578063d505accf14610945578063d5bb7f6714610958578063d8fbe9941461096b57600080fd5b8063b88d4fde146108e7578063bcc3f3bd146108fa578063c0d6568d1461090d578063c1d34b891461091557600080fd5b80639dc29fac116101be578063ae5b102e1161018d578063ae5b102e146108a1578063ae60bda4146108b4578063ae682e2e146108bf578063b3c65015146108ca578063b66dbdc5146108df57600080fd5b80639dc29fac14610841578063a0cc6a6814610854578063a457c2d71461087b578063a9059cbb1461088e57600080fd5b806394f4f9301161020557806394f4f930146107ed57806395d89b411461080057806397ba461114610808578063981b24d01461081b57806398de4ba31461082e57600080fd5b806387793f3e1461079f5780638832e6e3146107c85780638d4e57e6146107db5780638f6fba8c146107e557600080fd5b806339509351116103475780635c19a95c116102cf57806370a082311161029357806370a08231146107095780637815ef0c146107325780637ecebe00146107455780637f2eecc3146107655780637fd491b01461078c57600080fd5b80635c19a95c146106955780635e2dc2b7146106a857806364cb8b96146106b1578063653de620146106c65780636641d9a0146106cf57600080fd5b8063442767331161031657806344276733146106285780634721272d1461065157806350c29e371461065a57806359b961ef1461066f5780635a049a701461068257600080fd5b806339509351146105e75780633e9c5f7e146105fa5780634000aea01461060257806340c10f191461061557600080fd5b80631e0fa234116103ca5780632d4c39ea116103995780632d4c39ea1461058357806330adf81f1461058b578063313ce567146105b25780633177029f146105cc5780633644e515146105df57600080fd5b80631e0fa234146104f357806320606b701461053457806323b872dd1461055b5780632b5214161461056e57600080fd5b8063136d035f11610411578063136d035f146104a657806313873a24146104c457806318160ddd146104cc5780631993f554146104e35780631a0b04ea146104eb57600080fd5b806301ffc9a71461044357806306fdde031461046b578063095ea7b3146104805780631296ee6214610493575b600080fd5b610456610451366004613567565b610a93565b60405190151581526020015b60405180910390f35b610473610b1b565b60405161046291906135ca565b61045661048e3660046135f9565b610ba9565b6104566104a13660046135f9565b610bbf565b6104af61080081565b60405163ffffffff9091168152602001610462565b6104af608081565b6104d560355481565b604051908152602001610462565b6104af600481565b6104af600881565b61051c610501366004613623565b6037602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610462565b6104d57f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61045661056936600461363e565b610bd3565b306000908152600160205260409020546104d5565b6104af604081565b6104d57f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6105ba601281565b60405160ff9091168152602001610462565b6104566105da3660046135f9565b610c40565b6104d5610c5c565b6104566105f53660046135f9565b610cf8565b6104af602081565b61045661061036600461371c565b610da4565b6104566106233660046135f9565b610db2565b6104d5610636366004613623565b6001600160a01b031660009081526001602052604090205490565b6104af61020081565b61066d610668366004613772565b610e06565b005b61066d61067d36600461363e565b61106d565b61066d610690366004613819565b61107e565b61066d6106a3366004613623565b611129565b6104af61040081565b6106b961118c565b6040516104629190613867565b6104af61010081565b6106e26106dd3660046138c8565b611208565b604080516001600160401b0390931683526001600160c01b03909116602083015201610462565b6104d5610717366004613623565b6001600160a01b031660009081526036602052604090205490565b6106b9610740366004613623565b611243565b6104d5610753366004613623565b603a6020526000908152604090205481565b6104d57fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6106e261079a3660046135f9565b6112d5565b6104d56107ad366004613623565b6001600160a01b031660009081526038602052604090205490565b6104566107d636600461371c565b61131e565b6104af6201000081565b6104af600281565b6104d56107fb3660046135f9565b61133a565b6104736113a3565b61045661081636600461371c565b6113b0565b6104d56108293660046138c8565b6113cc565b61045661083c3660046135f9565b61141e565b61045661084f3660046135f9565b61143a565b6104d57f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b6104566108893660046135f9565b611894565b61045661089c3660046135f9565b611971565b61066d6108af3660046135f9565b61197e565b6104d5600160fe1b81565b6104d5600160ff1b81565b60005460405160ff9091168152602001610462565b6039546104d5565b6104566108f53660046138e1565b6119eb565b6104d5610908366004613623565b611a11565b6104af600181565b6104566109233660046138e1565b611a84565b6104af6204000081565b61045661094036600461371c565b611af5565b61066d610953366004613948565b611b64565b61066d6109663660046138c8565b611cb3565b61045661097936600461363e565b611cbd565b6104d57f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6104d56109b33660046139b2565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b61066d6109ec3660046139e5565b611cda565b6104af6202000081565b6104d57fff41620983935eb4d4a3c7384a066ca8c1d10cef9a5eca9eb97ca735cd14a75581565b610456610a303660046135f9565b6001600160a01b03919091166000908152603b60209081526040808320938352929052205460ff1690565b6104af6208000081565b61066d610a733660046139e5565b611e35565b6104af601081565b61066d610a8e366004613a63565b611fb4565b60006001600160e01b031982166301ffc9a760e01b1480610ac457506001600160e01b031982166336372b0760e01b145b80610adf57506001600160e01b0319821663b0202a1160e01b145b80610afa57506001600160e01b03198216634ec7fbed60e11b145b80610b1557506001600160e01b03198216635ffa99dd60e11b145b92915050565b60338054610b2890613aa1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5490613aa1565b8015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b505050505081565b6000610bb63384846120bc565b50600192915050565b6000610bcc338484611cbd565b9392505050565b6000610bdf60046121cd565b80610bf25750610bf283620400006121e9565b80610c045750610c046208000061220b565b15610c1957610c1484848461106d565b610c36565b610c34848484604051806020016040528060008152506119eb565b505b5060019392505050565b6000610bcc838360405180602001604052806000815250611af5565b604080518082018252600f81526e416476616e6365644552433230763160881b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f65218aa0cdc6725da873801e9daf9d54f230d8a515289f76c8bd31dd8648c50d81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b336000908152603c602090815260408083206001600160a01b03861684529091528120548281018110610d8e5760405162461bcd60e51b815260206004820152603360248201527f7a65726f2076616c756520617070726f76616c20696e637265617365206f722060448201527261726974686d65746963206f766572666c6f7760681b60648201526084015b60405180910390fd5b610d9c8461048e8584613af1565b949350505050565b6000610d9c33858585611a84565b6000610dc06201000061220b565b610dfc5760405162461bcd60e51b815260206004820152600d60248201526c1858d8d95cdcc819195b9a5959609a1b6044820152606401610d85565b610bb68383612217565b600054610100900460ff1615808015610e265750600054600160ff909116105b80610e405750303b158015610e40575060005460ff166001145b610ea35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d85565b6000805460ff191660011790558015610ec6576000805461ff0019166101001790555b6000865111610f0f5760405162461bcd60e51b81526020600482015260156024820152741d1bdad95b881b985b59481a5cc81b9bdd081cd95d605a1b6044820152606401610d85565b6000855111610f605760405162461bcd60e51b815260206004820152601760248201527f746f6b656e2073796d626f6c206973206e6f74207365740000000000000000006044820152606401610d85565b6033610f6c8782613b4a565b506034610f798682613b4a565b50821580610f8f57506001600160a01b03841615155b610fe95760405162461bcd60e51b815260206004820152602560248201527f5f696e697469616c486f6c646572206e6f742073657420287a65726f20616464604482015264726573732960d81b6064820152608401610d85565b8215610ff957610ff98484612217565b6001600160a01b03871615158061100f57508115155b1561101e5761101e878361243f565b8015611064576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b611079338484846124c2565b505050565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960208201526001600160a01b03871691810191909152606081018590526000906110e2906080015b604051602081830303815290604052858585612a50565b9050856001600160a01b0316816001600160a01b0316146111155760405162461bcd60e51b8152600401610d8590613c09565b61112186866001612ab5565b505050505050565b61113360206121cd565b61117f5760405162461bcd60e51b815260206004820152601860248201527f64656c65676174696f6e73206172652064697361626c656400000000000000006044820152606401610d85565b6111893382612bc3565b50565b60606039805480602002602001604051908101604052809291908181526020016000905b828210156111ff57600084815260209081902060408051808201909152908401546001600160401b0381168252600160401b90046001600160c01b0316818301528252600190920191016111b0565b50505050905090565b6039818154811061121857600080fd5b6000918252602090912001546001600160401b0381169150600160401b90046001600160c01b031682565b6001600160a01b0381166000908152603860209081526040808320805482518185028101850190935280835260609492939192909184015b828210156112ca57600084815260209081902060408051808201909152908401546001600160401b0381168252600160401b90046001600160c01b03168183015282526001909201910161127b565b505050509050919050565b603860205281600052604060002081815481106112f157600080fd5b6000918252602090912001546001600160401b0381169250600160401b90046001600160c01b0316905082565b600061132a8484610db2565b50610c3660008585856001612c5f565b60004382106113815760405162461bcd60e51b8152602060048201526013602482015272189b1bd8dac81b9bdd081e595d081b5a5b9959606a1b6044820152606401610d85565b6001600160a01b0383166000908152603860205260409020610bcc9083612da0565b60348054610b2890613aa1565b60006113bc8484610db2565b50610c3660008585856000612c5f565b60004382106114135760405162461bcd60e51b8152602060048201526013602482015272189b1bd8dac81b9bdd081e595d081b5a5b9959606a1b6044820152606401610d85565b610b15603983612da0565b6000610bcc8383604051806020016040528060008152506113b0565b60006114486202000061220b565b61166b576001600160a01b03831633148015611469575061146960086121cd565b8061148d57506001600160a01b038316331480159061148d575061148d60106121cd565b6001600160a01b03841633146114d8576040518060400160405280601c81526020017f6275726e73206f6e20626568616c66206172652064697361626c656400000000815250611504565b60405180604001604052806012815260200171189d5c9b9cc8185c9948191a5cd8589b195960721b8152505b906115225760405162461bcd60e51b8152600401610d8591906135ca565b506001600160a01b038316331461166b576001600160a01b0383166000908152603c60209081526040808320338452909152902054828110156115a75760405162461bcd60e51b815260206004820152601d60248201527f6275726e20616d6f756e74206578636565647320616c6c6f77616e63650000006044820152606401610d85565b600019811015611669576115bb8382613c34565b6001600160a01b0385166000818152603c60209081526040808320338085529252909120839055919250907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a76116118685613af1565b60408051918252602082018690520160405180910390a360405181815233906001600160a01b038616907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a35b505b816000036116ad5760405162461bcd60e51b815260206004820152600f60248201526e3d32b937903b30b63ab290313ab93760891b6044820152606401610d85565b6001600160a01b0383166117035760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610d85565b6001600160a01b03831660009081526036602052604090205482111561176b5760405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006044820152606401610d85565b6001600160a01b03831660009081526036602052604081208054849290611793908490613c34565b9250508190555081603560008282546117ac9190613c34565b909155506117c0905060396120b084612f83565b50506001600160a01b038084166000908152603760205260408120546117eb923392911690856130ea565b6040518281526001600160a01b0384169033907fe8a89cc6e5096f9d9f43de82c077c1f4cfe707c0e0c2032176c68813b9ae6a5c9060200160405180910390a36040518281526000906001600160a01b038516903390600080516020613d818339815191529060200160405180910390a46040518281526000906001600160a01b03851690600080516020613da18339815191529060200160405180910390a350600192915050565b336000908152603c602090815260408083206001600160a01b0386168452909152812054826119055760405162461bcd60e51b815260206004820152601c60248201527f7a65726f2076616c756520617070726f76616c206465637265617365000000006044820152606401610d85565b828110156119635760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d85565b610d9c8461048e8584613c34565b6000610bcc338484610bd3565b61198b600160ff1b613239565b6119e782826119e2336119b3876001600160a01b031660009081526001602052604090205490565b6001600160a01b0391909116600090815260016020526040902054600019808818821618908716919091171690565b61324a565b5050565b60006119f885858561106d565b611a06858585856001612c5f565b506001949350505050565b6001600160a01b0381166000908152603860205260408120805415611a715780548190611a4090600190613c34565b81548110611a5057611a50613c47565b600091825260209091200154600160401b90046001600160c01b0316611a74565b60005b6001600160c01b03169392505050565b6000611a9060806121cd565b611adc5760405162461bcd60e51b815260206004820152601e60248201527f45524331333633207472616e7366657273206172652064697361626c656400006044820152606401610d85565b611ae785858561106d565b611a06858585856000612c5f565b6000611b026101006121cd565b611b4e5760405162461bcd60e51b815260206004820152601e60248201527f4552433133363320617070726f76616c73206172652064697361626c656400006044820152606401610d85565b611b588484610ba9565b50610c368484846132a4565b611b6f6102006121cd565b611bbb5760405162461bcd60e51b815260206004820152601c60248201527f45495032363132207065726d697473206172652064697361626c6564000000006044820152606401610d85565b6001600160a01b0387166000908152603a602052604081208054611c4c917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9187611c0b83613c5d565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016110cb565b9050876001600160a01b0316816001600160a01b031614611c7f5760405162461bcd60e51b8152600401610d8590613c09565b844210611c9e5760405162461bcd60e51b8152600401610d8590613c76565b611ca98888886120bc565b5050505050505050565b611189308261197e565b6000610d9c84848460405180602001604052806000815250611a84565b611ce56104006121cd565b611d315760405162461bcd60e51b815260206004820152601e60248201527f45495033303039207472616e7366657273206172652064697361626c656400006044820152606401610d85565b6000611d767f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760001b8b8b8b8b8b8b6040516020016110cb9796959493929190613ca1565b9050896001600160a01b0316816001600160a01b031614611da95760405162461bcd60e51b8152600401610d8590613c09565b864211611df25760405162461bcd60e51b81526020600482015260176024820152761cda59db985d1d5c99481b9bdd081e595d081d985b1a59604a1b6044820152606401610d85565b854210611e115760405162461bcd60e51b8152600401610d8590613c76565b611e1d8a866000612ab5565b611e29818b8b8b6124c2565b50505050505050505050565b611e406108006121cd565b611e8c5760405162461bcd60e51b815260206004820152601f60248201527f4549503330303920726563657074696f6e73206172652064697361626c6564006044820152606401610d85565b6000611ed17fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860001b8b8b8b8b8b8b6040516020016110cb9796959493929190613ca1565b9050896001600160a01b0316816001600160a01b031614611f045760405162461bcd60e51b8152600401610d8590613c09565b864211611f4d5760405162461bcd60e51b81526020600482015260176024820152761cda59db985d1d5c99481b9bdd081e595d081d985b1a59604a1b6044820152606401610d85565b854210611f6c5760405162461bcd60e51b8152600401610d8590613c76565b6001600160a01b0389163314611e115760405162461bcd60e51b815260206004820152600d60248201526c1858d8d95cdcc819195b9a5959609a1b6044820152606401610d85565b611fbe60406121cd565b6120155760405162461bcd60e51b815260206004820152602260248201527f64656c65676174696f6e73206f6e20626568616c66206172652064697361626c604482015261195960f21b6064820152608401610d85565b604080517fff41620983935eb4d4a3c7384a066ca8c1d10cef9a5eca9eb97ca735cd14a75560208201526001600160a01b03881691810191909152606081018690526080810185905260009061206d9060a0016110cb565b905084421061208e5760405162461bcd60e51b8152600401610d8590613c76565b61209a81876000612ab5565b6110648188612bc3565b6000610bcc8284613af1565b6000610bcc8284613c34565b6001600160a01b0382166121125760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610d85565b6001600160a01b038381166000818152603c602090815260408083209487168084529482529182902080549086905582518181529182018690529392917fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7910160405180910390a3826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516121bf91815260200190565b60405180910390a350505050565b30600090815260016020526040812054610b15905b8316831490565b6001600160a01b038216600090815260016020526040812054610bcc906121e2565b6000610b1533836121e9565b6001600160a01b03821661225c5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610d85565b603554818101116122b95760405162461bcd60e51b815260206004820152602160248201527f7a65726f2076616c7565206f722061726974686d65746963206f766572666c6f6044820152607760f81b6064820152608401610d85565b6035546001600160c01b03906122d0908390613af1565b111561231e5760405162461bcd60e51b815260206004820152601f60248201527f746f74616c20737570706c79206f766572666c6f77202875696e7431393229006044820152606401610d85565b80603560008282546123309190613af1565b90915550506001600160a01b0382166000908152603660205260408120805483929061235d908490613af1565b90915550612371905060396120a483612f83565b50506001600160a01b0380831660009081526037602052604081205461239b9233929116846130ea565b6040518181526001600160a01b0383169033907f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f09060200160405180910390a36040518181526001600160a01b038316906000903390600080516020613d818339815191529060200160405180910390a46040518181526001600160a01b03831690600090600080516020613da18339815191529060200160405180910390a35050565b600054610100900460ff166124aa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d85565b6124b7826000198061324a565b6119e730828361324a565b836001600160a01b0316836001600160a01b03161480156124e857506124e860016121cd565b806125155750836001600160a01b0316836001600160a01b031614158015612515575061251560026121cd565b846001600160a01b0316846001600160a01b031614612569576040518060400160405280602081526020017f7472616e7366657273206f6e20626568616c66206172652064697361626c6564815250612599565b604051806040016040528060168152602001751d1c985b9cd9995c9cc8185c9948191a5cd8589b195960521b8152505b906125b75760405162461bcd60e51b8152600401610d8591906135ca565b506001600160a01b03831661260e5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610d85565b6001600160a01b0382166126645760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610d85565b306001600160a01b038316036126e25760405162461bcd60e51b815260206004820152603f60248201527f696e76616c696420726563697069656e7420287472616e7366657220746f207460448201527f686520746f6b656e20736d61727420636f6e747261637420697473656c6629006064820152608401610d85565b8060000361276f57816001600160a01b0316836001600160a01b0316856001600160a01b0316600080516020613d818339815191528460405161272791815260200190565b60405180910390a4816001600160a01b0316836001600160a01b0316600080516020613da18339815191528360405161276291815260200190565b60405180910390a3612a4a565b836001600160a01b0316836001600160a01b0316146128dd576001600160a01b038084166000908152603c6020908152604080832093881683529290522054818110156128085760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b6064820152608401610d85565b6000198110156128db5761281c8282613c34565b6001600160a01b038086166000818152603c60209081526040808320948b16808452949091529020839055919250907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a76128768585613af1565b60408051918252602082018690520160405180910390a3846001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128d291815260200190565b60405180910390a35b505b6001600160a01b0383166000908152603660205260409020548111156129455760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610d85565b6001600160a01b0383166000908152603660205260408120805483929061296d908490613c34565b90915550506001600160a01b0382166000908152603660205260408120805483929061299a908490613af1565b90915550506001600160a01b038084166000908152603760205260408082205485841683529120546129d292879281169116846130ea565b816001600160a01b0316836001600160a01b0316856001600160a01b0316600080516020613d8183398151915284604051612a0f91815260200190565b60405180910390a4816001600160a01b0316836001600160a01b0316600080516020613da1833981519152836040516121bf91815260200190565b50505050565b8351602085012060009081612a63610c5c565b60405161190160f01b60208201526022810191909152604281018390526062016040516020818303038152906040528051906020012090506000612aa9828888886133d0565b98975050505050505050565b6001600160a01b0383166000908152603b6020908152604080832085845290915290205460ff1615612b195760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964206e6f6e636560981b6044820152606401610d85565b6001600160a01b0383166000908152603b602090815260408083208584529091529020805460ff191660011790558015612b885760405182906001600160a01b038516907f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8190600090a3505050565b60405182906001600160a01b038516907f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a590600090a3505050565b6001600160a01b0380831660009081526037602081815260408084208054603684529190942054929091528484166001600160a01b0319821617909255911690612c0f848385846130ea565b826001600160a01b0316826001600160a01b0316856001600160a01b03167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a450505050565b836001600160a01b03163b600003612cb35780612cae5760405162461bcd60e51b815260206004820152600d60248201526c1153d0481c9958da5c1a595b9d609a1b6044820152606401610d85565b612d99565b604051632229f29760e21b81526000906001600160a01b038616906388a7ca5c90612ce89033908a9089908990600401613cdd565b6020604051808303816000875af1158015612d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2b9190613d1a565b90506001600160e01b03198116632229f29760e21b146111215760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206f6e5472616e73666572526563656976656420726573706f6044820152626e736560e81b6064820152608401610d85565b5050505050565b81546000908103612db357506000610b15565b825482908490612dc590600190613c34565b81548110612dd557612dd5613c47565b6000918252602090912001546001600160401b031611612e325782548390612dff90600190613c34565b81548110612e0f57612e0f613c47565b600091825260209091200154600160401b90046001600160c01b03169050610b15565b8183600081548110612e4657612e46613c47565b6000918252602090912001546001600160401b03161115612e6957506000610b15565b82546000908190612e7c90600190613c34565b90505b81811115612f4c5760006002612e958484613c34565b612e9f9190613d37565b612ea99083613c34565b90506000868281548110612ebf57612ebf613c47565b6000918252602091829020604080518082019091529101546001600160401b038116808352600160401b9091046001600160c01b0316928201929092529150869003612f1d57602001516001600160c01b03169350610b1592505050565b80516001600160401b0316861115612f3757819350612f45565b612f42600183613c34565b92505b5050612e7f565b848281548110612f5e57612f5e613c47565b600091825260209091200154600160401b90046001600160c01b031695945050505050565b8254600090819015612fd05784548590612f9f90600190613c34565b81548110612faf57612faf613c47565b600091825260209091200154600160401b90046001600160c01b0316612fd3565b60005b6001600160c01b03169150612fec82848663ffffffff16565b855490915015801590613033575084544390869061300c90600190613c34565b8154811061301c5761301c613c47565b6000918252602090912001546001600160401b0316145b156130905784548190869061304a90600190613c34565b8154811061305a5761305a613c47565b9060005260206000200160000160086101000a8154816001600160c01b0302191690836001600160c01b031602179055506130e2565b604080518082019091526001600160401b0343811682526001600160c01b0380841660208085019182528954600181018b5560008b81529190912094519151909216600160401b029216919091179101555b935093915050565b816001600160a01b0316836001600160a01b03161480613108575080155b612a4a576001600160a01b038316156131a0576001600160a01b03831660009081526038602052604081209080613142836120b086612f83565b91509150856001600160a01b0316876001600160a01b03167fd1404f22081753a56b50e0d5ff5c9ed0e4a3a840e1171a443721a342e71bb5c18484604051613194929190918252602082015260400190565b60405180910390a35050505b6001600160a01b03821615612a4a576001600160a01b038216600090815260386020526040812090806131d6836120a486612f83565b91509150846001600160a01b0316876001600160a01b03167fd1404f22081753a56b50e0d5ff5c9ed0e4a3a840e1171a443721a342e71bb5c18484604051613228929190918252602082015260400190565b60405180910390a350505050505050565b6111896132458261220b565b613533565b6001600160a01b03831660008181526001602090815260409182902084905581518581529081018490527fe9be537308880e0f56b7d7cfd7abf85f14c4934486d138f848b92a0cbaf659b4910160405180910390a2505050565b6000836001600160a01b03163b116132ec5760405162461bcd60e51b815260206004820152600b60248201526a22a7a09039b832b73232b960a91b6044820152606401610d85565b6040516307b04a2d60e41b81526000906001600160a01b03851690637b04a2d09061331f90339087908790600401613d59565b6020604051808303816000875af115801561333e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133629190613d1a565b90506001600160e01b031981166307b04a2d60e41b14612a4a5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206f6e417070726f76616c526563656976656420726573706f6044820152626e736560e81b6064820152608401610d85565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156134425760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964207369676e6174757265202773272076616c756500000000006044820152606401610d85565b8360ff16601b148061345757508360ff16601c145b6134a35760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964207369676e6174757265202776272076616c756500000000006044820152606401610d85565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156134f7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661352a5760405162461bcd60e51b8152600401610d8590613c09565b95945050505050565b8061118957604051634ca8886760e01b815260040160405180910390fd5b6001600160e01b03198116811461118957600080fd5b60006020828403121561357957600080fd5b8135610bcc81613551565b6000815180845260005b818110156135aa5760208185018101518683018201520161358e565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610bcc6020830184613584565b80356001600160a01b03811681146135f457600080fd5b919050565b6000806040838503121561360c57600080fd5b613615836135dd565b946020939093013593505050565b60006020828403121561363557600080fd5b610bcc826135dd565b60008060006060848603121561365357600080fd5b61365c846135dd565b925061366a602085016135dd565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126136a157600080fd5b81356001600160401b03808211156136bb576136bb61367a565b604051601f8301601f19908116603f011681019082821181831017156136e3576136e361367a565b816040528381528660208588010111156136fc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561373157600080fd5b61373a846135dd565b92506020840135915060408401356001600160401b0381111561375c57600080fd5b61376886828701613690565b9150509250925092565b60008060008060008060c0878903121561378b57600080fd5b613794876135dd565b955060208701356001600160401b03808211156137b057600080fd5b6137bc8a838b01613690565b965060408901359150808211156137d257600080fd5b506137df89828a01613690565b9450506137ee606088016135dd565b92506080870135915060a087013590509295509295509295565b803560ff811681146135f457600080fd5b600080600080600060a0868803121561383157600080fd5b61383a866135dd565b94506020860135935061384f60408701613808565b94979396509394606081013594506080013592915050565b602080825282518282018190526000919060409081850190868401855b828110156138bb57815180516001600160401b031685528601516001600160c01b0316868501529284019290850190600101613884565b5091979650505050505050565b6000602082840312156138da57600080fd5b5035919050565b600080600080608085870312156138f757600080fd5b613900856135dd565b935061390e602086016135dd565b92506040850135915060608501356001600160401b0381111561393057600080fd5b61393c87828801613690565b91505092959194509250565b600080600080600080600060e0888a03121561396357600080fd5b61396c886135dd565b965061397a602089016135dd565b9550604088013594506060880135935061399660808901613808565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156139c557600080fd5b6139ce836135dd565b91506139dc602084016135dd565b90509250929050565b60008060008060008060008060006101208a8c031215613a0457600080fd5b613a0d8a6135dd565b9850613a1b60208b016135dd565b975060408a0135965060608a0135955060808a0135945060a08a01359350613a4560c08b01613808565b925060e08a013591506101008a013590509295985092959850929598565b60008060008060008060c08789031215613a7c57600080fd5b613a85876135dd565b955060208701359450604087013593506137ee60608801613808565b600181811c90821680613ab557607f821691505b602082108103613ad557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1557610b15613adb565b601f82111561107957600081815260208120601f850160051c81016020861015613b2b5750805b601f850160051c820191505b8181101561112157828155600101613b37565b81516001600160401b03811115613b6357613b6361367a565b613b7781613b718454613aa1565b84613b04565b602080601f831160018114613bac5760008415613b945750858301515b600019600386901b1c1916600185901b178555611121565b600085815260208120601f198616915b82811015613bdb57888601518255948401946001909101908401613bbc565b5085821015613bf95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602080825260119082015270696e76616c6964207369676e617475726560781b604082015260600190565b81810381811115610b1557610b15613adb565b634e487b7160e01b600052603260045260246000fd5b600060018201613c6f57613c6f613adb565b5060010190565b6020808252601190820152701cda59db985d1d5c9948195e1c1a5c9959607a1b604082015260600190565b9687526001600160a01b0395861660208801529390941660408601526060850191909152608084015260a083019190915260c082015260e00190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613d1090830184613584565b9695505050505050565b600060208284031215613d2c57600080fd5b8151610bcc81613551565b600082613d5457634e487b7160e01b600052601260045260246000fd5b500490565b60018060a01b038416815282602082015260606040820152600061352a606083018461358456fed1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f26bd73834e89ed93abb879fec1792bd3efc5337d6ff131af49d39b2b4f504e264736f6c63430008140033496e697469616c697a61626c653a20636f6e747261637420697320616c7265617f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498d1404f22081753a56b50e0d5ff5c9ed0e4a3a840e1171a443721a342e71bb5c1000000000000000000000000c93c904ffe3d55e15483ef37e38ecaf8fe003ba7
0x000000000000000000000000c93c904ffe3d55e15483ef37e38ecaf8fe003ba7
----Decoded View------------Arg [0] : _initialHolder (address): 0xC93c904fFE3d55E15483eF37e38ECAF8Fe003Ba7
----Encoded View------------Arg [0] : 0x000000000000000000000000c93c904ffe3d55e15483ef37e38ecaf8fe003ba7