@openzeppelin/contracts
Version:
Secure Smart Contract library for Solidity
748 lines • 56.6 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC721PresetMinterPauserAutoId",
"sourceName": "contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "baseTokenURI",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"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": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"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": "PAUSER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"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"
},
{
"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": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"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": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"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": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002a7838038062002a788339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b5050506200049a565b62000100828262000104565b5050565b6200011b82826200014760201b62000e301760201c565b60008281526001602090815260409091206200014291839062000eb4620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b602082108114156200049457634e487b7160e01b600052602260045260246000fd5b50919050565b6125ce80620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611fd8565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b604051610209919061204d565b61023a610235366004612060565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004612095565b6105d1565b005b600a545b604051908152602001610209565b6102656102873660046120bf565b6106e7565b61026b61029a366004612060565b60009081526020819052604090206001015490565b6102656102bd3660046120fb565b610719565b61026b6102d0366004612095565b61073e565b6102656102e33660046120fb565b6107d4565b610265610852565b6102656102fe3660046120bf565b6108fa565b610265610311366004612060565b610915565b61026b610324366004612060565b61098f565b600c5460ff166101fd565b61023a610342366004612060565b610a22565b610265610355366004612127565b610a99565b61026b610368366004612127565b610b55565b610265610bdc565b61023a610383366004612142565b610c80565b6101fd6103963660046120fb565b610c9f565b61021a610cc8565b61026b600081565b6102656103b9366004612164565b610cd7565b6102656103cc3660046121b6565b610ce2565b61021a6103df366004612060565b610d1a565b61026b6103f2366004612060565b610df4565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c3660046120fb565b610e0b565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612292565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610ec9565b92915050565b6060600280546104b4906122bc565b80601f01602080910402602001604051908101604052809291908181526020018280546104e0906122bc565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166105b55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105dc82610a22565b9050806001600160a01b0316836001600160a01b0316141561064a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105ac565b336001600160a01b038216148061066657506106668133610466565b6106d85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105ac565b6106e28383610eee565b505050565b6106f2335b82610f5c565b61070e5760405162461bcd60e51b81526004016105ac906122f7565b6106e2838383611053565b600082815260208190526040902060010154610734816111fa565b6106e28383611204565b600061074983610b55565b82106107ab5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105ac565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146108445760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ac565b61084e8282611226565b5050565b61087c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c9f565b6108f0576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105ac565b6108f8611248565b565b6106e283838360405180602001604052806000815250610ce2565b61091e336106ec565b6109835760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105ac565b61098c816112db565b50565b600061099a600a5490565b82106109fd5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105ac565b600a8281548110610a1057610a10612348565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105ac565b610ac37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610c9f565b610b355760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105ac565b610b4781610b42600d5490565b611382565b61098c600d80546001019055565b60006001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105ac565b506001600160a01b031660009081526005602052604090205490565b610c067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c9f565b610c785760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105ac565b6108f86114d0565b6000828152600160205260408120610c98908361154b565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b4906122bc565b61084e338383611557565b610cec3383610f5c565b610d085760405162461bcd60e51b81526004016105ac906122f7565b610d1484848484611626565b50505050565b6000818152600460205260409020546060906001600160a01b0316610d995760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105ac565b6000610da3611659565b90506000815111610dc35760405180602001604052806000815250610c98565b80610dcd84611668565b604051602001610dde92919061235e565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f90611766565b600082815260208190526040902060010154610e26816111fa565b6106e28383611226565b610e3a8282610c9f565b61084e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e703390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c98836001600160a01b038416611770565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826117bf565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f2382610a22565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b0316610fd55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105ac565b6000610fe083610a22565b9050806001600160a01b0316846001600160a01b0316148061102757506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b8061104b5750836001600160a01b031661104084610537565b6001600160a01b0316145b949350505050565b826001600160a01b031661106682610a22565b6001600160a01b0316146110ca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105ac565b6001600160a01b03821661112c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6111378383836117ff565b611142600082610eee565b6001600160a01b038316600090815260056020526040812080546001929061116b9084906123a3565b90915550506001600160a01b03821660009081526005602052604081208054600192906111999084906123ba565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61098c813361180a565b61120e8282610e30565b60008281526001602052604090206106e29082610eb4565b611230828261186e565b60008281526001602052604090206106e290826118d3565b600c5460ff166112915760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ac565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006112e682610a22565b90506112f4816000846117ff565b6112ff600083610eee565b6001600160a01b03811660009081526005602052604081208054600192906113289084906123a3565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166113d85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105ac565b6000818152600460205260409020546001600160a01b03161561143d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105ac565b611449600083836117ff565b6001600160a01b03821660009081526005602052604081208054600192906114729084906123ba565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600c5460ff16156115165760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ac565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112be3390565b6000610c9883836118e8565b816001600160a01b0316836001600160a01b031614156115b95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105ac565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611631848484611053565b61163d84848484611912565b610d145760405162461bcd60e51b81526004016105ac906123d2565b6060600e80546104b4906122bc565b60608161168c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116b657806116a081612424565b91506116af9050600a83612455565b9150611690565b60008167ffffffffffffffff8111156116d1576116d16121a0565b6040519080825280601f01601f1916602001820160405280156116fb576020820181803683370190505b5090505b841561104b576117106001836123a3565b915061171d600a86612469565b6117289060306123ba565b60f81b81838151811061173d5761173d612348565b60200101906001600160f81b031916908160001a90535061175f600a86612455565b94506116ff565b600061049f825490565b60008181526001830160205260408120546117b75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b14806117f057506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611a1f565b6106e2838383611a44565b6118148282610c9f565b61084e5761182c816001600160a01b03166014611ab6565b611837836020611ab6565b60405160200161184892919061247d565b60408051601f198184030181529082905262461bcd60e51b82526105ac9160040161204d565b6118788282610c9f565b1561084e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610c98836001600160a01b038416611c52565b60008260000182815481106118ff576118ff612348565b9060005260206000200154905092915050565b60006001600160a01b0384163b15611a1457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906119569033908990889088906004016124f2565b602060405180830381600087803b15801561197057600080fd5b505af19250505080156119a0575060408051601f3d908101601f1916820190925261199d9181019061252f565b60015b6119fa573d8080156119ce576040519150601f19603f3d011682016040523d82523d6000602084013e6119d3565b606091505b5080516119f25760405162461bcd60e51b81526004016105ac906123d2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061104b565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611d45565b611a4f838383611d7a565b600c5460ff16156106e25760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105ac565b60606000611ac583600261254c565b611ad09060026123ba565b67ffffffffffffffff811115611ae857611ae86121a0565b6040519080825280601f01601f191660200182016040528015611b12576020820181803683370190505b509050600360fc1b81600081518110611b2d57611b2d612348565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611b5c57611b5c612348565b60200101906001600160f81b031916908160001a9053506000611b8084600261254c565b611b8b9060016123ba565b90505b6001811115611c03576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611bbf57611bbf612348565b1a60f81b828281518110611bd557611bd5612348565b60200101906001600160f81b031916908160001a90535060049490941c93611bfc8161256b565b9050611b8e565b508315610c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ac565b60008181526001830160205260408120548015611d3b576000611c766001836123a3565b8554909150600090611c8a906001906123a3565b9050818114611cef576000866000018281548110611caa57611caa612348565b9060005260206000200154905080876000018481548110611ccd57611ccd612348565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611d0057611d00612582565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611dd557611dd081600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611df8565b816001600160a01b0316836001600160a01b031614611df857611df88382611e32565b6001600160a01b038216611e0f576106e281611ecf565b826001600160a01b0316826001600160a01b0316146106e2576106e28282611f7e565b60006001611e3f84610b55565b611e4991906123a3565b600083815260096020526040902054909150808214611e9c576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611ee1906001906123a3565b6000838152600b6020526040812054600a8054939450909284908110611f0957611f09612348565b9060005260206000200154905080600a8381548110611f2a57611f2a612348565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611f6257611f62612582565b6001900381819060005260206000200160009055905550505050565b6000611f8983610b55565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b03198116811461098c57600080fd5b600060208284031215611fea57600080fd5b8135610c9881611fc2565b60005b83811015612010578181015183820152602001611ff8565b83811115610d145750506000910152565b60008151808452612039816020860160208601611ff5565b601f01601f19169290920160200192915050565b602081526000610c986020830184612021565b60006020828403121561207257600080fd5b5035919050565b80356001600160a01b038116811461209057600080fd5b919050565b600080604083850312156120a857600080fd5b6120b183612079565b946020939093013593505050565b6000806000606084860312156120d457600080fd5b6120dd84612079565b92506120eb60208501612079565b9150604084013590509250925092565b6000806040838503121561210e57600080fd5b8235915061211e60208401612079565b90509250929050565b60006020828403121561213957600080fd5b610c9882612079565b6000806040838503121561215557600080fd5b50508035926020909101359150565b6000806040838503121561217757600080fd5b61218083612079565b91506020830135801515811461219557600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156121cc57600080fd5b6121d585612079565b93506121e360208601612079565b925060408501359150606085013567ffffffffffffffff8082111561220757600080fd5b818701915087601f83011261221b57600080fd5b81358181111561222d5761222d6121a0565b604051601f8201601f19908116603f01168101908382118183101715612255576122556121a0565b816040528281528a602084870101111561226e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156122a557600080fd5b6122ae83612079565b915061211e60208401612079565b600181811c908216806122d057607f821691505b602082108114156122f157634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612370818460208801611ff5565b835190830190612384818360208801611ff5565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156123b5576123b561238d565b500390565b600082198211156123cd576123cd61238d565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156124385761243861238d565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826124645761246461243f565b500490565b6000826124785761247861243f565b500690565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516124b5816017850160208801611ff5565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516124e6816028840160208801611ff5565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061252590830184612021565b9695505050505050565b60006020828403121561254157600080fd5b8151610c9881611fc2565b60008160001904831182151516156125665761256661238d565b500290565b60008161257a5761257a61238d565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cf786000348c200e687e57b7842bec9839f641b7221c638b589cb0e8edb30c6464736f6c63430008090033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611fd8565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b604051610209919061204d565b61023a610235366004612060565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004612095565b6105d1565b005b600a545b604051908152602001610209565b6102656102873660046120bf565b6106e7565b61026b61029a366004612060565b60009081526020819052604090206001015490565b6102656102bd3660046120fb565b610719565b61026b6102d0366004612095565b61073e565b6102656102e33660046120fb565b6107d4565b610265610852565b6102656102fe3660046120bf565b6108fa565b610265610311366004612060565b610915565b61026b610324366004612060565b61098f565b600c5460ff166101fd565b61023a610342366004612060565b610a22565b610265610355366004612127565b610a99565b61026b610368366004612127565b610b55565b610265610bdc565b61023a610383366004612142565b610c80565b6101fd6103963660046120fb565b610c9f565b61021a610cc8565b61026b600081565b6102656103b9366004612164565b610cd7565b6102656103cc3660046121b6565b610ce2565b61021a6103df366004612060565b610d1a565b61026b6103f2366004612060565b610df4565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c3660046120fb565b610e0b565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612292565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610ec9565b92915050565b6060600280546104b4906122bc565b80601f01602080910402602001604051908101604052809291908181526020018280546104e0906122bc565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166105b55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105dc82610a22565b9050806001600160a01b0316836001600160a01b0316141561064a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105ac565b336001600160a01b038216148061066657506106668133610466565b6106d85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105ac565b6106e28383610eee565b505050565b6106f2335b82610f5c565b61070e5760405162461bcd60e51b81526004016105ac906122f7565b6106e2838383611053565b600082815260208190526040902060010154610734816111fa565b6106e28383611204565b600061074983610b55565b82106107ab5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105ac565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146108445760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ac565b61084e8282611226565b5050565b61087c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c9f565b6108f0576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105ac565b6108f8611248565b565b6106e283838360405180602001604052806000815250610ce2565b61091e336106ec565b6109835760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105ac565b61098c816112db565b50565b600061099a600a5490565b82106109fd5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105ac565b600a8281548110610a1057610a10612348565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105ac565b610ac37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610c9f565b610b355760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105ac565b610b4781610b42600d5490565b611382565b61098c600d80546001019055565b60006001600160a01b038216610bc05760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105ac565b506001600160a01b031660009081526005602052604090205490565b610c067f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610c9f565b610c785760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105ac565b6108f86114d0565b6000828152600160205260408120610c98908361154b565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b4906122bc565b61084e338383611557565b610cec3383610f5c565b610d085760405162461bcd60e51b81526004016105ac906122f7565b610d1484848484611626565b50505050565b6000818152600460205260409020546060906001600160a01b0316610d995760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105ac565b6000610da3611659565b90506000815111610dc35760405180602001604052806000815250610c98565b80610dcd84611668565b604051602001610dde92919061235e565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f90611766565b600082815260208190526040902060010154610e26816111fa565b6106e28383611226565b610e3a8282610c9f565b61084e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e703390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c98836001600160a01b038416611770565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826117bf565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f2382610a22565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b0316610fd55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105ac565b6000610fe083610a22565b9050806001600160a01b0316846001600160a01b0316148061102757506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b8061104b5750836001600160a01b031661104084610537565b6001600160a01b0316145b949350505050565b826001600160a01b031661106682610a22565b6001600160a01b0316146110ca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105ac565b6001600160a01b03821661112c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ac565b6111378383836117ff565b611142600082610eee565b6001600160a01b038316600090815260056020526040812080546001929061116b9084906123a3565b90915550506001600160a01b03821660009081526005602052604081208054600192906111999084906123ba565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61098c813361180a565b61120e8282610e30565b60008281526001602052604090206106e29082610eb4565b611230828261186e565b60008281526001602052604090206106e290826118d3565b600c5460ff166112915760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ac565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006112e682610a22565b90506112f4816000846117ff565b6112ff600083610eee565b6001600160a01b03811660009081526005602052604081208054600192906113289084906123a3565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166113d85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105ac565b6000818152600460205260409020546001600160a01b03161561143d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105ac565b611449600083836117ff565b6001600160a01b03821660009081526005602052604081208054600192906114729084906123ba565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600c5460ff16156115165760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ac565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112be3390565b6000610c9883836118e8565b816001600160a01b0316836001600160a01b031614156115b95760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105ac565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611631848484611053565b61163d84848484611912565b610d145760405162461bcd60e51b81526004016105ac906123d2565b6060600e80546104b4906122bc565b60608161168c5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116b657806116a081612424565b91506116af9050600a83612455565b9150611690565b60008167ffffffffffffffff8111156116d1576116d16121a0565b6040519080825280601f01601f1916602001820160405280156116fb576020820181803683370190505b5090505b841561104b576117106001836123a3565b915061171d600a86612469565b6117289060306123ba565b60f81b81838151811061173d5761173d612348565b60200101906001600160f81b031916908160001a90535061175f600a86612455565b94506116ff565b600061049f825490565b60008181526001830160205260408120546117b75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b14806117f057506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611a1f565b6106e2838383611a44565b6118148282610c9f565b61084e5761182c816001600160a01b03166014611ab6565b611837836020611ab6565b60405160200161184892919061247d565b60408051601f198184030181529082905262461bcd60e51b82526105ac9160040161204d565b6118788282610c9f565b1561084e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610c98836001600160a01b038416611c52565b60008260000182815481106118ff576118ff612348565b9060005260206000200154