1.3k txs
1.3k calls
constructor
constructor((address triviToken, address treasuryAddress, address leaderboardAddress, address backendService, address singlePlayerWallet) params)
functions
averageHumanScore
viewfunction averageHumanScore() view returns (uint256)
backendService
viewfunction backendService() view returns (address)
calculatePrizeDistribution
purefunction calculatePrizeDistribution(uint256 playerCount) pure returns (uint256 winnerBps, uint256 leaderboardBps, uint256 treasuryBps)
getTournamentDetails
viewfunction getTournamentDetails(string tournamentId) view returns (uint256 entryFee, uint256 totalPrizePool, uint256 playerCount, uint256 maxPlayers, bool isActive, bool isCompleted, address winner, bool isSinglePlayer, uint256 playerScore, uint256 scoreThreshold)
getTournamentPlayerCount
viewfunction getTournamentPlayerCount(string tournamentId) view returns (uint256)
getTournamentPlayers
viewfunction getTournamentPlayers(string tournamentId) view returns (address[])
hasPlayerEntered
viewfunction hasPlayerEntered(string tournamentId, address player) view returns (bool)
leaderboardAddress
viewfunction leaderboardAddress() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
playerIndex
viewfunction playerIndex(string, address) view returns (uint256)
PRECISION
viewfunction PRECISION() view returns (uint256)
refunds
viewfunction refunds(string, address) view returns (uint256)
singlePlayerWallet
viewfunction singlePlayerWallet() view returns (address)
singlePlayerWinMultiplier
viewfunction singlePlayerWinMultiplier() view returns (uint256)
totalRefundsDispersed
viewfunction totalRefundsDispersed(string) view returns (uint256)
totalRefundsRequired
viewfunction totalRefundsRequired(string) view returns (uint256)
tournamentCancelled
viewfunction tournamentCancelled(string) view returns (bool)
tournamentExists
viewfunction tournamentExists(string) view returns (bool)
tournamentParticipants
viewfunction tournamentParticipants(string, address) view returns (bool)
tournamentPlayers
viewfunction tournamentPlayers(string, uint256) view returns (address)
tournaments
viewfunction tournaments(string) view returns (uint256 entryFee, uint256 totalPrizePool, uint256 playerCount, uint256 maxPlayers, uint256 winnerPayout, uint256 treasuryPayout, uint256 leaderboardPayout, uint256 playerScore, uint256 scoreThreshold, address winner, bool isActive, bool isCompleted, bool isSinglePlayer)
treasuryAddress
viewfunction treasuryAddress() view returns (address)
triviToken
viewfunction triviToken() view returns (address)
cancelTournament
nonpayablefunction cancelTournament(string tournamentId)
cleanupTournament
nonpayablefunction cleanupTournament(string tournamentId)
completeSinglePlayerTournament
nonpayablefunction completeSinglePlayerTournament(string tournamentId, address player, uint256 playerScore)
completeTournament
nonpayablefunction completeTournament(string tournamentId, address winnerAddress)
createTournament
nonpayablefunction createTournament(string tournamentId, uint256 entryFee, uint256 maxPlayers, bool isSinglePlayer)
disperseRefunds
nonpayablefunction disperseRefunds(string tournamentId, uint256 startIndex, uint256 batchSize)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address token, uint256 amount)
enterTournament
nonpayablefunction enterTournament(string tournamentId)
leaveTournament
nonpayablefunction leaveTournament(string tournamentId)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateAverageScore
nonpayablefunction updateAverageScore(uint256 newAverage)
updateBackendService
nonpayablefunction updateBackendService(address newService)
updateLeaderboardAddress
nonpayablefunction updateLeaderboardAddress(address newLeaderboard)
updateSinglePlayerMultiplier
nonpayablefunction updateSinglePlayerMultiplier(uint256 newMultiplier)
updateSinglePlayerWallet
nonpayablefunction updateSinglePlayerWallet(address newWallet)
updateTreasuryAddress
nonpayablefunction updateTreasuryAddress(address newTreasury)
events
AverageScoreUpdated
event AverageScoreUpdated(uint256 newAverage)
BackendServiceUpdated
event BackendServiceUpdated(address indexed newService)
LeaderboardAddressUpdated
event LeaderboardAddressUpdated(address indexed newLeaderboard)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PlayerEntered
event PlayerEntered(string indexed tournamentId, address indexed player, uint256 entryFee)
PlayerLeft
event PlayerLeft(string indexed tournamentId, address indexed player, uint256 refundAmount)
RefundsDispersed
event RefundsDispersed(string indexed tournamentId, uint256 startIndex, uint256 endIndex)
SinglePlayerCompleted
event SinglePlayerCompleted(string indexed tournamentId, address indexed player, uint256 score, uint256 threshold, bool won, uint256 payout)
SinglePlayerMultiplierUpdated
event SinglePlayerMultiplierUpdated(uint256 newMultiplier)
SinglePlayerWalletUpdated
event SinglePlayerWalletUpdated(address indexed newWallet)
TournamentCancelled
event TournamentCancelled(string indexed tournamentId)
TournamentCompleted
event TournamentCompleted(string indexed tournamentId, address indexed winner, uint256 winnerPayout, uint256 treasuryPayout, uint256 leaderboardPayout)
TournamentCreated
event TournamentCreated(string indexed tournamentId, uint256 entryFee, uint256 maxPlayers)
TreasuryAddressUpdated
event TreasuryAddressUpdated(address indexed newTreasury)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60a06040526101f4600655614e206007553480156200001d57600080fd5b506040516200393b3803806200393b8339810160408190526200004091620002d6565b6200004b3362000269565b600180556002805460ff1916905580516001600160a01b0316620000a65760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b60208101516001600160a01b0316620000f55760405162461bcd60e51b815260206004820152601060248201526f496e76616c696420747265617375727960801b60448201526064016200009d565b60408101516001600160a01b0316620001515760405162461bcd60e51b815260206004820152601360248201527f496e76616c6964206c6561646572626f6172640000000000000000000000000060448201526064016200009d565b60608101516001600160a01b03166200019f5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a5908189858dad95b99608a1b60448201526064016200009d565b60808101516001600160a01b0316620001ec5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081dd85b1b195d60921b60448201526064016200009d565b80516001600160a01b039081166080908152602083015160028054610100600160a81b031916610100928516929092029190911790556040830151600380546001600160a01b031990811692851692909217905560608401516004805483169185169190911790559201516005805490931691161790556200037d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620002d157600080fd5b919050565b600060a08284031215620002e957600080fd5b60405160a081016001600160401b03811182821017156200031a57634e487b7160e01b600052604160045260246000fd5b6040526200032883620002b9565b81526200033860208401620002b9565b60208201526200034b60408401620002b9565b60408201526200035e60608401620002b9565b60608201526200037160808401620002b9565b60808201529392505050565b608051613539620004026000396000818161032d015281816110130152818161105301528181611098015281816110e30152818161122d0152818161126c015281816112a6015281816112e30152818161132901528181611a5401528181611ccb0152818161212c01528181612589015281816125d1015261262001526135396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c8063772215ae11610151578063aaf5eb68116100c3578063bc6ea9ee11610087578063bc6ea9ee14610774578063c3d140371461077d578063c5f956af14610786578063d29298291461079e578063dc721790146107dc578063f2fde38b146107ef57600080fd5b8063aaf5eb68146106c8578063aceb53d5146106d1578063b1b491af146106e4578063b2113ef7146106f7578063b268853e1461076157600080fd5b8063841e456111610115578063841e4561146106485780638456cb591461065b5780638da5cb5b1461066357806395ccea67146106745780639cdbbd7614610687578063a604082a146106b557600080fd5b8063772215ae146105a657806378668af6146105d45780637a9e93c91461060f5780638092132514610622578063828817971461063557600080fd5b806351b5c81a116101ea578063615ac435116101ae578063615ac435146104495780636ab5bddc1461045c578063715018a61461056557806374dc03991461056d5780637705054c14610580578063770d83671461059357600080fd5b806351b5c81a146103cd57806352eedf75146103e0578063560f5966146103f35780635c975abb146104135780636025c7b11461041e57600080fd5b80631fe3c00b116102315780631fe3c00b1461034f5780632402d170146103625780633966bd24146103775780633f4ba83a146103b25780634994c0b4146103ba57600080fd5b806302923dbc1461026e578063145bc2e214610296578063150742f6146102cf5780631e550573146102fd5780631f68067214610328575b600080fd5b61028161027c3660046130b7565b610802565b60405190151581526020015b60405180910390f35b6102c16102a4366004613105565b8051602081830181018051600d8252928201919093012091525481565b60405190815260200161028d565b6102816102dd366004613105565b8051602081830181018051600b8252928201919093012091525460ff1681565b600554610310906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b6103107f000000000000000000000000000000000000000000000000000000000000000081565b61031061035d36600461313a565b61088d565b61037561037036600461317f565b6108d4565b005b6102c16103853660046130b7565b8151602081840181018051600e825292820194820194909420919093529091526000908152604090205481565b61037561094c565b6103756103c836600461317f565b61095e565b6103756103db3660046131a1565b6109d6565b6102c16103ee366004613105565b610a6a565b610406610401366004613105565b610ad1565b60405161028d91906131ba565b60025460ff16610281565b6102c161042c366004613105565b8051602081830181018051600c8252928201919093012091525481565b61037561045736600461317f565b610b8a565b6104f461046a366004613105565b8051808201602090810180516008808352938301929094019190912092905281546001830154600284015460038501546004860154600587015460068801546007890154978901546009909901549698959794969395929491939092906001600160a01b0381169060ff600160a01b8204811691600160a81b8104821691600160b01b909104168d565b604080519d8e5260208e019c909c529a8c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526001600160a01b03166101208501521515610140840152151561016083015215156101808201526101a00161028d565b610375610c02565b61037561057b366004613105565b610c14565b61037561058e366004613207565b610da0565b6103756105a1366004613105565b61144e565b6102816105b4366004613105565b805160208183018101805160108252928201919093012091525460ff1681565b6102c16105e23660046130b7565b8151602081840181018051600f825292820194820194909420919093529091526000908152604090205481565b61037561061d366004613105565b6116e3565b61037561063036600461325e565b611ad2565b600354610310906001600160a01b031681565b61037561065636600461317f565b611df0565b610375611e70565b6000546001600160a01b0316610310565b6103756106823660046132ac565b611e80565b61069a6106953660046131a1565b611eb2565b6040805193845260208401929092529082015260600161028d565b6103756106c3366004613105565b611f16565b6102c161271081565b6103756106df3660046130b7565b61229c565b6103756106f23660046132e4565b6126c6565b61070a610705366004613105565b6128be565b604080519a8b5260208b01999099529789019690965260608801949094529115156080870152151560a08601526001600160a01b031660c0850152151560e08401526101008301526101208201526101400161028d565b61037561076f3660046131a1565b6129bc565b6102c160075481565b6102c160065481565b6002546103109061010090046001600160a01b031681565b6102816107ac3660046130b7565b81516020818401810180516009825292820194820194909420919093529091526000908152604090205460ff1681565b600454610310906001600160a01b031681565b6103756107fd36600461317f565b612a29565b6000600b83604051610814919061336b565b9081526040519081900360200190205460ff1661084c5760405162461bcd60e51b815260040161084390613387565b60405180910390fd5b60098360405161085c919061336b565b90815260408051602092819003830190206001600160a01b0385166000908152925290205460ff1690505b92915050565b8151602081840181018051600a8252928201918501919091209190528054829081106108b857600080fd5b6000918252602090912001546001600160a01b03169150829050565b6108dc612a9f565b6001600160a01b0381166109025760405162461bcd60e51b8152600401610843906133aa565b600580546001600160a01b0319166001600160a01b0383169081179091556040517fb2c4650837bfec26e0f00b6c44744cc8668ac16a1742b3f1198f5b9a6165176990600090a250565b610954612a9f565b61095c612af9565b565b610966612a9f565b6001600160a01b03811661098c5760405162461bcd60e51b8152600401610843906133aa565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f9f99ccbf9dfb68ba99dd44d1015d639e6d3fbe55f3faa3fa6f58e3d0bd908bdd90600090a250565b6004546001600160a01b03163314610a005760405162461bcd60e51b8152600401610843906133cb565b600081118015610a1257506103e88111155b610a2e5760405162461bcd60e51b8152600401610843906133aa565b60068190556040518181527ffd9be61ada42e82672ba808be89b7d83f320e426a0d908189dde9f86c75b577c906020015b60405180910390a150565b6000600b82604051610a7c919061336b565b9081526040519081900360200190205460ff16610aab5760405162461bcd60e51b815260040161084390613387565b600a82604051610abb919061336b565b9081526040519081900360200190205492915050565b6060600b82604051610ae3919061336b565b9081526040519081900360200190205460ff16610b125760405162461bcd60e51b815260040161084390613387565b600a82604051610b22919061336b565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610b7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b60575b50505050509050919050565b610b92612a9f565b6001600160a01b038116610bb85760405162461bcd60e51b8152600401610843906133aa565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f46e34f52f66f7f7f3eba852f03fb19b384b9330ba5ba72e761dc7898a8415b2890600090a250565b610c0a612a9f565b61095c6000612b4b565b6004546001600160a01b03163314610c3e5760405162461bcd60e51b8152600401610843906133cb565b610c46612b9b565b600b81604051610c56919061336b565b9081526040519081900360200190205460ff16610c855760405162461bcd60e51b815260040161084390613387565b6000600882604051610c97919061336b565b908152604051908190036020019020600981015490915060ff600160a01b909104168015610cd157506009810154600160a81b900460ff16155b610ced5760405162461bcd60e51b8152600401610843906133aa565b60098101805460ff60a01b19169055604051600190601090610d1090859061336b565b908152604051908190036020018120805492151560ff1990931692909217909155600282015490600d90610d4590859061336b565b90815260405190819003602001812091909155610d6390839061336b565b604051908190038120907f935d3096261985eb92dedfb3007cd531ce90645a224723b463d33b5d1cfde3a290600090a250610d9d60018055565b50565b6004546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610843906133cb565b610dd2612b9b565b600b83604051610de2919061336b565b9081526040519081900360200190205460ff16610e115760405162461bcd60e51b815260040161084390613387565b6000600884604051610e23919061336b565b908152604051908190036020019020600981015490915060ff600160a01b909104168015610e5d57506009810154600160a81b900460ff16155b8015610e895750601084604051610e74919061336b565b9081526040519081900360200190205460ff16155b8015610ea057506009810154600160b01b900460ff165b610ebc5760405162461bcd60e51b8152600401610843906133aa565b600984604051610ecc919061336b565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff168015610f0257506103e88211155b610f3d5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206461746160a01b6044820152606401610843565b60098101805461ffff60a01b1916600160a81b17905560078101829055600881015482118015611183576009820180546001600160a01b0319166001600160a01b038616179055600754825460009161271091610f9a919061340f565b610fa49190613426565b9050612710610fb58261232861340f565b610fbf9190613426565b6004840155612710610fd3826101f461340f565b610fdd9190613426565b6005840155612710610ff1826101f461340f565b610ffb9190613426565b6006840155600554835461103d916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692911690612bf4565b600554600484015461107f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929116908890612c57565b60058054600254918501546110ca926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116938116926101009092041690612c57565b6005546003546006850154611111926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169391811692911690612c57565b846001600160a01b031686604051611129919061336b565b60408051918290038220600487015460058801546006890154918552602085015283830152905190917f9615ba1b18e9f02c92f7b275f6e4960f08fcc17722d14c4bf4aa54a41498ed7e919081900360600190a3506113bf565b815460009061119390600261340f565b90506127106111a4826101f461340f565b6111ae9190613426565b60058401556127106111c2826101f461340f565b6111cc9190613426565b600684015560058301546000906111e590600290613426565b90506000600285600601546111fa9190613426565b905060008183876000015461120f9190613448565b6112199190613448565b60025490915061125b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169161010090041685612bf4565b600354611295906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684612bf4565b6005546112cf906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683612bf4565b600554600254611315916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929181169161010090041686612c57565b600554600354611356916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692918116911685612c57565b604051600090611367908b9061336b565b6040805191829003822060058a015460068b015460008552602085019190915283830152905190917f9615ba1b18e9f02c92f7b275f6e4960f08fcc17722d14c4bf4aa54a41498ed7e919081900360600190a3505050505b836001600160a01b0316856040516113d7919061336b565b60405180910390207f126b12a183fddff68c77d52534ecb93a519c675c6a53ad3601d41c2727e7fbe08585600801548586611413576000611419565b87600401545b604080519485526020850193909352901515838301526060830152519081900360800190a3505061144960018055565b505050565b611456612a9f565b600b81604051611466919061336b565b9081526040519081900360200190205460ff166114955760405162461bcd60e51b815260040161084390613387565b60006008826040516114a7919061336b565b908152604051908190036020019020600981015490915060ff600160a81b90910416806114f357506010826040516114df919061336b565b9081526040519081900360200190205460ff165b61152e5760405162461bcd60e51b815260206004820152600c60248201526b139bdd08199a5b9a5cda195960a21b6044820152606401610843565b60108260405161153e919061336b565b9081526040519081900360200190205460ff16156115d657600d82604051611566919061336b565b908152602001604051809103902054600c83604051611585919061336b565b908152602001604051809103902054146115d65760405162461bcd60e51b8152602060048201526012602482015271526566756e647320696e636f6d706c65746560701b6044820152606401610843565b6008826040516115e6919061336b565b908152604051908190036020018120600080825560018201819055600282018190556003820181905560048201819055600582018190556006820181905560078201819055600882015560090180546001600160b81b0319169055600a9061164f90849061336b565b908152602001604051809103902060006116699190612fc6565b600c82604051611679919061336b565b908152602001604051809103902060009055600d8260405161169b919061336b565b9081526020016040518091039020600090556000600b836040516116bf919061336b565b908152604051908190036020019020805491151560ff199092169190911790555050565b6116eb612b9b565b6116f3612c95565b600b81604051611703919061336b565b9081526040519081900360200190205460ff166117325760405162461bcd60e51b815260040161084390613387565b6000600882604051611744919061336b565b908152604051908190036020019020600981015490915060ff600160a01b90910416801561177e57506009810154600160a81b900460ff16155b80156117aa5750601082604051611795919061336b565b9081526040519081900360200190205460ff16155b6117c65760405162461bcd60e51b8152600401610843906133aa565b6009826040516117d6919061336b565b9081526040805160209281900383019020336000908152925290205460ff1661182f5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08195b9d195c995960aa1b6044820152606401610843565b6000600983604051611841919061336b565b908152604080516020928190038301902033600090815292529020805460ff1916911515919091179055600281015461187c90600190613448565b6002820155805460018201546118929190613448565b816001018190555060006001600e846040516118ae919061336b565b908152604080516020928190038301902033600090815292529020546118d49190613448565b90506000600a846040516118e8919061336b565b9081526020016040518091039020905060006001828054905061190b9190613448565b90508083146119e2578181815481106119265761192661345b565b9060005260206000200160009054906101000a90046001600160a01b03168284815481106119565761195661345b565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905561198a836001613471565b600e8660405161199a919061336b565b908152602001604051809103902060008486815481106119bc576119bc61345b565b60009182526020808320909101546001600160a01b031683528201929092526040019020555b818054806119f2576119f2613484565b600082815260209020810160001990810180546001600160a01b0319169055019055604051600e90611a2590879061336b565b908152604080516020928190038301902033600081815291909352908120558454611a7a916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691612bf4565b6040513390611a8a90879061336b565b60405190819003812086548252907f14322c7dc39e69d5ce1b40050ee228f8a3f34b23983b460c593fdfeada4d7fe69060200160405180910390a350505050610d9d60018055565b6004546001600160a01b03163314611afc5760405162461bcd60e51b8152600401610843906133cb565b611b04612b9b565b600b83604051611b14919061336b565b9081526040519081900360200190205460ff16611b435760405162461bcd60e51b815260040161084390613387565b601083604051611b53919061336b565b9081526040519081900360200190205460ff16611ba25760405162461bcd60e51b815260206004820152600d60248201526c139bdd0818d85b98d95b1b1959609a1b6044820152606401610843565b6000600884604051611bb4919061336b565b908152602001604051809103902090506000600a85604051611bd6919061336b565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015611c3257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c14575b5050505050905060008385611c479190613471565b90508151811115611c56575080515b8254600090865b83811015611d49576000858281518110611c7957611c7961345b565b60200260200101519050600f8a604051611c93919061336b565b90815260408051602092819003830190206001600160a01b038416600090815292528120549003611d3657611cf26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168285612bf4565b82600f8b604051611d03919061336b565b90815260408051602092819003830190206001600160a01b0385166000908152925290205583611d328161349a565b9450505b5080611d418161349a565b915050611c5d565b5081600c89604051611d5b919061336b565b908152602001604051809103902054611d749190613471565b600c89604051611d84919061336b565b90815260405190819003602001812091909155611da290899061336b565b6040805191829003822089835260208301869052917faa96ad77373a5abf903285d8582fbc8c0a0bd9c687fdd0165a0b9b08238472ed910160405180910390a2505050505061144960018055565b611df8612a9f565b6001600160a01b038116611e1e5760405162461bcd60e51b8152600401610843906133aa565b60028054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517fb6a5e89655cf506139085f051af608195ed056f8dc550b180a1c38d401e2b6c490600090a250565b611e78612a9f565b61095c612cdb565b611e88612a9f565b611eae611e9d6000546001600160a01b031690565b6001600160a01b0384169083612bf4565b5050565b600080600060028411611ed0575061232891506101f4905080611f0f565b600a8411611ee95750611f4091506103e8905080611f0f565b60198411611f025750611b5891506105dc905080611f0f565b5061138891506109c49050805b9193909250565b611f1e612b9b565b611f26612c95565b600b81604051611f36919061336b565b9081526040519081900360200190205460ff16611f655760405162461bcd60e51b815260040161084390613387565b6000600882604051611f77919061336b565b908152604051908190036020019020600981015490915060ff600160a01b90910416611fd25760405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606401610843565b6009810154600160a81b900460ff161561201a5760405162461bcd60e51b815260206004820152600960248201526810dbdb5c1b195d195960ba1b6044820152606401610843565b60108260405161202a919061336b565b9081526040519081900360200190205460ff16156120765760405162461bcd60e51b815260206004820152600960248201526810d85b98d95b1b195960ba1b6044820152606401610843565b600982604051612086919061336b565b9081526040805160209281900383019020336000908152925290205460ff16156120dc5760405162461bcd60e51b8152602060048201526007602482015266115b9d195c995960ca1b6044820152606401610843565b806003015481600201541061211c5760405162461bcd60e51b815260040161084390602080825260049082015263119d5b1b60e21b604082015260600190565b8054612156906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169033903090612c57565b6001600983604051612168919061336b565b908152604080516020928190038301812033600090815293529120805460ff191692151592909217909155600a906121a190849061336b565b9081526040519081900360209081018220805460018101825560009182529190200180546001600160a01b03191633179055600a906121e190849061336b565b9081526040519081900360200181205490600e9061220090859061336b565b90815260408051602092819003830190203360009081529252902055600281015461222c906001613471565b6002820155805460018201546122429190613471565b6001820155604051339061225790849061336b565b60405190819003812083548252907f3e1dae124874d6922b51f6aaf8b153a2ec9c841a8af5c725015558d54c8974869060200160405180910390a350610d9d60018055565b6004546001600160a01b031633146122c65760405162461bcd60e51b8152600401610843906133cb565b6122ce612b9b565b600b826040516122de919061336b565b9081526040519081900360200190205460ff1661230d5760405162461bcd60e51b815260040161084390613387565b600060088360405161231f919061336b565b908152604051908190036020019020600981015490915060ff600160a01b90910416801561235957506009810154600160a81b900460ff16155b80156123855750601083604051612370919061336b565b9081526040519081900360200190205460ff16155b801561239d57506009810154600160b01b900460ff16155b6123b95760405162461bcd60e51b8152600401610843906133aa565b6009836040516123c9919061336b565b90815260408051602092819003830190206001600160a01b0385166000908152925290205460ff168015612401575060008160020154115b61243e5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103bb4b73732b960911b6044820152606401610843565b6009810180546001600160a01b0384166001600160b01b031990911617600160a81b17905560018101546002808301549060009081908190841161248d575061232891506101f49050806124cc565b600a84116124a65750611f4091506103e89050806124cc565b601984116124bf5750611b5891506105dc9050806124cc565b5061138891506109c49050805b6127106124d9848761340f565b6124e39190613426565b60048701556127106124f5838761340f565b6124ff9190613426565b6006870155612710612511828761340f565b61251b9190613426565b60058701819055600687015460048801546000929161253991613471565b6125439190613471565b90508581101561256c576125578187613448565b87600401546125669190613471565b60048801555b6004870154156125b15760048701546125b1906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908a90612bf4565b600587015415612600576002546005880154612600916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926101009092041690612bf4565b60068701541561264a57600354600688015461264a916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692911690612bf4565b876001600160a01b031689604051612662919061336b565b6040805191829003822060048b015460058c015460068d0154918552602085015283830152905190917f9615ba1b18e9f02c92f7b275f6e4960f08fcc17722d14c4bf4aa54a41498ed7e919081900360600190a350505050505050611eae60018055565b6004546001600160a01b031633146126f05760405162461bcd60e51b8152600401610843906133cb565b6126f8612c95565b60008451116127345760405162461bcd60e51b8152602060048201526008602482015267115b5c1d1e48125160c21b6044820152606401610843565b600083116127725760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642066656560a81b6044820152606401610843565b600b84604051612782919061336b565b9081526040519081900360200190205460ff16156127cb5760405162461bcd60e51b815260206004820152600660248201526545786973747360d01b6044820152606401610843565b60006008856040516127dd919061336b565b9081526040519081900360200190208481559050816127fc57826127ff565b60015b600382015560098101805483158015600160b01b0262ff00ff60a01b1990921691909117600160a01b179091556128395760065460088201555b6001600b8660405161284b919061336b565b908152604051908190036020018120805492151560ff199093169290921790915561287790869061336b565b6040805191829003822086835260208301869052917fbefb3a7d9beef6946aedb65d17d2eb59fbef1689cfb32d0906f7678b06449807910160405180910390a25050505050565b600080600080600080600080600080600b8b6040516128dd919061336b565b9081526040519081900360200190205460ff1661290c5760405162461bcd60e51b815260040161084390613387565b600060088c60405161291e919061336b565b9081526020016040518091039020905080600001548160010154826002015483600301548460090160149054906101000a900460ff168560090160159054906101000a900460ff168660090160009054906101000a90046001600160a01b03168760090160169054906101000a900460ff16886007015489600801549a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6129c4612a9f565b61271081101580156129d857506175308111155b6129f45760405162461bcd60e51b8152600401610843906133aa565b60078190556040518181527f89c2b9f2cdeb09561dd88f3e6c40532234fb1276732f56b157ae95cb1d63b7fe90602001610a5f565b612a31612a9f565b6001600160a01b038116612a965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610843565b610d9d81612b4b565b6000546001600160a01b0316331461095c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610843565b612b01612d18565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600260015403612bed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610843565b6002600155565b6040516001600160a01b03831660248201526044810182905261144990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d61565b6040516001600160a01b0380851660248301528316604482015260648101829052612c8f9085906323b872dd60e01b90608401612c20565b50505050565b60025460ff161561095c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610843565b612ce3612c95565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b2e3390565b60025460ff1661095c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610843565b6000612db6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e369092919063ffffffff16565b9050805160001480612dd7575080806020019051810190612dd791906134b3565b6114495760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610843565b6060612e458484600085612e4d565b949350505050565b606082471015612eae5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610843565b600080866001600160a01b03168587604051612eca919061336b565b60006040518083038185875af1925050503d8060008114612f07576040519150601f19603f3d011682016040523d82523d6000602084013e612f0c565b606091505b5091509150612f1d87838387612f28565b979650505050505050565b60608315612f97578251600003612f90576001600160a01b0385163b612f905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610843565b5081612e45565b612e458383815115612fac5781518083602001fd5b8060405162461bcd60e51b815260040161084391906134d0565b5080546000825590600052602060002090810190610d9d91905b80821115612ff45760008155600101612fe0565b5090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261301f57600080fd5b813567ffffffffffffffff8082111561303a5761303a612ff8565b604051601f8301601f19908116603f0116810190828211818310171561306257613062612ff8565b8160405283815286602085880101111561307b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b03811681146130b257600080fd5b919050565b600080604083850312156130ca57600080fd5b823567ffffffffffffffff8111156130e157600080fd5b6130ed8582860161300e565b9250506130fc6020840161309b565b90509250929050565b60006020828403121561311757600080fd5b813567ffffffffffffffff81111561312e57600080fd5b612e458482850161300e565b6000806040838503121561314d57600080fd5b823567ffffffffffffffff81111561316457600080fd5b6131708582860161300e565b95602094909401359450505050565b60006020828403121561319157600080fd5b61319a8261309b565b9392505050565b6000602082840312156131b357600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156131fb5783516001600160a01b0316835292840192918401916001016131d6565b50909695505050505050565b60008060006060848603121561321c57600080fd5b833567ffffffffffffffff81111561323357600080fd5b61323f8682870161300e565b93505061324e6020850161309b565b9150604084013590509250925092565b60008060006060848603121561327357600080fd5b833567ffffffffffffffff81111561328a57600080fd5b6132968682870161300e565b9660208601359650604090950135949350505050565b600080604083850312156132bf57600080fd5b6132c88361309b565b946020939093013593505050565b8015158114610d9d57600080fd5b600080600080608085870312156132fa57600080fd5b843567ffffffffffffffff81111561331157600080fd5b61331d8782880161300e565b9450506020850135925060408501359150606085013561333c816132d6565b939692955090935050565b60005b8381101561336257818101518382015260200161334a565b50506000910152565b6000825161337d818460208701613347565b9190910192915050565b602080825260099082015268139bdd08195e1a5cdd60ba1b604082015260600190565b602080825260079082015266125b9d985b1a5960ca1b604082015260600190565b6020808252601490820152734f6e6c79206261636b656e64207365727669636560601b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610887576108876133f9565b60008261344357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610887576108876133f9565b634e487b7160e01b600052603260045260246000fd5b80820180821115610887576108876133f9565b634e487b7160e01b600052603160045260246000fd5b6000600182016134ac576134ac6133f9565b5060010190565b6000602082840312156134c557600080fd5b815161319a816132d6565b60208152600082518060208401526134ef816040850160208701613347565b601f01601f1916919091016040019291505056fea264697066735822122054fc2151058935b328de35f17a90f21bd443c843a993e46b798151eb57b2b71764736f6c634300081300330000000000000000000000000e6214f42992683a9177ce65d022f163d7bbd1d2000000000000000000000000ee0b91a41eb1faef101cc4ce3722499a7276f6bd000000000000000000000000a96efd6149346a25415a591545183358160d08e500000000000000000000000078e1f895d3bb63f497526cb0e769f0a12c400bba000000000000000000000000b38334360c7596b838fbd79d7caf3f0a645517f1