[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "DNAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "LinkMirrorContractFailed", "type": "error" }, { "inputs": [], "name": "MirrorAddressIsZero", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "SenderNotMirror", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "SkipNFTSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "blastContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mirrorERC721", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "result", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b507343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200006257600080fd5b505af115801562000077573d6000803e3d6000fd5b505050506200008c33620000f960201b60201c565b600068056bc75e2d631000009050600033604051620000ab906200040e565b6001600160a01b039091168152602001604051809103906000f080158015620000d8573d6000803e3d6000fd5b509050620000f16001600160601b038316338362000135565b50506200041c565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b68a20d6e21d0e52553088054640100000000900463ffffffff16156200016e57604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b03821662000196576040516339a84a7b60e01b815260040160405180910390fd5b630f4599e560005233602052602060006024601c6000865af160016000511416620001c95763d125259c6000526004601cfd5b805463ffffffff60201b19166401000000001781556001810180546001600160a01b0384166001600160a01b03199091161790558315620002f1576001600160a01b0383166200022c57604051633a954ecd60e21b815260040160405180910390fd5b6b0de0b6b39983494c589bffff8411156200025a5760405163e5cfe95760e01b815260040160405180910390fd5b8054600160601b600160c01b0319166c010000000000000000000000006001600160601b0386160217815560006200029284620002f7565b80546001600160601b038716600160a01b026001600160a01b0391821617825560008781529192508516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3620002ef8460016200036a565b505b50505050565b6001600160a01b038116600090815268a20d6e21d0e525531060205260408120805490916b010000000000000000000000909104600116900362000365576001823b1562000343576002175b815460ff9091166b0100000000000000000000000260ff60581b199091161781555b919050565b60006200037783620002f7565b80549091506b0100000000000000000000009004600216151582151514620003c357805460ff6b01000000000000000000000080830482166002189091160260ff60581b199091161781555b826001600160a01b03167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d64203938360405162000401911515815260200190565b60405180910390a2505050565b610cc1806200242d83390190565b612001806200042c6000396000f3fe60806040526004361061016a5760003560e01c806355f804b3116100d1578063a95d6b1c1161008a578063f04e283e11610064578063f04e283e14610836578063f2fde38b14610849578063fce14af61461085c578063fee81cf41461087757610171565b8063a95d6b1c146107b3578063c87b56dd146107c8578063dd62ed3e146107e857610171565b806355f804b3146106d857806370a08231146106f8578063715018a6146107465780638da5cb5b1461074e57806395d89b4114610767578063a9059cbb1461079357610171565b80632a6a935d116101235780632a6a935d14610625578063313ce567146106455780633ccfd60b1461066157806340c10f19146106765780634ef41efc1461069657806354d1f13d146106d057610171565b806306fdde0314610532578063095ea7b31461057657806318160ddd146105a657806323b872dd146105dd57806325692962146105fd578063274e430b1461060557610171565b3661017157005b68a20d6e21d0e525530860003560e01c63e5eb36c88190036101ef5760018201546001600160a01b031633146101ba5760405163ce5a776b60e01b815260040160405180910390fd5b60843610156101c857600080fd5b6004356024356044356064356101e0848484846108aa565b6101ea6001610bfa565b505050505b8063813500fc036102895760018201546001600160a01b031633146102275760405163ce5a776b60e01b815260040160405180910390fd5b606436101561023557600080fd5b6001600160a01b03604435818116600090815268a20d6e21d0e525530b6020908152604080832060043595861684529091529020805460ff19166024351515908117909155906102856001610bfa565b5050505b8063e985e9c5036103145760018201546001600160a01b031633146102c15760405163ce5a776b60e01b815260040160405180910390fd5b60443610156102cf57600080fd5b6004356001600160a01b038181166000908152600385016020908152604080832060243594851684529091529020546103119060ff161515610bfa565b610bfa565b50505b80636352211e036103795760018201546001600160a01b0316331461034c5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561035a57600080fd5b60043561037761036982610c04565b6001600160a01b0316610bfa565b505b8063d10b6e0c036103da5760018201546001600160a01b031633146103b15760405163ce5a776b60e01b815260040160405180910390fd5b60643610156103bf57600080fd5b6004356024356044356103d6610369848484610c3b565b5050505b8063081812fc036104315760018201546001600160a01b031633146104125760405163ce5a776b60e01b815260040160405180910390fd5b602436101561042057600080fd5b60043561042f61036982610d11565b505b8063f5b100ea036104b45760018201546001600160a01b031633146104695760405163ce5a776b60e01b815260040160405180910390fd5b602436101561047757600080fd5b6004356104b261030c826001600160a01b0316600090815268a20d6e21d0e5255310602052604090205463ffffffff600160801b9091041690565b505b8063e2c792810361051b5760018201546001600160a01b031633146104ec5760405163ce5a776b60e01b815260040160405180910390fd5b60043610156104fa57600080fd5b68a20d6e21d0e52553085461051b90600160401b900463ffffffff16610bfa565b8063b7a94eb803610530576105306001610bfa565b005b34801561053e57600080fd5b5060408051808201909152600981526810985b985b984d0c0d60ba1b60208201525b60405161056d9190611bb2565b60405180910390f35b34801561058257600080fd5b50610596610591366004611bfc565b610d5d565b604051901515815260200161056d565b3480156105b257600080fd5b5068a20d6e21d0e525530854600160601b90046001600160601b03165b60405190815260200161056d565b3480156105e957600080fd5b506105966105f8366004611c26565b610d73565b610530610de7565b34801561061157600080fd5b50610596610620366004611c62565b610e37565b34801561063157600080fd5b50610530610640366004611c7d565b610e86565b34801561065157600080fd5b506040516012815260200161056d565b34801561066d57600080fd5b50610530610e93565b34801561068257600080fd5b50610530610691366004611bfc565b610ea6565b3480156106a257600080fd5b5068a20d6e21d0e5255309546001600160a01b03165b6040516001600160a01b03909116815260200161056d565b610530610ebc565b3480156106e457600080fd5b506105306106f3366004611c9f565b610ef8565b34801561070457600080fd5b506105cf610713366004611c62565b6001600160a01b0316600090815268a20d6e21d0e52553106020526040902054600160a01b90046001600160601b031690565b610530610f12565b34801561075a57600080fd5b50638b78c6d819546106b8565b34801561077357600080fd5b5060408051808201909152600381526221272760e91b6020820152610560565b34801561079f57600080fd5b506105966107ae366004611bfc565b610f24565b3480156107bf57600080fd5b50610530610f31565b3480156107d457600080fd5b506105606107e3366004611d11565b610fa8565b3480156107f457600080fd5b506105cf610803366004611d2a565b6001600160a01b03918216600090815268a20d6e21d0e525530d6020908152604080832093909416825291909152205490565b610530610844366004611c62565b610ff1565b610530610857366004611c62565b61102e565b34801561086857600080fd5b506106b86002604360981b0181565b34801561088357600080fd5b506105cf610892366004611c62565b63389a75e1600c908152600091909152602090205490565b68a20d6e21d0e52553086001600160a01b0384166108db57604051633a954ecd60e21b815260040160405180910390fd5b60078101600282016000610916836108f38860011b90565b600381901c600090815260209290925260409091205460059190911b60e0161c90565b63ffffffff1681526020810191909152604001600020546001600160a01b038781169116146109575760405162a1148160e81b815260040160405180910390fd5b856001600160a01b0316836001600160a01b0316146109db576001600160a01b03808716600090815260038401602090815260408083209387168352929052205460ff166109db5760008481526004830160205260409020546001600160a01b038481169116146109db57604051632ce44b5f60e11b815260040160405180910390fd5b60006109e687611055565b905060006109f387611055565b8254909150670de0b6b3a7640000908390601490610a22908490600160a01b90046001600160601b0316611d73565b82546001600160601b039182166101009390930a9283029282021916919091179091558254600160a01b8082048316670de0b6b3a7640000019092169091026001600160a01b03918216178355891660009081526006860160208190526040909120909150610aa485610a958a60011b90565b610a9f868d6110b5565b611158565b6000888152600487016020908152604080832080546001600160a01b0319169055865463ffffffff60801b198116600160801b9182900463ffffffff90811660001901908116909202178855631fffffff600382901c1684529184905282205460059190911b60e0161c63ffffffff169050610b3582610b298860018d811b016108f3565b63ffffffff1683611158565b610b4e86600183811b01610a9f8960018e811b016108f3565b835463ffffffff60801b198116600160801b9182900463ffffffff908116600181019091169092021785556001600160a01b038b166000908152602085905260409020610b9c90828c611158565b610bac8760018c811b0183611158565b50505050670de0b6b3a76400006000528660601b60601c8860601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a35050505050505050565b8060005260206000f35b6000610c0f8261118c565b610c2c5760405163677510db60e11b815260040160405180910390fd5b610c35826111a9565b92915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a82610c6968a20d6e21d0e525530f600188901b6108f3565b63ffffffff1681526020810191909152604001600020546001600160a01b03908116925083168214610cdd576001600160a01b03808316600090815260038301602090815260408083209387168352929052205460ff16610cdd576040516367d9dca160e11b815260040160405180910390fd5b6000938452600401602052604090922080546001600160a01b0319166001600160a01b039490941693909317909255919050565b6000610d1c8261118c565b610d395760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b6000610d6a3384846111fe565b50600192915050565b6001600160a01b038316600090815268a20d6e21d0e525530d60209081526040808320338452909152812080546000198114610dd05780841115610dca576040516313be252b60e01b815260040160405180910390fd5b83810382555b610ddb86868661125b565b50600195945050505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054600160581b90046001168203610e7357823b5b9392505050565b54600160581b9004600216151592915050565b610e9033826116e7565b50565b610e9b611777565b610ea433611792565b565b610eae611777565b610eb882826117ae565b5050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610f00611777565b6000610f0d828483611e31565b505050565b610f1a611777565b610ea46000611a84565b6000610d6a33848461125b565b610f39611777565b60405163662aa11d60e01b8152306004820181905260248201526002604360981b019063662aa11d906044016020604051808303816000875af1158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e909190611ef2565b606060008054610fb790611da9565b159050610fec576000610fc983611ac2565b604051602001610fda929190611f0b565b60405160208183030381529060405290505b919050565b610ff9611777565b63389a75e1600c52806000526020600c20805442111561102157636f5e88186000526004601cfd5b60009055610e9081611a84565b611036611777565b8060601b61104c57637448fbae6000526004601cfd5b610e9081611a84565b6001600160a01b038116600090815268a20d6e21d0e52553106020526040812080549091600160581b9091046001169003610fec576001823b15611097576002175b815460ff909116600160581b0260ff60581b19909116178155919050565b8154600160601b900463ffffffff1668a20d6e21d0e5255308600082900361115157805481906000906110ed9063ffffffff16611f92565b825463ffffffff8083166101009490940a848102910219909116179092558554600160601b820263ffffffff60601b199091161786556000908152600283016020526040902080546001600160a01b0386166001600160a01b031990911617905591505b5092915050565b826020528160031c60005260406000206007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b600080611198836111a9565b6001600160a01b0316141592915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a826111d768a20d6e21d0e525530f600187901b6108f3565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b6001600160a01b03838116600081815268a20d6e21d0e525530d6020908152604080832094871680845294825282208590558482527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3505050565b6001600160a01b03821661128257604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e5255308600061129785611055565b905060006112a485611055565b90506112df6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b825463ffffffff600160801b808304821660808501528454041660a08301526001600160601b03600160a01b909104166040820181905285111561133657604051631e9acf1760e31b815260040160405180910390fd5b6040810180518690039081905283546001600160601b03808316600160a01b9081026001600160a01b03938416178755855481810483168a0160608701819052909216029116178355608082015161139c91670de0b6b3a7640000900480821191030290565b81528154600160581b900460021660000361140b57856001600160a01b0316876001600160a01b0316036113d857805160808201510360a08201525b611405670de0b6b3a76400008260600151816113f6576113f6611fb5565b048260a0015180821191030290565b60208201525b602081810151825160408051808201825260008152606081860190815282519390940180845260051b830185019091529181905290910181528151600786019015611539576001600160a01b0389166000908152600687016020526040902060808401518451885463ffffffff600160401b808304821684900382160263ffffffff60401b19909216919091178a558854918303908116600160801b0263ffffffff60801b199092169190911788555b60001991909101600381901c600090815260208490526040812054919291600584901b60e0161c63ffffffff1690506114f78582600080611b06565b600081815260048b016020908152604090912080546001600160a01b0319169055865160608f901b600884901b176001178152018652508082036114bb575050505b602083015115611680576001600160a01b03881660009081526006870160209081526040822060a086015191860151909290820190611578888d6110b5565b8a54602089015163ffffffff60401b19821663ffffffff600160401b80850482169093018116909202178d558a5463ffffffff60801b1916600160801b86831602178b55919250670de0b6b3a7640000600160601b82046001600160601b03160491640100000000909104165b6115f3876108f38360011b90565b63ffffffff1615611612576001018181111561160d575060015b6115e5565b61161d868683611158565b61162f87828588806001019950611b06565b875160608f901b600883901b178152602001885260010181811115611652575060015b8385036115e5578b5463ffffffff9091166401000000000267ffffffff0000000019909116178b5550505050505b602082015151156116a45760018601546116a49083906001600160a01b0316611b4c565b5050846000528560601b60601c8760601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a350505050505050565b60006116f283611055565b8054909150600160581b900460021615158215151461172d57805460ff600160581b80830482166002189091160260ff60581b199091161781555b826001600160a01b03167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d64203938360405161176a911515815260200190565b60405180910390a2505050565b638b78c6d819543314610ea4576382b429006000526004601cfd5b60003860003847855af1610e905763b12d13eb6000526004601cfd5b6001600160a01b0382166117d557604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e525530860006117ea84611055565b8254909150600160601b90046001600160601b031683016b0de0b6b39983494c589bffff81116b0de0b6b39983494c589bffff8511171561183e5760405163e5cfe95760e01b815260040160405180910390fd5b82546001600160601b03808316600160601b026bffffffffffffffffffffffff60601b199092169190911784558254600160a01b80820483168701928316026001600160a01b0390911617808455600160581b9004600216600003611a47576001600160a01b0386166000908152600685016020526040812084549091600160801b90910463ffffffff1690670de0b6b3a7640000840490506000611916838303848411026040805180820182526000815260606020808301918252835185815260059590951b850181019093528390529101815290565b602081015151909150600789019015611a4157670de0b6b3a7640000870460006119408a8e6110b5565b8b5460208601515163ffffffff60401b19821663ffffffff600160401b80850482169093018116909202178e558c5463ffffffff60801b1916600160801b89831602178d559192506401000000009004165b6119a0846108f38360011b90565b63ffffffff16156119bf57600101828111156119ba575060015b611992565b6119ca888883611158565b6119dc8482848a806001019b50611b06565b845160608f901b600883901b1781526020018552600101828111156119ff575060015b858703611992578b5467ffffffff00000000191664010000000063ffffffff831602178c5560018c0154611a3d9086906001600160a01b0316611b4c565b5050505b50505050505b505060008381526001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a350505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a900480611add575050819003601f19909101908152919050565b8163ffffffff168160201b17846020528360021c60005260406000206003851660061b815467ffffffffffffffff8482841c188116831b82188455505050505050505050565b60208201516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af1600182511416611b8857600081fd5b50505050565b60005b83811015611ba9578181015183820152602001611b91565b50506000910152565b6020815260008251806020840152611bd1816040850160208701611b8e565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610fec57600080fd5b60008060408385031215611c0f57600080fd5b611c1883611be5565b946020939093013593505050565b600080600060608486031215611c3b57600080fd5b611c4484611be5565b9250611c5260208501611be5565b9150604084013590509250925092565b600060208284031215611c7457600080fd5b610e6c82611be5565b600060208284031215611c8f57600080fd5b81358015158114610e6c57600080fd5b60008060208385031215611cb257600080fd5b823567ffffffffffffffff80821115611cca57600080fd5b818501915085601f830112611cde57600080fd5b813581811115611ced57600080fd5b866020828501011115611cff57600080fd5b60209290920196919550909350505050565b600060208284031215611d2357600080fd5b5035919050565b60008060408385031215611d3d57600080fd5b611d4683611be5565b9150611d5460208401611be5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b0382811682821603908082111561115157611151611d5d565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680611dbd57607f821691505b602082108103611ddd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610f0d57600081815260208120601f850160051c81016020861015611e0a5750805b601f850160051c820191505b81811015611e2957828155600101611e16565b505050505050565b67ffffffffffffffff831115611e4957611e49611d93565b611e5d83611e578354611da9565b83611de3565b6000601f841160018114611e915760008515611e795750838201355b600019600387901b1c1916600186901b178355611eeb565b600083815260209020601f19861690835b82811015611ec25786850135825560209485019460019092019101611ea2565b5086821015611edf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600060208284031215611f0457600080fd5b5051919050565b6000808454611f1981611da9565b60018281168015611f315760018114611f4657611f75565b60ff1984168752821515830287019450611f75565b8860005260208060002060005b85811015611f6c5781548a820152908401908201611f53565b50505082870194505b505050508351611f89818360208801611b8e565b01949350505050565b600063ffffffff808316818103611fab57611fab611d5d565b6001019392505050565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220426d5d5a07eecb42da32fe0a5302d4e41bacbcd6707bae0022cda48f02472cb464736f6c63430008150033608060405234801561001057600080fd5b50604051610cc1380380610cc183398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610c268061009b6000396000f3fe6080604052600436106101025760003560e01c80636cef16e61161009557806397e5311c1161006457806397e5311c14610424578063a22cb46514610439578063b88d4fde14610459578063c87b56dd14610479578063e985e9c51461049957610109565b80636cef16e6146103b457806370a08231146103c95780638da5cb5b146103e957806395d89b411461040f57610109565b806318160ddd116100d157806318160ddd1461033e57806323b872dd1461036157806342842e0e146103815780636352211e1461039457610109565b806301ffc9a71461027257806306fdde03146102c4578063081812fc146102e6578063095ea7b31461031e57610109565b3661010957005b683602298b8c10b0123060003560e01c63263c69d68190036101d55781546001600160a01b0316331461014f57604051631b1e598960e11b815260040160405180910390fd5b602036103d60003e6004356024018036103d60003e602081033560051b81018036103d60003e5b8082146101c85781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a4505050816020019150610176565b5050600160005260206000f35b80630f4599e5036102705760018201546001600160a01b03161561022b5760018201546001600160a01b03166004356001600160a01b03161461022b576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b03161561025457604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560016000908152602090f35b005b34801561027e57600080fd5b506102af61028d3660046109b1565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156102d057600080fd5b506102d96104b9565b6040516102bb91906109e2565b3480156102f257600080fd5b50610306610301366004610a30565b6104cf565b6040516001600160a01b0390911681526020016102bb565b34801561032a57600080fd5b50610270610339366004610a65565b6104e7565b34801561034a57600080fd5b5061035361056d565b6040519081526020016102bb565b34801561036d57600080fd5b5061027061037c366004610a8f565b61057f565b61027061038f366004610a8f565b61060e565b3480156103a057600080fd5b506103066103af366004610a30565b610640565b3480156103c057600080fd5b50610270610652565b3480156103d557600080fd5b506103536103e4366004610acb565b610705565b3480156103f557600080fd5b50683602298b8c10b01232546001600160a01b0316610306565b34801561041b57600080fd5b506102d9610720565b34801561043057600080fd5b50610306610731565b34801561044557600080fd5b50610270610454366004610ae6565b610766565b34801561046557600080fd5b50610270610474366004610b22565b6107e9565b34801561048557600080fd5b506102d9610494366004610a30565b610844565b3480156104a557600080fd5b506102af6104b4366004610bbd565b610854565b60606104ca6306fdde036000610880565b905090565b60006104e163081812fc8360006108dd565b92915050565b60006104f1610731565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d1116610531573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b60006104ca63e2c792816000806108dd565b6000610589610731565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af16001825114166105df573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b61061983838361057f565b813b1561063b5761063b83838360405180602001604052806000815250610925565b505050565b60006104e1636352211e8360006108dd565b60008061065d610731565b9050638da5cb5b600052602060006004601c845afa601f3d11161561068557600c5160601c91505b683602298b8c10b0123254683602298b8c10b01230906001600160a01b0390811690841681146106ff576002820180546001600160a01b0319166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b50505050565b60006104e163f5b100ea836001600160a01b031660006108dd565b60606104ca6395d89b416000610880565b683602298b8c10b01230546001600160a01b03168061076357604051632d9523d760e11b815260040160405180910390fd5b90565b6000610770610731565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af1600160005114166107b4573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b6107f485858561057f565b833b1561083d5761083d85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061092592505050565b5050505050565b60606104e163c87b56dd83610880565b600061087763e985e9c5846001600160a01b0316846001600160a01b03166108dd565b15159392505050565b6060600061088c610731565b9050604051915083600052826020526000806024601c845afa6108b2573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525092915050565b6000806108e8610731565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610916573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a0840152801561096c578060c08401826020870160045afa505b60208360a48301601c860160008a5af161098f573d1561098f573d6000843e3d83fd5b508060e01b8251146109a95763d1a57ed66000526004601cfd5b505050505050565b6000602082840312156109c357600080fd5b81356001600160e01b0319811681146109db57600080fd5b9392505050565b600060208083528351808285015260005b81811015610a0f578581018301518582016040015282016109f3565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610a4257600080fd5b5035919050565b80356001600160a01b0381168114610a6057600080fd5b919050565b60008060408385031215610a7857600080fd5b610a8183610a49565b946020939093013593505050565b600080600060608486031215610aa457600080fd5b610aad84610a49565b9250610abb60208501610a49565b9150604084013590509250925092565b600060208284031215610add57600080fd5b6109db82610a49565b60008060408385031215610af957600080fd5b610b0283610a49565b915060208301358015158114610b1757600080fd5b809150509250929050565b600080600080600060808688031215610b3a57600080fd5b610b4386610a49565b9450610b5160208701610a49565b935060408601359250606086013567ffffffffffffffff80821115610b7557600080fd5b818801915088601f830112610b8957600080fd5b813581811115610b9857600080fd5b896020828501011115610baa57600080fd5b9699959850939650602001949392505050565b60008060408385031215610bd057600080fd5b610bd983610a49565b9150610be760208401610a49565b9050925092905056fea26469706673582212201985bb8dde21a26623c4e62b707b28c6d9825ef0f8e5214c01338c78d066705964736f6c63430008150033