38 txs
39 calls
constructor
constructor()
functions
currentGameId
viewfunction currentGameId() view returns (bytes32)
decodeData
viewfunction decodeData() view returns (tuple data)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositAmount
viewfunction depositAmount() view returns (uint256)
exactRange
viewfunction exactRange() view returns (uint256)
fee
viewfunction fee() view returns (uint256)
GAME_MASTER_ROLE
viewfunction GAME_MASTER_ROLE() view returns (bytes32)
getRateIndex
purefunction getRateIndex(uint256 playersCount, bool isExact) pure returns (uint256 index)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTotalPlayers
viewfunction getTotalPlayers() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isParticipating
viewfunction isParticipating(address) view returns (bool)
maxPlayers
viewfunction maxPlayers() view returns (uint256)
playerGuessData
viewfunction playerGuessData(uint256) view returns (address player, uint256 assetPrice, uint256 timestamp, uint256 rakeback)
rates
viewfunction rates(uint256, uint256) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalRakeback
viewfunction totalRakeback() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
closeGame
nonpayablefunction closeGame()
finalizeGame
nonpayablefunction finalizeGame(bytes unverifiedReport)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
play
nonpayablefunction play(uint256 assetPrice)
playWithDeposit
nonpayablefunction playWithDeposit(uint256 assetPrice)
playWithPermit
nonpayablefunction playWithPermit(uint256 assetPrice, tuple permitData)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setExactRange
nonpayablefunction setExactRange(uint256 newRange)
setFee
nonpayablefunction setFee(uint256 newFee)
setMaxPlayers
nonpayablefunction setMaxPlayers(uint256 newMax)
setRate
nonpayablefunction setRate(uint256[3] rate, uint256 playersCount, bool isExact)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
startGame
nonpayablefunction startGame(uint32 endTime, uint32 stopPredictAt, uint256 newDepositAmount, uint8 feedNumber, address token, uint8 precision, bool isMultiParticipation)
events
BullseyeCancelled
event BullseyeCancelled(bytes32 gameId)
BullseyeFinalized
event BullseyeFinalized(address[3] players, uint256[3] topIndexes, int192 finalPrice, bool isExact, bytes32 gameId)
BullseyeNewPlayer
event BullseyeNewPlayer(address player, uint256 assetPrice, uint256 depositAmount, bytes32 gameId, uint256 index, uint256 rakeback)
BullseyeStart
event BullseyeStart(uint256 startTime, uint32 stopPredictAt, uint32 endTime, uint256 depositAmount, uint8 feedNumber, address token, bytes32 gameId)
NewBullseyeRates
event NewBullseyeRates(uint256[3] rate, uint256 playersCount, bool isExact)
NewExactRange
event NewExactRange(uint256 newExactRange)
NewFee
event NewFee(uint256 newFee)
NewMaxPlayers
event NewMaxPlayers(uint256 newMax)
NewTreasury
event NewTreasury(address newTreasury)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
creation bytecode
0x674563918244f400006001556103e86002819055606460035561271061012090815260006101408190526101608190526080918252611d4c6101808181526109c46101a0526101c083905260a0526123286101e09081526102008590526102209290925260c091909152611388610240908152610dac610260526105dc61028081905260e0919091526103006040526102a09182526102c0526102e09290925261010091909152620000b690600490600562000188565b50348015620000c457600080fd5b50620000d2600033620000d9565b5062000259565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166200017e576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001353390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000182565b5060005b92915050565b600f83019183908215620001c8579160200282015b82811115620001c8578251620001b79083906003620001da565b50916020019190600301906200019d565b50620001d69291506200021f565b5090565b826003810192821562000211579160200282015b8281111562000211578251829061ffff16905591602001919060010190620001ee565b50620001d692915062000242565b80821115620001d65760008082556001820181905560028201556003016200021f565b5b80821115620001d6576000815560010162000243565b61305e80620002696000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806369fe0e2d1161010f578063b2c5c876116100a2578063ddca3f4311610071578063ddca3f431461046b578063f0f4426014610474578063f4caee8814610487578063fd979b11146104aa57600080fd5b8063b2c5c876146103ed578063be2779b1146103f6578063ce07b07514610409578063d547741f1461045857600080fd5b8063a217fddf116100de578063a217fddf146103aa578063ab544e86146103b2578063acebb280146103c5578063ad1def1e146103d857600080fd5b806369fe0e2d146103695780636d270b791461037c578063786b844b1461038f57806391d148541461039757600080fd5b80633d7c3f7e11610187578063536a3ddc11610156578063536a3ddc1461030f57806359b31abf1461031857806361d027b31461032b5780636898f82b1461035657600080fd5b80633d7c3f7e146102ec578063419759f5146102f55780634529cae7146102fe5780634c2412a21461030657600080fd5b8063268c418b116101c3578063268c418b14610276578063288dee3b146102b35780632f2ff15d146102c657806336568abe146102d957600080fd5b806301ffc9a7146101f557806305fe36a91461021d5780630f94aa0614610232578063248a9ca314610253575b600080fd5b6102086102033660046127ca565b6104bd565b60405190151581526020015b60405180910390f35b61023061022b3660046127fb565b6104f4565b005b610245610240366004612829565b610807565b604051908152602001610214565b6102456102613660046127fb565b60009081526020819052604090206001015490565b6102896102843660046127fb565b610853565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610214565b6102306102c13660046127fb565b610897565b6102306102d436600461286a565b6108df565b6102306102e736600461286a565b61090a565b61024560185481565b61024560175481565b601354610245565b61024560035481565b61024560195481565b61024561032636600461289a565b610942565b601a5461033e906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b6102306103643660046127fb565b61096d565b6102306103773660046127fb565b610ab4565b61023061038a3660046128df565b610b3c565b610230610fc5565b6102086103a536600461286a565b61117b565b610245600081565b6102306103c03660046127fb565b6111a4565b6102306103d336600461297a565b6111e4565b61024560008051602061300983398151915281565b61024560015481565b610230610404366004612a2b565b6120ab565b610411612402565b6040516102149190600060a08201905060ff835116825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b61023061046636600461286a565b612490565b61024560025481565b610230610482366004612a63565b6124b5565b610208610495366004612a63565b60166020526000908152604090205460ff1681565b6102306104b8366004612a80565b612553565b60006001600160e01b03198216637965db0b60e01b14806104ee57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006104fe612402565b60155490915060ff16156105455760155461051d9060ff16600a612d0d565b60155461052e9060ff16600a612d0d565b6105389084612d1c565b6105429190612d3e565b91505b80608001516105a2573360009081526016602052604090205460ff16156105875760405162461bcd60e51b815260040161057e90612d55565b60405180910390fd5b336000908152601660205260409020805460ff191660011790555b6003546013546105b3906001612d84565b11156105d15760405162461bcd60e51b815260040161057e90612d97565b42816060015110156105f55760405162461bcd60e51b815260040161057e90612dce565b601a546017546013546019546040516317acb94360e11b81526004810193909352336024840152604483019190915260648201526000916001600160a01b031690632f597286906084015b6020604051808303816000875af115801561065f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106839190612e05565b6040805160808101825233815260208101868152429282019283526060820184815260138054600181018255600091825293517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600490950294850180546001600160a01b0319166001600160a01b0390921691909117905591517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09184015592517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09283015591517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09390910155601880549293508392909190610786908490612d84565b90915550506017546019546013547ffe0cc5fef412e95e7f14c3d9139114031680054e22ea3af65f1974c042255d1092339287926107c690600190612e1e565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0810183905260c00160405180910390a1505050565b600060058311610819575060006104ee565b600a831161083a578161082d576001610830565b60025b60ff1690506104ee565b81610846576003610849565b60045b60ff169392505050565b6013818154811061086357600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60006108a2816125c1565b60038290556040518281527f3ea9e9d19ca2ee4b79642f3955efd4317eeca6308b8999a86b43ca083cea9141906020015b60405180910390a15050565b6000828152602081905260409020600101546108fa816125c1565b61090483836125ce565b50505050565b6001600160a01b03811633146109335760405163334bd91960e11b815260040160405180910390fd5b61093d8282612660565b505050565b6004826005811061095257600080fd5b60030201816003811061096457600080fd5b01549150829050565b6000610977612402565b60155490915060ff16156109be576015546109969060ff16600a612d0d565b6015546109a79060ff16600a612d0d565b6109b19084612d1c565b6109bb9190612d3e565b91505b8060800151610a12573360009081526016602052604090205460ff16156109f75760405162461bcd60e51b815260040161057e90612d55565b336000908152601660205260409020805460ff191660011790555b600354601354610a23906001612d84565b1115610a415760405162461bcd60e51b815260040161057e90612d97565b4281606001511015610a655760405162461bcd60e51b815260040161057e90612dce565b601a54601754601954601354604051633a6f4ebd60e21b81526004810193909352336024840152604483019190915260648201526000916001600160a01b03169063e9bd3af490608401610640565b6000610abf816125c1565b610bb8821115610b075760405162461bcd60e51b815260206004820152601360248201527204665652065786365656473207468652063617606c1b604482015260640161057e565b60028290556040518281527f63fe946ed58429ac3c5e64d4356ff92c26d7fa1e73586515df8ba9f059ab54a5906020016108d3565b600080516020613009833981519152610b54816125c1565b60145415610ba45760405162461bcd60e51b815260206004820152601a60248201527f46696e6973682070726576696f75732067616d65206669727374000000000000604482015260640161057e565b601e610bb64263ffffffff8a16612e1e565b1015610bf65760405162461bcd60e51b815260206004820152600f60248201526e57726f6e672073746f702074696d6560881b604482015260640161057e565b601e610c02888a612e31565b63ffffffff161015610c565760405162461bcd60e51b815260206004820152601c60248201527f54696d656672616d6520676170206d7573742062652068696768657200000000604482015260640161057e565b601a5460405163722ec76f60e01b81526001600160a01b0386811660048301529091169063722ec76f906024016020604051808303816000875af1158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190612e05565b861015610d155760405162461bcd60e51b815260206004820152601860248201527f57726f6e67206d696e206465706f73697420616d6f756e740000000000000000604482015260640161057e565b601a546040805163167a382560e11b815290516000926001600160a01b031691632cf4704a9160048083019260209291908290030181865afa158015610d5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d839190612e55565b60405163ae82b5c960e01b815260ff881660048201526001600160a01b03919091169063ae82b5c990602401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df09190612e05565b03610e315760405162461bcd60e51b81526020600482015260116024820152702bb937b733903332b2b210373ab6b132b960791b604482015260640161057e565b6015805460ff191660ff8516179055606882610e4e576000610e51565b60015b60ff16901b60608660ff16901b60408a63ffffffff16901b60208a63ffffffff16901b4217171717601481905550874230604051602001610ec69392919060e09390931b6001600160e01b0319168352600483019190915260601b6bffffffffffffffffffffffff1916602482015260380190565b60408051808303601f1901815290829052805160209091012060198190556017889055601a5463039279d760e61b835260048301919091526001600160a01b038681166024840152169063e49e75c090604401600060405180830381600087803b158015610f3357600080fd5b505af1158015610f47573d6000803e3d6000fd5b50506019546040805142815263ffffffff8c811660208301528d1681830152606081018b905260ff8a1660808201526001600160a01b03891660a082015260c0810192909252517fe7043616418a598a809fa34b0cfd90a4b4123e2004b5be968024fba991c8b58493509081900360e0019150a15050505050505050565b600080516020613009833981519152610fdd816125c1565b6014546000036110225760405162461bcd60e51b815260206004820152601060248201526f11d85b59481b9bdd081cdd185c9d195960821b604482015260640161057e565b60175460005b60135481101561111e5760006013828154811061104757611047612e72565b600091825260209182902060408051608081018252600493840290920180546001600160a01b039081168085526001830154968501969096526002820154848401526003909101546060840152601a546019549251637da3c4eb60e11b8152939650169363fb4789d6936110df938993918991019384526001600160a01b039290921660208401526040830152606082015260800190565b600060405180830381600087803b1580156110f957600080fd5b505af115801561110d573d6000803e3d6000fd5b505060019093019250611028915050565b507f712d82a27e9cc8c6f2ecbecd5a732cf15b6b16e38f3b65af9904d0aeba00d81860195460405161115291815260200190565b60405180910390a1600060188190556014819055601981905561117790601390612704565b5050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60006111af816125c1565b60018290556040518281527ff2350a85c47cad6c064e0f0fd6bcdddd758a3e3c997106ccb9479e2669d67b6f906020016108d3565b6000805160206130098339815191526111fc816125c1565b6000611206612402565b60195490915061124f5760405162461bcd60e51b815260206004820152601460248201527314dd185c9d081d1a194819d85b5948199a5c9cdd60621b604482015260640161057e565b80604001514210156112995760405162461bcd60e51b81526020600482015260136024820152720a8dede40cac2e4d8f240e8de40ccd2dcd2e6d606b1b604482015260640161057e565b601354600211156113dc577f712d82a27e9cc8c6f2ecbecd5a732cf15b6b16e38f3b65af9904d0aeba00d8186019546040516112d791815260200190565b60405180910390a16013546001036113c857600060136000815481106112ff576112ff612e72565b600091825260209182902060408051608081018252600493840290920180546001600160a01b039081168085526001830154968501969096526002820154848401526003909101546060840152601a546017546019549351630506a2ab60e11b815295860152602485019590955260448401919091529093509190911690630a0d455690606401600060405180830381600087803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b50505050601360006113c69190612704565b505b506000601881905560148190556019555050565b601a546040805163167a382560e11b815290516000926001600160a01b031691632cf4704a9160048083019260209291908290030181865afa158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a9190612e55565b825160405163d369dc6160e01b815291925060009182916001600160a01b0385169163d369dc6191611481918a9190600401612e88565b60408051808303816000875af115801561149f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c39190612ee0565b91509150603c84604001518263ffffffff166114df9190612e1e565b11156115245760405162461bcd60e51b815260206004820152601460248201527313db190818da185a5b9b1a5b9ac81c995c1bdc9d60621b604482015260640161057e565b61152c612725565b611534612725565b61153c612725565b611544612725565b6000604051806060016040528060001981526020016000198152602001600019815250905060005b601354811015611a4a5760006013828154811061158b5761158b612e72565b6000918252602080832060408051608081018252600490940290910180546001600160a01b0316845260018101549284019290925260028201549083015260030154606082015260155490925060ff161561165f576015546115f09060ff168b612f15565b6001600160c01b03168260200151116116305760208201516015546116189060ff168c612f15565b6001600160c01b031661162b9190612e1e565b611658565b6015546116409060ff168b612f15565b6001600160c01b031682602001516116589190612e1e565b90506116ac565b896001600160c01b031682602001511161169057602082015161168b906001600160c01b038c16612e1e565b6116a9565b896001600160c01b031682602001516116a99190612e1e565b90505b60005b6003811015611a3f578481600381106116ca576116ca612e72565b60200201518210156118765760025b818111156117e157856116ed600183612e1e565b600381106116fd576116fd612e72565b602002015186826003811061171457611714612e72565b602002015288611725600183612e1e565b6003811061173557611735612e72565b602002015189826003811061174c5761174c612e72565b6001600160a01b0390921660209290920201528961176b600183612e1e565b6003811061177b5761177b612e72565b60200201518a826003811061179257611792612e72565b6020020152866117a3600183612e1e565b600381106117b3576117b3612e72565b60200201518782600381106117ca576117ca612e72565b6020020152806117d981612f2d565b9150506116d9565b50818582600381106117f5576117f5612e72565b6020020152825188826003811061180e5761180e612e72565b6001600160a01b039092166020929092020152604083015187826003811061183857611838612e72565b60200201528389826003811061185057611850612e72565b6020020152606083015186826003811061186c5761186c612e72565b6020020152611a3f565b84816003811061188857611888612e72565b6020020151821480156118b457508681600381106118a8576118a8612e72565b60200201518360400151105b15611a375760025b818111156119c457856118d0600183612e1e565b600381106118e0576118e0612e72565b60200201518682600381106118f7576118f7612e72565b602002015288611908600183612e1e565b6003811061191857611918612e72565b602002015189826003811061192f5761192f612e72565b6001600160a01b0390921660209290920201528961194e600183612e1e565b6003811061195e5761195e612e72565b60200201518a826003811061197557611975612e72565b602002015286611986600183612e1e565b6003811061199657611996612e72565b60200201518782600381106119ad576119ad612e72565b6020020152806119bc81612f2d565b9150506118bc565b50838982600381106119d8576119d8612e72565b602002015282518882600381106119f1576119f1612e72565b6001600160a01b0390921660209290920201526060830151868260038110611a1b57611a1b612e72565b6020020152604083015187826003811061186c5761186c612e72565b6001016116af565b50505060010161156c565b50601354601754600091611a5d91612d3e565b9050611a67612725565b601354600510611b4557601a546017546001600160a01b039091169063f70a686e90611a939085612e1e565b6002546019546040516001600160e01b031960e086901b1681526004810193909352602483019190915260448201526064016020604051808303816000875af1158015611ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b089190612e05565b50600460005b60408051606081019182905292600392830201919082845b815481526020019060010190808311611b265750505050509050611d24565b601354600a10611c3d57601a546017546001600160a01b039091169063f70a686e90611b72906002612d3e565b611b7c9085612e1e565b6002546019546040516001600160e01b031960e086901b1681526004810193909352602483019190915260448201526064016020604051808303816000875af1158015611bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf19190612e05565b5060015483511115611c04576007611c0d565b60046002611b0e565b6040805160608101918290528254815291906003906001830160208501808311611b265750505050509050611d24565b601a546017546001600160a01b039091169063f70a686e90611c60906003612d3e565b611c6a9085612e1e565b6002546019546040516001600160e01b031960e086901b1681526004810193909352602483019190915260448201526064016020604051808303816000875af1158015611cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf9190612e05565b5060015483511115611cf257600d611cf5565b60105b604080516060810191829052919060039082845b815481526020019060010190808311611d0957505050505090505b6000805b6003811015611e1f57828160038110611d4357611d43612e72565b602002015115611e1757601a546019546001600160a01b039091169063f5c291ab908a8460038110611d7757611d77612e72565b60200201518c8560038110611d8e57611d8e612e72565b60200201516040516001600160e01b031960e086901b16815260048101939093526001600160a01b03909116602483015260448201526064016020604051808303816000875af1158015611de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0a9190612e05565b611e149083612d84565b91505b600101611d28565b5060005b6003811015611f52576000888260038110611e4057611e40612e72565b60200201516001600160a01b031614611f4a57828160038110611e6557611e65612e72565b602002015115611f4a57601a546001600160a01b031663e7a842a2848360038110611e9257611e92612e72565b602002015184601854611ea59190612e1e565b8b8560038110611eb757611eb7612e72565b60200201516019548e8760038110611ed157611ed1612e72565b60200201516040516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b0390911660448401526064830152608482015260a401600060405180830381600087803b158015611f3157600080fd5b505af1158015611f45573d6000803e3d6000fd5b505050505b600101611e23565b50601a54601954604051636ed48b3d60e11b81526001600160a01b039092169163dda9167a91611f889160040190815260200190565b600060405180830381600087803b158015611fa257600080fd5b505af1158015611fb6573d6000803e3d6000fd5b505050507f3672fd56560e49f0f4d041528094fadff7cf68cb7cca887f7cfd6f06b2260f2187898c60015488600060038110611ff457611ff4612e72565b6020020151111560195460405161200f959493929190612f67565b60405180910390a160006014819055601855601a54601954604051634f0644ef60e01b81526001600160a01b0390921691634f0644ef916120569160040190815260200190565b600060405180830381600087803b15801561207057600080fd5b505af1158015612084573d6000803e3d6000fd5b50506000601981905561209b925060139150612704565b5050505050505050505050505050565b60006120b5612402565b60155490915060ff16156120fc576015546120d49060ff16600a612d0d565b6015546120e59060ff16600a612d0d565b6120ef9085612d1c565b6120f99190612d3e565b92505b8060800151612150573360009081526016602052604090205460ff16156121355760405162461bcd60e51b815260040161057e90612d55565b336000908152601660205260409020805460ff191660011790555b600354601354612161906001612d84565b111561217f5760405162461bcd60e51b815260040161057e90612d97565b42816060015110156121a35760405162461bcd60e51b815260040161057e90612dce565b601a546017546019546013546000936001600160a01b031692634efb864992909133919088356121d960408b0160208c01612fc9565b604080516001600160e01b031960e08a901b16815260048101979097526001600160a01b03909516602487015260448601939093526064850191909152608484015260ff1660a483015286013560c4820152606086013560e4820152610104016020604051808303816000875af1158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190612e05565b6040805160808101825233815260208101878152429282019283526060820184815260138054600181018255600091825293517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600490950294850180546001600160a01b0319166001600160a01b0390921691909117905591517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09184015592517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09283015591517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0939091015560188054929350839290919061237f908490612d84565b90915550506017546019546013547ffe0cc5fef412e95e7f14c3d9139114031680054e22ea3af65f1974c042255d1092339288926123bf90600190612e1e565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a0810183905260c0015b60405180910390a150505050565b6124396040518060a00160405280600060ff1681526020016000815260200160008152602001600081526020016000151581525090565b60145463ffffffff80821660208481019190915282901c8116606080850191909152604083811c9092169184019190915281901c60ff16825260681c600114612483576000612486565b60015b1515608082015290565b6000828152602081905260409020600101546124ab816125c1565b6109048383612660565b60006124c0816125c1565b6001600160a01b0382166125055760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015260640161057e565b601a80546001600160a01b0319166001600160a01b0384169081179091556040519081527fafa147634b29e2c7bd53ce194256b9f41cfb9ba3036f2b822fdd1d965beea086906020016108d3565b600061255e816125c1565b83600461256b8585610807565b6005811061257b5761257b612e72565b6003020190600361258d929190612743565b507fab9c2c030fa7902af7c116002d515e64069a55d8033e2f5347ca1e809492c6308484846040516123f493929190612fe4565b6125cb81336126cb565b50565b60006125da838361117b565b612658576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556126103390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016104ee565b5060006104ee565b600061266c838361117b565b15612658576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016104ee565b6126d5828261117b565b6111775760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161057e565b50805460008255600402906000526020600020908101906125cb9190612781565b60405180606001604052806003906020820280368337509192915050565b8260038101928215612771579160200282015b82811115612771578251825591602001919060010190612756565b5061277d9291506127b5565b5090565b5b8082111561277d5780546001600160a01b0319168155600060018201819055600282018190556003820155600401612782565b5b8082111561277d57600081556001016127b6565b6000602082840312156127dc57600080fd5b81356001600160e01b0319811681146127f457600080fd5b9392505050565b60006020828403121561280d57600080fd5b5035919050565b8035801515811461282457600080fd5b919050565b6000806040838503121561283c57600080fd5b8235915061284c60208401612814565b90509250929050565b6001600160a01b03811681146125cb57600080fd5b6000806040838503121561287d57600080fd5b82359150602083013561288f81612855565b809150509250929050565b600080604083850312156128ad57600080fd5b50508035926020909101359150565b63ffffffff811681146125cb57600080fd5b803560ff8116811461282457600080fd5b600080600080600080600060e0888a0312156128fa57600080fd5b8735612905816128bc565b96506020880135612915816128bc565b95506040880135945061292a606089016128ce565b9350608088013561293a81612855565b925061294860a089016128ce565b915061295660c08901612814565b905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561298c57600080fd5b813567ffffffffffffffff808211156129a457600080fd5b818401915084601f8301126129b857600080fd5b8135818111156129ca576129ca612964565b604051601f8201601f19908116603f011681019083821181831017156129f2576129f2612964565b81604052828152876020848701011115612a0b57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008082840360a0811215612a3f57600080fd5b833592506080601f1982011215612a5557600080fd5b506020830190509250929050565b600060208284031215612a7557600080fd5b81356127f481612855565b600080600060a08486031215612a9557600080fd5b84601f850112612aa457600080fd5b6040516060810181811067ffffffffffffffff82111715612ac757612ac7612964565b604052806060860187811115612adc57600080fd5b865b81811015612af6578035835260209283019201612ade565b5091945050359150612b0a60808501612814565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612b64578160001904821115612b4a57612b4a612b13565b80851615612b5757918102915b93841c9390800290612b2e565b509250929050565b600181815b80851115612b64576001600160c01b03829004821115612b9357612b93612b13565b80851615612ba057918102915b93841c9390800290612b71565b600082612bbc575060016104ee565b81612bc9575060006104ee565b8160018114612bdf5760028114612be957612c05565b60019150506104ee565b60ff841115612bfa57612bfa612b13565b50506001821b6104ee565b5060208310610133831016604e8410600b8410161715612c28575081810a6104ee565b612c328383612b29565b8060001904821115612c4657612c46612b13565b029392505050565b600082612c5d575060016104ee565b81612c6a575060006104ee565b8160018114612bdf5760028103612caf5760ff841115612c8c57612c8c612b13565b6001841b91506001600160c01b03821115612ca957612ca9612b13565b506104ee565b5060208310610133831016604e8410600b8410161715612ce9575081810a6001600160c01b03811115612ce457612ce4612b13565b6104ee565b612cf38383612b6c565b6001600160c01b03819004821115612c4657612c46612b13565b60006127f460ff841683612bad565b600082612d3957634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176104ee576104ee612b13565b602080825260159082015274416c72656164792070617274696369706174696e6760581b604082015260600190565b808201808211156104ee576104ee612b13565b60208082526019908201527f4d617820706c6179657220616d6f756e74207265616368656400000000000000604082015260600190565b6020808252601e908201527f47616d6520697320636c6f73656420666f72206e657720706c61796572730000604082015260600190565b600060208284031215612e1757600080fd5b5051919050565b818103818111156104ee576104ee612b13565b63ffffffff828116828216039080821115612e4e57612e4e612b13565b5092915050565b600060208284031215612e6757600080fd5b81516127f481612855565b634e487b7160e01b600052603260045260246000fd5b604081526000835180604084015260005b81811015612eb65760208187018101516060868401015201612e99565b506000606082850101526060601f19601f83011684010191505060ff831660208301529392505050565b60008060408385031215612ef357600080fd5b82518060170b8114612f0457600080fd5b602084015190925061288f816128bc565b60006127f460ff84166001600160c01b038416612c4e565b600081612f3c57612f3c612b13565b506000190190565b8060005b6003811015610904578151845260209384019390910190600101612f48565b6101208101818760005b6003811015612f995781516001600160a01b0316835260209283019290910190600101612f71565b505050612fa96060830187612f44565b60179490940b60c082015291151560e08301526101009091015292915050565b600060208284031215612fdb57600080fd5b6127f4826128ce565b60a08101612ff28286612f44565b836060830152821515608083015294935050505056fe1d93c87416ca7b54f0fb8323167b72760e8e2ec93d48660953897a150f97a8b4a2646970667358221220a7828493efbd331165cc5ee0206d3e98a8828f14f1836c9fbc6f129652c703cc64736f6c63430008180033