[ { "inputs": [ { "internalType": "address[]", "name": "_devList", "type": "address[]" }, { "internalType": "uint256[]", "name": "_fees", "type": "uint256[]" }, { "internalType": "address", "name": "_lzEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "MessageFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "Migration", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "devAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "devAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "WithdrawWrongNfts", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "devAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "tokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WithdrawWrongTokens", "type": "event" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "Owned", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "START_ID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "devFees", "outputs": [ { "internalType": "uint256", "name": "percent", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "failedMessages", "outputs": [ { "internalType": "uint256", "name": "payloadLength", "type": "uint256" }, { "internalType": "bytes32", "name": "payloadHash", "type": "bytes32" } ], "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": "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": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxPerPerson", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerTx", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "onLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addressList", "type": "address[]" } ], "name": "removeWhiteList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "royalty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "safeMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeMintToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newVal", "type": "uint256" } ], "name": "setGasForDestinationLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxBuy", "type": "uint256" } ], "name": "setMaxPerPerson", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxBuy", "type": "uint256" } ], "name": "setMaxPerTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_royalty", "type": "uint16" } ], "name": "setRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyAddress", "type": "address" } ], "name": "setRoyaltyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "bytes", "name": "_trustedRemote", "type": "bytes" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setURI", "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": "uint256", "name": "_id", "type": "uint256" } ], "name": "tokenExists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "traverseChains", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "updatePausedStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateWhitelistStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_addressList", "type": "address[]" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "whiteList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whiteListed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistedOnly", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenContract", "type": "address" }, { "internalType": "uint256[]", "name": "_id", "type": "uint256[]" } ], "name": "withdrawNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenContract", "type": "address" } ], "name": "withdrawTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052600560a081905264173539b7b760d91b60c090815262000028916002919062000446565b506000601081905560de60145560016015556002601655601755601880546001600160a01b031916739561e0f9520d006ad1812be22090b4f398ba99ff1790556103e860195562055730601a553480156200008257600080fd5b5060405162004c9538038062004c95833981016040819052620000a591620005eb565b601454604080518082018252600c81526b2834b930ba32a130bcafbb1960a11b602080830191825283518085019094526009845268212aa1a1a0a722a2a960b91b908401528151919291620000fd9160009162000446565b5080516200011390600190602084019062000446565b5050600c805460ff19169055506200012b3362000345565b6080528151835114620001855760405162461bcd60e51b815260206004820152601360248201527f4572726f723a20696e76616c696420646174610000000000000000000000000060448201526064015b60405180910390fd5b6000805b84518160ff161015620002c257601b858260ff1681518110620001b057620001b0620006cd565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790556040805180820190915284518190869060ff8516908110620002115762000211620006cd565b602002602001015181526020016000815250601d6000878460ff16815181106200023f576200023f620006cd565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010155905050838160ff1681518110620002965762000296620006cd565b602002602001015182620002ab9190620006f9565b915080620002b98162000714565b91505062000189565b508061271014620003165760405162461bcd60e51b815260206004820152601860248201527f4572726f723a20696e76616c696420746f74616c20666565000000000000000060448201526064016200017c565b600d80546001600160a01b0319166001600160a01b0384161790556200033b6200039f565b5050505062000774565b600c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620003a9620003fc565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620003df3390565b6040516001600160a01b03909116815260200160405180910390a1565b600c5460ff1615620004445760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016200017c565b565b828054620004549062000737565b90600052602060002090601f016020900481019282620004785760008555620004c3565b82601f106200049357805160ff1916838001178555620004c3565b82800160010185558215620004c3579182015b82811115620004c3578251825591602001919060010190620004a6565b50620004d1929150620004d5565b5090565b5b80821115620004d15760008155600101620004d6565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200052d576200052d620004ec565b604052919050565b60006001600160401b03821115620005515762000551620004ec565b5060051b60200190565b80516001600160a01b03811681146200057357600080fd5b919050565b600082601f8301126200058a57600080fd5b81516020620005a36200059d8362000535565b62000502565b82815260059290921b84018101918181019086841115620005c357600080fd5b8286015b84811015620005e05780518352918301918301620005c7565b509695505050505050565b6000806000606084860312156200060157600080fd5b83516001600160401b03808211156200061957600080fd5b818601915086601f8301126200062e57600080fd5b81516020620006416200059d8362000535565b82815260059290921b8401810191818101908a8411156200066157600080fd5b948201945b838610156200068a576200067a866200055b565b8252948201949082019062000666565b91890151919750909350505080821115620006a457600080fd5b50620006b38682870162000578565b925050620006c4604085016200055b565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156200070f576200070f620006e3565b500190565b600060ff821660ff8114156200072e576200072e620006e3565b60010192915050565b600181811c908216806200074c57607f821691505b602082108114156200076e57634e487b7160e01b600052602260045260246000fd5b50919050565b608051614505620007906000396000612d5001526145056000f3fe6080604052600436106103b65760003560e01c80637533d788116101f2578063b88d4fde1161010d578063d5abeb01116100a0578063f147efeb1161006f578063f147efeb14610b23578063f2fde38b14610b57578063f968adbe14610b77578063fa0fca8414610b8d57600080fd5b8063d5abeb0114610a8f578063db2e21bc14610aa5578063e985e9c514610aba578063eb8d72b714610b0357600080fd5b8063c87b56dd116100dc578063c87b56dd14610a1c578063cf89fa0314610a3c578063d1deba1f14610a4f578063d2f8dd4514610a6257600080fd5b8063b88d4fde146109b2578063b9bfa0bc146109d2578063c6682862146109e7578063c6f6f216146109fc57600080fd5b8063943fb87211610185578063a0712d6811610154578063a0712d681461094a578063a22cb4651461095d578063aa39fbbe1461097d578063ad2f852a1461099257600080fd5b8063943fb872146108df57806395d89b41146108ff5780639bdedea514610914578063a035b1fe1461093457600080fd5b80638da5cb5b116101c15780638da5cb5b146108175780638ee749121461083a5780639186b425146108a557806391b7f5ed146108bf57600080fd5b80637533d788146107a1578063768d7138146107c15780637e0586f1146107d7578063862440e2146107f757600080fd5b806339745791116102e25780634f6ccce71161027557806367dded4d1161024457806367dded4d146107425780636c0360eb1461075757806370a082311461076c578063715018a61461078c57600080fd5b80634f6ccce7146106ca57806355f804b3146106ea5780635c975abb1461070a5780636352211e1461072257600080fd5b806342966c68116102b157806342966c681461064a5780634389de9a1461066a578063483efda21461068a57806349df728c146106aa57600080fd5b806339745791146105d55780633ccfd60b146105f557806340d097c31461060a57806342842e0e1461062a57600080fd5b806318160ddd1161035a5780632a55205a116103295780632a55205a146105415780632f745c591461058057806332cb6b0c146105a057806336e79a5a146105b557600080fd5b806318160ddd146104cc5780631c37a822146104eb57806323b872dd1461050b57806329ee566c1461052b57600080fd5b806306d254da1161039657806306d254da1461043257806306fdde0314610452578063081812fc14610474578063095ea7b3146104ac57600080fd5b80621d3567146103bb578062923f9e146103dd57806301ffc9a714610412575b600080fd5b3480156103c757600080fd5b506103db6103d636600461383c565b610bba565b005b3480156103e957600080fd5b506103fd6103f83660046138c0565b610db4565b60405190151581526020015b60405180910390f35b34801561041e57600080fd5b506103fd61042d3660046138ef565b610dd5565b34801561043e57600080fd5b506103db61044d366004613921565b610dfa565b34801561045e57600080fd5b50610467610e24565b6040516104099190613996565b34801561048057600080fd5b5061049461048f3660046138c0565b610eb6565b6040516001600160a01b039091168152602001610409565b3480156104b857600080fd5b506103db6104c73660046139a9565b610edd565b3480156104d857600080fd5b506009545b604051908152602001610409565b3480156104f757600080fd5b506103db61050636600461383c565b610ff3565b34801561051757600080fd5b506103db6105263660046139d5565b611062565b34801561053757600080fd5b506104dd60195481565b34801561054d57600080fd5b5061056161055c366004613a16565b611094565b604080516001600160a01b039093168352602083019190915201610409565b34801561058c57600080fd5b506104dd61059b3660046139a9565b6110cf565b3480156105ac57600080fd5b506104dd60de81565b3480156105c157600080fd5b506103db6105d0366004613a38565b611165565b3480156105e157600080fd5b506103db6105f0366004613aea565b6111df565b34801561060157600080fd5b506103db611294565b34801561061657600080fd5b506103db610625366004613921565b6113c7565b34801561063657600080fd5b506103db6106453660046139d5565b6113db565b34801561065657600080fd5b506103db6106653660046138c0565b6113f6565b34801561067657600080fd5b506103db6106853660046139a9565b611424565b34801561069657600080fd5b506103db6106a53660046138c0565b611436565b3480156106b657600080fd5b506103db6106c5366004613921565b611443565b3480156106d657600080fd5b506104dd6106e53660046138c0565b61159c565b3480156106f657600080fd5b506103db610705366004613b1e565b61162f565b34801561071657600080fd5b50600c5460ff166103fd565b34801561072e57600080fd5b5061049461073d3660046138c0565b61164a565b34801561074e57600080fd5b506103db6116aa565b34801561076357600080fd5b506104676116ce565b34801561077857600080fd5b506104dd610787366004613921565b61175c565b34801561079857600080fd5b506103db6117e2565b3480156107ad57600080fd5b506104676107bc366004613a38565b6117f4565b3480156107cd57600080fd5b506104dd60165481565b3480156107e357600080fd5b506103db6107f2366004613b52565b61180d565b34801561080357600080fd5b506103db610812366004613b96565b611930565b34801561082357600080fd5b50600c5461010090046001600160a01b0316610494565b34801561084657600080fd5b50610890610855366004613bdc565b600e60209081526000938452604080852084518086018401805192815290840195840195909520945292905282529020805460019091015482565b60408051928352602083019190915201610409565b3480156108b157600080fd5b506013546103fd9060ff1681565b3480156108cb57600080fd5b506103db6108da3660046138c0565b611942565b3480156108eb57600080fd5b506103db6108fa3660046138c0565b61194f565b34801561090b57600080fd5b5061046761195c565b34801561092057600080fd5b506103db61092f366004613c32565b61196b565b34801561094057600080fd5b506104dd60175481565b6103db6109583660046138c0565b611aae565b34801561096957600080fd5b506103db610978366004613ce5565b611d63565b34801561098957600080fd5b506104dd600181565b34801561099e57600080fd5b50601854610494906001600160a01b031681565b3480156109be57600080fd5b506103db6109cd366004613d1e565b611d6e565b3480156109de57600080fd5b506103db611da0565b3480156109f357600080fd5b50610467611dbc565b348015610a0857600080fd5b506103db610a173660046138c0565b611dc9565b348015610a2857600080fd5b50610467610a373660046138c0565b611dd6565b6103db610a4a366004613d7d565b611de1565b6103db610a5d366004613dda565b6120b6565b348015610a6e57600080fd5b50610a82610a7d366004613921565b612243565b6040516104099190613e65565b348015610a9b57600080fd5b506104dd60145481565b348015610ab157600080fd5b506103db6122ff565b348015610ac657600080fd5b506103fd610ad5366004613ea9565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b348015610b0f57600080fd5b506103db610b1e366004613ed7565b6123d7565b348015610b2f57600080fd5b50610890610b3e366004613921565b601d602052600090815260409020805460019091015482565b348015610b6357600080fd5b506103db610b72366004613921565b6123fd565b348015610b8357600080fd5b506104dd60155481565b348015610b9957600080fd5b506104dd610ba8366004613921565b601c6020526000908152604090205481565b600d546001600160a01b03163314610bd157600080fd5b61ffff84166000908152600f602052604090208054610bef90613f29565b90508351148015610c2e575061ffff84166000908152600f6020526040908190209051610c1c9190613fcd565b60405180910390208380519060200120145b610c9c5760405162461bcd60e51b815260206004820152603460248201527f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f756044820152731c98d9481cd95b991a5b99c818dbdb9d1c9858dd60621b60648201526084015b60405180910390fd5b604051630e1bd41160e11b81523090631c37a82290610cc5908790879087908790600401613fd9565b600060405180830381600087803b158015610cdf57600080fd5b505af1925050508015610cf0575060015b610dae576040518060400160405280825181526020018280519060200120815250600e60008661ffff1661ffff16815260200190815260200160002084604051610d3a9190614022565b9081526040805191829003602090810183206001600160401b038716600090815290825291909120835181559201516001909201919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d90610da5908690869086908690613fd9565b60405180910390a15b50505050565b6000818152600360205260408120546001600160a01b031615155b92915050565b60006001600160e01b0319821663152a902d60e11b1480610dcf5750610dcf82612473565b610e02612498565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b606060008054610e3390613f29565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5f90613f29565b8015610eac5780601f10610e8157610100808354040283529160200191610eac565b820191906000526020600020905b815481529060010190602001808311610e8f57829003601f168201915b5050505050905090565b6000610ec1826124f8565b506000908152600560205260409020546001600160a01b031690565b6000610ee88261164a565b9050806001600160a01b0316836001600160a01b03161415610f565760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c93565b336001600160a01b0382161480610f725750610f728133610ad5565b610fe45760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610c93565b610fee8383612557565b505050565b3330146110565760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460448201526a10313290213934b233b29760a91b6064820152608401610c93565b610dae848484846125c5565b61106d335b826125f2565b6110895760405162461bcd60e51b8152600401610c939061403e565b610fee838383612671565b60185460195460009182916001600160a01b0390911690612710906110b990866140a2565b6110c391906140d7565b915091505b9250929050565b60006110da8361175c565b821061113c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c93565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b61116d612498565b6103e88161ffff1611156111d65760405162461bcd60e51b815260206004820152602a60248201527f526f79616c7479206d757374206265206c6f776572207468616e206f7220657160448201526975616c20746f2031302560b01b6064820152608401610c93565b61ffff16601955565b6111e7612498565b600081511161122f5760405162461bcd60e51b81526020600482015260146024820152734572726f723a206c69737420697320656d70747960601b6044820152606401610c93565b60005b8151811015611290576000601c6000848481518110611253576112536140eb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508061128990614101565b9050611232565b5050565b336000908152601d60205260409020546112fc5760405162461bcd60e51b815260206004820152602360248201527f446576204f6e6c793a2063616c6c6572206973206e6f7420746865204361707460448201526230b4b760e91b6064820152608401610c93565b336000908152601d6020526040902060010154806113505760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee47440dcde40cccacae640745607b1b6044820152606401610c93565b336000818152601d60205260408082206001018290555183156108fc0291849190818181858888f1935050505015801561138e573d6000803e3d6000fd5b5060405181815233907f9bba815921f12cb7b1408e14b5ade745234397d39623ae5e7c82d693cb45815f9060200160405180910390a250565b6113cf612498565b6113d881612818565b50565b610fee83838360405180602001604052806000815250611d6e565b6113ff33611067565b61141b5760405162461bcd60e51b8152600401610c939061403e565b6113d88161283a565b61142c612498565b6112908282612843565b61143e612498565b601655565b61144b612498565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b8919061411c565b9050816001600160a01b031663a9059cbb6114e1600c546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190614135565b50604080516001600160a01b03851681526020810183905233917f5aa586896a67fb05c3b86276f66eecee7da00719d0e7299c403596fa2ec58ca4910160405180910390a2505050565b60006115a760095490565b821061160a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c93565b6009828154811061161d5761161d6140eb565b90600052602060002001549050919050565b611637612498565b8051611290906012906020840190613616565b6000818152600360205260408120546001600160a01b031680610dcf5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c93565b6116b2612498565b600c5460ff166116c6576116c461284d565b565b6116c46128a7565b601280546116db90613f29565b80601f016020809104026020016040519081016040528092919081815260200182805461170790613f29565b80156117545780601f1061172957610100808354040283529160200191611754565b820191906000526020600020905b81548152906001019060200180831161173757829003601f168201915b505050505081565b60006001600160a01b0382166117c65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c93565b506001600160a01b031660009081526004602052604090205490565b6117ea612498565b6116c460006128e0565b600f60205260009081526040902080546116db90613f29565b611815612498565b600082511161185d5760405162461bcd60e51b81526020600482015260146024820152734572726f723a206c69737420697320656d70747960601b6044820152606401610c93565b60005b8251811015610fee5760006001600160a01b0316838281518110611886576118866140eb565b60200260200101516001600160a01b031614156118dc5760405162461bcd60e51b815260206004820152601460248201527320b2323932b9b99031b0b73737ba10313290181760611b6044820152606401610c93565b81601c60008584815181106118f3576118f36140eb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508061192990614101565b9050611860565b611938612498565b611290828261293a565b61194a612498565b601755565b611957612498565b601a55565b606060018054610e3390613f29565b611973612498565b8160005b8251811015610dae57816001600160a01b03166342842e0e306119a8600c546001600160a01b036101009091041690565b8685815181106119ba576119ba6140eb565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611a1457600080fd5b505af1158015611a28573d6000803e3d6000fd5b50505050336001600160a01b03167fb8dbf4ce06446b88ef02ffd28a948c2637ac80fb0bd4d3a31c70878c1046eb7f85858481518110611a6a57611a6a6140eb565b6020026020010151604051611a949291906001600160a01b03929092168252602082015260400190565b60405180910390a280611aa681614101565b915050611977565b611ab66129d4565b6000611ac160095490565b6014549091506001611ad38484614152565b611add919061416a565b10611b385760405162461bcd60e51b815260206004820152602560248201527f4572726f723a204141524152484752202120546f74616c537570706c792072656044820152641858da195960da1b6064820152608401610c93565b600082118015611b4a57506015548211155b611b965760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a2041415241524847522021204f6e6c79203120706572205478006044820152606401610c93565b601654611ba23361175c565b611bad906001614152565b1115611c065760405162461bcd60e51b815260206004820152602260248201527f4572726f723a2041415241524847522021204d61782033207065722057616c6c604482015261195d60f21b6064820152608401610c93565b60175415611c845781601754611c1c91906140a2565b3414611c845760405162461bcd60e51b815260206004820152603160248201527f4572726f723a2041415241524847522021204974277320467265652077687920604482015270646f20796f752077616e74207061793f2160781b6064820152608401610c93565b60135460ff1615611cfa57336000908152601c6020526040902054821115611cfa5760405162461bcd60e51b8152602060048201526024808201527f4572726f723a2041415241524847522021204e6f2077686974656c6973742068604482015263032b932960e51b6064820152608401610c93565b60005b82811015611d5157611d0e33612818565b60135460ff1615611d3f57336000908152601c60205260408120805460019290611d3990849061416a565b90915550505b80611d4981614101565b915050611cfd565b50601754156112905761129034612a1a565b611290338383612acd565b611d7833836125f2565b611d945760405162461bcd60e51b8152600401610c939061403e565b610dae84848484612b9c565b611da8612498565b6013805460ff19811660ff90911615179055565b600280546116db90613f29565b611dd1612498565b601555565b6060610dcf82612bcf565b611dea8161164a565b6001600160a01b0316336001600160a01b031614611e555760405162461bcd60e51b815260206004820152602260248201527f596f75206d757374206f776e2074686520746f6b656e20746f20747261766572604482015261736560f01b6064820152608401610c93565b61ffff82166000908152600f602052604081208054611e7390613f29565b905011611ed95760405162461bcd60e51b815260206004820152602e60248201527f5468697320636861696e2069732063757272656e746c7920756e617661696c6160448201526d189b1948199bdc881d1c985d995b60921b6064820152608401610c93565b611ee28161283a565b60408051336020820152808201839052815180820383018152606082018352601a54600160f01b60808401526082808401919091528351808403909101815260a2830193849052600d5463040a7bb160e41b90945290926001926000916001600160a01b0316906340a7bb1090611f65908990309089908790899060a601614181565b6040805180830381865afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906141d5565b509050803410156120315760405162461bcd60e51b815260206004820152604a60248201527f4572726f723a206d73672e76616c7565206e6f7420656e6f75676820746f206360448201527f6f766572206d6573736167654665652e2053656e642067617320666f72206d656064820152697373616765206665657360b01b608482015260a401610c93565b600d5461ffff87166000908152600f6020526040808220905162c5803160e81b81526001600160a01b039093169263c580310092349261207c928c928b913391908b906004016141f9565b6000604051808303818588803b15801561209557600080fd5b505af11580156120a9573d6000803e3d6000fd5b5050505050505050505050565b61ffff85166000908152600e602052604080822090516120d7908790614022565b90815260408051602092819003830190206001600160401b038716600090815292529020600181015490915061215e5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60448201526565737361676560d01b6064820152608401610c93565b80548214801561218857508060010154838360405161217e9291906142d9565b6040518091039020145b6121d45760405162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000006044820152606401610c93565b60008082556001820155604051630e1bd41160e11b81523090631c37a8229061220990899089908990899089906004016142e9565b600060405180830381600087803b15801561222357600080fd5b505af1158015612237573d6000803e3d6000fd5b50505050505050505050565b606060006122508361175c565b9050806122715760408051600080825260208201909252905b509392505050565b6000816001600160401b0381111561228b5761228b613770565b6040519080825280602002602001820160405280156122b4578160200160208202803683370190505b50905060005b82811015612269576122cc85826110cf565b8282815181106122de576122de6140eb565b60209081029190910101526122f281614101565b90506122ba565b50919050565b612307612498565b47806123495760405162461bcd60e51b815260206004820152601160248201527008ae4e4dee47440dcde40cccacae640745607b1b6044820152606401610c93565b60005b601b5460ff821610156123a9576000601b8260ff1681548110612371576123716140eb565b60009182526020808320909101546001600160a01b03168252601d9052604081206001015550806123a18161434a565b91505061234c565b50604051339082156108fc029083906000818181858888f1935050505015801561138e573d6000803e3d6000fd5b6123df612498565b61ffff83166000908152600f60205260409020610dae90838361369a565b612405612498565b6001600160a01b03811661246a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c93565b6113d8816128e0565b60006001600160e01b0319821663780e9d6360e01b1480610dcf5750610dcf82612ccb565b600c546001600160a01b036101009091041633146116c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c93565b6000818152600360205260409020546001600160a01b03166113d85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c93565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061258c8261164a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080828060200190518101906125dc919061436a565b915091506125ea8282612d1b565b505050505050565b6000806125fe8361164a565b9050806001600160a01b0316846001600160a01b0316148061264557506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b806126695750836001600160a01b031661265e84610eb6565b6001600160a01b0316145b949350505050565b826001600160a01b03166126848261164a565b6001600160a01b0316146126e85760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610c93565b6001600160a01b03821661274a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c93565b612755838383612d35565b612760600082612557565b6001600160a01b038316600090815260046020526040812080546001929061278990849061416a565b90915550506001600160a01b03821660009081526004602052604081208054600192906127b7908490614152565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001612824612d48565b61282e9190614152565b90506112908282612d1b565b6113d881612e4f565b6112908282612d1b565b6128556129d4565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861288a3390565b6040516001600160a01b03909116815260200160405180910390a1565b6128af612e8f565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361288a565b600c80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152600360205260409020546001600160a01b03166129b55760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610c93565b6000828152600b602090815260409091208251610fee92840190613616565b600c5460ff16156116c45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c93565b60005b601b5460ff82161015611290576000601b8260ff1681548110612a4257612a426140eb565b60009182526020808320909101546001600160a01b0316808352601d909152604082205490925090612a80612710612a7a8785612ed8565b90612eeb565b6001600160a01b0384166000908152601d6020526040812060010180549293508392909190612ab0908490614152565b925050819055505050508080612ac59061434a565b915050612a1d565b816001600160a01b0316836001600160a01b03161415612b2f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c93565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612ba7848484612671565b612bb384848484612ef7565b610dae5760405162461bcd60e51b8152600401610c9390614398565b6060612bda826124f8565b6000828152600b602052604081208054612bf390613f29565b80601f0160208091040260200160405190810160405280929190818152602001828054612c1f90613f29565b8015612c6c5780601f10612c4157610100808354040283529160200191612c6c565b820191906000526020600020905b815481529060010190602001808311612c4f57829003601f168201915b505050505090506000612c7d612ff5565b9050805160001415612c90575092915050565b815115612cc2578082604051602001612caa9291906143ea565b60405160208183030381529060405292505050919050565b61266984613004565b60006001600160e01b031982166380ac58cd60e01b1480612cfc57506001600160e01b03198216635b5e139f60e01b145b80610dcf57506301ffc9a760e01b6001600160e01b0319831614610dcf565b61129082826040518060200160405280600081525061306d565b612d3d6129d4565b610fee8383836130a0565b6000806010547f0000000000000000000000000000000000000000000000000000000000000000612d79919061416a565b9050600080600083612d89613158565b612d939190614419565b905060116000612da460018761416a565b81526020019081526020016000205460001415612dcd57612dc660018561416a565b9250612dee565b60116000612ddc60018761416a565b81526020019081526020016000205492505b600081815260116020526040902054612e1a576000818152601160205260409020839055905080612e31565b600081815260116020526040902080549084905591505b60108054906000612e4183614101565b909155509195945050505050565b612e5881613194565b6000818152600b602052604090208054612e7190613f29565b1590506113d8576000818152600b602052604081206113d89161370e565b600c5460ff166116c45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610c93565b6000612ee482846140a2565b9392505050565b6000612ee482846140d7565b60006001600160a01b0384163b15612fea57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f3b90339089908890889060040161442d565b6020604051808303816000875af1925050508015612f76575060408051601f3d908101601f19168201909252612f739181019061446a565b60015b612fd0573d808015612fa4576040519150601f19603f3d011682016040523d82523d6000602084013e612fa9565b606091505b508051612fc85760405162461bcd60e51b8152600401610c9390614398565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612669565b506001949350505050565b606060128054610e3390613f29565b606061300f826124f8565b6000613019612ff5565b905060008151116130395760405180602001604052806000815250612ee4565b806130438461323b565b600260405160200161305793929190614487565b6040516020818303038152906040529392505050565b6130778383613338565b6130846000848484612ef7565b610fee5760405162461bcd60e51b8152600401610c9390614398565b6001600160a01b0383166130fb576130f681600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b61311e565b816001600160a01b0316836001600160a01b03161461311e5761311e8382613486565b6001600160a01b03821661313557610fee81613523565b826001600160a01b0316826001600160a01b031614610fee57610fee82826135d2565b60004442604051602001613176929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905090565b600061319f8261164a565b90506131ad81600084612d35565b6131b8600083612557565b6001600160a01b03811660009081526004602052604081208054600192906131e190849061416a565b909155505060008281526003602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60608161325f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613289578061327381614101565b91506132829050600a836140d7565b9150613263565b6000816001600160401b038111156132a3576132a3613770565b6040519080825280601f01601f1916602001820160405280156132cd576020820181803683370190505b5090505b8415612669576132e260018361416a565b91506132ef600a86614419565b6132fa906030614152565b60f81b81838151811061330f5761330f6140eb565b60200101906001600160f81b031916908160001a905350613331600a866140d7565b94506132d1565b6001600160a01b03821661338e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c93565b6000818152600360205260409020546001600160a01b0316156133f35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c93565b6133ff60008383612d35565b6001600160a01b0382166000908152600460205260408120805460019290613428908490614152565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016134938461175c565b61349d919061416a565b6000838152600860205260409020549091508082146134f0576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b6009546000906135359060019061416a565b6000838152600a60205260408120546009805493945090928490811061355d5761355d6140eb565b90600052602060002001549050806009838154811061357e5761357e6140eb565b6000918252602080832090910192909255828152600a909152604080822084905585825281205560098054806135b6576135b66144b9565b6001900381819060005260206000200160009055905550505050565b60006135dd8361175c565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b82805461362290613f29565b90600052602060002090601f016020900481019282613644576000855561368a565b82601f1061365d57805160ff191683800117855561368a565b8280016001018555821561368a579182015b8281111561368a57825182559160200191906001019061366f565b50613696929150613744565b5090565b8280546136a690613f29565b90600052602060002090601f0160209004810192826136c8576000855561368a565b82601f106136e15782800160ff1982351617855561368a565b8280016001018555821561368a579182015b8281111561368a5782358255916020019190600101906136f3565b50805461371a90613f29565b6000825580601f1061372a575050565b601f0160209004906000526020600020908101906113d891905b5b808211156136965760008155600101613745565b803561ffff8116811461376b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156137ae576137ae613770565b604052919050565b600082601f8301126137c757600080fd5b81356001600160401b038111156137e0576137e0613770565b6137f3601f8201601f1916602001613786565b81815284602083860101111561380857600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b038116811461376b57600080fd5b6000806000806080858703121561385257600080fd5b61385b85613759565b935060208501356001600160401b038082111561387757600080fd5b613883888389016137b6565b945061389160408801613825565b935060608701359150808211156138a757600080fd5b506138b4878288016137b6565b91505092959194509250565b6000602082840312156138d257600080fd5b5035919050565b6001600160e01b0319811681146113d857600080fd5b60006020828403121561390157600080fd5b8135612ee4816138d9565b6001600160a01b03811681146113d857600080fd5b60006020828403121561393357600080fd5b8135612ee48161390c565b60005b83811015613959578181015183820152602001613941565b83811115610dae5750506000910152565b6000815180845261398281602086016020860161393e565b601f01601f19169290920160200192915050565b602081526000612ee4602083018461396a565b600080604083850312156139bc57600080fd5b82356139c78161390c565b946020939093013593505050565b6000806000606084860312156139ea57600080fd5b83356139f58161390c565b92506020840135613a058161390c565b929592945050506040919091013590565b60008060408385031215613a2957600080fd5b50508035926020909101359150565b600060208284031215613a4a57600080fd5b612ee482613759565b60006001600160401b03821115613a6c57613a6c613770565b5060051b60200190565b600082601f830112613a8757600080fd5b81356020613a9c613a9783613a53565b613786565b82815260059290921b84018101918181019086841115613abb57600080fd5b8286015b84811015613adf578035613ad28161390c565b8352918301918301613abf565b509695505050505050565b600060208284031215613afc57600080fd5b81356001600160401b03811115613b1257600080fd5b61266984828501613a76565b600060208284031215613b3057600080fd5b81356001600160401b03811115613b4657600080fd5b612669848285016137b6565b60008060408385031215613b6557600080fd5b82356001600160401b03811115613b7b57600080fd5b613b8785828601613a76565b95602094909401359450505050565b60008060408385031215613ba957600080fd5b8235915060208301356001600160401b03811115613bc657600080fd5b613bd2858286016137b6565b9150509250929050565b600080600060608486031215613bf157600080fd5b613bfa84613759565b925060208401356001600160401b03811115613c1557600080fd5b613c21868287016137b6565b925050604084013590509250925092565b60008060408385031215613c4557600080fd5b8235613c508161390c565b91506020838101356001600160401b03811115613c6c57600080fd5b8401601f81018613613c7d57600080fd5b8035613c8b613a9782613a53565b81815260059190911b82018301908381019088831115613caa57600080fd5b928401925b82841015613cc857833582529284019290840190613caf565b80955050505050509250929050565b80151581146113d857600080fd5b60008060408385031215613cf857600080fd5b8235613d038161390c565b91506020830135613d1381613cd7565b809150509250929050565b60008060008060808587031215613d3457600080fd5b8435613d3f8161390c565b93506020850135613d4f8161390c565b92506040850135915060608501356001600160401b03811115613d7157600080fd5b6138b4878288016137b6565b60008060408385031215613d9057600080fd5b6139c783613759565b60008083601f840112613dab57600080fd5b5081356001600160401b03811115613dc257600080fd5b6020830191508360208285010111156110c857600080fd5b600080600080600060808688031215613df257600080fd5b613dfb86613759565b945060208601356001600160401b0380821115613e1757600080fd5b613e2389838a016137b6565b9550613e3160408901613825565b94506060880135915080821115613e4757600080fd5b50613e5488828901613d99565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015613e9d57835183529284019291840191600101613e81565b50909695505050505050565b60008060408385031215613ebc57600080fd5b8235613ec78161390c565b91506020830135613d138161390c565b600080600060408486031215613eec57600080fd5b613ef584613759565b925060208401356001600160401b03811115613f1057600080fd5b613f1c86828701613d99565b9497909650939450505050565b600181811c90821680613f3d57607f821691505b602082108114156122f957634e487b7160e01b600052602260045260246000fd5b60008154613f6b81613f29565b60018281168015613f835760018114613f9457613fc3565b60ff19841687528287019450613fc3565b8560005260208060002060005b85811015613fba5781548a820152908401908201613fa1565b50505082870194505b5050505092915050565b6000612ee48284613f5e565b61ffff85168152608060208201526000613ff6608083018661396a565b6001600160401b03851660408401528281036060840152614017818561396a565b979650505050505050565b6000825161403481846020870161393e565b9190910192915050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156140bc576140bc61408c565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826140e6576140e66140c1565b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156141155761411561408c565b5060010190565b60006020828403121561412e57600080fd5b5051919050565b60006020828403121561414757600080fd5b8151612ee481613cd7565b600082198211156141655761416561408c565b500190565b60008282101561417c5761417c61408c565b500390565b61ffff861681526001600160a01b038516602082015260a0604082018190526000906141af9083018661396a565b841515606084015282810360808401526141c9818561396a565b98975050505050505050565b600080604083850312156141e857600080fd5b505080516020909101519092909150565b61ffff871681526000602060c0818401526000885461421781613f29565b8060c087015260e0600180841660008114614239576001811461424e5761427c565b60ff198516898401526101008901955061427c565b8d6000528660002060005b858110156142745781548b8201860152908301908801614259565b8a0184019650505b50505050508381036040850152614293818961396a565b9150506142ab60608401876001600160a01b03169052565b6001600160a01b038516608084015282810360a08401526142cc818561396a565b9998505050505050505050565b8183823760009101908152919050565b61ffff86168152608060208201526000614306608083018761396a565b6001600160401b03861660408401528281036060840152838152838560208301376000602085830101526020601f19601f8601168201019150509695505050505050565b600060ff821660ff8114156143615761436161408c565b60010192915050565b6000806040838503121561437d57600080fd5b82516143888161390c565b6020939093015192949293505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600083516143fc81846020880161393e565b83519083019061441081836020880161393e565b01949350505050565b600082614428576144286140c1565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906144609083018461396a565b9695505050505050565b60006020828403121561447c57600080fd5b8151612ee4816138d9565b6000845161449981846020890161393e565b8451908301906144ad81836020890161393e565b61401781830186613f5e565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d116fe6091c4726c01b2c1e00c0b531734180c4b2815ec0de3676c51ed497c8c64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000003c2269811836af69497e5f486a85d7316753cf620000000000000000000000000000000000000000000000000000000000000003000000000000000000000000084de7f40e8239db8e43d990ceca4f3bf6f4ebc90000000000000000000000009561e0f9520d006ad1812be22090b4f398ba99ff000000000000000000000000996cb99614842ac371b946f47b3e593cc6deae4b0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000fa0