[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "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": "recipient", "type": "address" }, { "indexed": true, "internalType": "uint16", "name": "tokenId", "type": "uint16" }, { "indexed": false, "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "element", "type": "uint8" } ], "name": "TokenMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "tokenId", "type": "uint16" }, { "components": [ { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint16", "name": "metaindex", "type": "uint16" }, { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "uint8", "name": "level", "type": "uint8" } ], "indexed": false, "internalType": "struct ICoqHero.CoqTrait", "name": "traits", "type": "tuple" } ], "name": "TokenTraitsRevealed", "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": [ { "internalType": "address", "name": "_newAdmin", "type": "address" }, { "internalType": "uint8", "name": "Role", "type": "uint8" } ], "name": "GrantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "Production_wallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "coqIndex", "type": "uint8" } ], "name": "addCoqIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "barn", "outputs": [ { "internalType": "contract IBarn", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "tokenIds", "type": "uint16[]" } ], "name": "burnNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "coqMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "", "type": "uint8" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "coqlist", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "rarity", "type": "uint8" } ], "name": "getAllCoqs", "outputs": [ { "internalType": "uint16[]", "name": "list", "type": "uint16[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "tokenId", "type": "uint16" } ], "name": "getOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "tokenIds", "type": "uint16[]" } ], "name": "getOwners", "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": "uint16", "name": "tokenId", "type": "uint16" } ], "name": "getTokenTrait", "outputs": [ { "components": [ { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint16", "name": "metaindex", "type": "uint16" }, { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "uint8", "name": "level", "type": "uint8" } ], "internalType": "struct ICoqHero.CoqTrait", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16[]", "name": "tokenIds", "type": "uint16[]" } ], "name": "getTokenTraits", "outputs": [ { "components": [ { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint16", "name": "metaindex", "type": "uint16" }, { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "uint8", "name": "level", "type": "uint8" } ], "internalType": "struct ICoqHero.CoqTrait[]", "name": "_tokenTraits", "type": "tuple[]" } ], "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" }, { "internalType": "uint16", "name": "amount", "type": "uint16" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint16", "name": "metaindexoffset", "type": "uint16" }, { "internalType": "bool", "name": "baseRevealed", "type": "bool" } ], "name": "mint", "outputs": [ { "internalType": "uint16[]", "name": "tokenIds", "type": "uint16[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint16", "name": "off_meta", "type": "uint16" }, { "internalType": "bool", "name": "base_R", "type": "bool" } ], "name": "mintSurprise", "outputs": [ { "internalType": "uint16", "name": "tokenId", "type": "uint16" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint16", "name": "coqIndex", "type": "uint16" } ], "name": "removeCoqIndex", "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": "uint16", "name": "_tokenId", "type": "uint16" } ], "name": "reveal", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "contract IBarn", "name": "newbarn", "type": "address" } ], "name": "setBarn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURInex", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newmaxtokens", "type": "uint256" } ], "name": "setMaxTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "tokenId", "type": "uint16" }, { "components": [ { "internalType": "uint8", "name": "element", "type": "uint8" }, { "internalType": "uint8", "name": "rarity", "type": "uint8" }, { "internalType": "uint16", "name": "metaindex", "type": "uint16" }, { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "uint8", "name": "level", "type": "uint8" } ], "internalType": "struct ICoqHero.CoqTrait", "name": "NewTraits", "type": "tuple" } ], "name": "setTokenTrait", "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": "widthdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61c350600e55601280546001600160a01b03191673ce8ed8788790d35d2043a4aedbf62ec56b3bab6e17905560e06040526036608081815290620036d260a0396014906200004e908262000545565b503480156200005c57600080fd5b5060405180604001604052806007815260200166436f714865726f60c81b815250604051806040016040528060048152602001630869ea2960e31b8152508160009081620000ab919062000545565b506001620000ba828262000545565b5050600a805460ff1916905550620000d46000336200027c565b50620001017f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200027c565b506012546200011c906001600160a01b03166101f46200032f565b60125462000136906000906001600160a01b03166200027c565b506040805160c08101825260188152602a602080830191909152602d928201929092526030606082015260336080820152603660a082015260016000526011909152620001a7907f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b552906006620003da565b506040805160c081018252600c8152600f60208083019190915260129282019290925260156060820152601b6080820152601e60a08201526002600052601190915262000218907f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628906006620003da565b506040805160608101825260278152602160208083019190915260249282019290925260036000819052601190925262000275917f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff9190620003da565b5062000611565b6000828152600d602090815260408083206001600160a01b038516845290915281205460ff1662000325576000838152600d602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620002dc3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000329565b5060005b92915050565b6127106001600160601b0382168110156200037457604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044015b60405180910390fd5b6001600160a01b038316620003a057604051635b6cc80560e11b8152600060048201526024016200036b565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600b55565b82805482825590600052602060002090600f01601090048101928215620004775791602002820160005b838211156200044557835183826101000a81548161ffff021916908360ff160217905550926020019260020160208160010104928301926001030262000404565b8015620004755782816101000a81549061ffff021916905560020160208160010104928301926001030262000445565b505b506200048592915062000489565b5090565b5b808211156200048557600081556001016200048a565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004cb57607f821691505b602082108103620004ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054057600081815260208120601f850160051c810160208610156200051b5750805b601f850160051c820191505b818110156200053c5782815560010162000527565b5050505b505050565b81516001600160401b03811115620005615762000561620004a0565b6200057981620005728454620004b6565b84620004f2565b602080601f831160018114620005b15760008415620005985750858301515b600019600386901b1c1916600185901b1785556200053c565b600085815260208120601f198616915b82811015620005e257888601518255948401946001909101908401620005c1565b5085821015620006015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6130b180620006216000396000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80635c975abb11610182578063a217fddf116100e9578063d5391393116100a2578063e985e9c51161007c578063e985e9c51461070d578063efef8eb314610720578063f3ae547a14610729578063f47c84c51461073c57600080fd5b8063d5391393146106d2578063d547741f146106e7578063e4089599146106fa57600080fd5b8063a217fddf14610676578063a22cb4651461067e578063a542abd114610691578063b88d4fde146106a4578063c87b56dd146106b7578063cfc86f7b146106ca57600080fd5b80638a68b6b21161013b5780638a68b6b21461056e5780638bcf56eb146105815780638db6a6f61461062857806391d148541461064857806395d422771461065b57806395d89b411461066e57600080fd5b80635c975abb146105045780636352211e1461050f57806370a0823114610522578063725834a8146105355780637de462651461054857806384bdcb091461055b57600080fd5b80632f2ff15d116102265780633f9cf734116101df5780633f9cf7341461048257806342842e0e146104a25780634f02c420146104b55780634f6ccce7146104d657806352b50a2a146104e957806355f804b3146104f157600080fd5b80632f2ff15d146104035780632f745c591461041657806330f21bd21461042957806336568abe146104495780633aaa96501461045c5780633b342a851461046f57600080fd5b806318160ddd1161027857806318160ddd14610363578063194f480e14610375578063219da91e1461038857806323b872dd1461039b578063248a9ca3146103ae5780632a55205a146103d157600080fd5b806301ffc9a7146102c057806306fdde03146102e8578063081812fc146102fd578063095ea7b314610328578063113a256c1461033d57806311e776fe14610350575b600080fd5b6102d36102ce36600461250a565b610745565b60405190151581526020015b60405180910390f35b6102f0610756565b6040516102df9190612577565b61031061030b36600461258a565b6107e8565b6040516001600160a01b0390911681526020016102df565b61033b6103363660046125b8565b610811565b005b61033b61034b3660046125fa565b610820565b61033b61035e36600461258a565b61085d565b6008545b6040519081526020016102df565b601354610310906001600160a01b031681565b601254610310906001600160a01b031681565b61033b6103a936600461262f565b61086c565b6103676103bc36600461258a565b6000908152600d602052604090206001015490565b6103e46103df366004612670565b6108fc565b604080516001600160a01b0390931683526020830191909152016102df565b61033b610411366004612692565b6109a8565b6103676104243660046125b8565b6109cd565b61043c6104373660046126e4565b610a32565b6040516102df919061275a565b61033b610457366004612692565b610b69565b61033b61046a3660046127a2565b610b9c565b61033b61047d3660046127cc565b610cfb565b6104956104903660046127e9565b610d27565b6040516102df919061285e565b61033b6104b036600461262f565b610e08565b600f546104c39061ffff1681565b60405161ffff90911681526020016102df565b6103676104e436600461258a565b610e23565b61033b610e7c565b61033b6104ff36600461293e565b610efb565b600a5460ff166102d3565b61031061051d36600461258a565b610f11565b6103676105303660046127cc565b610f1c565b61043c610543366004612987565b610f64565b6103106105563660046129a2565b610ff2565b61033b6105693660046129bd565b611014565b61033b61057c366004612a6a565b61106f565b61061b61058f3660046129a2565b6040805160a08082018352600080835260208084018290528385018290526060808501839052608094850183905261ffff96871683526015825291859020855193840186525460ff8082168552610100820481169285019290925262010000810490961694830194909452600160201b85048416151590820152600160281b9093049091169082015290565b6040516102df9190612b1f565b61063b6106363660046127e9565b61111b565b6040516102df9190612b67565b6102d3610656366004612692565b611268565b6104c3610669366004612be3565b611293565b6102f06112da565b610367600081565b61033b61068c366004612bff565b6112e9565b6104c361069f366004612c2b565b6112f4565b61033b6106b2366004612c92565b611423565b6102f06106c536600461258a565b61143a565b6102f06114c1565b61036760008051602061305c83398151915281565b61033b6106f5366004612692565b61154f565b61033b610708366004612d12565b611574565b6102d361071b366004612d2e565b6115d2565b61036760105481565b61033b6107373660046129a2565b611600565b610367600e5481565b6000610750826116c7565b92915050565b60606000805461076590612d5c565b80601f016020809104026020016040519081016040528092919081815260200182805461079190612d5c565b80156107de5780601f106107b3576101008083540402835291602001916107de565b820191906000526020600020905b8154815290600101906020018083116107c157829003601f168201915b5050505050905090565b60006107f3826116ec565b506000828152600460205260409020546001600160a01b0316610750565b61081c828233611725565b5050565b61082a6000611732565b8060ff166000036108455761084060008361173c565b505050565b61084060008051602061305c8339815191528361173c565b6108676000611732565b600e55565b6001600160a01b03821661089b57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006108a88383336117d0565b9050836001600160a01b0316816001600160a01b0316146108f6576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610892565b50505050565b6000828152600c602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610971575060408051808201909152600b546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610990906001600160601b031687612dac565b61099a9190612dd9565b915196919550909350505050565b6000828152600d60205260409020600101546109c381611732565b6108f6838361173c565b60006109d883610f1c565b8210610a095760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610892565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6060610a4b60008051602061305c833981519152611732565b8561ffff1667ffffffffffffffff811115610a6857610a6861289f565b604051908082528060200260200182016040528015610a91578160200160208202803683370190505b50905060005b8661ffff168160ff161015610aed57610ab388878787876112f4565b828260ff1681518110610ac857610ac8612ded565b61ffff9092166020928302919091019091015280610ae581612e03565b915050610a97565b5080600081518110610b0157610b01612ded565b602002602001015161ffff16876001600160a01b03167f966e58cd458ebabdad925c09aa2e08a0469e1da3819eebff033c9af73bb3d7be8787604051610b5792919060ff92831681529116602082015260400190565b60405180910390a39695505050505050565b6001600160a01b0381163314610b925760405163334bd91960e11b815260040160405180910390fd5b61084082826118af565b610bb360008051602061305c833981519152611732565b60ff82166000908152601160205260408120905b81548110156108f6578261ffff16828281548110610be757610be7612ded565b60009182526020909120601082040154600f9091166002026101000a900461ffff1603610ce9578154610c1c90600190612e22565b8114610ca85781548290610c3290600190612e22565b81548110610c4257610c42612ded565b90600052602060002090601091828204019190066002029054906101000a900461ffff16828281548110610c7857610c78612ded565b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055505b81805480610cb857610cb8612e35565b600082815260209020601060001990920191820401805461ffff6002600f8516026101000a021916905590556108f6565b80610cf381612e4b565b915050610bc7565b610d056000611732565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b606060008267ffffffffffffffff811115610d4457610d4461289f565b604051908082528060200260200182016040528015610d6d578160200160208202803683370190505b50905060005b83811015610e0057610dc4858583818110610d9057610d90612ded565b9050602002016020810190610da591906129a2565b61ffff166000908152600260205260409020546001600160a01b031690565b828281518110610dd657610dd6612ded565b6001600160a01b039092166020928302919091019091015280610df881612e4b565b915050610d73565b509392505050565b61084083838360405180602001604052806000815250611423565b6000610e2e60085490565b8210610e575760405163295f44f760e21b81526000600482015260248101839052604401610892565b60088281548110610e6a57610e6a612ded565b90600052602060002001549050919050565b610e866000611732565b60004711610ecc5760405162461bcd60e51b81526020600482015260136024820152724e6f204156415820746f20776974686472617760681b6044820152606401610892565b60405133904780156108fc02916000818181858888f19350505050158015610ef8573d6000803e3d6000fd5b50565b610f056000611732565b601461081c8282612eb2565b6000610750826116ec565b60006001600160a01b038216610f48576040516322718ad960e21b815260006004820152602401610892565b506001600160a01b031660009081526003602052604090205490565b60ff8116600090815260116020908152604091829020805483518184028101840190945280845260609392830182828015610fe657602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610fad5790505b50505050509050919050565b61ffff81166000908152600260205260408120546001600160a01b0316610750565b61102b60008051602061305c833981519152611732565b60005b815181101561081c5761105d82828151811061104c5761104c612ded565b602002602001015161ffff1661191c565b8061106781612e4b565b91505061102e565b61108660008051602061305c833981519152611732565b61ffff918216600090815260156020908152604091829020835181549285015193850151606086015160809096015160ff908116600160281b0265ff000000000019971515600160201b0264ff00000000199390991662010000029290921664ffffff0000199682166101000261ffff1990961691909316179390931793909316929092179390931791909116919091179055565b60608167ffffffffffffffff8111156111365761113661289f565b60405190808252806020026020018201604052801561118f57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816111545790505b50905060005b8281101561126157601560008585848181106111b3576111b3612ded565b90506020020160208101906111c891906129a2565b61ffff90811682526020808301939093526040918201600020825160a081018452905460ff8082168352610100820481169583019590955262010000810490921692810192909252600160201b8104831615156060830152600160281b90049091166080820152825183908390811061124357611243612ded565b6020026020010181905250808061125990612e4b565b915050611195565b5092915050565b6000918252600d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b601160205281600052604060002081815481106112af57600080fd5b9060005260206000209060109182820401919006600202915091509054906101000a900461ffff1681565b60606001805461076590612d5c565b61081c338383611957565b600061130d60008051602061305c833981519152611732565b600f5461131f9061ffff166001612f72565b905061132f868261ffff166119f6565b600f80546000906113439061ffff16612f8d565b91906101000a81548161ffff021916908361ffff16021790555061136985858585611a10565b61ffff8083166000908152601560209081526040808320855181549387015192870151606088015160809098015160ff908116600160281b0265ff000000000019991515600160201b0264ff00000000199390991662010000029290921664ffffff0000199582166101000261ffff1990971693821693909317959095179390931617949094179490941693909317909155908516900361141a576010805490600061141483612e4b565b91905055505b95945050505050565b61142e84848461086c565b6108f684848484611a5d565b6060611445826116ec565b506000611450611b86565b600084815260156020526040812054919250906114769062010000900461ffff16611b95565b9050600082511161149657604051806020016040528060008152506114b9565b81816040516020016114a9929190612fae565b6040516020818303038152906040525b949350505050565b601480546114ce90612d5c565b80601f01602080910402602001604051908101604052809291908181526020018280546114fa90612d5c565b80156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b505050505081565b6000828152600d602052604090206001015461156a81611732565b6108f683836118af565b61158b60008051602061305c833981519152611732565b60ff91821660009081526011602090815260408220805460018101825590835291206010820401805461ffff600f9093166002026101000a92830219169290931602179055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61160d8161ffff166116ec565b5061ffff8116600090815260156020526040902054600160201b900460ff16156116705760405162461bcd60e51b815260206004820152601460248201527313999d08185b1c9958591e481c995d99585b195960621b6044820152606401610892565b60004261167e600143612e22565b6040805160208082019490945291408282015260f085901b6001600160f01b031916606083015280516042818403018152606290920190528051910120905061081c8282611c28565b60006001600160e01b03198216637965db0b60e01b1480610750575061075082611d6f565b6000818152600260205260408120546001600160a01b03168061075057604051637e27328960e01b815260048101849052602401610892565b6108408383836001611d94565b610ef88133611e9a565b60006117488383611268565b6117c8576000838152600d602090815260408083206001600160a01b03861684529091529020805460ff191660011790556117803390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610750565b506000610750565b6000828152600260205260408120546001600160a01b031680158061180a5750600084815260156020526040902054600160201b900460ff165b6118565760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420747261646520756e72657665616c6564204e465400000000006044820152606401610892565b6013546001600160a01b03848116911614801561188057506013546001600160a01b038681169116145b156118995761189185856000611ed3565b9150506118a8565b6118a4858585611ed3565b9150505b9392505050565b60006118bb8383611268565b156117c8576000838152600d602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610750565b600061192b60008360006117d0565b90506001600160a01b03811661081c57604051637e27328960e01b815260048101839052602401610892565b6001600160a01b03821661198957604051630b61174360e31b81526001600160a01b0383166004820152602401610892565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61081c828260405180602001604052806000815250611ee8565b6040805160a08101825260009181018290526080810191909152811515606082015260ff8481168252851660208201819052611a4c9084612f72565b61ffff166040820152949350505050565b6001600160a01b0383163b156108f657604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611a9f903390889087908790600401612fed565b6020604051808303816000875af1925050508015611ada575060408051601f3d908101601f19168201909252611ad79181019061302a565b60015b611b43573d808015611b08576040519150601f19603f3d011682016040523d82523d6000602084013e611b0d565b606091505b508051600003611b3b57604051633250574960e11b81526001600160a01b0385166004820152602401610892565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611b7f57604051633250574960e11b81526001600160a01b0385166004820152602401610892565b5050505050565b60606014805461076590612d5c565b60606000611ba283611eff565b600101905060008167ffffffffffffffff811115611bc257611bc261289f565b6040519080825280601f01601f191660200182016040528015611bec576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611bf657509392505050565b61ffff8216600090815260156020908152604080832054610100900460ff1683526011909152812054611c5b9083613047565b61ffff841660009081526015602090815260408083205460ff610100909104811684526011909252909120805492935091908316908110611c9e57611c9e612ded565b6000918252602080832060108084049091015461ffff888116808752601585526040968790208054600160201b64ffffff000019909116600f9098166002026101000a9094048316620100000264ff000000001916969096179290921794859055855160ff8087168252600887901c8116828701529386901c909116958101959095529183901c81161515606085015260289290921c9091166080830152907f7a10019731796dcf61a5bd3f089a51fa13f87487187da9535be31eb5f68f19da9060a00160405180910390a2505050565b60006001600160e01b0319821663152a902d60e11b1480610750575061075082611fd7565b8080611da857506001600160a01b03821615155b15611e6a576000611db8846116ec565b90506001600160a01b03831615801590611de45750826001600160a01b0316816001600160a01b031614155b8015611df75750611df581846115d2565b155b15611e205760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610892565b8115611e685783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611ea48282611268565b61081c5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610892565b6000611edd611ffc565b6114b9848484612022565b611ef283836120ef565b6108406000848484611a5d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611f3e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f6a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611f8857662386f26fc10000830492506010015b6305f5e1008310611fa0576305f5e100830492506008015b6127108310611fb457612710830492506004015b60648310611fc6576064830492506002015b600a83106107505760010192915050565b60006001600160e01b0319821663780e9d6360e01b1480610750575061075082612154565b600a5460ff16156120205760405163d93c066560e01b815260040160405180910390fd5b565b6000806120308585856121a4565b90506001600160a01b03811661208d5761208884600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6120b0565b846001600160a01b0316816001600160a01b0316146120b0576120b0818561229d565b6001600160a01b0385166120cc576120c78461232e565b6114b9565b846001600160a01b0316816001600160a01b0316146114b9576114b985856123dd565b6001600160a01b03821661211957604051633250574960e11b815260006004820152602401610892565b6000612127838360006117d0565b90506001600160a01b03811615610840576040516339e3563760e11b815260006004820152602401610892565b60006001600160e01b031982166380ac58cd60e01b148061218557506001600160e01b03198216635b5e139f60e01b145b8061075057506301ffc9a760e01b6001600160e01b0319831614610750565b6000828152600260205260408120546001600160a01b03908116908316156121d1576121d181848661242d565b6001600160a01b0381161561220f576121ee600085600080611d94565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561223e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60006122a883610f1c565b6000838152600760205260409020549091508082146122fb576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061234090600190612e22565b6000838152600960205260408120546008805493945090928490811061236857612368612ded565b90600052602060002001549050806008838154811061238957612389612ded565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806123c1576123c1612e35565b6001900381819060005260206000200160009055905550505050565b600060016123ea84610f1c565b6123f49190612e22565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b612438838383612491565b610840576001600160a01b03831661246657604051637e27328960e01b815260048101829052602401610892565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610892565b60006001600160a01b038316158015906114b95750826001600160a01b0316846001600160a01b031614806124cb57506124cb84846115d2565b806114b95750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610ef857600080fd5b60006020828403121561251c57600080fd5b81356118a8816124f4565b60005b8381101561254257818101518382015260200161252a565b50506000910152565b60008151808452612563816020860160208601612527565b601f01601f19169290920160200192915050565b6020815260006118a8602083018461254b565b60006020828403121561259c57600080fd5b5035919050565b6001600160a01b0381168114610ef857600080fd5b600080604083850312156125cb57600080fd5b82356125d6816125a3565b946020939093013593505050565b803560ff811681146125f557600080fd5b919050565b6000806040838503121561260d57600080fd5b8235612618816125a3565b9150612626602084016125e4565b90509250929050565b60008060006060848603121561264457600080fd5b833561264f816125a3565b9250602084013561265f816125a3565b929592945050506040919091013590565b6000806040838503121561268357600080fd5b50508035926020909101359150565b600080604083850312156126a557600080fd5b8235915060208301356126b7816125a3565b809150509250929050565b803561ffff811681146125f557600080fd5b803580151581146125f557600080fd5b60008060008060008060c087890312156126fd57600080fd5b8635612708816125a3565b9550612716602088016126c2565b9450612724604088016125e4565b9350612732606088016125e4565b9250612740608088016126c2565b915061274e60a088016126d4565b90509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561279657835161ffff1683529284019291840191600101612776565b50909695505050505050565b600080604083850312156127b557600080fd5b6127be836125e4565b9150612626602084016126c2565b6000602082840312156127de57600080fd5b81356118a8816125a3565b600080602083850312156127fc57600080fd5b823567ffffffffffffffff8082111561281457600080fd5b818501915085601f83011261282857600080fd5b81358181111561283757600080fd5b8660208260051b850101111561284c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156127965783516001600160a01b03168352928401929184019160010161287a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128de576128de61289f565b604052919050565b600067ffffffffffffffff8311156129005761290061289f565b612913601f8401601f19166020016128b5565b905082815283838301111561292757600080fd5b828260208301376000602084830101529392505050565b60006020828403121561295057600080fd5b813567ffffffffffffffff81111561296757600080fd5b8201601f8101841361297857600080fd5b6114b9848235602084016128e6565b60006020828403121561299957600080fd5b6118a8826125e4565b6000602082840312156129b457600080fd5b6118a8826126c2565b600060208083850312156129d057600080fd5b823567ffffffffffffffff808211156129e857600080fd5b818501915085601f8301126129fc57600080fd5b813581811115612a0e57612a0e61289f565b8060051b9150612a1f8483016128b5565b8181529183018401918481019088841115612a3957600080fd5b938501935b83851015612a5e57612a4f856126c2565b82529385019390850190612a3e565b98975050505050505050565b60008082840360c0811215612a7e57600080fd5b612a87846126c2565b925060a0601f1982011215612a9b57600080fd5b5060405160a0810181811067ffffffffffffffff82111715612abf57612abf61289f565b604052612ace602085016125e4565b8152612adc604085016125e4565b6020820152612aed606085016126c2565b6040820152612afe608085016126d4565b6060820152612b0f60a085016125e4565b6080820152809150509250929050565b60a08101610750828460ff815116825260ff602082015116602083015261ffff604082015116604083015260608101511515606083015260ff60808201511660808301525050565b6020808252825182820181905260009190848201906040850190845b8181101561279657612bd083855160ff815116825260ff602082015116602083015261ffff604082015116604083015260608101511515606083015260ff60808201511660808301525050565b9284019260a09290920191600101612b83565b60008060408385031215612bf657600080fd5b6125d6836125e4565b60008060408385031215612c1257600080fd5b8235612c1d816125a3565b9150612626602084016126d4565b600080600080600060a08688031215612c4357600080fd5b8535612c4e816125a3565b9450612c5c602087016125e4565b9350612c6a604087016125e4565b9250612c78606087016126c2565b9150612c86608087016126d4565b90509295509295909350565b60008060008060808587031215612ca857600080fd5b8435612cb3816125a3565b93506020850135612cc3816125a3565b925060408501359150606085013567ffffffffffffffff811115612ce657600080fd5b8501601f81018713612cf757600080fd5b612d06878235602084016128e6565b91505092959194509250565b60008060408385031215612d2557600080fd5b612618836125e4565b60008060408385031215612d4157600080fd5b8235612d4c816125a3565b915060208301356126b7816125a3565b600181811c90821680612d7057607f821691505b602082108103612d9057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761075057610750612d96565b634e487b7160e01b600052601260045260246000fd5b600082612de857612de8612dc3565b500490565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103612e1957612e19612d96565b60010192915050565b8181038181111561075057610750612d96565b634e487b7160e01b600052603160045260246000fd5b600060018201612e5d57612e5d612d96565b5060010190565b601f82111561084057600081815260208120601f850160051c81016020861015612e8b5750805b601f850160051c820191505b81811015612eaa57828155600101612e97565b505050505050565b815167ffffffffffffffff811115612ecc57612ecc61289f565b612ee081612eda8454612d5c565b84612e64565b602080601f831160018114612f155760008415612efd5750858301515b600019600386901b1c1916600185901b178555612eaa565b600085815260208120601f198616915b82811015612f4457888601518255948401946001909101908401612f25565b5085821015612f625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61ffff81811683821601908082111561126157611261612d96565b600061ffff808316818103612fa457612fa4612d96565b6001019392505050565b60008351612fc0818460208801612527565b835190830190612fd4818360208801612527565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906130209083018461254b565b9695505050505050565b60006020828403121561303c57600080fd5b81516118a8816124f4565b60008261305657613056612dc3565b50069056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a264697066735822122007c4a1a6abcc1757cd5016ae87b573f09aba770982fad605cd70f774d85aab7b64736f6c63430008140033697066733a2f2f516d65354656545a7a6777704261647a545163507541544a4c594e776d6e3175767a58654c4a44663937686846732f