0 txs
0 calls
constructor
No constructor.
functions
balancePerUserAndCollateral
viewfunction balancePerUserAndCollateral(address, address) view returns (uint256)
freeBetExpiration
viewfunction freeBetExpiration(address, address) view returns (uint256)
freeBetExpirationPeriod
viewfunction freeBetExpirationPeriod() view returns (uint256)
freeBetExpirationUpgrade
viewfunction freeBetExpirationUpgrade() view returns (uint256)
getActiveTicketsPerUser
viewfunction getActiveTicketsPerUser(uint256 _index, uint256 _pageSize, address _user) view returns (address[])
getResolvedTicketsPerUser
viewfunction getResolvedTicketsPerUser(uint256 _index, uint256 _pageSize, address _user) view returns (address[])
getUsersFreeBetDataPerCollateral
viewfunction getUsersFreeBetDataPerCollateral(address _collateral, uint256 _index, uint256 _pageSize) view returns (address[] allUsers, uint256[] freeBetAmounts, bool[] isValid, uint256[] timeToExpiration)
getUsersWithFreeBetPerCollateral
viewfunction getUsersWithFreeBetPerCollateral(address _collateral, uint256 _index, uint256 _pageSize) view returns (address[])
isFreeBetValid
viewfunction isFreeBetValid(address _user, address _collateral) view returns (bool isValid, uint256 timeToExpiration)
lastPauseTime
viewfunction lastPauseTime() view returns (uint256)
liveRequestsPerUser
viewfunction liveRequestsPerUser(bytes32) view returns (address)
liveTradingProcessor
viewfunction liveTradingProcessor() view returns (address)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
numOfActiveTicketsPerUser
viewfunction numOfActiveTicketsPerUser(address _user) view returns (uint256)
numOfResolvedTicketsPerUser
viewfunction numOfResolvedTicketsPerUser(address _user) view returns (uint256)
numOfUsersWithFreeBetPerCollateral
viewfunction numOfUsersWithFreeBetPerCollateral(address _collateral) view returns (uint256)
owner
viewfunction owner() view returns (address)
paidPerTicket
viewfunction paidPerTicket(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
sgpRequestsPerUser
viewfunction sgpRequestsPerUser(bytes32) view returns (address)
sgpTradingProcessor
viewfunction sgpTradingProcessor() view returns (address)
sportsAMM
viewfunction sportsAMM() view returns (address)
supportedCollateral
viewfunction supportedCollateral(address) view returns (bool)
ticketToUser
viewfunction ticketToUser(address) view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addSupportedCollateral
nonpayablefunction addSupportedCollateral(address _collateral, bool _supported)
confirmLiveTrade
nonpayablefunction confirmLiveTrade(bytes32 requestId, address _createdTicket, uint256 _buyInAmount, address _collateral)
confirmSGPTrade
nonpayablefunction confirmSGPTrade(bytes32 requestId, address _createdTicket, uint256 _buyInAmount, address _collateral)
confirmTicketResolved
nonpayablefunction confirmTicketResolved(address _resolvedTicket)
fund
nonpayablefunction fund(address _user, address _collateral, uint256 _amount)
fundBatch
nonpayablefunction fundBatch(address[] _users, address _collateral, uint256 _amountPerUser)
initialize
nonpayablefunction initialize(address _owner, address _sportsAMMV2, address _liveTradingProcessor)
initNonReentrant
nonpayablefunction initNonReentrant()
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
removeExpiredUserFunding
nonpayablefunction removeExpiredUserFunding(address[] _users, address _collateral)
removeUserFunding
nonpayablefunction removeUserFunding(address _user, address _collateral, address _receiver)
removeUserFundingBatch
nonpayablefunction removeUserFundingBatch(address[] _users, address _collateral, address _receiver)
retrieveFunds
nonpayablefunction retrieveFunds(address _collateral, uint256 _amount)
setFreeBetExpirationPeriod
nonpayablefunction setFreeBetExpirationPeriod(uint256 _freeBetExpirationPeriod, uint256 _freeBetExpirationUpgrade)
setLiveTradingProcessor
nonpayablefunction setLiveTradingProcessor(address _liveTradingProcessor)
setOwner
nonpayablefunction setOwner(address _owner)
setPaused
nonpayablefunction setPaused(bool _paused)
setSGPTradingProcessor
nonpayablefunction setSGPTradingProcessor(address _sgpTradingProcessor)
setSportsAMM
nonpayablefunction setSportsAMM(address _sportsAMM)
setUserFreeBetExpiration
nonpayablefunction setUserFreeBetExpiration(address _user, address _collateral, uint256 _freeBetExpiration)
setUsersWithAlreadyFundedFreeBetPerCollateral
nonpayablefunction setUsersWithAlreadyFundedFreeBetPerCollateral(address[] _users, address _collateral)
trade
nonpayablefunction trade(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral)
tradeLive
nonpayablefunction tradeLive(tuple _liveTradeData)
tradeSGP
nonpayablefunction tradeSGP(tuple _sgpTradeData)
tradeSystemBet
nonpayablefunction tradeSystemBet(tuple[] _tradeData, uint256 _buyInAmount, uint256 _expectedQuote, uint256 _additionalSlippage, address _referrer, address _collateral, uint8 _systemBetDenominator)
transferOwnershipAtInit
nonpayablefunction transferOwnershipAtInit(address proxyAddress)
events
CollateralSupportChanged
event CollateralSupportChanged(address collateral, bool supported)
FreeBetLiveTradeRequested
event FreeBetLiveTradeRequested(address user, uint256 buyInAmount, bytes32 requestId)
FreeBetSGPTradeRequested
event FreeBetSGPTradeRequested(address user, uint256 buyInAmount, bytes32 requestId)
FreeBetTicketResolved
event FreeBetTicketResolved(address ticket, address user, uint256 earned)
FreeBetTrade
event FreeBetTrade(address createdTicket, uint256 buyInAmount, address user, bool isLive)
Initialized
event Initialized(uint64 version)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
PauseChanged
event PauseChanged(bool isPaused)
SetFreeBetExpirationPeriod
event SetFreeBetExpirationPeriod(uint256 freeBetExpirationPeriod, uint256 freeBetExpirationUpgrade)
SetLiveTradingProcessor
event SetLiveTradingProcessor(address liveTradingProcessor)
SetSGPTradingProcessor
event SetSGPTradingProcessor(address sgpTradingProcessor)
SetSportsAMM
event SetSportsAMM(address sportsAMM)
UserFunded
event UserFunded(address user, address collateral, uint256 amount, address funder)
UserFundingRemoved
event UserFundingRemoved(address _user, address _collateral, address _receiver, uint256 _amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b50614087806100206000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c806390e3afb21161019d578063c9925288116100e9578063e94cdf5f116100a2578063efac480d1161007c578063efac480d1461074a578063f38329d91461075d578063fa550eba14610780578063fecc198b146107a357600080fd5b8063e94cdf5f14610726578063ebc7977214610739578063edc5de8e1461074157600080fd5b8063c99252881461067f578063cab7bf5614610697578063dd1d9773146106c2578063dd37861d146106d5578063e74e33e0146106e8578063e81e52ee1461071357600080fd5b8063a13d6b6a11610156578063be899c8911610130578063be899c8914610633578063bea4ae2014610646578063c0c53b8b14610659578063c3b83f5f1461066c57600080fd5b8063a13d6b6a146105ed578063aba84bb114610600578063b1b5823b1461062a57600080fd5b806390e3afb21461056f5780639168fdd11461058257806391b4ded9146105ab578063924fbde1146105b457806394bd2313146105c7578063a12d5b07146105da57600080fd5b80633a687e2b1161025c57806352aa17a21161021557806379ba5097116101ef57806379ba5097146105185780637eda2d7b146105205780638da5cb5b146105335780638f974cd91461054657600080fd5b806352aa17a2146104d557806353a47bb7146104e85780635c975abb146104fb57600080fd5b80633a687e2b1461044057806342d851ed1461045357806344cab7ee1461047c578063485b23bf1461048f5780634d1ac474146104af5780634fa98ca5146104c257600080fd5b80631627540c116102ae5780631627540c146103b857806316c38b3c146103cb578063188aa45d146103de5780631a10bd76146103f1578063275fd247146104045780633a5721211461041757600080fd5b806304143d31146102f657806304de96c51461030b578063084a2fa41461033b57806311e9c08d1461034e57806313af40351461037c5780631590a4a41461038f575b600080fd5b6103096103043660046131cc565b6107cc565b005b60065461031e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61030961034936600461322c565b61099c565b61036e61035c36600461326d565b600a6020526000908152604090205481565b604051908152602001610332565b61030961038a36600461326d565b6109d0565b61036e61039d36600461326d565b6001600160a01b03166000908152600c602052604090205490565b6103096103c636600461326d565b610b01565b6103096103d9366004613298565b610b57565b6103096103ec3660046132b5565b610bc9565b6103096103ff3660046132e1565b610be9565b61030961041236600461335e565b610d67565b61031e6104253660046133c5565b600b602052600090815260409020546001600160a01b031681565b61030961044e3660046133de565b610e60565b61031e6104613660046133c5565b600f602052600090815260409020546001600160a01b031681565b600e5461031e906001600160a01b031681565b6104a261049d366004613464565b610f86565b60405161033291906134e1565b6103096104bd3660046134f4565b610fb6565b6103096104d036600461353f565b61118a565b6103096104e336600461357f565b6111fc565b60015461031e906001600160a01b031681565b6003546105089060ff1681565b6040519015158152602001610332565b6103096113b7565b61030961052e3660046135b9565b6114a1565b60005461031e906001600160a01b031681565b61031e61055436600461326d565b6009602052600090815260409020546001600160a01b031681565b61030961057d3660046134f4565b611798565b61036e61059036600461326d565b6001600160a01b03166000908152600d602052604090205490565b61036e60025481565b6104a26105c23660046135f8565b611803565b6103096105d536600461326d565b611829565b6103096105e83660046135b9565b6118a5565b6103096105fb36600461326d565b6119a8565b61061361060e36600461362d565b611d72565b604080519215158352602083019190915201610332565b61036e60125481565b61030961064136600461322c565b611d8a565b61030961065436600461365b565b611e21565b61030961066736600461353f565b611f0b565b61030961067a36600461326d565b612061565b60055461031e9061010090046001600160a01b031681565b61036e6106a536600461362d565b600760209081526000928352604080842090915290825290205481565b6103096106d03660046136b7565b612148565b6104a26106e3366004613464565b61219c565b61036e6106f636600461362d565b601060209081526000928352604080842090915290825290205481565b61030961072136600461326d565b6121c2565b61030961073436600461326d565b612246565b6103096122c2565b61036e60115481565b6103096107583660046136ea565b612320565b61077061076b3660046135f8565b612446565b60405161033294939291906137ae565b61050861078e36600461326d565b60086020526000908152604090205460ff1681565b61036e6107b136600461326d565b6001600160a01b031660009081526013602052604090205490565b60035460ff16156107f85760405162461bcd60e51b81526004016107ef9061382c565b60405180910390fd5b3361080b6101408301610120840161326d565b6001600160a01b03811660009081526008602052604090205460a08401359060ff166108495760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b0380841660009081526007602090815260408083209386168352929052205481111561088e5760405162461bcd60e51b81526004016107ef906138b9565b61089883836126bc565b6108b45760405162461bcd60e51b81526004016107ef906138e7565b600654604051631a921eb960e21b81526000916001600160a01b031690636a487ae4906108e59088906004016139a3565b6020604051808303816000875af1158015610904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109289190613aa3565b6000818152600b602090815260409182902080546001600160a01b03191633908117909155825190815260a0890135918101919091529081018290529091507ff226e2c0a5c137f1fc5331d8dabe76ea9810e121bc9b18737125bcaa884daa80906060015b60405180910390a15050505050565b6109a4612736565b6001600160a01b0392831660009081526010602090815260408083209490951682529290925291902055565b6001600160a01b038116610a265760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f7420626520300000000000000060448201526064016107ef565b600154600160a01b900460ff1615610a925760405162461bcd60e51b815260206004820152602960248201527f416c726561647920696e697469616c697a65642c20757365206e6f6d696e617460448201526832a732bba7bbb732b960b91b60648201526084016107ef565b6001805460ff60a01b1916600160a01b179055600080546001600160a01b0383166001600160a01b0319909116811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91015b60405180910390a150565b610b09612736565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290602001610af6565b610b5f612736565b60035460ff16151581151514610bc6576003805460ff191682151590811790915560ff1615610b8d57426002555b60035460405160ff909116151581527f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec590602001610af6565b50565b610bd1612736565b610be56001600160a01b03831633836127aa565b5050565b610bf1612736565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610ca15760055460405163095ea7b360e01b81526101009091046001600160a01b039081166004830152600019602483015283169063095ea7b3906044016020604051808303816000875af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b9190613abc565b50610d1f565b60055460405163095ea7b360e01b81526101009091046001600160a01b0390811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015610cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1d9190613abc565b505b604080516001600160a01b038416815282151560208201527fb44b294feae8400b9db26080aaedb6cd054001acc015182a0d4216d9e0e7d49091015b60405180910390a15050565b60035460ff1615610d8a5760405162461bcd60e51b81526004016107ef9061382c565b600160046000828254610d9d9190613aef565b9091555050600454610dad612736565b6001600160a01b03831660009081526008602052604090205460ff16610de55760405162461bcd60e51b81526004016107ef90613889565b60005b84811015610e37576000868683818110610e0457610e04613b02565b9050602002016020810190610e19919061326d565b9050610e2681868661280e565b50610e3081613b18565b9050610de8565b506004548114610e595760405162461bcd60e51b81526004016107ef90613b31565b5050505050565b60035460ff1615610e835760405162461bcd60e51b81526004016107ef9061382c565b600160046000828254610e969190613aef565b90915550506004546001600160a01b03821660009081526008602052604090205433908390889060ff16610edc5760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b03808416600090815260076020908152604080832093861683529290522054811115610f215760405162461bcd60e51b81526004016107ef906138b9565b610f2b83836126bc565b610f475760405162461bcd60e51b81526004016107ef906138e7565b610f588b8b8b8b8b8b8b600061293e565b5050506004548114610f7c5760405162461bcd60e51b81526004016107ef90613b31565b5050505050505050565b6001600160a01b0381166000908152600d60205260409020606090610fac908585612b34565b90505b9392505050565b60035460ff1615610fd95760405162461bcd60e51b81526004016107ef9061382c565b600160046000828254610fec9190613aef565b909155505060045460005b8381101561116257600085858381811061101357611013613b02565b9050602002016020810190611028919061326d565b6001600160a01b0380821660009081526007602090815260408083209389168352929052205490915015611151576001600160a01b03808216600090815260106020908152604080832093881683529290522054158015906110ae57506001600160a01b0380821660009081526010602090815260408083209388168352929052205442115b806110f557506001600160a01b038082166000908152601060209081526040808320938816835292905220541580156110f55750426011546012546110f39190613aef565b105b6111385760405162461bcd60e51b8152602060048201526014602482015273119c99594818995d081b9bdd08195e1c1a5c995960621b60448201526064016107ef565b60005461115190829086906001600160a01b031661280e565b5061115b81613b18565b9050610ff7565b5060045481146111845760405162461bcd60e51b81526004016107ef90613b31565b50505050565b60035460ff16156111ad5760405162461bcd60e51b81526004016107ef9061382c565b6001600460008282546111c09190613aef565b90915550506004546111d0612736565b6111db84848461280e565b60045481146111845760405162461bcd60e51b81526004016107ef90613b31565b60035460ff161561121f5760405162461bcd60e51b81526004016107ef9061382c565b3361123060c0830160a0840161326d565b6001600160a01b038116600090815260086020908152604090912054908401359060ff166112705760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b038084166000908152600760209081526040808320938616835292905220548111156112b55760405162461bcd60e51b81526004016107ef906138b9565b6112bf83836126bc565b6112db5760405162461bcd60e51b81526004016107ef906138e7565b600e546040516306fea14960e21b81526000916001600160a01b031690631bfa85249061130c908890600401613e53565b6020604051808303816000875af115801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190613aa3565b6000818152600f602090815260409182902080546001600160a01b03191633908117909155825190815288820135918101919091529081018290529091507f2a107e8d4cba0aa559543eb234520741dac54e7db15d8a96afc8df0dcb8f75259060600161098d565b6001546001600160a01b0316331461142f5760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084016107ef565b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60035460ff16156114c45760405162461bcd60e51b81526004016107ef9061382c565b6001600460008282546114d79190613aef565b9091555050600454600e546001600160a01b031633146115485760405162461bcd60e51b815260206004820152602660248201527f4f6e6c792063616c6c61626c652066726f6d2053475054726164696e6750726f60448201526531b2b9b9b7b960d11b60648201526084016107ef565b6000858152600f60205260409020546001600160a01b0316806115a25760405162461bcd60e51b8152602060048201526012602482015271155b9adb9bdddb8814d1d4081d1a58dad95d60721b60448201526064016107ef565b6001600160a01b03831661162a57600560019054906101000a90046001600160a01b03166001600160a01b031663aeb0f1646040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613ed9565b92505b6001600160a01b03831660009081526008602052604090205460ff166116625760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b038082166000908152600760209081526040808320938716835292905220548411156116a75760405162461bcd60e51b81526004016107ef906138b9565b6001600160a01b038082166000908152600760209081526040808320938716835292905290812080548692906116de908490613ef6565b90915550506001600160a01b03858116600090815260096020908152604080832080546001600160a01b0319169486169485179055928252600c9052206117259086612c4e565b604080516001600160a01b038781168252602082018790528316818301526001606082015290517f7ae5c9299a3bae0b94af6ac3b4a893bc2c44adfbd65479c7882294b4b64030839181900360800190a1506004548114610e595760405162461bcd60e51b81526004016107ef90613b31565b6117a0612736565b60005b82811015611184576117f38484838181106117c0576117c0613b02565b90506020020160208101906117d5919061326d565b6001600160a01b038416600090815260136020526040902090612c4e565b6117fc81613b18565b90506117a3565b6001600160a01b0383166000908152601360205260409020606090610fac908484612b34565b611831612736565b6001600160a01b0381166118575760405162461bcd60e51b81526004016107ef90613f09565b600680546001600160a01b0319166001600160a01b0383169081179091556040519081527f8b5670b3bc5c520b7a3580c753ba88065a561ad52a99674196859b044ea2028590602001610af6565b60035460ff16156118c85760405162461bcd60e51b81526004016107ef9061382c565b6001600460008282546118db9190613aef565b90915550506004546006546001600160a01b0316331461194d5760405162461bcd60e51b815260206004820152602760248201527f4f6e6c792063616c6c61626c652066726f6d204c69766554726164696e67507260448201526637b1b2b9b9b7b960c91b60648201526084016107ef565b6000858152600b60205260409020546001600160a01b0316806115a25760405162461bcd60e51b8152602060048201526013602482015272155b9adb9bdddb881b1a5d99481d1a58dad95d606a1b60448201526064016107ef565b60055461010090046001600160a01b03163314611a075760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c7920616c6c6f7765642066726f6d2053706f727473414d4d000000000060448201526064016107ef565b6001600160a01b038082166000908152600960205260409020541680611a605760405162461bcd60e51b815260206004820152600e60248201526d155b9adb9bdddb881d1a58dad95d60921b60448201526064016107ef565b6001600160a01b0381166000908152600c60205260409020611a829083612ca0565b611ac65760405162461bcd60e51b8152602060048201526015602482015274155b9adb9bdddb881858dd1a5d99481d1a58dad95d605a1b60448201526064016107ef565b6000826001600160a01b031663242a8a6b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2a9190613aa3565b905060008115611ce3576000846001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190613ed9565b90506000856001600160a01b031663d165dac26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfe9190613aa3565b905060115442611c0e9190613aef565b6001600160a01b03808716600090815260106020908152604080832093871683529290522055808410611ca3576001600160a01b03808616600090815260076020908152604080832093861683529290529081208054839290611c72908490613aef565b90915550611c8290508185613ef6565b92508215611c9e57611c9e6001600160a01b03831686856127aa565b611ce0565b6001600160a01b03808616600090815260076020908152604080832093861683529290529081208054869290611cda908490613aef565b90915550505b50505b604080516001600160a01b038087168252851660208201529081018290527f66c0cec01a971dcd7f2bb22f7cc4b244c8f9ee6deb5540b073d0f10b4539e8b59060600160405180910390a16001600160a01b0383166000908152600c60205260409020611d509085612d16565b6001600160a01b0383166000908152600d602052604090206111849085612c4e565b600080611d7f8484612e6f565b909590945092505050565b60035460ff1615611dad5760405162461bcd60e51b81526004016107ef9061382c565b600160046000828254611dc09190613aef565b90915550506004546001600160a01b03831660009081526008602052604090205460ff16611e005760405162461bcd60e51b81526004016107ef90613889565b611e156001600160a01b038416333085612f52565b6111db84848433612f8b565b60035460ff1615611e445760405162461bcd60e51b81526004016107ef9061382c565b600160046000828254611e579190613aef565b90915550506004546001600160a01b03831660009081526008602052604090205460ff16611e975760405162461bcd60e51b81526004016107ef90613889565b611eb83330611ea68786613f32565b6001600160a01b038716929190612f52565b60005b84811015610e37576000868683818110611ed757611ed7613b02565b9050602002016020810190611eec919061326d565b9050611efa81868633612f8b565b50611f0481613b18565b9050611ebb565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611f505750825b90506000826001600160401b03166001148015611f6c5750303b155b905081158015611f7a575080155b15611f985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611fc257845460ff60401b1916600160401b1785555b611fcb886109d0565b611fd36122c2565b60058054610100600160a81b0319166101006001600160a01b038a81169190910291909117909155600680546001600160a01b0319169188169190911790558315610f7c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050505050565b612069612736565b6001600160a01b03811661208f5760405162461bcd60e51b81526004016107ef90613f09565b600154600160a81b900460ff16156120df5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481d1c985b9cd9995c9c9959606a1b60448201526064016107ef565b600080546001600160a01b0383166001600160a01b031990911681179091556001805460ff60a81b1916600160a81b1790556040805182815260208101929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9101610af6565b612150612736565b601182905580156121615780612163565b425b60125560408051838152602081018390527fddd57316dedc944a54a2d4ccbec17883e25f23eebb11ea1a4800f36502a469f09101610d5b565b6001600160a01b0381166000908152600c60205260409020606090610fac908585612b34565b6121ca612736565b6001600160a01b0381166121f05760405162461bcd60e51b81526004016107ef90613f09565b60058054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f9985022676a73860c32a3b91ea7a7dfe2d5e87c148f50eb519d8b0f33ab7f8b990602001610af6565b61224e612736565b6001600160a01b0381166122745760405162461bcd60e51b81526004016107ef90613f09565b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527f63bb8d8b29c197c8b58de8e513ab743bce7bf84c87adc05f2cc18e609d5d0e8690602001610af6565b60055460ff161561230b5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016107ef565b6005805460ff19166001908117909155600455565b60035460ff16156123435760405162461bcd60e51b81526004016107ef9061382c565b6001600460008282546123569190613aef565b90915550506004546001600160a01b03831660009081526008602052604090205433908490899060ff1661239c5760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b038084166000908152600760209081526040808320938616835292905220548111156123e15760405162461bcd60e51b81526004016107ef906138b9565b6123eb83836126bc565b6124075760405162461bcd60e51b81526004016107ef906138e7565b6124178c8c8c8c8c8c8c8c61293e565b505050600454811461243b5760405162461bcd60e51b81526004016107ef90613b31565b505050505050505050565b6001600160a01b03831660009081526013602052604090205460609081908190819085111561248b576001600160a01b03871660009081526013602052604090205494505b846001600160401b038111156124a3576124a3613f49565b6040519080825280602002602001820160405280156124cc578160200160208202803683370190505b509350846001600160401b038111156124e7576124e7613f49565b604051908082528060200260200182016040528015612510578160200160208202803683370190505b509150846001600160401b0381111561252b5761252b613f49565b604051908082528060200260200182016040528015612554578160200160208202803683370190505b509250846001600160401b0381111561256f5761256f613f49565b604051908082528060200260200182016040528015612598578160200160208202803683370190505b50905060005b858110156126b2576001600160a01b03881660009081526013602052604081206125c8838a613aef565b815481106125d8576125d8613b02565b6000918252602090912001546001600160a01b031690506125f9818a612e6f565b85848151811061260b5761260b613b02565b6020026020010185858151811061262457612624613b02565b6020026020010182815250821515151581525050508086838151811061264c5761264c613b02565b6001600160a01b039283166020918202929092018101919091528282166000908152600782526040808220938d168252929091522054855186908490811061269657612696613b02565b6020908102919091010152506126ab81613b18565b905061259e565b5093509350935093565b6001600160a01b03808316600090815260106020908152604080832093851683529290529081205442108061272d57506001600160a01b0380841660009081526010602090815260408083209386168352929052205415801561272d57504260115460125461272b9190613aef565b115b90505b92915050565b6000546001600160a01b031633146127a85760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b60648201526084016107ef565b565b6040516001600160a01b0383811660248301526044820183905261280991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613062565b505050565b6001600160a01b03821660009081526008602052604090205460ff166128465760405162461bcd60e51b81526004016107ef90613889565b6001600160a01b0380841660009081526007602090815260408083209386168084529390915290205461287b919083906127aa565b6001600160a01b038381166000908152600760209081526040808320938616835292815282822080549083905560139091529190206128ba9085612ca0565b156128e1576001600160a01b03831660009081526013602052604090206128e19085612d16565b604080516001600160a01b0380871682528086166020830152841691810191909152606081018290527f5aecd162bb2e2f8d70294fe483d6a8596cf8555a650f08a962220feaba5c21fe906080015b60405180910390a150505050565b3360009081526007602090815260408083206001600160a01b038616845290915281208054889290612971908490613ef6565b909155506000905060ff821615612a11576005546040516349d8615760e11b81526101009091046001600160a01b0316906393b0c2ae906129c7908c908c908c908c908c908c908c906000908d90600401613f5f565b6020604051808303816000875af11580156129e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0a9190613ed9565b9050612a99565b6005546040516214e17b60e41b81526101009091046001600160a01b03169063014e17b090612a53908c908c908c908c908c908c908c90600090600401613fbb565b6020604051808303816000875af1158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190613ed9565b90505b6001600160a01b038116600090815260096020908152604080832080546001600160a01b031916339081179091558352600c9091529020612ada9082612c4e565b604080516001600160a01b03831681526020810189905233818301526000606082015290517f7ae5c9299a3bae0b94af6ac3b4a893bc2c44adfbd65479c7882294b4b64030839181900360800190a1505050505050505050565b60606000612b428385613aef565b8554909150811115612b52575083545b838111612b6f575050604080516000815260208101909152610faf565b6000612b7b8583613ef6565b90506000816001600160401b03811115612b9757612b97613f49565b604051908082528060200260200182016040528015612bc0578160200160208202803683370190505b50905060005b82811015612c435787612bd98883613aef565b81548110612be957612be9613b02565b9060005260206000200160009054906101000a90046001600160a01b0316828281518110612c1957612c19613b02565b6001600160a01b039092166020928302919091019091015280612c3b81613b18565b915050612bc6565b509695505050505050565b612c588282612ca0565b610be55781546001600160a01b038216600081815260018086016020908152604083208590559084018655858252902090910180546001600160a01b03191690911790555050565b81546000908103612cb357506000612730565b6001600160a01b038216600090815260018401602052604090205480151580612d0e5750826001600160a01b031684600001600081548110612cf757612cf7613b02565b6000918252602090912001546001600160a01b0316145b949350505050565b612d208282612ca0565b612d625760405162461bcd60e51b815260206004820152601360248201527222b632b6b2b73a103737ba1034b71039b2ba1760691b60448201526064016107ef565b6001600160a01b0381166000908152600180840160205260408220548454909291612d8c91613ef6565b9050808214612e18576000846000018281548110612dac57612dac613b02565b60009182526020909120015485546001600160a01b0390911691508190869085908110612ddb57612ddb613b02565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018601909152604090208290555b8354849080612e2957612e2961400c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0394909416815260019490940190925250506040812055565b6001600160a01b038116600090815260086020526040812054819060ff168015612ebd57506001600160a01b0380851660009081526007602090815260408083209387168352929052205415155b15612f4b576001600160a01b038085166000908152601060209081526040808320938716835292905290812054612f0357601154601254612efe9190613aef565b612f2a565b6001600160a01b038086166000908152601060209081526040808320938816835292905220545b9050428111925082612f3d576000612f47565b612f474282613ef6565b9150505b9250929050565b6040516001600160a01b0384811660248301528381166044830152606482018390526111849186918216906323b872dd906084016127d7565b6001600160a01b0383166000908152601360205260409020612fad9085612c4e565b6001600160a01b03808516600090815260076020908152604080832093871683529290529081208054849290612fe4908490613aef565b9091555050601154612ff69042613aef565b6001600160a01b03858116600081815260106020908152604080832089861680855290835292819020959095558451928352820152918201849052821660608201527ff462a3a00cd477c2aa6252dfbff27a7cf55ad6f75c526f4650b5bb92ef29126890608001612930565b60006130776001600160a01b038416836130c5565b9050805160001415801561309c57508080602001905181019061309a9190613abc565b155b1561280957604051635274afe760e01b81526001600160a01b03841660048201526024016107ef565b606061272d8383600084600080856001600160a01b031684866040516130eb9190614022565b60006040518083038185875af1925050503d8060008114613128576040519150601f19603f3d011682016040523d82523d6000602084013e61312d565b606091505b509150915061313d868383613147565b9695505050505050565b60608261315c57613157826131a3565b610faf565b815115801561317357506001600160a01b0384163b155b1561319c57604051639996b31560e01b81526001600160a01b03851660048201526024016107ef565b5080610faf565b8051156131b35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000602082840312156131de57600080fd5b81356001600160401b038111156131f457600080fd5b82016101408185031215610faf57600080fd5b6001600160a01b0381168114610bc657600080fd5b803561322781613207565b919050565b60008060006060848603121561324157600080fd5b833561324c81613207565b9250602084013561325c81613207565b929592945050506040919091013590565b60006020828403121561327f57600080fd5b8135610faf81613207565b8015158114610bc657600080fd5b6000602082840312156132aa57600080fd5b8135610faf8161328a565b600080604083850312156132c857600080fd5b82356132d381613207565b946020939093013593505050565b600080604083850312156132f457600080fd5b82356132ff81613207565b9150602083013561330f8161328a565b809150509250929050565b60008083601f84011261332c57600080fd5b5081356001600160401b0381111561334357600080fd5b6020830191508360208260051b8501011115612f4b57600080fd5b6000806000806060858703121561337457600080fd5b84356001600160401b0381111561338a57600080fd5b6133968782880161331a565b90955093505060208501356133aa81613207565b915060408501356133ba81613207565b939692955090935050565b6000602082840312156133d757600080fd5b5035919050565b600080600080600080600060c0888a0312156133f957600080fd5b87356001600160401b0381111561340f57600080fd5b61341b8a828b0161331a565b909850965050602088013594506040880135935060608801359250608088013561344481613207565b915060a088013561345481613207565b8091505092959891949750929550565b60008060006060848603121561347957600080fd5b8335925060208401359150604084013561349281613207565b809150509250925092565b600081518084526020808501945080840160005b838110156134d65781516001600160a01b0316875295820195908201906001016134b1565b509495945050505050565b60208152600061272d602083018461349d565b60008060006040848603121561350957600080fd5b83356001600160401b0381111561351f57600080fd5b61352b8682870161331a565b909450925050602084013561349281613207565b60008060006060848603121561355457600080fd5b833561355f81613207565b9250602084013561356f81613207565b9150604084013561349281613207565b60006020828403121561359157600080fd5b81356001600160401b038111156135a757600080fd5b820160c08185031215610faf57600080fd5b600080600080608085870312156135cf57600080fd5b8435935060208501356135e181613207565b92506040850135915060608501356133ba81613207565b60008060006060848603121561360d57600080fd5b833561361881613207565b95602085013595506040909401359392505050565b6000806040838503121561364057600080fd5b823561364b81613207565b9150602083013561330f81613207565b6000806000806060858703121561367157600080fd5b84356001600160401b0381111561368757600080fd5b6136938782880161331a565b90955093505060208501356136a781613207565b9396929550929360400135925050565b600080604083850312156136ca57600080fd5b50508035926020909101359150565b803560ff8116811461322757600080fd5b60008060008060008060008060e0898b03121561370657600080fd5b88356001600160401b0381111561371c57600080fd5b6137288b828c0161331a565b909950975050602089013595506040890135945060608901359350608089013561375181613207565b925060a089013561376181613207565b915061376f60c08a016136d9565b90509295985092959890939650565b600081518084526020808501945080840160005b838110156134d657815187529582019590820190600101613792565b6080815260006137c1608083018761349d565b6020838203818501526137d4828861377e565b8481036040860152865180825282880193509082019060005b8181101561380b5784511515835293830193918301916001016137ed565b5050848103606086015261381f818761377e565b9998505050505050505050565b6020808252603c908201527f5468697320616374696f6e2063616e6e6f7420626520706572666f726d65642060408201527f7768696c652074686520636f6e74726163742069732070617573656400000000606082015260800190565b602080825260169082015275155b9cdd5c1c1bdc9d19590818dbdb1b185d195c985b60521b604082015260600190565b602080825260149082015273496e73756666696369656e742062616c616e636560601b604082015260600190565b60208082526010908201526f119c99594818995d08195e1c1a5c995960821b604082015260600190565b6000808335601e1984360301811261392857600080fd5b83016020810192503590506001600160401b0381111561394757600080fd5b803603821315612f4b57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803561ffff8116811461322757600080fd5b8035600281900b811461322757600080fd5b6020815260006139b38384613911565b6101408060208601526139cb61016086018385613956565b92506139d96020870161397f565b61ffff8116604087015291506139f16040870161397f565b61ffff811660608701529150613a0960608701613991565b9150613a1a608086018360020b9052565b613a26608087016136d9565b60ff811660a0870152915060a086013560c086015260c086013560e0860152610100915060e086013582860152613a5e82870161321c565b9150610120613a77818701846001600160a01b03169052565b613a8281880161321c565b925050613a99818601836001600160a01b03169052565b5090949350505050565b600060208284031215613ab557600080fd5b5051919050565b600060208284031215613ace57600080fd5b8151610faf8161328a565b634e487b7160e01b600052601160045260246000fd5b8082018082111561273057612730613ad9565b634e487b7160e01b600052603260045260246000fd5b600060018201613b2a57613b2a613ad9565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000808335601e19843603018112613b7f57600080fd5b83016020810192503590506001600160401b03811115613b9e57600080fd5b8060051b3603821315612f4b57600080fd5b803562ffffff8116811461322757600080fd5b81835260006001600160fb1b03831115613bdc57600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156134d65761ffff613c198361397f565b16875260ff613c298484016136d9565b16838801526040613c3b818401613991565b60020b908801526060968701969190910190600101613c05565b81835260006020808501808196508560051b810191508460005b87811015613cdc5782840389528135601e19883603018112613c9057600080fd5b870185810190356001600160401b03811115613cab57600080fd5b606081023603821315613cbd57600080fd5b613cc8868284613bf5565b9a87019a9550505090840190600101613c6f565b5091979650505050505050565b6000823561015e19833603018112613d0057600080fd5b90910192915050565b81835260006020808501808196508560051b810191508460005b87811015613cdc578284038952613d3a8288613ce9565b61016081358652613d4c87830161397f565b61ffff16878701526040613d6183820161397f565b61ffff1690870152606082810135908701526080613d808184016136d9565b60ff169087015260a0613d94838201613991565b613da28289018260020b9052565b505060c0613db1818401613bb0565b62ffffff169087015260e0613dc883820184613b68565b83838a0152613dda848a018284613bc3565b9350505050610100613dee81840184613b68565b888403838a0152613e00848284613bc3565b9350505050610120613e138184016136d9565b60ff1690870152610140613e2983820184613b68565b935087830382890152613e3d838583613c55565b9c89019c97505050928601925050600101613d23565b602081526000613e638384613b68565b60c06020850152613e7860e085018284613d09565b9150506020840135604084015260408401356060840152606084013560808401526080840135613ea781613207565b6001600160a01b0390811660a08581019190915285013590613ec882613207565b1660c0939093019290925250919050565b600060208284031215613eeb57600080fd5b8151610faf81613207565b8181038181111561273057612730613ad9565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b808202811582820484141761273057612730613ad9565b634e487b7160e01b600052604160045260246000fd5b6000610100808352613f748184018c8e613d09565b602084019a909a525050604081019690965260608601949094526001600160a01b039283166080860152911660a0840152151560c083015260ff1660e09091015292915050565b60e081526000613fcf60e083018a8c613d09565b602083019890985250604081019590955260608501939093526001600160a01b0391821660808501521660a0830152151560c09091015292915050565b634e487b7160e01b600052603160045260246000fd5b6000825160005b818110156140435760208186018101518583015201614029565b50600092019182525091905056fea2646970667358221220dd40d13a9d3a4880323a9270176f454e50985c8ecd818b024fafecfe33956eda64736f6c63430008140033