0 txs
2.7k calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
calcOdds
viewfunction calcOdds(tuple[] subBets, uint128 amount) view returns (uint64[] conditionOdds, uint256 expressOdds)
calcPayout
viewfunction calcPayout(uint256 tokenId) view returns (uint128)
checkOwner
viewfunction checkOwner(address account) view
core
viewfunction core() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getBet
viewfunction getBet(uint256 betId) view returns (tuple betInfo)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
lastBetId
viewfunction lastBetId() view returns (uint256)
lockedReserves
viewfunction lockedReserves(uint256) view returns (uint256)
lp
viewfunction lp() view returns (address)
maxOdds
viewfunction maxOdds() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
reinforcement
viewfunction reinforcement() view returns (uint128)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
viewPayout
viewfunction viewPayout(uint256 tokenId) view returns (uint128)
approve
nonpayablefunction approve(address to, uint256 tokenId)
changeMaxOdds
nonpayablefunction changeMaxOdds(uint256 newMaxOdds)
changeReinforcement
nonpayablefunction changeReinforcement(uint128 newReinforcement)
initialize
nonpayablefunction initialize(address lp_, address core_)
putBet
nonpayablefunction putBet(address bettor, uint128 amount, tuple betData) returns (uint256 betId)
resolvePayout
nonpayablefunction resolvePayout(uint256 tokenId) returns (address account, uint128 payout)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string uri)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Initialized
event Initialized(uint8 version)
MaxOddsChanged
event MaxOddsChanged(uint256 newMaxOdds)
NewBet
event NewBet(address indexed bettor, address indexed affiliate, uint256 indexed betId, (uint64 odds, uint128 amount, uint48 lastDepositId, bool isClaimed, (uint256 conditionId, uint64 outcomeId)[] subBets, uint64[] conditionOdds) bet)
NewBetMargins
event NewBetMargins(uint256 indexed betId, uint64[] margins)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReinforcementChanged
event ReinforcementChanged(uint128 newReinforcement)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
AlreadyPaid
error AlreadyPaid()
BetNotExists
error BetNotExists()
ConditionNotFinished
error ConditionNotFinished(uint256 conditionId)
ConditionNotForExpress
error ConditionNotForExpress()
ConditionNotRunning
error ConditionNotRunning(uint256 conditionId)
IncorrectMaxOdds
error IncorrectMaxOdds()
IncorrectOdds
error IncorrectOdds()
LargeOdds
error LargeOdds()
OnlyLp
error OnlyLp()
SafeCastError
error SafeCastError(uint8 to)
SameGameIdsNotAllowed
error SameGameIdsNotAllowed()
SmallOdds
error SmallOdds()
TooFewSubbets
error TooFewSubbets()
TooLargeReinforcement
error TooLargeReinforcement(uint256 conditionId)
WrongToken
error WrongToken()
creation bytecode
0x608060405234801561001057600080fd5b506145fa806100206000396000f3fe608060405234801561001057600080fd5b506004361061018b5760003560e01c806301ffc9a714610190578063061e494f146101b857806306fdde03146101d8578063081812fc146101ed578063095ea7b3146102185780630f53c0691461022d5780631047f7b81461024457806323b872dd146102575780632589867d1461026a578063313c06a01461028a57806340ff47fd1461029d57806342842e0e146102b0578063485cc955146102c357806355f804b3146102d65780635ad50d87146102e95780636352211e146102f25780636c0360eb1461030557806370a082311461030d5780638d831880146103205780638da5cb5b1461034157806395d89b4114610349578063a22cb46514610351578063a265b84d14610364578063b88d4fde14610377578063c87b56dd1461038a578063d9c92bd71461039d578063e0e3671c146103b0578063e985e9c5146103c3578063ea1d48a1146103d6578063f2f4eb26146103f6578063f2fde38b14610409578063fc8196d61461041c578063fe231afe14610456575b600080fd5b6101a361019e3660046133b8565b610469565b60405190151581526020015b60405180910390f35b6101cb6101c63660046133d5565b6104bb565b6040516101af919061343f565b6101e0610655565b6040516101af9190613558565b6102006101fb3660046133d5565b6106e7565b6040516001600160a01b0390911681526020016101af565b61022b610226366004613580565b61070e565b005b61023660d05481565b6040519081526020016101af565b61022b6102523660046133d5565b610828565b61022b6102653660046135ac565b610893565b61027d6102783660046133d5565b6108c4565b6040516101af91906135ed565b60ca54610200906001600160a01b031681565b61022b6102ab366004613616565b6108db565b61022b6102be3660046135ac565b61092f565b61022b6102d1366004613633565b61094a565b61022b6102e436600461366c565b610aef565b61023660c95481565b6102006103003660046133d5565b610b05565b6101e0610b39565b61023661031b3660046136dd565b610bc7565b61033361032e3660046136fa565b610c4d565b6040516101af92919061377f565b610200610cbe565b6101e0610ccd565b61022b61035f3660046137af565b610cdc565b61027d6103723660046133d5565b610ceb565b61022b61038536600461384c565b610d02565b6101e06103983660046133d5565b610d3a565b6102366103ab36600461390f565b610da1565b61022b6103be3660046136dd565b611267565b6101a36103d1366004613633565b6112dc565b6102366103e43660046133d5565b60ce6020526000908152604090205481565b60cb54610200906001600160a01b031681565b61022b6104173660046136dd565b61130a565b61042f61042a3660046133d5565b611381565b604080516001600160a01b0390931683526001600160801b039091166020830152016101af565b60cc5461027d906001600160801b031681565b60006001600160e01b031982166380ac58cd60e01b148061049a57506001600160e01b03198216635b5e139f60e01b145b806104b557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a0810191909152600082815260cf60209081526040808320815160c08101835281546001600160401b0381168252600160401b81046001600160801b031682860152600160c01b810465ffffffffffff1682850152600160f01b900460ff1615156060820152600182018054845181870281018701909552808552919592946080870194939192919084015b828210156105bc5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160401b0316828401529083529092019101610574565b5050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561064557602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116106025790505b5050505050815250509050919050565b6060606580546106649061396c565b80601f01602080910402602001604051908101604052809291908181526020018280546106909061396c565b80156106dd5780601f106106b2576101008083540402835291602001916106dd565b820191906000526020600020905b8154815290600101906020018083116106c057829003601f168201915b5050505050905090565b60006106f28261149f565b506000908152606960205260409020546001600160a01b031690565b600061071982610b05565b9050806001600160a01b0316836001600160a01b03160361078b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107a757506107a781336112dc565b6108195760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610782565b61082383836114c4565b505050565b61083133611267565b64e8d4a5100081101561085757604051633e1b644360e11b815260040160405180910390fd5b60d08190556040518181527f914c2861ce18f5d19d5757b3e0751a5c618dcdaec09ebdcb609ad14bd1bba257906020015b60405180910390a150565b61089d3382611532565b6108b95760405162461bcd60e51b8152600401610782906139a6565b610823838383611591565b600081815260cf602052604081206104b5906116e3565b6108e433611267565b60cc80546001600160801b0319166001600160801b0383161790556040517fecb20a84720738c48a7a94a8aa94019a0ad017b5f2bfb375238affa90b6b4334906108889083906135ed565b61082383838360405180602001604052806000815250610d02565b600054610100900460ff161580801561096a5750600054600160ff909116105b8061098b575061097930611719565b15801561098b575060005460ff166001145b6109ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610782565b6000805460ff191660011790558015610a11576000805461ff0019166101001790555b610a596040518060400160405280600a8152602001694265744578707265737360b01b8152506040518060400160405280600481526020016322ac282960e11b815250611728565b610a61611759565b60ca80546001600160a01b038086166001600160a01b03199283161790925560cb805492851692909116919091179055610aa264e8d4a510006103e8613a09565b60d0558015610823576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610af833611267565b60cd610823828483613a8b565b600080610b1183611792565b90506001600160a01b0381166104b55760405162461bcd60e51b815260040161078290613b45565b60cd8054610b469061396c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b729061396c565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b505050505081565b60006001600160a01b038216610c315760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610782565b506001600160a01b031660009081526068602052604090205490565b60606000610cad8585808060200260200160405190810160405280939291908181526020016000905b82821015610ca257610c9360408302860136819003810190613be5565b81526020019060010190610c76565b5050505050846117ad565b509399929850919650505050505050565b6097546001600160a01b031690565b6060606680546106649061396c565b610ce7338383611f58565b5050565b600081815260cf602052604081206104b590612022565b610d0c3383611532565b610d285760405162461bcd60e51b8152600401610782906139a6565b610d3484848484612316565b50505050565b6060610d458261149f565b6000610d4f612349565b90506000815111610d6f5760405180602001604052806000815250610d9a565b80610d7984612358565b604051602001610d8a929190613c01565b6040516020818303038152906040525b9392505050565b6000610dab6123ea565b6000610dba6040840184613c30565b810190610dc79190613ca0565b9050600080600080600080610ddc878b6117ad565b955095509550955095509550886020016020810190610dfb9190613d40565b6001600160401b0316851015610e2457604051631fa4bdb160e31b815260040160405180910390fd5b60d054851115610e4757604051634b4dc67360e01b815260040160405180910390fd5b60c960008154610e5690613d5d565b9182905550600081815260cf60205260409020909850610e7586612415565b81546001600160401b03919091166001600160c01b031990911617600160401b6001600160801b038d160217815560ca546040805163dd9ea29960e01b815290516001600160a01b039092169163dd9ea299916004808201926020929091908290030181865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f119190613d91565b815465ffffffffffff91909116600160c01b0265ffffffffffff60c01b199091161781558651610f4a90600283019060208a01906132de565b506000805b8951811015610ffb57826001018a8281518110610f6e57610f6e613dac565b6020908102919091018101518254600180820185556000948552938390208251600290920201908155910151910180546001600160401b0319166001600160401b039092169190911790558851899082908110610fcd57610fcd613dac565b60200260200101516001600160401b031682610fe99190613dc2565b9150610ff481613d5d565b9050610f4f565b5061100c87828e8c8c8a8a8a612446565b60008c61102a6110258a6001600160801b038416612617565b612633565b6110349190613dd5565b905060005b8a5181101561113d5760008b828151811061105657611056613dac565b6020026020010151600001519050600064e8d4a510008d516110789190613a09565b6110829086613dfc565b64e8d4a510008d858151811061109a5761109a613dac565b60200260200101516001600160401b03166110b59190613dfc565b6110c8906001600160801b038716613a09565b6110d29190613e0f565b600083815260ce60205260409020546110eb9190613dc2565b60cc549091506001600160801b031681111561111d57604051634698069560e01b815260048101839052602401610782565b600091825260ce60205260409091205561113681613d5d565b9050611039565b5060ca546001600160a01b03166396577a3360006111636001600160801b038516612660565b6040516001600160e01b031960e085901b1681526004810192909252600f0b6024820152604401600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b505050506111c68e8c612696565b8a7f8cbebc61ee8d0932febf894519a9bbea16283fe28d261bf6e5e9b18762002e20886040516111f69190613e31565b60405180910390a28a61120c60208e018e6136dd565b6001600160a01b03168f6001600160a01b03167fa6c6a2c684bc2476c9efb52a9f33bbba1e030af3c8b7a48110cce889d05e6d7b8660405161124e9190613f6b565b60405180910390a4505050505050505050509392505050565b806001600160a01b0316611279610cbe565b6001600160a01b0316146112d95760405162461bcd60e51b815260206004820152602160248201527f4f776e61626c653a206163636f756e74206973206e6f7420746865206f776e656044820152603960f91b6064820152608401610782565b50565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61131333611267565b6001600160a01b0381166113785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610782565b6112d9816126b0565b60008061138c6123ea565b600083815260cf602052604090206113a384610b05565b92506113ae816116e3565b815460ff60f01b198116600160f01b1783559092506001600160801b03600160401b820416906000906113ef906110259084906001600160401b0316612617565b60ca549091506001600160a01b0316638154f2d3600061140f8585613dd5565b6114198886613dd5565b875460405160e086901b6001600160e01b031916815260048101949094526001600160801b03928316602485015291166044830152600160c01b900465ffffffffffff166064820152608401600060405180830381600087803b15801561147f57600080fd5b505af1158015611493573d6000803e3d6000fd5b50505050505050915091565b6114a881612702565b6112d95760405162461bcd60e51b815260040161078290613b45565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906114f982610b05565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061153e83610b05565b9050806001600160a01b0316846001600160a01b03161480611565575061156581856112dc565b806115895750836001600160a01b031661157e846106e7565b6001600160a01b0316145b949350505050565b826001600160a01b03166115a482610b05565b6001600160a01b0316146115ca5760405162461bcd60e51b815260040161078290614034565b6001600160a01b03821661162c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610782565b826001600160a01b031661163f82610b05565b6001600160a01b0316146116655760405162461bcd60e51b815260040161078290614034565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184936000805160206145a583398151915291a4505050565b8054600090600160f01b900460ff161561171057604051630d70a0e360e41b815260040160405180910390fd5b6104b582612022565b6001600160a01b03163b151590565b600054610100900460ff1661174f5760405162461bcd60e51b815260040161078290614079565b610ce7828261271f565b600054610100900460ff166117805760405162461bcd60e51b815260040161078290614079565b61178861275f565b611790612786565b565b6000908152606760205260409020546001600160a01b031690565b6060600060608060608060008851905060028110156117df5760405163b70028af60e01b815260040160405180910390fd5b64e8d4a5100095506000816001600160401b03811115611801576118016137dd565b60405190808252806020026020018201604052801561182a578160200160208202803683370190505b509750816001600160401b03811115611845576118456137dd565b60405190808252806020026020018201604052801561186e578160200160208202803683370190505b509550816001600160401b03811115611889576118896137dd565b6040519080825280602002602001820160405280156118b2578160200160208202803683370190505b509450816001600160401b038111156118cd576118cd6137dd565b60405190808252806020026020018201604052801561190057816020015b60608152602001906001900390816118eb5790505b509350816001600160401b0381111561191b5761191b6137dd565b604051908082528060200260200182016040528015611944578160200160208202803683370190505b5092506000826001600160401b03811115611961576119616137dd565b60405190808252806020026020018201604052801561198a578160200160208202803683370190505b5090506000836001600160401b038111156119a7576119a76137dd565b6040519080825280602002602001820160405280156119d0578160200160208202803683370190505b50905060005b84811015611cb45760008d82815181106119f2576119f2613dac565b602090810291909101015160cb548151604051630f7e425f60e31b81529293506000926001600160a01b0390921691637bf212f891611a379160040190815260200190565b600060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7c919081019061417f565b905080610180015115611aa25760405163024481cf60e21b815260040160405180910390fd5b611ab08183600001516127b6565b805160005b84811015611b065781868281518110611ad057611ad0613dac565b602002602001015103611af6576040516312695b6b60e11b815260040160405180910390fd5b611aff81613d5d565b9050611ab5565b5080858581518110611b1a57611b1a613dac565b60209081029190910181019190915260cb548451918501516040516319cc2be160e11b8152600094506001600160a01b039092169263339857c292611b6292906004016142d5565b602060405180830381865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906142ec565b90506000611bbf8360400151600085610120015160ff166128a3565b8281518110611bd057611bd0613dac565b60200260200101519050611bed818f61261790919063ffffffff16565b9d50611bf98189613dc2565b9750818c8681518110611c0e57611c0e613dac565b60200260200101818152505082604001518b8681518110611c3157611c31613dac565b60200260200101819052508260c00151878681518110611c5357611c53613dac565b60200260200101906001600160401b031690816001600160401b0316815250508261012001518a8681518110611c8b57611c8b613dac565b602002602001019060ff16908160ff16815250505050505080611cad90613d5d565b90506119d6565b5060009050611d02611ccb64e8d4a5100086613a09565b611cd59085613dfc565b6001600160801b038d16611cee64e8d4a510008d613dfc565b611cf89190613a09565b6110259190613e0f565b905064e8d4a51000985060005b84811015611f49576000888281518110611d2b57611d2b613dac565b6020026020010151905082888381518110611d4857611d48613dac565b60200260200101518281518110611d6157611d61613dac565b60200260200101818151611d759190614305565b6001600160801b03169052508751600090611de9908a9085908110611d9c57611d9c613dac565b6020026020010151868581518110611db657611db6613dac565b60200260200101516001600160401b03168a8681518110611dd957611dd9613dac565b602002602001015160ff166128a3565b8281518110611dfa57611dfa613dac565b6020026020010151905083898481518110611e1757611e17613dac565b60200260200101518381518110611e3057611e30613dac565b60200260200101818151611e449190613dd5565b6001600160801b03169052508851600090611e87908b9086908110611e6b57611e6b613dac565b602002602001015160008b8781518110611dd957611dd9613dac565b8381518110611e9857611e98613dac565b60200260200101519050611eb58183612af990919063ffffffff16565b611ec49064e8d4a51000613dfc565b8c8581518110611ed657611ed6613dac565b60200260200101906001600160401b031690816001600160401b031681525050611eff82612415565b8e8581518110611f1157611f11613dac565b6001600160401b0390921660209283029190910190910152611f338d83612617565b9c5050505080611f4290613d5d565b9050611d0f565b50505050509295509295509295565b816001600160a01b0316836001600160a01b031603611fb55760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610782565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b8054600182018054600092600160401b90046001600160801b0316919064e8d4a510008185036120655760405163f67321e560e01b815260040160405180910390fd5b60005b828110156122de57600084828154811061208457612084613dac565b60009182526020822060cb546002909202018054604051630f7e425f60e31b81529194506001600160a01b0390921691637bf212f8916120cb919060040190815260200190565b600060405180830381865afa1580156120e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612110919081019061417f565b90506001816101400151600381111561212b5761212b614325565b036122135760cb5482546001840154604051631ec956b360e01b81526001600160a01b0390931692631ec956b3926121739290916001600160401b03909116906004016142d5565b602060405180830381865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b4919061433b565b15612204576121fd8960020184815481106121d1576121d1613dac565b6000918252602090912060048204015486916003166008026101000a90046001600160401b0316612617565b93506122cb565b50600098975050505050505050565b6002816101400151600381111561222c5761222c614325565b14806122a8575060ca548151604051630e2ca81f60e41b81526001600160a01b039092169163e2ca81f0916122679160040190815260200190565b602060405180830381865afa158015612284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a8919061433b565b6122cb57815460405163205ba8b560e21b81526004810191909152602401610782565b5050806122d790613d5d565b9050612068565b5064e8d4a5100081111561230c576123026110256001600160801b03861683612617565b9695505050505050565b5091949350505050565b612321848484611591565b61232d84848484612b0b565b610d345760405162461bcd60e51b815260040161078290614358565b606060cd80546106649061396c565b6060600061236583612c13565b60010190506000816001600160401b03811115612384576123846137dd565b6040519080825280601f01601f1916602001820160405280156123ae576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846123b857509392505050565b60ca546001600160a01b031633146117905760405163dad84f8f60e01b815260040160405180910390fd5b60006001600160401b03821115612442576002604051639b3137df60e01b815260040161078291906143aa565b5090565b8451600061245964e8d4a5100083613a09565b612463908a613dfc565b905060006124708b612ce9565b905060005b838110156126095760006124c564e8d4a510008a848151811061249a5761249a613dac565b60200260200101516001600160401b03166124b59190613dfc565b6001600160801b038d1690612617565b90506124d584611cf88584613a09565b8783815181106124e7576124e7613dac565b602002602001015189848151811061250157612501613dac565b60200260200101518151811061251957612519613dac565b6020026020010181815161252d9190614305565b6001600160801b031690525086516000906125709089908590811061255457612554613dac565b60200260200101516000898681518110611dd957611dd9613dac565b60cb548c519192506001600160a01b0316906390fb4d48908d908690811061259a5761259a613dac565b602002602001015160000151836040518363ffffffff1660e01b81526004016125c49291906143d2565b600060405180830381600087803b1580156125de57600080fd5b505af11580156125f2573d6000803e3d6000fd5b5050505050508061260290613d5d565b9050612475565b505050505050505050505050565b600064e8d4a510006126298385613a09565b610d9a9190613e0f565b60006001600160801b03821115612442576003604051639b3137df60e01b815260040161078291906143aa565b600060016001607f1b036001600160801b0383161115612442576001604051639b3137df60e01b815260040161078291906143aa565b610ce7828260405180602001604052806000815250612d1a565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008061270e83611792565b6001600160a01b0316141592915050565b600054610100900460ff166127465760405162461bcd60e51b815260040161078290614079565b60656127528382614420565b5060666108238282614420565b600054610100900460ff166117905760405162461bcd60e51b815260040161078290614079565b600054610100900460ff166127ad5760405162461bcd60e51b815260040161078290614079565b611790336126b0565b600082610140015160038111156127cf576127cf614325565b146127f057604051630764021f60e51b815260048101829052602401610782565b60ca54825160405163047e1d5560e41b815260009283926001600160a01b03909116916347e1d550916128299160040190815260200190565b6040805180830381865afa158015612845573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286991906144d9565b9150915080806128825750816001600160401b03164210155b15610d3457604051630764021f60e51b815260048101849052602401610782565b606060006128b085612d4d565b85519091508415612983576000816001600160401b038111156128d5576128d56137dd565b6040519080825280602002602001820160405280156128fe578160200160208202803683370190505b50905060005b8281101561296f5761294288828151811061292157612921613dac565b60200260200101516001600160801b0316856001600160801b031688612d9a565b82828151811061295457612954613dac565b602090810291909101015261296881613d5d565b9050612904565b5061297b818787612de5565b935050612a6d565b806001600160401b0381111561299b5761299b6137dd565b6040519080825280602002602001820160405280156129c4578160200160208202803683370190505b50925060005b81811015612a6b576000612a15868984815181106129ea576129ea613dac565b60200260200101516001600160801b0316612a059190613a09565b6001600160801b03861690612af9565b905064e8d4a510008111612a3c5760405163efa4039360e01b815260040160405180910390fd5b80858381518110612a4f57612a4f613dac565b602090810291909101015250612a6481613d5d565b90506129ca565b505b60005b81811015612aef576000848281518110612a8c57612a8c613dac565b6020026020010151905064e8d4a510006064612aa89190613a09565b811115612ade57612abf64e8d4a510006064613a09565b858381518110612ad157612ad1613dac565b6020026020010181815250505b50612ae881613d5d565b9050612a70565b5050509392505050565b60008161262964e8d4a5100085613a09565b6000612b1f846001600160a01b0316611719565b15612c0857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b56903390899088908890600401614508565b6020604051808303816000875af1925050508015612b91575060408051601f3d908101601f19168201909252612b8e9181019061453b565b60015b612bee573d808015612bbf576040519150601f19603f3d011682016040523d82523d6000602084013e612bc4565b606091505b508051600003612be65760405162461bcd60e51b815260040161078290614358565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611589565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612c525772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310612c7c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310612c9a57662386f26fc10000830492506010015b6305f5e1008310612cb2576305f5e100830492506008015b6127108310612cc657612710830492506004015b60648310612cd8576064830492506002015b600a83106104b55760010192915050565b60006104b564e8d4a5100083612cff8180612617565b612d099190613dfc565b612d139190613dc2565b8390612af9565b612d248383613197565b612d316000848484612b0b565b6108235760405162461bcd60e51b815260040161078290614358565b8051600090815b81811015612d9357838181518110612d6e57612d6e613dac565b602002602001015183612d819190614305565b9250612d8c81613d5d565b9050612d54565b5050919050565b6000612db083612daa8487613a09565b90612af9565b90506103e8811080612dc7575064e8d4a510008110155b15610d9a5760405163efa4039360e01b815260040160405180910390fd5b8251606090806001600160401b03811115612e0257612e026137dd565b604051908082528060200260200182016040528015612e2b578160200160208202803683370190505b5091506000816001600160401b03811115612e4857612e486137dd565b604051908082528060200260200182016040528015612e71578160200160208202803683370190505b50905060005b82811015612ee057612eb386888381518110612e9557612e95613dac565b602002602001015164e8d4a51000612ead9190613dfc565b90612617565b828281518110612ec557612ec5613dac565b6020908102919091010152612ed981613d5d565b9050612e77565b5084600080612ef464e8d4a5100088613a09565b90505b601982101561317b5760008060005b87811015612fa4576000612f578d8381518110612f2557612f25613dac565b6020026020010151898481518110612f3f57612f3f613dac565b602002602001015164e8d4a51000612daa9190613dfc565b9050808a8381518110612f6c57612f6c613dac565b6020908102919091010152612f8664e8d4a5100082612af9565b612f909084613dc2565b92505080612f9d90613d5d565b9050612f06565b50612faf8382612af9565b612fbe9064e8d4a51000613dfc565b9150506298968064e8d4a51000612fd58b84613292565b612fdf9190613dfc565b1015612feb575061317b565b808911612ffa57612ffa614558565b6000613006828b613dfc565b905084810361304257633b9aca0064e8d4a510006130248c85612af9565b61302e9190613dfc565b1061303b5761303b614558565b505061317b565b80945060005b878110156131675761312e6130e0846130d16130698f64e8d4a51000613dfc565b612daa61309d8f888151811061308157613081613dac565b602002602001015164e8d4a51000612af990919063ffffffff16565b6130ac9064e8d4a51000613dfc565b8d88815181106130be576130be613dac565b60200260200101518d612daa9190613a09565b6130db9190613e0f565b6132b4565b8d83815181106130f2576130f2613dac565b602002602001015189848151811061310c5761310c613dac565b602002602001015164e8d4a510006131249190613dfc565b612ead9190613dfc565b87828151811061314057613140613dac565b602002602001018181516131549190613dc2565b90525061316081613d5d565b9050613048565b5050508161317490613d5d565b9150612ef7565b6019821061318b5761318b614558565b50505050509392505050565b6001600160a01b0382166131ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610782565b6131f681612702565b156132135760405162461bcd60e51b81526004016107829061456e565b61321c81612702565b156132395760405162461bcd60e51b81526004016107829061456e565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291906000805160206145a5833981519152908290a45050565b60008183116132aa576132a58284612af9565b610d9a565b610d9a8383612af9565b60006132c564e8d4a5100083613dc2565b6132d464e8d4a5100084613a09565b6104b59190613e0f565b828054828255906000526020600020906003016004900481019282156133865791602002820160005b8382111561335157835183826101000a8154816001600160401b0302191690836001600160401b031602179055509260200192600801602081600701049283019260010302613307565b80156133845782816101000a8154906001600160401b030219169055600801602081600701049283019260010302613351565b505b506124429291505b80821115612442576000815560010161338e565b6001600160e01b0319811681146112d957600080fd5b6000602082840312156133ca57600080fd5b8135610d9a816133a2565b6000602082840312156133e757600080fd5b5035919050565b6001600160401b03169052565b600081518084526020808501945080840160005b838110156134345781516001600160401b03168752958201959082019060010161340f565b509495945050505050565b602080825282516001600160401b0390811683830152838201516001600160801b03166040808501919091528481015165ffffffffffff16606080860191909152850151151560808086019190915285015160c060a0860152805160e08601819052600094939184019285916101008801905b808410156134dd578551805183528701518516878301529486019460019390930192908201906134b2565b5060a0890151888203601f190160c08a015295506134fb81876133fb565b9998505050505050505050565b60005b8381101561352357818101518382015260200161350b565b50506000910152565b60008151808452613544816020860160208601613508565b601f01601f19169290920160200192915050565b602081526000610d9a602083018461352c565b6001600160a01b03811681146112d957600080fd5b6000806040838503121561359357600080fd5b823561359e8161356b565b946020939093013593505050565b6000806000606084860312156135c157600080fd5b83356135cc8161356b565b925060208401356135dc8161356b565b929592945050506040919091013590565b6001600160801b0391909116815260200190565b6001600160801b03811681146112d957600080fd5b60006020828403121561362857600080fd5b8135610d9a81613601565b6000806040838503121561364657600080fd5b82356136518161356b565b915060208301356136618161356b565b809150509250929050565b6000806020838503121561367f57600080fd5b82356001600160401b038082111561369657600080fd5b818501915085601f8301126136aa57600080fd5b8135818111156136b957600080fd5b8660208285010111156136cb57600080fd5b60209290920196919550909350505050565b6000602082840312156136ef57600080fd5b8135610d9a8161356b565b60008060006040848603121561370f57600080fd5b83356001600160401b038082111561372657600080fd5b818601915086601f83011261373a57600080fd5b81358181111561374957600080fd5b8760208260061b850101111561375e57600080fd5b6020928301955093505084013561377481613601565b809150509250925092565b60408152600061379260408301856133fb565b90508260208301529392505050565b80151581146112d957600080fd5b600080604083850312156137c257600080fd5b82356137cd8161356b565b91506020830135613661816137a1565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715613816576138166137dd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613844576138446137dd565b604052919050565b6000806000806080858703121561386257600080fd5b843561386d8161356b565b935060208581013561387e8161356b565b93506040860135925060608601356001600160401b03808211156138a157600080fd5b818801915088601f8301126138b557600080fd5b8135818111156138c7576138c76137dd565b6138d9601f8201601f1916850161381c565b915080825289848285010111156138ef57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060006060848603121561392457600080fd5b833561392f8161356b565b9250602084013561393f81613601565b915060408401356001600160401b0381111561395a57600080fd5b84016060818703121561377457600080fd5b600181811c9082168061398057607f821691505b6020821081036139a057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613a2357613a236139f3565b500290565b601f82111561082357600081815260208120601f850160051c81016020861015613a4f5750805b601f850160051c820191505b81811015613a6e57828155600101613a5b565b505050505050565b600019600383901b1c191660019190911b1790565b6001600160401b03831115613aa257613aa26137dd565b613ab683613ab0835461396c565b83613a28565b6000601f841160018114613ae45760008515613ad25750838201355b613adc8682613a76565b845550613b3e565b600083815260209020601f19861690835b82811015613b155786850135825560209485019460019092019101613af5565b5086821015613b325760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6001600160401b03811681146112d957600080fd5b600060408284031215613b9e57600080fd5b604080519081016001600160401b0381118282101715613bc057613bc06137dd565b604052823581529050806020830135613bd881613b77565b6020919091015292915050565b600060408284031215613bf757600080fd5b610d9a8383613b8c565b60008351613c13818460208801613508565b835190830190613c27818360208801613508565b01949350505050565b6000808335601e19843603018112613c4757600080fd5b8301803591506001600160401b03821115613c6157600080fd5b602001915036819003821315613c7657600080fd5b9250929050565b60006001600160401b03821115613c9657613c966137dd565b5060051b60200190565b60006020808385031215613cb357600080fd5b82356001600160401b03811115613cc957600080fd5b8301601f81018513613cda57600080fd5b8035613ced613ce882613c7d565b61381c565b81815260069190911b82018301908381019087831115613d0c57600080fd5b928401925b82841015613d3557613d238885613b8c565b82528482019150604084019350613d11565b979650505050505050565b600060208284031215613d5257600080fd5b8135610d9a81613b77565b600060018201613d6f57613d6f6139f3565b5060010190565b805165ffffffffffff81168114613d8c57600080fd5b919050565b600060208284031215613da357600080fd5b610d9a82613d76565b634e487b7160e01b600052603260045260246000fd5b808201808211156104b5576104b56139f3565b6001600160801b03828116828216039080821115613df557613df56139f3565b5092915050565b818103818111156104b5576104b56139f3565b600082613e2c57634e487b7160e01b600052601260045260246000fd5b500490565b602081526000610d9a60208301846133fb565b805480835260008281526020808220940193909190825b82600382011015613ec85781546001600160401b03613e7c888284166133ee565b6040613e8f60208a018385841c166133ee565b6080613ea1828b018486841c166133ee565b613eb160608b018560c01c6133ee565b989098019750505060019190910190600401613e5b565b90549082811015613ef157613ee6866001600160401b0384166133ee565b602095909501946001015b82811015613f1b57613f1086604084901c6001600160401b03166133ee565b602095909501946001015b82811015613f4557613f3a86608084901c6001600160401b03166133ee565b602095909501946001015b82811015613f6157613f5a868360c01c6133ee565b6020860195505b5093949350505050565b602080825282546001600160401b0380821684840152604082811c6001600160801b03168186015260c083811c65ffffffffffff16606087015260f09390931c60ff161515608086015260a08501929092526001808601805460e0870181905260009182528582209195949193919086906101008901905b8083101561400c5786548252858701548516888301526002909601959185019190830190613fe3565b50888103601f190160c08a01526140268160028c01613e44565b9a9950505050505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8051613d8c81613601565b600082601f8301126140e057600080fd5b815160206140f0613ce883613c7d565b82815260059290921b8401810191818101908684111561410f57600080fd5b8286015b8481101561413357805161412681613601565b8352918301918301614113565b509695505050505050565b8051613d8c81613b77565b805160ff81168114613d8c57600080fd5b805160048110613d8c57600080fd5b8051613d8c8161356b565b8051613d8c816137a1565b60006020828403121561419157600080fd5b81516001600160401b03808211156141a857600080fd5b908301906101a082860312156141bd57600080fd5b6141c56137f3565b825181526020830151828111156141db57600080fd5b6141e7878286016140cf565b6020830152506040830151828111156141ff57600080fd5b61420b878286016140cf565b60408301525061421d606084016140c4565b606082015261422e608084016140c4565b608082015261423f60a084016140c4565b60a082015261425060c0840161413e565b60c082015261426160e0840161413e565b60e08201526101009150614276828401613d76565b82820152610120915061428a828401614149565b82820152610140915061429e82840161415a565b8282015261016091506142b2828401614169565b8282015261018091506142c6828401614174565b91810191909152949350505050565b9182526001600160401b0316602082015260400190565b6000602082840312156142fe57600080fd5b5051919050565b6001600160801b03818116838216019080821115613df557613df56139f3565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561434d57600080fd5b8151610d9a816137a1565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208101600483106143cc57634e487b7160e01b600052602160045260246000fd5b91905290565b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015614413578451835293830193918301916001016143f7565b5090979650505050505050565b81516001600160401b03811115614439576144396137dd565b61444d81614447845461396c565b84613a28565b602080601f83116001811461447c576000841561446a5750858301515b6144748582613a76565b865550613a6e565b600085815260208120601f198616915b828110156144ab5788860151825594840194600190910190840161448c565b50858210156144c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080604083850312156144ec57600080fd5b82516144f781613b77565b6020840151909250613661816137a1565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123029083018461352c565b60006020828403121561454d57600080fd5b8151610d9a816133a2565b634e487b7160e01b600052600160045260246000fd5b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60408201526060019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d077611391cf430c50681e5e53353a71d8ee7faba9362a331522a6c6173e611064736f6c63430008100033