Overview
ETH Balance
ETH Value
$0.00Multichain Info
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxAllowedDeposit","type":"uint256"}],"name":"MaxAllowedDepositChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxAllowedUsersChanged","type":"uint256"}],"name":"MaxAllowedUsersChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minAllowedDeposit","type":"uint256"}],"name":"MinAllowedDepositChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"roundPnL","type":"uint256"}],"name":"RoundClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"roundLength","type":"uint256"}],"name":"RoundLengthChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"allocationLimitsPerMarketPerRound","type":"uint256"}],"name":"SetAllocationLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"SetMinTradeAmount","type":"uint256"}],"name":"SetMinTradeAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"priceLowerLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceUpperLimit","type":"uint256"}],"name":"SetPriceLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sUSD","type":"address"}],"name":"SetSUSD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"skewImpact","type":"int256"}],"name":"SetSkewImpactLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"thalesAmm","type":"address"}],"name":"SportAMMChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"stakingThales","type":"address"}],"name":"StakingThalesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"market","type":"address"},{"indexed":false,"internalType":"enum ISportsAMM.Position","name":"position","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quote","type":"uint256"}],"name":"TradeExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"utilizationRate","type":"uint256"}],"name":"UtilizationRateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"WithdrawalRequested","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allocationLimitsPerMarketPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allocationPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allocationSpentInARound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"allocationSpentPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"balancesPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canCloseCurrentRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"capPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"closeRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"roundA","type":"uint256"},{"internalType":"uint256","name":"roundB","type":"uint256"}],"name":"cumulativePnLBetweenRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cumulativeProfitAndLoss","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositReceipts","outputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"}],"name":"getAvailableAllocationForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAvailableToDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"getBalancesPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentRoundEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initNonReentrant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract ISportsAMM","name":"_sportsAmm","type":"address"},{"internalType":"contract IERC20Upgradeable","name":"_sUSD","type":"address"},{"internalType":"uint256","name":"_roundLength","type":"uint256"},{"internalType":"uint256","name":"_priceLowerLimit","type":"uint256"},{"internalType":"uint256","name":"_priceUpperLimit","type":"uint256"},{"internalType":"int256","name":"_skewImpactLimit","type":"int256"},{"internalType":"uint256","name":"_allocationLimitsPerMarketPerRound","type":"uint256"},{"internalType":"uint256","name":"_maxAllowedDeposit","type":"uint256"},{"internalType":"uint256","name":"_utilizationRate","type":"uint256"},{"internalType":"uint256","name":"_minDepositAmount","type":"uint256"},{"internalType":"uint256","name":"_maxAllowedUsers","type":"uint256"},{"internalType":"uint256","name":"_minTradeAmount","type":"uint256"}],"internalType":"struct SportVault.InitParams","name":"params","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"isTradingMarketInARound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAllowedDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAllowedUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDepositAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTradeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","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":"priceLowerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"profitAndLossPerRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sUSD","outputs":[{"internalType":"contract IERC20Upgradeable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocationLimitsPerMarketPerRound","type":"uint256"}],"name":"setAllocationLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAllowedDeposit","type":"uint256"}],"name":"setMaxAllowedDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAllowedUsers","type":"uint256"}],"name":"setMaxAllowedUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minDepositAmount","type":"uint256"}],"name":"setMinAllowedDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTradeAmount","type":"uint256"}],"name":"setMinTradeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceLowerLimit","type":"uint256"},{"internalType":"uint256","name":"_priceUpperLimit","type":"uint256"}],"name":"setPriceLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundLength","type":"uint256"}],"name":"setRoundLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"_skewImpactLimit","type":"int256"}],"name":"setSkewImpactLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISportsAMM","name":"_sportAMM","type":"address"}],"name":"setSportAmm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IStakingThales","name":"_stakingThales","type":"address"}],"name":"setStakingThales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_utilizationRate","type":"uint256"}],"name":"setUtilizationRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"skewImpactLimit","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sportsAMM","outputs":[{"internalType":"contract ISportsAMM","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingThales","outputs":[{"internalType":"contract IStakingThales","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"market","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum ISportsAMM.Position","name":"position","type":"uint8"}],"name":"trade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"tradingMarketPositionPerRound","outputs":[{"internalType":"enum ISportsAMM.Position","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tradingMarketsPerRound","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proxyAddress","type":"address"}],"name":"transferOwnershipAtInit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usersCurrentlyInVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"usersPerRound","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawalRequested","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506138a4806100206000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c806371bb4b47116101ff578063c99252881161011a578063e278fe6f116100ad578063e76a02791161007c578063e76a0279146108bc578063ebc79772146108cf578063ee161cce146108d7578063fd8a8cc6146108df57600080fd5b8063e278fe6f14610878578063e45b2e8814610880578063e48a694b14610893578063e75c93d9146108b357600080fd5b8063db7f92d4116100e9578063db7f92d414610841578063dd636bc714610854578063dda9046f1461085c578063ddcc8fe91461086557600080fd5b8063c9925288146107f9578063c9f4ff4614610811578063cee73a7614610824578063d27c07971461083857600080fd5b8063942f535711610192578063b6b55f2511610161578063b6b55f25146107aa578063be805e3c146107bd578063c137a60f146107c6578063c3b83f5f146107e657600080fd5b8063942f53571461072857806395ba9a7014610763578063a250badb1461078e578063a9050d4d146107a157600080fd5b806387117630116101ce57806387117630146106e05780638b649b94146106f35780638da5cb5b146106fc5780639324cac71461071557600080fd5b806371bb4b471461069d57806374094edd146106a557806379ba5097146106c55780637f852582146106cd57600080fd5b8063384e631c116102ef5780635ddd3e83116102825780636719b2ee116102515780636719b2ee14610617578063681312f5146106535780636c321c8a1461066657806371143ab91461066f57600080fd5b80635ddd3e83146105ac578063610589e1146105d7578063634e0d97146105e0578063645006ca1461060e57600080fd5b806353a47bb7116102be57806353a47bb71461057357806356991791146105865780635c975abb146105995780635d1c236d146105a457600080fd5b8063384e631c1461052457806340774ff614610537578063456ff7881461054a5780634ae7937f1461055357600080fd5b8063202ffce811610367578063322ce77a11610336578063322ce77a146104d5578063336d30ed146104de578063343e4f9f146104fe578063370faeb01461051157600080fd5b8063202ffce81461048757806325a663951461049a5780632ef04761146104ba578063311c56df146104cd57600080fd5b8063146ca531116103a3578063146ca531146104305780631627540c146104395780631daae1731461044c5780631e9224601461047f57600080fd5b806306d1fb3c146103ca578063082f9fd4146103f057806313af40351461041b575b600080fd5b6103dd6103d83660046135bf565b6108f2565b6040519081526020015b60405180910390f35b6104036103fe3660046135ee565b61091c565b6040516001600160a01b0390911681526020016103e7565b61042e6104293660046134f7565b610954565b005b6103dd60695481565b61042e6104473660046134f7565b610a94565b61046f61045a3660046134f7565b606f6020526000908152604090205460ff1681565b60405190151581526020016103e7565b6103dd610aea565b61042e610495366004613577565b610b24565b6103dd6104a8366004613577565b60796020526000908152604090205481565b61042e6104c8366004613577565b610b61565b61042e610b9e565b6103dd607c5481565b6103dd6104ec366004613577565b60766020526000908152604090205481565b61040361050c3660046135ee565b610e29565b61042e61051f3660046135ee565b610e45565b61042e6105323660046135a7565b610ee3565b61042e610545366004613577565b611018565b6103dd60815481565b6103dd610561366004613577565b60716020526000908152604090205481565b600154610403906001600160a01b031681565b61042e610594366004613513565b611055565b60345460ff1661046f565b61042e61152b565b6103dd6105ba3660046135bf565b606e60209081526000928352604080842090915290825290205481565b6103dd607b5481565b61046f6105ee3660046135bf565b606d60209081526000928352604080842090915290825290205460ff1681565b6103dd607a5481565b61063e6106253660046134f7565b6070602052600090815260409020805460019091015482565b604080519283526020830191909152016103e7565b61042e610661366004613577565b611644565b6103dd60785481565b61046f61067d3660046135bf565b607460209081526000928352604080842090915290825290205460ff1681565b6103dd611681565b6103dd6106b3366004613577565b60756020526000908152604090205481565b61042e6116a1565b61042e6106db3660046134f7565b61179e565b61042e6106ee366004613577565b6117f4565b6103dd606a5481565b600054610403906201000090046001600160a01b031681565b606854610403906001600160a01b031681565b6107566107363660046135bf565b607360209081526000928352604080842090915290825290205460ff1681565b6040516103e7919061374d565b6103dd6107713660046135bf565b607e60209081526000928352604080842090915290825290205481565b6103dd61079c3660046134f7565b611889565b6103dd607d5481565b61042e6107b8366004613577565b611949565b6103dd60805481565b6103dd6107d4366004613577565b606b6020526000908152604090205481565b61042e6107f43660046134f7565b611d0b565b6067546104039061010090046001600160a01b031681565b6103dd61081f3660046135ee565b611e24565b60685461046f90600160a01b900460ff1681565b6103dd60775481565b61042e61084f366004613577565b611e64565b6103dd611ea1565b6103dd60825481565b61042e610873366004613577565b611ed2565b61042e611f0f565b61042e61088e3660046134f7565b6126d4565b6103dd6108a1366004613577565b60846020526000908152604090205481565b6103dd607f5481565b61042e6108ca366004613577565b6127be565b61042e6127fb565b61046f612859565b608354610403906001600160a01b031681565b6000828152606e602090815260408083206001600160a01b03851684529091529020545b92915050565b6072602052816000526040600020818154811061093857600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b0381166109af5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a1b5760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109a6565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b03831662010000810262010000600160b01b03199092169190911782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610a9c612a0f565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610a89565b6078546069546000908152607160205260408120549091670de0b6b3a764000091610b1591906137c6565b610b1f91906137a6565b905090565b610b2c612a0f565b607b8190556040518181527fe7c2c09f66c8b970b4a99250f4d0844e1496b9d51d4760a17b0134ddd52023e190602001610a89565b610b69612a0f565b60818190556040518181527f137f353e194da87258fd6c2b78eb1cfb9f2ce996f3466729d2464eccb7ce612990602001610a89565b606854600160a01b900460ff16610bef5760405162461bcd60e51b815260206004820152601560248201527415985d5b1d081a185cc81b9bdd081cdd185c9d1959605a1b60448201526064016109a6565b336000908152606f602052604090205460ff1615610c4f5760405162461bcd60e51b815260206004820152601c60248201527f5769746864726177616c20616c7265616479207265717565737465640000000060448201526064016109a6565b6069546000908152606e60209081526040808320338452909152902054610cae5760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b60448201526064016109a6565b606e60006069546001610cc1919061378e565b81526020808201929092526040908101600090812033825290925290205415610d4b5760405162461bcd60e51b815260206004820152603660248201527f43616e277420776974686472617720617320796f7520616c72656164792064656044820152751c1bdcda5d195908199bdc881b995e1d081c9bdd5b9960521b60648201526084016109a6565b60006069546001610d5c919061378e565b6069546000908152606e602090815260408083203384528252808320548484526079909252909120549192501015610dcc576069546000908152606e6020908152604080832033845282528083205484845260799092528220805491929091610dc69084906137e5565b90915550505b6001607c54610ddb91906137e5565b607c55336000818152606f6020908152604091829020805460ff1916600117905590519182527fe5892ff2a8b08efb903ffbba1f0514c1d3e22eea34dd5b89cf30aabce03dde5a9101610a89565b606c602052816000526040600020818154811061093857600080fd5b610e4d612a0f565b808210610e9c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207072696365206c696d69742076616c75657300000000000060448201526064016109a6565b607f829055608081905560408051838152602081018390527f34b23d671026520e294c1060acc36120677e8c9bd073a8f6577a6f241785b1a6910160405180910390a15050565b600054610100900460ff16610efe5760005460ff1615610f02565b303b155b610f655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109a6565b600054610100900460ff16158015610f87576000805461ffff19166101011790555b610fd9610f9760208401846134f7565b610fa760408501602086016134f7565b610fb760608601604087016134f7565b8560600135866101000135876101200135886101400135896101600135612a89565b608080830135607f5560a0830135905560c082013560815560e0820135607d556101808201356082558015611014576000805461ff00191690555b5050565b611020612a0f565b60788190556040518181527fc117ccf765672707ebe3c1606037488c1e27dc1f42b5266e3d6b496db7d4209e90602001610a89565b600160666000828254611068919061378e565b909155505060665460345460ff16156110b65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109a6565b606854600160a01b900460ff166111075760405162461bcd60e51b815260206004820152601560248201527415985d5b1d081a185cc81b9bdd081cdd185c9d1959605a1b60448201526064016109a6565b6082548310156111595760405162461bcd60e51b815260206004820152601860248201527f416d6f756e74206c657373207468616e206d696e696d756d000000000000000060448201526064016109a6565b60008490506000816001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d0919061360f565b50606a546069546000908152606b60205260409020549192506111f29161378e565b81106112385760405162461bcd60e51b815260206004820152601560248201527413585c9ad95d081d1a5b59481b9bdd081d985b1a59605a1b60448201526064016109a6565b6067546040516350d851a160e01b815260009161010090046001600160a01b0316906350d851a190611270908a90899060040161369d565b60206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061358f565b90506000811161130a5760405162461bcd60e51b815260206004820152601560248201527405072696365206e6f74206d6f7265207468616e203605c1b60448201526064016109a6565b606754604051632fd1b02d60e21b815260009161010090046001600160a01b03169063bf46c0b490611344908b908a908c906004016136ba565b60206040518083038186803b15801561135c57600080fd5b505afa158015611370573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611394919061358f565b9050607f5482101580156113aa57506080548211155b6113ef5760405162461bcd60e51b815260206004820152601660248201527513585c9ad95d081c1c9a58d9481b9bdd081d985b1a5960521b60448201526064016109a6565b60815481126114375760405162461bcd60e51b81526020600482015260146024820152730a6d6caee40d2dae0c2c6e840e8dede40d0d2ced60631b60448201526064016109a6565b611442888789612be3565b60695460009081526074602090815260408083206001600160a01b038c16845290915290205460ff166114d0576069805460009081526072602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038f169081179091559454845260748352818420948452939091529020805460ff191690911790555b5050505060665481146115255760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109a6565b50505050565b611533612a0f565b606854600160a01b900460ff161561158d5760405162461bcd60e51b815260206004820152601960248201527f5661756c742068617320616c726561647920737461727465640000000000000060448201526064016109a6565b6001606955427fa775687211c2b3346a0f5a2a0e7590e6c1838453e3785e6dd2a8efd6265ddf15556068805460ff60a01b1916600160a01b17905560796020527fdf6d6ad01a16c6118cfd605fcb55ad218b43517981ef4cc6d63a492cf34990d954600260009081527f7d4d2b02426547888e9185e69135196c4ed1edbc114060100a6ef94f8b5f60df919091556040517f59760ad83ef06d1a0bc439d8b39a42a870493f0cd3bc3d53bbd3e7c6991f494f9190a1565b61164c612a0f565b606a8190556040518181527f1d1fb7111c3779798bd4aefb2daea07ee8257a13c7eaceba89b4b1ccd405050d90602001610a89565b606a546069546000908152606b60205260408120549091610b1f9161378e565b6001546001600160a01b031633146117195760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109a6565b60005460015460408051620100009093046001600160a01b03908116845290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180546000805462010000600160b01b0319166001600160a01b03831662010000021790556001600160a01b0319169055565b6117a6612a0f565b608380546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c7faa500efbd341aedbf1ee7ebd52ea36d226dda76bc01dd39b43d46f55b8d390602001610a89565b6117fc612a0f565b68056bc75e2d6310000081106118545760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420616c6c6f636174696f6e206c696d69742076616c7565730060448201526064016109a6565b607d8190556040518181527f9fb019ef2cdd86e0c7772694b935b2fd45131410802474ef0a8bf0afff94a40390602001610a89565b60008068056bc75e2d63100000607d546118a1610aea565b6118ab91906137c6565b6118b591906137a6565b6069546000908152607e602090815260408083206001600160a01b0388168452909152812054919250906118e990836137e5565b606954600090815260846020526040902054909150611906610aea565b61191091906137e5565b811061193f57606954600090815260846020526040902054611930610aea565b61193a91906137e5565b611941565b805b949350505050565b336000908152606f6020526040902054819060ff16156119bb5760405162461bcd60e51b815260206004820152602760248201527f5769746864726177616c206973207265717565737465642c2063616e6e6f742060448201526619195c1bdcda5d60ca1b60648201526084016109a6565b607a548110156119fe5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016109a6565b60775481607960006069546001611a15919061378e565b815260200190815260200160002054611a2e919061378e565b1115611a7c5760405162461bcd60e51b815260206004820181905260248201527f4465706f73697420616d6f756e742065786365656473207661756c742063617060448201526064016109a6565b606854611a94906001600160a01b031633308561301d565b60006069546001611aa5919061378e565b6069546000908152606e60209081526040808320338452909152902054909150158015611ae957506000818152606e60209081526040808320338452909152902054155b15611ba257607b54607c5410611b415760405162461bcd60e51b815260206004820152601b60248201527f4d617820616d6f756e74206f662075736572732072656163686564000000000060448201526064016109a6565b6000818152606c602090815260408083208054600181810183559185528385200180546001600160a01b03191633908117909155858552606d8452828520908552909252909120805460ff191682179055607c54611b9e9161378e565b607c555b6000818152606e6020908152604080832033845290915281208054859290611bcb90849061378e565b90915550506040805180820182528281526000838152606e6020908152838220338084529082528483205482850190815290835260708252848320935184555160019093019290925583815260719091529081208054859290611c2f90849061378e565b909155505060008181526079602052604081208054859290611c5290849061378e565b90915550506083546001600160a01b031615611ccd576083546040516302c7739b60e01b8152336004820152602481018590526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b505050505b60408051338152602081018590527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4910160405180910390a1505050565b611d13612a0f565b6001600160a01b038116611d5b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109a6565b600154600160a81b900460ff1615611dab5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109a6565b600080546001600160a01b038381166201000081810262010000600160b01b031990941693909317938490556001805460ff60a81b1916600160a81b1790556040805193909404909116825260208201527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610a89565b6000828152607660208181526040808420546075835281852054868652939092528320549091611e53916137c6565b611e5d91906137a6565b9392505050565b611e6c612a0f565b607a8190556040518181527f990717cc219e5348c1b88bb0ff530d804f0b6f54f3b03844a2bfbe4eb1e9c5d690602001610a89565b6000607960006069546001611eb6919061378e565b815260200190815260200160002054607754610b1f91906137e5565b611eda612a0f565b60778190556040518181527f8c43aa02599ac8f8bab4724621ceea5e7a06b07bbbfaf3b7bd0386cbe481ea3c90602001610a89565b600160666000828254611f22919061378e565b909155505060665460345460ff1615611f705760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109a6565b611f78612859565b611fc45760405162461bcd60e51b815260206004820152601960248201527f43616e277420636c6f73652063757272656e7420726f756e640000000000000060448201526064016109a6565b611fcc613088565b6000607160006069546001611fe1919061378e565b8152602081019190915260409081016000205460685491516370a0823160e01b815230600482015290916001600160a01b0316906370a082319060240160206040518083038186803b15801561203657600080fd5b505afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e919061358f565b61207891906137e5565b6069546000908152607160205260409020549091506120ab576069546000908152607560205260409020600190556120ec565b6069546000908152607160205260409020546120cf670de0b6b3a7640000836137c6565b6120d991906137a6565b6069546000908152607560205260409020555b60005b6069546000908152606c6020526040902054811015612492576069546000908152606c6020526040812080548390811061213957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910154606954835260758252604080842054606e84528185206001600160a01b0390931680865292909352832054909350670de0b6b3a764000091612188916137c6565b61219291906137a6565b6069546000908152606d602090815260408083206001600160a01b038716845290915290205490915060ff161561247d576001600160a01b0382166000908152606f602052604090205460ff1661238d5780606e600060695460016121f7919061378e565b81526020019081526020016000206000846001600160a01b03166001600160a01b0316815260200190815260200160002054612233919061378e565b606e60006069546001612246919061378e565b81526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506001606d60006069546001612290919061378e565b8152602080820192909252604090810160009081206001600160a01b03871682529092528120805460ff191692151592909217909155606954606c91906122d890600161378e565b8152602080820192909252604001600090812080546001810182559082529190200180546001600160a01b0319166001600160a01b03848116919091179091556083541615612388576083546040516302c7739b60e01b81526001600160a01b03848116600483015260248201849052909116906302c7739b90604401600060405180830381600087803b15801561236f57600080fd5b505af1158015612383573d6000803e3d6000fd5b505050505b61247d565b6000606e600060695460016123a2919061378e565b8152602080820192909252604090810160009081206001600160a01b038088168352935220919091556068546123da911683836132e5565b6001600160a01b0382166000908152606f60205260408120805460ff19169055606954606d90829061240d90600161378e565b8152602080820192909252604090810160009081206001600160a01b03871680835290845290829020805460ff19169415159490941790935580519283529082018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b5050808061248a90613828565b9150506120ef565b50606954600114156124c157606954600090815260756020908152604080832054607690925290912055612524565b606954600081815260756020526040812054670de0b6b3a76400009290916076916124ee906001906137e5565b81526020019081526020016000205461250791906137c6565b61251191906137a6565b6069546000908152607660205260409020555b600160696000828254612537919061378e565b90915550506069546000908152606b60205260409081902042905560685490516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561259457600080fd5b505afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc919061358f565b606980546000908152607160205260408082209390935590548082529181205491607991906125fc90600161378e565b8152602001908152602001600020819055507fc67dda8e11f1aa941c7e74466b1859a07a32f46aaf641d29b83be348424d93cd600160695461263e91906137e5565b60756000600160695461265191906137e5565b815260200190815260200160002054604051612677929190918252602082015260400190565b60405180910390a15060665481146126d15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109a6565b50565b6126dc612a0f565b60678054610100600160a81b0319166101006001600160a01b038481168202929092179283905560685460405163095ea7b360e01b81529190930482166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b15801561274c57600080fd5b505af1158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613557565b506040516001600160a01b03821681527f576297e5fcc8cd907ee80b240284865eb3d821bdc5232e6ee9e4d78a12531c0990602001610a89565b6127c6612a0f565b60828190556040518181527f26ea09cdab135064e784e44516fc5b3d619360d241ae64bff47153b2e5ee610e90602001610a89565b60675460ff16156128445760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109a6565b6067805460ff19166001908117909155606655565b606854600090600160a01b900460ff1615806128925750606a546069546000908152606b602052604090205461288f919061378e565b42105b1561289d5750600090565b60005b606954600090815260726020526040902054811015612a075760695460009081526072602052604081208054839081106128ea57634e487b7160e01b600052603260045260246000fd5b6000918252602091829020015460408051633f6fa65560e01b815290516001600160a01b0390921693508392633f6fa65592600480840193829003018186803b15801561293657600080fd5b505afa15801561294a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296e9190613557565b15806129e65750806001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190613557565b156129f45760009250505090565b50806129ff81613828565b9150506128a0565b506001905090565b6000546201000090046001600160a01b03163314612a875760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109a6565b565b600054610100900460ff16612af45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a6565b612afd88610954565b612b056127fb565b60678054610100600160a81b0319166101006001600160a01b038a811682029290921792839055606880546001600160a01b0319168a8416908117909155606a89905560778890556078879055607a869055607b85905560405163095ea7b360e01b8152919093049091166004820152600019602482015263095ea7b390604401602060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd89190613557565b505050505050505050565b60675460405163270e13ef60e01b815260009161010090046001600160a01b03169063270e13ef90612c1d908790879087906004016136ba565b60206040518083038186803b158015612c3557600080fd5b505afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d919061358f565b606954600090815260846020526040902054909150612c8a610aea565b612c9491906137e5565b8110612cee5760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320617661696c61626c6520616c6c6f63617460448201526234b7b760e91b60648201526084016109a6565b600068056bc75e2d63100000607d54612d05610aea565b612d0f91906137c6565b612d1991906137a6565b6069546000908152607e602090815260408083206001600160a01b038a1684529091529020549091508190612d4e908461378e565b10612db15760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e74206578636565647320617661696c61626c6520616c6c6f63617460448201526c1a5bdb88199bdc88185cdcd95d609a1b60648201526084016109a6565b6068546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612df557600080fd5b505afa158015612e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2d919061358f565b60675460405163221d7ae160e21b815291925061010090046001600160a01b031690638875eb8490612e6c908990899089908990600090600401613714565b600060405180830381600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b50506068546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a082319060240160206040518083038186803b158015612ee457600080fd5b505afa158015612ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1c919061358f565b9050836084600060695481526020019081526020016000206000828254612f43919061378e565b90915550506069546000908152607e602090815260408083206001600160a01b038b16845290915281208054869290612f7d90849061378e565b909155505060695460009081526073602090815260408083206001600160a01b038b1684529091529020805487919060ff19166001836002811115612fd257634e487b7160e01b600052602160045260246000fd5b02179055507fd1fc86fd7e2808fb6a4d745c0f26983bd36784721df1e29a27a28ce3fcdc74168787878760405161300c94939291906136e5565b60405180910390a150505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526115259085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261331a565b6000805b6069546000908152607260205260409020548110156110145760695460009081526072602052604090208054829081106130d657634e487b7160e01b600052603260045260246000fd5b6000918252602091829020015460408051635c975abb60e01b815290516001600160a01b0390921694508492635c975abb92600480840193829003018186803b15801561312257600080fd5b505afa158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190613557565b1580156131d35750816001600160a01b0316633f6fa6556040518163ffffffff1660e01b815260040160206040518083038186803b15801561319b57600080fd5b505afa1580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613557565b156132d357604051636392a51f60e01b8152306004820152600090819081906001600160a01b03861690636392a51f9060240160606040518083038186803b15801561321e57600080fd5b505afa158015613232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132569190613632565b925092509250600083118061326b5750600082115b806132765750600081115b156132cf57846001600160a01b031663851492586040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132b657600080fd5b505af11580156132ca573d6000803e3d6000fd5b505050505b5050505b806132dd81613828565b91505061308c565b6040516001600160a01b03831660248201526044810182905261331590849063a9059cbb60e01b90606401613051565b505050565b600061336f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133ec9092919063ffffffff16565b805190915015613315578080602001905181019061338d9190613557565b6133155760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109a6565b6060611941848460008585843b6134455760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a6565b600080866001600160a01b031685876040516134619190613681565b60006040518083038185875af1925050503d806000811461349e576040519150601f19603f3d011682016040523d82523d6000602084013e6134a3565b606091505b50915091506134b38282866134be565b979650505050505050565b606083156134cd575081611e5d565b8251156134dd5782518084602001fd5b8160405162461bcd60e51b81526004016109a6919061375b565b600060208284031215613508578081fd5b8135611e5d81613859565b600080600060608486031215613527578182fd5b833561353281613859565b92506020840135915060408401356003811061354c578182fd5b809150509250925092565b600060208284031215613568578081fd5b81518015158114611e5d578182fd5b600060208284031215613588578081fd5b5035919050565b6000602082840312156135a0578081fd5b5051919050565b60006101a082840312156135b9578081fd5b50919050565b600080604083850312156135d1578182fd5b8235915060208301356135e381613859565b809150509250929050565b60008060408385031215613600578182fd5b50508035926020909101359150565b60008060408385031215613621578182fd5b505080516020909101519092909150565b600080600060608486031215613646578283fd5b8351925060208401519150604084015190509250925092565b6003811061367d57634e487b7160e01b600052602160045260246000fd5b9052565b600082516136938184602087016137fc565b9190910192915050565b6001600160a01b038316815260408101611e5d602083018461365f565b6001600160a01b0384168152606081016136d7602083018561365f565b826040830152949350505050565b6001600160a01b038516815260808101613702602083018661365f565b60408201939093526060015292915050565b6001600160a01b038616815260a08101613731602083018761365f565b8460408301528360608301528260808301529695505050505050565b60208101610916828461365f565b602081526000825180602084015261377a8160408501602087016137fc565b601f01601f19169190910160400192915050565b600082198211156137a1576137a1613843565b500190565b6000826137c157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156137e0576137e0613843565b500290565b6000828210156137f7576137f7613843565b500390565b60005b838110156138175781810151838201526020016137ff565b838111156115255750506000910152565b600060001982141561383c5761383c613843565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146126d157600080fdfea2646970667358221220995426e5c145fefec9f1f397d6f5dc6c5eaa999b7a670266ee5211593b3364a564736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103c55760003560e01c806371bb4b47116101ff578063c99252881161011a578063e278fe6f116100ad578063e76a02791161007c578063e76a0279146108bc578063ebc79772146108cf578063ee161cce146108d7578063fd8a8cc6146108df57600080fd5b8063e278fe6f14610878578063e45b2e8814610880578063e48a694b14610893578063e75c93d9146108b357600080fd5b8063db7f92d4116100e9578063db7f92d414610841578063dd636bc714610854578063dda9046f1461085c578063ddcc8fe91461086557600080fd5b8063c9925288146107f9578063c9f4ff4614610811578063cee73a7614610824578063d27c07971461083857600080fd5b8063942f535711610192578063b6b55f2511610161578063b6b55f25146107aa578063be805e3c146107bd578063c137a60f146107c6578063c3b83f5f146107e657600080fd5b8063942f53571461072857806395ba9a7014610763578063a250badb1461078e578063a9050d4d146107a157600080fd5b806387117630116101ce57806387117630146106e05780638b649b94146106f35780638da5cb5b146106fc5780639324cac71461071557600080fd5b806371bb4b471461069d57806374094edd146106a557806379ba5097146106c55780637f852582146106cd57600080fd5b8063384e631c116102ef5780635ddd3e83116102825780636719b2ee116102515780636719b2ee14610617578063681312f5146106535780636c321c8a1461066657806371143ab91461066f57600080fd5b80635ddd3e83146105ac578063610589e1146105d7578063634e0d97146105e0578063645006ca1461060e57600080fd5b806353a47bb7116102be57806353a47bb71461057357806356991791146105865780635c975abb146105995780635d1c236d146105a457600080fd5b8063384e631c1461052457806340774ff614610537578063456ff7881461054a5780634ae7937f1461055357600080fd5b8063202ffce811610367578063322ce77a11610336578063322ce77a146104d5578063336d30ed146104de578063343e4f9f146104fe578063370faeb01461051157600080fd5b8063202ffce81461048757806325a663951461049a5780632ef04761146104ba578063311c56df146104cd57600080fd5b8063146ca531116103a3578063146ca531146104305780631627540c146104395780631daae1731461044c5780631e9224601461047f57600080fd5b806306d1fb3c146103ca578063082f9fd4146103f057806313af40351461041b575b600080fd5b6103dd6103d83660046135bf565b6108f2565b6040519081526020015b60405180910390f35b6104036103fe3660046135ee565b61091c565b6040516001600160a01b0390911681526020016103e7565b61042e6104293660046134f7565b610954565b005b6103dd60695481565b61042e6104473660046134f7565b610a94565b61046f61045a3660046134f7565b606f6020526000908152604090205460ff1681565b60405190151581526020016103e7565b6103dd610aea565b61042e610495366004613577565b610b24565b6103dd6104a8366004613577565b60796020526000908152604090205481565b61042e6104c8366004613577565b610b61565b61042e610b9e565b6103dd607c5481565b6103dd6104ec366004613577565b60766020526000908152604090205481565b61040361050c3660046135ee565b610e29565b61042e61051f3660046135ee565b610e45565b61042e6105323660046135a7565b610ee3565b61042e610545366004613577565b611018565b6103dd60815481565b6103dd610561366004613577565b60716020526000908152604090205481565b600154610403906001600160a01b031681565b61042e610594366004613513565b611055565b60345460ff1661046f565b61042e61152b565b6103dd6105ba3660046135bf565b606e60209081526000928352604080842090915290825290205481565b6103dd607b5481565b61046f6105ee3660046135bf565b606d60209081526000928352604080842090915290825290205460ff1681565b6103dd607a5481565b61063e6106253660046134f7565b6070602052600090815260409020805460019091015482565b604080519283526020830191909152016103e7565b61042e610661366004613577565b611644565b6103dd60785481565b61046f61067d3660046135bf565b607460209081526000928352604080842090915290825290205460ff1681565b6103dd611681565b6103dd6106b3366004613577565b60756020526000908152604090205481565b61042e6116a1565b61042e6106db3660046134f7565b61179e565b61042e6106ee366004613577565b6117f4565b6103dd606a5481565b600054610403906201000090046001600160a01b031681565b606854610403906001600160a01b031681565b6107566107363660046135bf565b607360209081526000928352604080842090915290825290205460ff1681565b6040516103e7919061374d565b6103dd6107713660046135bf565b607e60209081526000928352604080842090915290825290205481565b6103dd61079c3660046134f7565b611889565b6103dd607d5481565b61042e6107b8366004613577565b611949565b6103dd60805481565b6103dd6107d4366004613577565b606b6020526000908152604090205481565b61042e6107f43660046134f7565b611d0b565b6067546104039061010090046001600160a01b031681565b6103dd61081f3660046135ee565b611e24565b60685461046f90600160a01b900460ff1681565b6103dd60775481565b61042e61084f366004613577565b611e64565b6103dd611ea1565b6103dd60825481565b61042e610873366004613577565b611ed2565b61042e611f0f565b61042e61088e3660046134f7565b6126d4565b6103dd6108a1366004613577565b60846020526000908152604090205481565b6103dd607f5481565b61042e6108ca366004613577565b6127be565b61042e6127fb565b61046f612859565b608354610403906001600160a01b031681565b6000828152606e602090815260408083206001600160a01b03851684529091529020545b92915050565b6072602052816000526040600020818154811061093857600080fd5b6000918252602090912001546001600160a01b03169150829050565b6001600160a01b0381166109af5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064015b60405180910390fd5b600154600160a01b900460ff1615610a1b5760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016109a6565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b03831662010000810262010000600160b01b03199092169190911782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610a9c612a0f565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610a89565b6078546069546000908152607160205260408120549091670de0b6b3a764000091610b1591906137c6565b610b1f91906137a6565b905090565b610b2c612a0f565b607b8190556040518181527fe7c2c09f66c8b970b4a99250f4d0844e1496b9d51d4760a17b0134ddd52023e190602001610a89565b610b69612a0f565b60818190556040518181527f137f353e194da87258fd6c2b78eb1cfb9f2ce996f3466729d2464eccb7ce612990602001610a89565b606854600160a01b900460ff16610bef5760405162461bcd60e51b815260206004820152601560248201527415985d5b1d081a185cc81b9bdd081cdd185c9d1959605a1b60448201526064016109a6565b336000908152606f602052604090205460ff1615610c4f5760405162461bcd60e51b815260206004820152601c60248201527f5769746864726177616c20616c7265616479207265717565737465640000000060448201526064016109a6565b6069546000908152606e60209081526040808320338452909152902054610cae5760405162461bcd60e51b81526020600482015260136024820152724e6f7468696e6720746f20776974686472617760681b60448201526064016109a6565b606e60006069546001610cc1919061378e565b81526020808201929092526040908101600090812033825290925290205415610d4b5760405162461bcd60e51b815260206004820152603660248201527f43616e277420776974686472617720617320796f7520616c72656164792064656044820152751c1bdcda5d195908199bdc881b995e1d081c9bdd5b9960521b60648201526084016109a6565b60006069546001610d5c919061378e565b6069546000908152606e602090815260408083203384528252808320548484526079909252909120549192501015610dcc576069546000908152606e6020908152604080832033845282528083205484845260799092528220805491929091610dc69084906137e5565b90915550505b6001607c54610ddb91906137e5565b607c55336000818152606f6020908152604091829020805460ff1916600117905590519182527fe5892ff2a8b08efb903ffbba1f0514c1d3e22eea34dd5b89cf30aabce03dde5a9101610a89565b606c602052816000526040600020818154811061093857600080fd5b610e4d612a0f565b808210610e9c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207072696365206c696d69742076616c75657300000000000060448201526064016109a6565b607f829055608081905560408051838152602081018390527f34b23d671026520e294c1060acc36120677e8c9bd073a8f6577a6f241785b1a6910160405180910390a15050565b600054610100900460ff16610efe5760005460ff1615610f02565b303b155b610f655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109a6565b600054610100900460ff16158015610f87576000805461ffff19166101011790555b610fd9610f9760208401846134f7565b610fa760408501602086016134f7565b610fb760608601604087016134f7565b8560600135866101000135876101200135886101400135896101600135612a89565b608080830135607f5560a0830135905560c082013560815560e0820135607d556101808201356082558015611014576000805461ff00191690555b5050565b611020612a0f565b60788190556040518181527fc117ccf765672707ebe3c1606037488c1e27dc1f42b5266e3d6b496db7d4209e90602001610a89565b600160666000828254611068919061378e565b909155505060665460345460ff16156110b65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109a6565b606854600160a01b900460ff166111075760405162461bcd60e51b815260206004820152601560248201527415985d5b1d081a185cc81b9bdd081cdd185c9d1959605a1b60448201526064016109a6565b6082548310156111595760405162461bcd60e51b815260206004820152601860248201527f416d6f756e74206c657373207468616e206d696e696d756d000000000000000060448201526064016109a6565b60008490506000816001600160a01b0316639e3b34bf6040518163ffffffff1660e01b8152600401604080518083038186803b15801561119857600080fd5b505afa1580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d0919061360f565b50606a546069546000908152606b60205260409020549192506111f29161378e565b81106112385760405162461bcd60e51b815260206004820152601560248201527413585c9ad95d081d1a5b59481b9bdd081d985b1a59605a1b60448201526064016109a6565b6067546040516350d851a160e01b815260009161010090046001600160a01b0316906350d851a190611270908a90899060040161369d565b60206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061358f565b90506000811161130a5760405162461bcd60e51b815260206004820152601560248201527405072696365206e6f74206d6f7265207468616e203605c1b60448201526064016109a6565b606754604051632fd1b02d60e21b815260009161010090046001600160a01b03169063bf46c0b490611344908b908a908c906004016136ba565b60206040518083038186803b15801561135c57600080fd5b505afa158015611370573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611394919061358f565b9050607f5482101580156113aa57506080548211155b6113ef5760405162461bcd60e51b815260206004820152601660248201527513585c9ad95d081c1c9a58d9481b9bdd081d985b1a5960521b60448201526064016109a6565b60815481126114375760405162461bcd60e51b81526020600482015260146024820152730a6d6caee40d2dae0c2c6e840e8dede40d0d2ced60631b60448201526064016109a6565b611442888789612be3565b60695460009081526074602090815260408083206001600160a01b038c16845290915290205460ff166114d0576069805460009081526072602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038f169081179091559454845260748352818420948452939091529020805460ff191690911790555b5050505060665481146115255760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109a6565b50505050565b611533612a0f565b606854600160a01b900460ff161561158d5760405162461bcd60e51b815260206004820152601960248201527f5661756c742068617320616c726561647920737461727465640000000000000060448201526064016109a6565b6001606955427fa775687211c2b3346a0f5a2a0e7590e6c1838453e3785e6dd2a8efd6265ddf15556068805460ff60a01b1916600160a01b17905560796020527fdf6d6ad01a16c6118cfd605fcb55ad218b43517981ef4cc6d63a492cf34990d954600260009081527f7d4d2b02426547888e9185e69135196c4ed1edbc114060100a6ef94f8b5f60df919091556040517f59760ad83ef06d1a0bc439d8b39a42a870493f0cd3bc3d53bbd3e7c6991f494f9190a1565b61164c612a0f565b606a8190556040518181527f1d1fb7111c3779798bd4aefb2daea07ee8257a13c7eaceba89b4b1ccd405050d90602001610a89565b606a546069546000908152606b60205260408120549091610b1f9161378e565b6001546001600160a01b031633146117195760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016109a6565b60005460015460408051620100009093046001600160a01b03908116845290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180546000805462010000600160b01b0319166001600160a01b03831662010000021790556001600160a01b0319169055565b6117a6612a0f565b608380546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c7faa500efbd341aedbf1ee7ebd52ea36d226dda76bc01dd39b43d46f55b8d390602001610a89565b6117fc612a0f565b68056bc75e2d6310000081106118545760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420616c6c6f636174696f6e206c696d69742076616c7565730060448201526064016109a6565b607d8190556040518181527f9fb019ef2cdd86e0c7772694b935b2fd45131410802474ef0a8bf0afff94a40390602001610a89565b60008068056bc75e2d63100000607d546118a1610aea565b6118ab91906137c6565b6118b591906137a6565b6069546000908152607e602090815260408083206001600160a01b0388168452909152812054919250906118e990836137e5565b606954600090815260846020526040902054909150611906610aea565b61191091906137e5565b811061193f57606954600090815260846020526040902054611930610aea565b61193a91906137e5565b611941565b805b949350505050565b336000908152606f6020526040902054819060ff16156119bb5760405162461bcd60e51b815260206004820152602760248201527f5769746864726177616c206973207265717565737465642c2063616e6e6f742060448201526619195c1bdcda5d60ca1b60648201526084016109a6565b607a548110156119fe5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016109a6565b60775481607960006069546001611a15919061378e565b815260200190815260200160002054611a2e919061378e565b1115611a7c5760405162461bcd60e51b815260206004820181905260248201527f4465706f73697420616d6f756e742065786365656473207661756c742063617060448201526064016109a6565b606854611a94906001600160a01b031633308561301d565b60006069546001611aa5919061378e565b6069546000908152606e60209081526040808320338452909152902054909150158015611ae957506000818152606e60209081526040808320338452909152902054155b15611ba257607b54607c5410611b415760405162461bcd60e51b815260206004820152601b60248201527f4d617820616d6f756e74206f662075736572732072656163686564000000000060448201526064016109a6565b6000818152606c602090815260408083208054600181810183559185528385200180546001600160a01b03191633908117909155858552606d8452828520908552909252909120805460ff191682179055607c54611b9e9161378e565b607c555b6000818152606e6020908152604080832033845290915281208054859290611bcb90849061378e565b90915550506040805180820182528281526000838152606e6020908152838220338084529082528483205482850190815290835260708252848320935184555160019093019290925583815260719091529081208054859290611c2f90849061378e565b909155505060008181526079602052604081208054859290611c5290849061378e565b90915550506083546001600160a01b031615611ccd576083546040516302c7739b60e01b8152336004820152602481018590526001600160a01b03909116906302c7739b90604401600060405180830381600087803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b505050505b60408051338152602081018590527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4910160405180910390a1505050565b611d13612a0f565b6001600160a01b038116611d5b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016109a6565b600154600160a81b900460ff1615611dab5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016109a6565b600080546001600160a01b038381166201000081810262010000600160b01b031990941693909317938490556001805460ff60a81b1916600160a81b1790556040805193909404909116825260208201527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610a89565b6000828152607660208181526040808420546075835281852054868652939092528320549091611e53916137c6565b611e5d91906137a6565b9392505050565b611e6c612a0f565b607a8190556040518181527f990717cc219e5348c1b88bb0ff530d804f0b6f54f3b03844a2bfbe4eb1e9c5d690602001610a89565b6000607960006069546001611eb6919061378e565b815260200190815260200160002054607754610b1f91906137e5565b611eda612a0f565b60778190556040518181527f8c43aa02599ac8f8bab4724621ceea5e7a06b07bbbfaf3b7bd0386cbe481ea3c90602001610a89565b600160666000828254611f22919061378e565b909155505060665460345460ff1615611f705760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016109a6565b611f78612859565b611fc45760405162461bcd60e51b815260206004820152601960248201527f43616e277420636c6f73652063757272656e7420726f756e640000000000000060448201526064016109a6565b611fcc613088565b6000607160006069546001611fe1919061378e565b8152602081019190915260409081016000205460685491516370a0823160e01b815230600482015290916001600160a01b0316906370a082319060240160206040518083038186803b15801561203657600080fd5b505afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e919061358f565b61207891906137e5565b6069546000908152607160205260409020549091506120ab576069546000908152607560205260409020600190556120ec565b6069546000908152607160205260409020546120cf670de0b6b3a7640000836137c6565b6120d991906137a6565b6069546000908152607560205260409020555b60005b6069546000908152606c6020526040902054811015612492576069546000908152606c6020526040812080548390811061213957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910154606954835260758252604080842054606e84528185206001600160a01b0390931680865292909352832054909350670de0b6b3a764000091612188916137c6565b61219291906137a6565b6069546000908152606d602090815260408083206001600160a01b038716845290915290205490915060ff161561247d576001600160a01b0382166000908152606f602052604090205460ff1661238d5780606e600060695460016121f7919061378e565b81526020019081526020016000206000846001600160a01b03166001600160a01b0316815260200190815260200160002054612233919061378e565b606e60006069546001612246919061378e565b81526020019081526020016000206000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506001606d60006069546001612290919061378e565b8152602080820192909252604090810160009081206001600160a01b03871682529092528120805460ff191692151592909217909155606954606c91906122d890600161378e565b8152602080820192909252604001600090812080546001810182559082529190200180546001600160a01b0319166001600160a01b03848116919091179091556083541615612388576083546040516302c7739b60e01b81526001600160a01b03848116600483015260248201849052909116906302c7739b90604401600060405180830381600087803b15801561236f57600080fd5b505af1158015612383573d6000803e3d6000fd5b505050505b61247d565b6000606e600060695460016123a2919061378e565b8152602080820192909252604090810160009081206001600160a01b038088168352935220919091556068546123da911683836132e5565b6001600160a01b0382166000908152606f60205260408120805460ff19169055606954606d90829061240d90600161378e565b8152602080820192909252604090810160009081206001600160a01b03871680835290845290829020805460ff19169415159490941790935580519283529082018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a15b5050808061248a90613828565b9150506120ef565b50606954600114156124c157606954600090815260756020908152604080832054607690925290912055612524565b606954600081815260756020526040812054670de0b6b3a76400009290916076916124ee906001906137e5565b81526020019081526020016000205461250791906137c6565b61251191906137a6565b6069546000908152607660205260409020555b600160696000828254612537919061378e565b90915550506069546000908152606b60205260409081902042905560685490516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561259457600080fd5b505afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc919061358f565b606980546000908152607160205260408082209390935590548082529181205491607991906125fc90600161378e565b8152602001908152602001600020819055507fc67dda8e11f1aa941c7e74466b1859a07a32f46aaf641d29b83be348424d93cd600160695461263e91906137e5565b60756000600160695461265191906137e5565b815260200190815260200160002054604051612677929190918252602082015260400190565b60405180910390a15060665481146126d15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109a6565b50565b6126dc612a0f565b60678054610100600160a81b0319166101006001600160a01b038481168202929092179283905560685460405163095ea7b360e01b81529190930482166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b15801561274c57600080fd5b505af1158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613557565b506040516001600160a01b03821681527f576297e5fcc8cd907ee80b240284865eb3d821bdc5232e6ee9e4d78a12531c0990602001610a89565b6127c6612a0f565b60828190556040518181527f26ea09cdab135064e784e44516fc5b3d619360d241ae64bff47153b2e5ee610e90602001610a89565b60675460ff16156128445760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016109a6565b6067805460ff19166001908117909155606655565b606854600090600160a01b900460ff1615806128925750606a546069546000908152606b602052604090205461288f919061378e565b42105b1561289d5750600090565b60005b606954600090815260726020526040902054811015612a075760695460009081526072602052604081208054839081106128ea57634e487b7160e01b600052603260045260246000fd5b6000918252602091829020015460408051633f6fa65560e01b815290516001600160a01b0390921693508392633f6fa65592600480840193829003018186803b15801561293657600080fd5b505afa15801561294a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296e9190613557565b15806129e65750806001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ae57600080fd5b505afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190613557565b156129f45760009250505090565b50806129ff81613828565b9150506128a0565b506001905090565b6000546201000090046001600160a01b03163314612a875760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016109a6565b565b600054610100900460ff16612af45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a6565b612afd88610954565b612b056127fb565b60678054610100600160a81b0319166101006001600160a01b038a811682029290921792839055606880546001600160a01b0319168a8416908117909155606a89905560778890556078879055607a869055607b85905560405163095ea7b360e01b8152919093049091166004820152600019602482015263095ea7b390604401602060405180830381600087803b158015612ba057600080fd5b505af1158015612bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd89190613557565b505050505050505050565b60675460405163270e13ef60e01b815260009161010090046001600160a01b03169063270e13ef90612c1d908790879087906004016136ba565b60206040518083038186803b158015612c3557600080fd5b505afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d919061358f565b606954600090815260846020526040902054909150612c8a610aea565b612c9491906137e5565b8110612cee5760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320617661696c61626c6520616c6c6f63617460448201526234b7b760e91b60648201526084016109a6565b600068056bc75e2d63100000607d54612d05610aea565b612d0f91906137c6565b612d1991906137a6565b6069546000908152607e602090815260408083206001600160a01b038a1684529091529020549091508190612d4e908461378e565b10612db15760405162461bcd60e51b815260206004820152602d60248201527f416d6f756e74206578636565647320617661696c61626c6520616c6c6f63617460448201526c1a5bdb88199bdc88185cdcd95d609a1b60648201526084016109a6565b6068546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612df557600080fd5b505afa158015612e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2d919061358f565b60675460405163221d7ae160e21b815291925061010090046001600160a01b031690638875eb8490612e6c908990899089908990600090600401613714565b600060405180830381600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b50506068546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a082319060240160206040518083038186803b158015612ee457600080fd5b505afa158015612ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1c919061358f565b9050836084600060695481526020019081526020016000206000828254612f43919061378e565b90915550506069546000908152607e602090815260408083206001600160a01b038b16845290915281208054869290612f7d90849061378e565b909155505060695460009081526073602090815260408083206001600160a01b038b1684529091529020805487919060ff19166001836002811115612fd257634e487b7160e01b600052602160045260246000fd5b02179055507fd1fc86fd7e2808fb6a4d745c0f26983bd36784721df1e29a27a28ce3fcdc74168787878760405161300c94939291906136e5565b60405180910390a150505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526115259085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261331a565b6000805b6069546000908152607260205260409020548110156110145760695460009081526072602052604090208054829081106130d657634e487b7160e01b600052603260045260246000fd5b6000918252602091829020015460408051635c975abb60e01b815290516001600160a01b0390921694508492635c975abb92600480840193829003018186803b15801561312257600080fd5b505afa158015613136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315a9190613557565b1580156131d35750816001600160a01b0316633f6fa6556040518163ffffffff1660e01b815260040160206040518083038186803b15801561319b57600080fd5b505afa1580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d39190613557565b156132d357604051636392a51f60e01b8152306004820152600090819081906001600160a01b03861690636392a51f9060240160606040518083038186803b15801561321e57600080fd5b505afa158015613232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132569190613632565b925092509250600083118061326b5750600082115b806132765750600081115b156132cf57846001600160a01b031663851492586040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132b657600080fd5b505af11580156132ca573d6000803e3d6000fd5b505050505b5050505b806132dd81613828565b91505061308c565b6040516001600160a01b03831660248201526044810182905261331590849063a9059cbb60e01b90606401613051565b505050565b600061336f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133ec9092919063ffffffff16565b805190915015613315578080602001905181019061338d9190613557565b6133155760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109a6565b6060611941848460008585843b6134455760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a6565b600080866001600160a01b031685876040516134619190613681565b60006040518083038185875af1925050503d806000811461349e576040519150601f19603f3d011682016040523d82523d6000602084013e6134a3565b606091505b50915091506134b38282866134be565b979650505050505050565b606083156134cd575081611e5d565b8251156134dd5782518084602001fd5b8160405162461bcd60e51b81526004016109a6919061375b565b600060208284031215613508578081fd5b8135611e5d81613859565b600080600060608486031215613527578182fd5b833561353281613859565b92506020840135915060408401356003811061354c578182fd5b809150509250925092565b600060208284031215613568578081fd5b81518015158114611e5d578182fd5b600060208284031215613588578081fd5b5035919050565b6000602082840312156135a0578081fd5b5051919050565b60006101a082840312156135b9578081fd5b50919050565b600080604083850312156135d1578182fd5b8235915060208301356135e381613859565b809150509250929050565b60008060408385031215613600578182fd5b50508035926020909101359150565b60008060408385031215613621578182fd5b505080516020909101519092909150565b600080600060608486031215613646578283fd5b8351925060208401519150604084015190509250925092565b6003811061367d57634e487b7160e01b600052602160045260246000fd5b9052565b600082516136938184602087016137fc565b9190910192915050565b6001600160a01b038316815260408101611e5d602083018461365f565b6001600160a01b0384168152606081016136d7602083018561365f565b826040830152949350505050565b6001600160a01b038516815260808101613702602083018661365f565b60408201939093526060015292915050565b6001600160a01b038616815260a08101613731602083018761365f565b8460408301528360608301528260808301529695505050505050565b60208101610916828461365f565b602081526000825180602084015261377a8160408501602087016137fc565b601f01601f19169190910160400192915050565b600082198211156137a1576137a1613843565b500190565b6000826137c157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156137e0576137e0613843565b500290565b6000828210156137f7576137f7613843565b500390565b60005b838110156138175781810151838201526020016137ff565b838111156115255750506000910152565b600060001982141561383c5761383c613843565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146126d157600080fdfea2646970667358221220995426e5c145fefec9f1f397d6f5dc6c5eaa999b7a670266ee5211593b3364a564736f6c63430008040033
Generate instant answers for your smart contract questions using Al Models. Read more.
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

