UNPKG

@lukso/lsp8-contracts

Version:

Package for the LSP8 Identifiable Digital Asset standard

1,706 lines 131 kB
{ "_format": "hh3-artifact-1", "contractName": "LSP8CustomizableToken", "sourceName": "contracts/presets/LSP8CustomizableToken.sol", "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "newOwner_", "type": "address" }, { "internalType": "uint256", "name": "lsp4TokenType_", "type": "uint256" }, { "internalType": "uint256", "name": "lsp8TokenIdFormat_", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "isMintable", "type": "bool" }, { "internalType": "bytes32[]", "name": "initialMintTokenIds", "type": "bytes32[]" } ], "internalType": "struct LSP8MintableParams", "name": "mintableParams", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "tokenBalanceCap", "type": "uint256" }, { "internalType": "uint256", "name": "tokenSupplyCap", "type": "uint256" } ], "internalType": "struct LSP8CappedParams", "name": "cappedParams", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "transferLockStart", "type": "uint256" }, { "internalType": "uint256", "name": "transferLockEnd", "type": "uint256" } ], "internalType": "struct LSP8NonTransferableParams", "name": "nonTransferableParams", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "isRevokable", "type": "bool" } ], "internalType": "struct LSP8RevokableParams", "name": "revokableParams", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [], "name": "AccessControlCannotSetAdminForDefaultAdminRole", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ERC725Y_DataKeysValuesEmptyArray", "type": "error" }, { "inputs": [], "name": "ERC725Y_DataKeysValuesLengthMismatch", "type": "error" }, { "inputs": [], "name": "ERC725Y_MsgValueDisallowed", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "storedData", "type": "bytes" } ], "name": "InvalidExtensionAddress", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "InvalidFunctionSelector", "type": "error" }, { "inputs": [], "name": "LSP4TokenNameNotEditable", "type": "error" }, { "inputs": [], "name": "LSP4TokenSymbolNotEditable", "type": "error" }, { "inputs": [], "name": "LSP4TokenTypeNotEditable", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "callIndex", "type": "uint256" } ], "name": "LSP8BatchCallFailed", "type": "error" }, { "inputs": [], "name": "LSP8CannotSendToAddressZero", "type": "error" }, { "inputs": [], "name": "LSP8CannotUpdateTransferLockPeriod", "type": "error" }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "currentBalance", "type": "uint256" }, { "internalType": "uint256", "name": "tokenBalanceCap", "type": "uint256" } ], "name": "LSP8CappedBalanceExceeded", "type": "error" }, { "inputs": [], "name": "LSP8CappedSupplyCannotMintOverCap", "type": "error" }, { "inputs": [], "name": "LSP8InvalidTransferBatch", "type": "error" }, { "inputs": [], "name": "LSP8InvalidTransferLockPeriod", "type": "error" }, { "inputs": [], "name": "LSP8MintDisabled", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "LSP8NonExistentTokenId", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "LSP8NonExistingOperator", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "address", "name": "caller", "type": "address" } ], "name": "LSP8NotTokenOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "address", "name": "caller", "type": "address" } ], "name": "LSP8NotTokenOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenReceiver", "type": "address" } ], "name": "LSP8NotifyTokenReceiverContractMissingLSP1Interface", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "tokenReceiver", "type": "address" } ], "name": "LSP8NotifyTokenReceiverIsEOA", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, { "inputs": [], "name": "LSP8RevokableFeatureDisabled", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" }, { "internalType": "address", "name": "tokenOwner", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "LSP8RevokeOperatorNotAuthorized", "type": "error" }, { "inputs": [], "name": "LSP8TokenAlreadyTransferable", "type": "error" }, { "inputs": [], "name": "LSP8TokenContractCannotHoldValue", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "LSP8TokenIdAlreadyMinted", "type": "error" }, { "inputs": [], "name": "LSP8TokenIdFormatNotEditable", "type": "error" }, { "inputs": [], "name": "LSP8TokenIdsDataEmptyArray", "type": "error" }, { "inputs": [], "name": "LSP8TokenIdsDataLengthMismatch", "type": "error" }, { "inputs": [], "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "address", "name": "oldOwner", "type": "address" }, { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "LSP8TokenOwnerChanged", "type": "error" }, { "inputs": [], "name": "LSP8TransferDisabled", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "functionSelector", "type": "bytes4" } ], "name": "NoExtensionFoundForFunctionSelector", "type": "error" }, { "inputs": [], "name": "OwnableCannotSetZeroAddressAsOwner", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "dataKey", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "name": "DataChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "MintingStatusChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenOwner", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "operatorNotificationData", "type": "bytes" } ], "name": "OperatorAuthorizationChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenOwner", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "indexed": false, "internalType": "bool", "name": "notified", "type": "bool" }, { "indexed": false, "internalType": "bytes", "name": "operatorNotificationData", "type": "bytes" } ], "name": "OperatorRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bool", "name": "enabled", "type": "bool" } ], "name": "RevokableStatusChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "dataKey", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "name": "TokenIdDataChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "indexed": false, "internalType": "bool", "name": "force", "type": "bool" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "end", "type": "uint256" } ], "name": "TransferLockPeriodChanged", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NON_TRANSFERABLE_BYPASS_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REVOKER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNCAPPED_BALANCE_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bytes", "name": "operatorNotificationData", "type": "bytes" } ], "name": "authorizeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "batchCalls", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableRevokable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "dataKey", "type": "bytes32" } ], "name": "getData", "outputs": [ { "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "dataKeys", "type": "bytes32[]" } ], "name": "getDataBatch", "outputs": [ { "internalType": "bytes[]", "name": "dataValues", "type": "bytes[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "tokenIds", "type": "bytes32[]" }, { "internalType": "bytes32[]", "name": "dataKeys", "type": "bytes32[]" } ], "name": "getDataBatchForTokenIds", "outputs": [ { "internalType": "bytes[]", "name": "dataValues", "type": "bytes[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bytes32", "name": "dataKey", "type": "bytes32" } ], "name": "getDataForTokenId", "outputs": [ { "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "getOperatorsOf", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMembers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMintable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "isOperatorFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isRevokable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isTransferable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "makeTransferable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bool", "name": "force", "type": "bool" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "revoke", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bool", "name": "notify", "type": "bool" }, { "internalType": "bytes", "name": "operatorNotificationData", "type": "bytes" } ], "name": "revokeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "dataKey", "type": "bytes32" }, { "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "name": "setData", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "dataKeys", "type": "bytes32[]" }, { "internalType": "bytes[]", "name": "dataValues", "type": "bytes[]" } ], "name": "setDataBatch", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "tokenIds", "type": "bytes32[]" }, { "internalType": "bytes32[]", "name": "dataKeys", "type": "bytes32[]" }, { "internalType": "bytes[]", "name": "dataValues", "type": "bytes[]" } ], "name": "setDataBatchForTokenIds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bytes32", "name": "dataKey", "type": "bytes32" }, { "internalType": "bytes", "name": "dataValue", "type": "bytes" } ], "name": "setDataForTokenId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "bytes32", "name": "adminRole", "type": "bytes32" } ], "name": "setRoleAdmin", "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": "tokenBalanceCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" } ], "name": "tokenIdsOf", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" } ], "name": "tokenOwnerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenSupplyCap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "tokenId", "type": "bytes32" }, { "internalType": "bool", "name": "force", "type": "bool" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "transfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "from", "type": "address[]" }, { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "bytes32[]", "name": "tokenId", "type": "bytes32[]" }, { "internalType": "bool[]", "name": "force", "type": "bool[]" }, { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "transferBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferLockEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferLockEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferLockStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newTransferLockStart", "type": "uint256" }, { "internalType": "uint256", "name": "newTransferLockEnd", "type": "uint256" } ], "name": "updateTransferLockPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60c060405234801561000f575f5ffd5b5060405161677038038061677083398101604081905261002e916112cb565b8051825160208085015186519187015188519192918e8e8e8e8e84848484816100563361035c565b6001600160a01b03811661007d576040516306b620db60e21b815260040160405180910390fd5b61008681610368565b506040805180820190915260048152632936598960e21b60208201526100cd907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906103b7565b6100f77fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856103b7565b6101217f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846103b7565b6040805160208101839052610168917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526103b7565b505060408051602081018590526101b393507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f1981840301815291905261040b565b506101d593505f92506101d09150505f546001600160a01b031690565b6104cb565b6009805460ff19168215159081179091556040517f41f386d449eec03c1c3b75bbba9c18df70aa19779ff47f68eab4b6a66fb399d4905f90a28015610236576102365f5160206167505f395f51905f526101d05f546001600160a01b031690565b5060805260a08190528015610267576102675f5160206167305f395f51905f526101d05f546001600160a01b031690565b508015806102755750818110155b61029257604051634f19c9bf60e11b815260040160405180910390fd5b600a829055600b819055600c805460ff19166001179055604051819083907f938e6c55d25d181f86d200da26970f962ec97adb02dfa0452811fb9073573ebe905f90a36102f75f5160206167105f395f51905f526101d05f546001600160a01b031690565b5050600c8054821580156101000261ff001990921691909117909155610339576103395f5160206166f05f395f51905f526101d05f546001600160a01b031690565b5061034e87856020015161054960201b60201c565b505050505050505050611674565b610365816105d7565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8281526001602052604090206103ce828261142e565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516103ff9190611516565b60405180910390a25050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161044b576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161048b57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016103b757604051634ef6d7fb60e01b815260040160405180910390fd5b5f8281526007602052604081206104e29083610678565b90508015610544576001600160a01b0382165f90815260086020526040902061050b9084610695565b5060405133906001600160a01b0384169085907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d905f90a45b505050565b5f61055360805190565b90508015801590610583578251821080156105815760405163e8ba229160e01b815260040160405180910390fd5b505b5f5b83518110156105d0576105c8858583815181106105a4576105a4611528565b6020026020010151600160405180602001604052805f8152506106a060201b60201c565b600101610585565b5050505050565b6105ee5f5160206166f05f395f51905f525f610826565b6105f78161088b565b5f61060e5f5160206166f05f395f51905f526108ab565b90505f5b8151811015610544575f82828151811061062e5761062e611528565b60200260200101519050836001600160a01b0316816001600160a01b0316036106575750610670565b61066e5f5160206166f05f395f51905f52826108c4565b505b600101610612565b5f61068c836001600160a01b038416610941565b90505b92915050565b5f61068c8383610941565b6001600160a01b0384166106c7576040516324ecef4d60e01b815260040160405180910390fd5b5f8381526003602052604090205483906001600160a01b03161561070a576040516334c7b51160e01b815260040161070191815260200190565b60405180910390fd5b506107185f8585858561098d565b5f8381526003602052604090205483906001600160a01b031615610752576040516334c7b51160e01b815260040161070191815260200190565b5060025f815461076190611550565b909155506001600160a01b0384165f9081526004602052604090206107869084610695565b505f8381526003602052604080822080546001600160a01b0319166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906107e790339088908890611568565b60405180910390a45f335f86868560405160200161080995949392919061159c565b60408051601f1981840301815291905290506105d085848361099a565b816108445760405163d0dc904b60e01b815260040160405180910390fd5b5f82815260066020526040808220805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108a25f5160206167105f395f51905f525f610826565b61036581610aa3565b5f81815260076020526040902060609061068f90610ac3565b5f8281526007602052604081206108db9083610ad6565b90508015610544576001600160a01b0382165f9081526008602052604090206109049084610aea565b5060405133906001600160a01b0384169085907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b905f90a4505050565b5f81815260018301602052604081205461098657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561068f565b505f61068f565b6105d08585858585610af5565b6109ab83631aed5a8560e21b610b0f565b15610a4657604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906109fe907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d9085906004016115d6565b5f604051808303815f875af1158015610a19573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a4091908101906115f6565b50505050565b81610544576001600160a01b0383163b15610a7f57604051634349776d60e01b81526001600160a01b0384166004820152602401610701565b604051630317313760e01b81526001600160a01b0384166004820152602401610701565b610aba5f5160206167305f395f51905f525f610826565b61036581610b95565b60605f610acf83610bb5565b9392505050565b5f61068c836001600160a01b038416610c0e565b5f61068c8383610c0e565b610b028585858585610cf1565b6105d08585858585610d0b565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b17815282515f9392849283928392918391908a617530fa92503d91505f519050828015610b7f575060208210155b8015610b8a57505f81115b979650505050505050565b610bac5f5160206167505f395f51905f525f610826565b61036581610d2c565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610c0257602002820191905f5260205f20905b815481526020019060010190808311610bee575b50505050509050919050565b5f8181526001830160205260408120548015610ce8575f610c3060018361163a565b85549091505f90610c439060019061163a565b9050818114610ca2575f865f018281548110610c6157610c61611528565b905f5260205f200154905080875f018481548110610c8157610c81611528565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610cb357610cb361164d565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061068f565b5f91505061068f565b610cfa84610dbc565b6105d0576105d08585858585610e3c565b610d188585858585610e9d565b6105d085858585856001600160e01b038616565b5f546001600160a01b0316610d4082610368565b6001600160a01b0381165f908152600860205260408120610d6090610ac3565b90505f5b8151811015610a40575f828281518110610d8057610d80611528565b60200260200101519050610d9a81856108c460201b60201c565b6001600160a01b03851615610db357610db381866104cb565b50600101610d64565b5f80356001600160e01b0319166384bfc8eb60e01b148015610dea5750610dea600c54610100900460ff1690565b8015610e085750610e085f5160206166f05f395f51905f5233610eb7565b801561068f57505f546001600160a01b038381169116148061068f575061068f5f5160206166f05f395f51905f5283610eb7565b6001600160a01b0385161580610e5957506001600160a01b038416155b6105d057610e745f5160206167105f395f51905f5286610eb7565b6105d057610e80610ec2565b6105d057604051634d6f20a160e11b815260040160405180910390fd5b610ea684610dbc565b6105d0576105d08585858585610f49565b5f61068c8383611028565b600c545f9060ff16610ed45750600190565b600a54600b54901580159115159082610eeb575080155b15610ef95760019250505090565b81158015610f045750805b15610f155742600b54109250505090565b818015610f20575080155b15610f315742600a54119250505090565b42600a541180610f42575042600b54105b9250505090565b836001600160a01b0316856001600160a01b031603156105d0576001600160a01b0384161580610f8357506001600160a01b03841661dead145b6105d057610f9e5f5160206167305f395f51905f5285610eb7565b6105d0575f610fac60a05190565b905080151580610fbd5750506105d0565b60a051610fc98761103f565b610fd4906001611661565b111586610fe08161103f565b60a05190919261101c576040516339afc44b60e21b81526001600160a01b03909316600484015260248301919091526044820152606401610701565b50505050505050505050565b5f82815260076020526040812061068c9083611063565b6001600160a01b0381165f90815260046020526040812061068f905f61068f825490565b6001600160a01b0381165f908152600183016020526040812054151561068c565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156110ba576110ba611084565b60405290565b604051601f8201601f191681016001600160401b03811182821017156110e8576110e8611084565b604052919050565b5f806001600160401b0384111561110957611109611084565b50601f8301601f191660200161111e816110c0565b915050828152838383011115611132575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112611157575f5ffd5b61068c838351602085016110f0565b80516001600160a01b038116811461117c575f5ffd5b919050565b8051801515811461117c575f5ffd5b5f604082840312156111a0575f5ffd5b6111a8611098565b90506111b382611181565b815260208201516001600160401b038111156111cd575f5ffd5b8201601f810184136111dd575f5ffd5b80516001600160401b038111156111f6576111f6611084565b8060051b611206602082016110c0565b91825260208184018101929081019087841115611221575f5ffd5b6020850194505b83851015611243578451825260209485019490910190611228565b6020860152509295945050505050565b5f60408284031215611263575f5ffd5b61126b611098565b825181526020928301519281019290925250919050565b5f60208284031215611292575f5ffd5b604051602081016001600160401b03811182821017156112b4576112b4611084565b6040529050806112c383611181565b905292915050565b5f5f5f5f5f5f5f5f5f6101608a8c0312156112e4575f5ffd5b89516001600160401b038111156112f9575f5ffd5b6113058c828d01611148565b60208c0151909a5090506001600160401b03811115611322575f5ffd5b61132e8c828d01611148565b98505061133d60408b01611166565b60608b015160808c015160a08d015192995090975095506001600160401b03811115611367575f5ffd5b6113738c828d01611190565b9450506113838b60c08c01611253565b92506113938b6101008c01611253565b91506113a38b6101408c01611282565b90509295985092959850929598565b600181811c908216806113c657607f821691505b6020821081036113e457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561054457805f5260205f20601f840160051c8101602085101561140f5750805b601f840160051c820191505b818110156105d0575f815560010161141b565b81516001600160401b0381111561144757611447611084565b61145b8161145584546113b2565b846113ea565b6020601f82116001811461148d575f83156114765750848201515b5f19600385901b1c1916600184901b1784556105d0565b5f84815260208120601f198516915b828110156114bc578785015182556020948501946001909201910161149c565b50848210156114d957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61068c60208301846114e8565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016115615761156161153c565b5060010190565b6001600160a01b038416815282151560208201526060604082018190525f90611593908301846114e8565b95945050505050565b6001600160a01b0386811682528581166020830152841660408201526060810183905260a0608082018190525f90610b8a908301846114e8565b828152604060208201525f6115ee60408301846114e8565b949350505050565b5f60208284031215611606575f5ffd5b81516001600160401b0381111561161b575f5ffd5b8201601f8101841361162b575f5ffd5b6115ee848251602084016110f0565b8181038181111561068f5761068f61153c565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561068f5761068f61153c565b60805160a0516150466116aa5f395f81816109e101528181613dc801528181613df80152613e3901525f61115b01526150465ff3fe60806040526004361061034d575f3560e01c80637e87632c116101ba578063a3b261f2116100f6578063d547741f11610094578063dedff9c61161006e578063dedff9c614610a95578063e6fc609814610ab4578063ecff3a0c14610ac9578063f2fde38b14610ae2576103d8565b8063d547741f14610a38578063d6c1407c14610a57578063db8c966314610a76576103d8565b8063c282ca78116100d0578063c282ca78146109a0578063ca15c873146109b4578063d1ca0188146109d3578063d539139314610a05576103d8565b8063a3b261f214610943578063af255b6114610962578063be9f0e6f14610981576103d8565b80639010d07c11610163578063979024211161013d57806397902421146108e25780639e045773146108f5578063a217fddf14610911578063a3246ad314610924576103d8565b80639010d07c1461087157806391d148541461089057806394187753146108af576103d8565b806386a10ddd1161019457806386a10ddd146108145780638da5cb5b146108335780638fb057301461085c576103d8565b80637e87632c146107c35780637f23690c146107e257806384bfc8eb146107f5576103d8565b806345e14c46116102895780636963d4381161023257806370a082311161020c57806370a0823114610749578063715018a6146107685780637c4acabf1461077c5780637e5cd5c1146107af576103d8565b80636963d438146106f7578063696fd68c146107165780636c79b70b1461072a576103d8565b8063511b695211610263578063511b6952146106a557806352058d8a146106c457806354f6127f146106d8576103d8565b806345e14c461461064157806346b45af71461066057806349a6078d14610679576103d8565b80632121dc75116102f65780632a3654a4116102d05780632a3654a4146105b85780632de94807146105d75780632f2ff15d1461060357806336568abe14610622576103d8565b80632121dc7514610535578063217b227014610549578063248a9ca31461058d576103d8565b806318160ddd1161032757806318160ddd146104d45780631d26fce6146104e85780631e4e009114610514576103d8565b806301ffc9a71461043357806312318ac41461046757806316e023b3146104a8576103d8565b366103d857345f036103a6576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d9060208082526004908201525f604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3660608282600481101561041b576040517fe5099ee300000000000000000000000000000000000000000000000000000000815260040161039d929190613fe8565b50506104278383610b01565b80519350602001915050f35b34801561043e575f5ffd5b5061045261044d366004614034565b610c96565b6