[ { "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": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "RolesUpdated", "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": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "mirror", "type": "address" } ], "name": "EnablePixies", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "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": [], "name": "gasBurnFactor", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "grantRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAllRoles", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAnyRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBalanceLimit", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": "view", "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": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "renounceRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setBasicPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "gasBurnFactor_", "type": "uint32" } ], "name": "setGasBurnFactor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "setNameAndSymbol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setNewBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "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" } ]
60806040523480156200001157600080fd5b506200001d3262000023565b62000322565b6200002e81620000af565b6200003b816001620000eb565b60408051808201909152600b81526a5069786965205265616c6d60a81b60208201526000906200006c908262000256565b50604080518082019091526005815264504958494560d81b602082015260019062000098908262000256565b50506003805464ffffffffff191662c35023179055565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6200017782620001368362000126836001600160a01b0316600090815268a20d6e21d0e525531060205260409020546001600160581b031690565b6001600160581b0316906200017b565b6001600160a01b0391909116600090815268a20d6e21d0e52553106020526040902080546001600160581b0319166001600160581b03909216919091179055565b5050565b6000811515620001908460571c600116151590565b151514620001aa576a800000000000000000000092909218915b5090919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001dc57607f821691505b602082108103620001fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025157600081815260208120601f850160051c810160208610156200022c5750805b601f850160051c820191505b818110156200024d5782815560010162000238565b5050505b505050565b81516001600160401b03811115620002725762000272620001b1565b6200028a81620002838454620001c7565b8462000203565b602080601f831160018114620002c25760008415620002a95750858301515b600019600386901b1c1916600185901b1785556200024d565b600085815260208120601f198616915b82811015620002f357888601518255948401946001909101908401620002d2565b5085821015620003125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61288f80620003326000396000f3fe6080604052600436106102295760003560e01c80635327bba31161012357806395d89b41116100ab578063c87b56dd1161006f578063c87b56dd146109e9578063dd62ed3e14610a09578063f04e283e14610a57578063f2fde38b14610a6a578063fee81cf414610a7d57610230565b806395d89b41146109745780639953747b14610989578063a9059cbb146109a9578063b19de39f146109c9578063c002035b146108d657610230565b80635a446215116100f25780635a446215146108fe57806370a082311461091e578063715018a61461093e57806375b238fc146109465780638da5cb5b1461095b57610230565b80635327bba31461089f57806353d6fd59146108d657806354d1f13d146108f657806355f804b3146106e057610230565b806325692962116101b15780633af32abf116101755780633af32abf146107e65780633ccfd60b146108065780634a4ee7b11461081b5780634ef41efc1461082e578063514e62fc1461086857610230565b80632569296214610757578063274e430b1461075f5780632a6a935d1461077f5780632de948071461079f578063313ce567146107d257610230565b8063183a4f6e116101f8578063183a4f6e146106ba5780631c10893f146106cd5780631cb1ac0b146106e05780631cd64df41461070057806323b872dd1461073757610230565b806304dfe79d1461060057806306fdde0314610631578063095ea7b31461065357806318160ddd1461068357610230565b3661023057005b68a20d6e21d0e525530860003560e01c63e985e9c58190036102d65760018201546001600160a01b031633146102795760405163ce5a776b60e01b815260040160405180910390fd5b604436101561028757600080fd5b6004356001600160a01b038181166000908152600385016020908152604080832060243594851684529091529020546102d39060ff166102c85760006102cb565b60015b60ff16610ab0565b50505b80636352211e0361033b5760018201546001600160a01b0316331461030e5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561031c57600080fd5b60043561033961032b82610aba565b6001600160a01b0316610ab0565b505b8063e5eb36c8036103a85760018201546001600160a01b031633146103735760405163ce5a776b60e01b815260040160405180910390fd5b608436101561038157600080fd5b60043560243560443560643561039984848484610af1565b6103a36001610ab0565b505050505b8063813500fc036104425760018201546001600160a01b031633146103e05760405163ce5a776b60e01b815260040160405180910390fd5b60643610156103ee57600080fd5b6001600160a01b03604435818116600090815268a20d6e21d0e525530b6020908152604080832060043595861684529091529020805460ff191660243515159081179091559061043e6001610ab0565b5050505b8063d10b6e0c036104a35760018201546001600160a01b0316331461047a5760405163ce5a776b60e01b815260040160405180910390fd5b606436101561048857600080fd5b60043560243560443561049f61032b848484610b38565b5050505b8063081812fc036104fa5760018201546001600160a01b031633146104db5760405163ce5a776b60e01b815260040160405180910390fd5b60243610156104e957600080fd5b6004356104f861032b82610c30565b505b8063f5b100ea036105825760018201546001600160a01b031633146105325760405163ce5a776b60e01b815260040160405180910390fd5b602436101561054057600080fd5b60043561058061057b826001600160a01b0316600090815268a20d6e21d0e5255310602052604090205463ffffffff600160801b9091041690565b610ab0565b505b8063e2c79281036105e95760018201546001600160a01b031633146105ba5760405163ce5a776b60e01b815260040160405180910390fd5b60043610156105c857600080fd5b68a20d6e21d0e5255308546105e990600160401b900463ffffffff16610ab0565b8063b7a94eb8036105fe576105fe6001610ab0565b005b34801561060c57600080fd5b5060035461061a9060ff1681565b60405160ff90911681526020015b60405180910390f35b34801561063d57600080fd5b50610646610c7c565b60405161062891906123e6565b34801561065f57600080fd5b5061067361066e36600461244b565b610d0e565b6040519015158152602001610628565b34801561068f57600080fd5b5068a20d6e21d0e525530854600160601b90046001600160601b03165b604051908152602001610628565b6105fe6106c8366004612475565b610d84565b6105fe6106db36600461244b565b610d91565b3480156106ec57600080fd5b506105fe6106fb3660046124d0565b610da7565b34801561070c57600080fd5b5061067361071b36600461244b565b638b78c6d8600c90815260009290925260209091205481161490565b34801561074357600080fd5b50610673610752366004612512565b610dbf565b6105fe610e62565b34801561076b57600080fd5b5061067361077a36600461254e565b610eb2565b34801561078b57600080fd5b506105fe61079a366004612579565b610f01565b3480156107ab57600080fd5b506106ac6107ba36600461254e565b638b78c6d8600c908152600091909152602090205490565b3480156107de57600080fd5b50601261061a565b3480156107f257600080fd5b5061067361080136600461254e565b610f0b565b34801561081257600080fd5b506105fe610f24565b6105fe61082936600461244b565b610f38565b34801561083a57600080fd5b5068a20d6e21d0e5255309546001600160a01b03165b6040516001600160a01b039091168152602001610628565b34801561087457600080fd5b5061067361088336600461244b565b638b78c6d8600c90815260009290925260209091205416151590565b3480156108ab57600080fd5b506003546108c190610100900463ffffffff1681565b60405163ffffffff9091168152602001610628565b3480156108e257600080fd5b506105fe6108f1366004612594565b610f4a565b6105fe610f64565b34801561090a57600080fd5b506105fe6109193660046125c7565b610fa0565b34801561092a57600080fd5b506106ac61093936600461254e565b610fce565b6105fe611001565b34801561095257600080fd5b506106ac600181565b34801561096757600080fd5b50638b78c6d81954610850565b34801561098057600080fd5b50610646611015565b34801561099557600080fd5b506105fe6109a436600461254e565b611024565b3480156109b557600080fd5b506106736109c436600461244b565b61105e565b3480156109d557600080fd5b506105fe6109e4366004612633565b611074565b3480156109f557600080fd5b50610646610a04366004612475565b6110a2565b348015610a1557600080fd5b506106ac610a24366004612659565b6001600160a01b03918216600090815268a20d6e21d0e525530d6020908152604080832093909416825291909152205490565b6105fe610a6536600461254e565b61119c565b6105fe610a7836600461254e565b6111d9565b348015610a8957600080fd5b506106ac610a9836600461254e565b63389a75e1600c908152600091909152602090205490565b8060005260206000f35b6000610ac582611200565b610ae25760405163677510db60e11b815260040160405180910390fd5b610aeb8261121d565b92915050565b610afd84848484611272565b610b0784846115de565b826001600160a01b0316846001600160a01b031614610b3257610b3284670de0b6b3a764000061166b565b50505050565b600068a20d6e21d0e52553088168a20d6e21d0e525530a81610b8668a20d6e21d0e525530f600189901b5b600381901c600090815260209290925260409091205460059190911b60e0161c90565b63ffffffff1681526020810191909152604001600020546001600160a01b03908116915084168114610bfa576001600160a01b03808216600090815260038401602090815260408083209388168352929052205460ff16610bfa576040516367d9dca160e11b815260040160405180910390fd5b60008581526004909201602052604090912080546001600160a01b0387166001600160a01b031990911617905590509392505050565b6000610c3b82611200565b610c585760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b606060008054610c8b90612683565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb790612683565b8015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b5050505050905090565b60008068a20d6e21d0e525530833600081815260058301602090815260408083206001600160a01b038a16808552908352928190208890555187815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b610d8e33826116e4565b50565b610d996116f0565b610da3828261170b565b5050565b6001610db281611717565b6002610b32838583612713565b6001600160a01b038316600090815268a20d6e21d0e525530d6020908152604080832033845290915281205468a20d6e21d0e5255308906000198114610e4b5780841115610e20576040516313be252b60e01b815260040160405180910390fd5b6001600160a01b03861660009081526005830160209081526040808320338452909152902084820390555b610e5686868661174a565b50600195945050505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054600160581b90046001168203610eee57823b5b9392505050565b54600160581b9004600216151592915050565b610d8e3382611782565b6000610aeb610f1983611812565b60571c600116151590565b6001610f2f81611717565b610d8e3361183e565b610f406116f0565b610da382826116e4565b6001610f5581611717565b610f5f838361185a565b505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6001610fab81611717565b6000610fb8858783612713565b506001610fc6838583612713565b505050505050565b6001600160a01b0316600090815268a20d6e21d0e52553106020526040902054600160a01b90046001600160601b031690565b6110096116f0565b611013600061187f565b565b606060018054610c8b90612683565b600161102f81611717565b6000611045670de0b6b3a76400006127106127e9565b9050336110538282866118bd565b610b3281600161185a565b600061106b33848461174a565b50600192915050565b600161107f81611717565b506003805463ffffffff9092166101000264ffffffff0019909216919091179055565b60606110ad82611200565b6110ca5760405163677510db60e11b815260040160405180910390fd5b600280546110d790612683565b15905061119757610aeb600280546110ee90612683565b80601f016020809104026020016040519081016040528092919081815260200182805461111a90612683565b80156111675780601f1061113c57610100808354040283529160200191611167565b820191906000526020600020905b81548152906001019060200180831161114a57829003601f168201915b5050505050604051806040016040528060048152602001637b69647d60e01b81525061119285611a4d565b611a91565b919050565b6111a46116f0565b63389a75e1600c52806000526020600c2080544211156111cc57636f5e88186000526004601cfd5b60009055610d8e8161187f565b6111e16116f0565b8060601b6111f757637448fbae6000526004601cfd5b610d8e8161187f565b60008061120c8361121d565b6001600160a01b0316141592915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a8261124b68a20d6e21d0e525530f600187901b610b63565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b68a20d6e21d0e52553086001600160a01b0384166112a357604051633a954ecd60e21b815260040160405180910390fd5b60008160020160006112bc84600701610b638860011b90565b63ffffffff1681526020810191909152604001600020546001600160a01b039081169150861681146113005760405162a1148160e81b815260040160405180910390fd5b856001600160a01b0316836001600160a01b031614611384576001600160a01b03808716600090815260038401602090815260408083209387168352929052205460ff166113845760008481526004830160205260409020546001600160a01b0384811691161461138457604051632ce44b5f60e11b815260040160405180910390fd5b600061138f87611bb4565b9050600061139c87611bb4565b8254909150670de0b6b3a76400009083906014906113cb908490600160a01b90046001600160601b0316612800565b82546101009290920a6001600160601b0381810219909316918316021790915582546001600160a01b038116670de0b6b3a7640000600160a01b92839004841601909216021782555061142f60078501600188901b61142a848b611c20565b611cc3565b6000868152600485016020908152604080832080546001600160a01b03191690556001600160a01b038b168352600687018252808320855463ffffffff60801b198116600160801b9182900463ffffffff90811660001901908116909202178755631fffffff600382901c168552925282205460059190911b60e0161c6001600160a01b038a166000908152600687016020526040902063ffffffff9190911691506114f3906114e76007880160018b811b01610b63565b63ffffffff1683611cc3565b8154600163ffffffff600160801b80840482169283019091160263ffffffff60801b199092169190911783556115456007870161153384600190811b0190565b61142a60078a0160018d811b01610b63565b6001600160a01b0389166000908152600687016020526040902061156a90828a611cc3565b61157d6007870160018a811b0183611cc3565b5050866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516115cc91815260200190565b60405180910390a35050505050505050565b60035460ff1660008190036115f257505050565b80670de0b6b3a76400000261160683610fce565b1161161057505050565b61161c610f1983611812565b1561162657505050565b638b78c6d819546001600160a01b0316836001600160a01b03160361164a57505050565b638b78c6d8600c9081526000849052602090205460011615610f5f57505050565b600354610100900463ffffffff16600081900361168757505050565b6000806116a68461169787611812565b6001600160581b031690611cf7565b91509150600281106116d35780800283026301312d008082106116c7578091505b6116d082611d6e565b50505b6116dd8583611da2565b5050505050565b610da382826000611de7565b638b78c6d819543314611013576382b429006000526004601cfd5b610da382826001611de7565b638b78c6d819543314610d8e57638b78c6d8600c5233600052806020600c205416610d8e576382b429006000526004601cfd5b611755838383611e40565b61175f83836115de565b816001600160a01b0316836001600160a01b031614610f5f57610f5f838261166b565b600061178d83611bb4565b8054909150600160581b90046002161515821515146117c857805460ff600160581b80830482166002189091160260ff60581b199091161781555b826001600160a01b03167fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039383604051611805911515815260200190565b60405180910390a2505050565b6001600160a01b0316600090815268a20d6e21d0e525531060205260409020546001600160581b031690565b60003860003847855af1610d8e5763b12d13eb6000526004601cfd5b610da38261187a8361186b86611812565b6001600160581b03169061230f565b611da2565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b68a20d6e21d0e52553088054640100000000900463ffffffff16156118f557604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b03821661191c576040516339a84a7b60e01b815260040160405180910390fd5b61192582612335565b805467ffffffff0000000019166401000000001781556001810180546001600160a01b0384166001600160a01b03199091161790558315610b32576001600160a01b03831661198757604051633a954ecd60e21b815260040160405180910390fd5b6b0de0b6b39983494c589bffff8411156119b45760405163e5cfe95760e01b815260040160405180910390fd5b80546bffffffffffffffffffffffff60601b1916600160601b6001600160601b0386160217815560006119e684611bb4565b80546001600160a01b03908116600160a01b6001600160601b038916021782556040518781529192508516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36116dd846001611782565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a900480611a68575050819003601f19909101908152919050565b60608351835183516020870196506020860195506020850194506020604051019350828701838311611b6357600183820301600060208510611ad257508388205b601f851660200360031b89515b8b51818118831c611b4a578315611b195783888e2014611b1957808a5260019c8d019c90990198848d10611b135750611b5e565b50611adf565b60005b8b8101518b820152602001878110611b1c57509b87019b988601988715611b4a57848d10611b135750611b5e565b895260019b8c019b90980197838c10611adf575b505050505b84935060206040510194508781038585030192505b80881015611b93578751845260209788019790930192611b78565b50506000818401908152602001604052601f19909201918252509392505050565b6001600160a01b038116600090815268a20d6e21d0e5255310602052604081208054909168a20d6e21d0e525530891600160581b90046001169003611c1a576001833b15611c00576002175b825460ff909116600160581b0260ff60581b199091161782555b50919050565b8154600160601b900463ffffffff1668a20d6e21d0e52553086000829003611cbc5780548190600090611c589063ffffffff16612820565b825463ffffffff8083166101009490940a848102910219909116179092558554600160601b820263ffffffff60601b199091161786556000908152600283016020526040902080546001600160a01b0386166001600160a01b031990911617905591505b5092915050565b826020528160031c60005260406000206007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b600080605784901c60011615611d1257508290506000611d67565b637fffffff620151804204811690603886901c1666ffffffffffffff8616818314611d3e575081905060005b60389190911b66ffffffffffffff602887901c811692909201918216179350620de0b690049150505b9250929050565b80600117601052605b8104607882110260005b818114611d975760108080209052600101611d81565b5050601051610d8e57fe5b6001600160a01b0391909116600090815268a20d6e21d0e52553106020526040902080546affffffffffffffffffffff19166001600160581b03909216919091179055565b638b78c6d8600c52826000526020600c20805483811783611e09575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b6001600160a01b038216611e6757604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e52553086000611e7c85611bb4565b90506000611e8985611bb4565b9050611ec46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b825463ffffffff600160801b808304821660808501528454041660a08301526001600160601b03600160a01b9091041660408201819052851115611f1b57604051631e9acf1760e31b815260040160405180910390fd5b6040810180518690039081905283546001600160601b03808316600160a01b9081026001600160a01b03938416178755855481810483168a01606087018190529092160291161783556080820151611f8191670de0b6b3a7640000900480821191030290565b81528154600160581b9004600216600003611ff057856001600160a01b0316876001600160a01b031603611fbd57805160808201510360a08201525b611fea670de0b6b3a7640000826060015181611fdb57611fdb612843565b048260a0015180821191030290565b60208201525b600061203a82602001518360000151016040805180820190915260608152600060208201526040805101828152806020018360051b81016040528183528083602001525050919050565b825190915015612134576001600160a01b0388166000908152600686016020526040902060808301518351875463ffffffff600160401b808304821684900382160263ffffffff60401b199092169190911789558754918303908116600160801b0263ffffffff60801b199092169190911787555b60001991909101600381901c600090815260208490526040812054919291600584901b60e0161c63ffffffff1690506120ee8960070182600080612367565b600081815260048a016020908152604090912080546001600160a01b0319169055858101805160089390931b60608f901b176001178352910190528082036120af575050505b602082015115612297576001600160a01b03871660009081526006860160209081526040822060a085015191850151909290820190612173878c611c20565b8954602088015163ffffffff60401b19821663ffffffff600160401b80850482169093018116909202178c55895463ffffffff60801b1916600160801b86831602178a55919250670de0b6b3a7640000600160601b82046001600160601b03160491640100000000909104165b6121f18b600701610b638360011b90565b63ffffffff1615612210576001018181111561220b575060015b6121e0565b61221b868683611cc3565b6122308b600701828588806001019950612367565b61225a878e8360008360200151818360081b8560601b171781526020810185602001525050505050565b60010181811115612269575060015b8385036121e0578a5463ffffffff9091166401000000000267ffffffff0000000019909116178a5550505050505b805151156122b85760018501546122b89082906001600160a01b03166123ad565b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516122fe91815260200190565b60405180910390a350505050505050565b60006001605784901c1615158215151461232e57600160571b92909218915b5090919050565b630f4599e560005233602052602060006024601c6000855af160016000511416610d8e5763d125259c6000526004601cfd5b8163ffffffff168160201b17846020528360021c60005260406000206003851660061b815467ffffffffffffffff8482841c188116831b82188455505050505050505050565b81516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af1600182511416610b3257600081fd5b600060208083528351808285015260005b81811015612413578581018301518582016040015282016123f7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461119757600080fd5b6000806040838503121561245e57600080fd5b61246783612434565b946020939093013593505050565b60006020828403121561248757600080fd5b5035919050565b60008083601f8401126124a057600080fd5b50813567ffffffffffffffff8111156124b857600080fd5b602083019150836020828501011115611d6757600080fd5b600080602083850312156124e357600080fd5b823567ffffffffffffffff8111156124fa57600080fd5b6125068582860161248e565b90969095509350505050565b60008060006060848603121561252757600080fd5b61253084612434565b925061253e60208501612434565b9150604084013590509250925092565b60006020828403121561256057600080fd5b610ee782612434565b8035801515811461119757600080fd5b60006020828403121561258b57600080fd5b610ee782612569565b600080604083850312156125a757600080fd5b6125b083612434565b91506125be60208401612569565b90509250929050565b600080600080604085870312156125dd57600080fd5b843567ffffffffffffffff808211156125f557600080fd5b6126018883890161248e565b9096509450602087013591508082111561261a57600080fd5b506126278782880161248e565b95989497509550505050565b60006020828403121561264557600080fd5b813563ffffffff81168114610ee757600080fd5b6000806040838503121561266c57600080fd5b61267583612434565b91506125be60208401612434565b600181811c9082168061269757607f821691505b602082108103611c1a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115610f5f57600081815260208120601f850160051c810160208610156126f45750805b601f850160051c820191505b81811015610fc657828155600101612700565b67ffffffffffffffff83111561272b5761272b6126b7565b61273f836127398354612683565b836126cd565b6000601f841160018114612773576000851561275b5750838201355b600019600387901b1c1916600186901b1783556116dd565b600083815260209020601f19861690835b828110156127a45786850135825560209485019460019092019101612784565b50868210156127c15760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610aeb57610aeb6127d3565b6001600160601b03828116828216039080821115611cbc57611cbc6127d3565b600063ffffffff808316818103612839576128396127d3565b6001019392505050565b634e487b7160e01b600052601260045260246000fdfea2646970667358221220dde1e5aa1fd39a57b76e537c77535ad2847d48a7993f52caa9a3d1f69c0fa1e364736f6c63430008130033