0 txs
2.3k calls
constructor
No constructor.
functions
_getPagedIds
purefunction _getPagedIds(uint256[] idsArray, uint256 offset, uint16 pageSize) pure returns (uint256[])
allowedCollections
viewfunction allowedCollections(uint256) view returns (address)
authorizedAddresses
viewfunction authorizedAddresses(uint256) view returns (address)
availableFees
viewfunction availableFees(address) view returns (uint256)
availablePool
viewfunction availablePool(address) view returns (uint256)
canCreateGames
viewfunction canCreateGames() view returns (bool)
FEE_PERCENT
viewfunction FEE_PERCENT() view returns (uint256)
games
viewfunction games(uint256) view returns (uint256 gameId, uint256 playerATokenId, uint256 playerBTokenId, uint256 stake, bytes32 playerAHash, address playerAContract, uint32 createdTime, address playerBContract, uint32 acceptedTime, address stakeToken, uint32 completedTime, bool isPublic, uint8 status, uint8 outcome)
getAllGames
viewfunction getAllGames(uint256 offset, uint16 pageSize) view returns (tuple[])
getAllowedCollections
viewfunction getAllowedCollections() view returns (address[])
getGame
viewfunction getGame(uint256 gameId) view returns (tuple)
getGames
viewfunction getGames(uint256[] gameIds) view returns (tuple[])
getMyGames
viewfunction getMyGames(address contractAddr, uint256 tokenId, uint256 offset, uint16 pageSize) view returns (tuple[])
getMyPendingGames
viewfunction getMyPendingGames(address contractAddr, uint256 tokenId) view returns (tuple[])
getPlayerStats
viewfunction getPlayerStats(address contractAddr, uint256 tokenId) view returns (tuple)
getPublicGames
viewfunction getPublicGames(uint256 offset, uint16 pageSize) view returns (tuple[] list, uint256 total)
luckyDrawContract
viewfunction luckyDrawContract() view returns (address)
MIN_STAKE_WEI
viewfunction MIN_STAKE_WEI() view returns (uint256)
nextGameId
viewfunction nextGameId() view returns (uint256)
owner
viewfunction owner() view returns (address)
POOL_PERCENT
viewfunction POOL_PERCENT() view returns (uint256)
publicGamesList
viewfunction publicGamesList(uint256) view returns (uint256)
REVEAL_TIMEOUT
viewfunction REVEAL_TIMEOUT() view returns (uint256)
ROUNDS_PER_GAME
viewfunction ROUNDS_PER_GAME() view returns (uint256)
stakeTokenContract
viewfunction stakeTokenContract() view returns (address)
acceptAndPlay
nonpayablefunction acceptAndPlay(tuple acceptDetails) returns (tuple)
adminCancel
nonpayablefunction adminCancel(uint256 gameId)
cancelGame
nonpayablefunction cancelGame(uint256 gameId)
fixPublicGamesList
nonpayablefunction fixPublicGamesList(uint256 gameId)
initialize
nonpayablefunction initialize(address _stakeToken, address[] allowedCollections_)
newGame
nonpayablefunction newGame(tuple gameDetails) returns (tuple)
renounceOwnership
nonpayablefunction renounceOwnership()
reveal
nonpayablefunction reveal(tuple revealDetails) returns (tuple)
revealBulk
nonpayablefunction revealBulk(tuple[] revealDetails)
setAllowedCollections
nonpayablefunction setAllowedCollections(address[] allowedCollections_)
setAuthorizedAddresses
nonpayablefunction setAuthorizedAddresses(address[] authorizedAddresses_)
setCanCreateGames
nonpayablefunction setCanCreateGames(bool canCreateGames_)
setLuckyDrawContract
nonpayablefunction setLuckyDrawContract(address luckyDrawContract_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawByDefault
nonpayablefunction withdrawByDefault(uint256 gameId) returns (tuple)
withdrawFees
nonpayablefunction withdrawFees(address to, uint256 amount)
withdrawPool
nonpayablefunction withdrawPool(address to, uint256 amount)
events
GameAccepted
event GameAccepted(uint256 indexed gameId)
GameCancelled
event GameCancelled(uint256 indexed gameId)
GameCompleted
event GameCompleted(uint256 indexed gameId, uint8 indexed outcome)
GameCreated
event GameCreated(uint256 indexed gameId, bytes32 indexed playerAHash)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x608060405234801561001057600080fd5b506158e780620000216000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063715018a611610146578063b135bbb0116100c3578063e752b79311610087578063e752b79314610608578063e96f81aa1461061b578063e9e730a41461063b578063eaf98d231461064e578063f2fde38b14610657578063f2ff2abd1461066a57600080fd5b8063b135bbb0146105a6578063b8892539146105af578063cec9777c146105c2578063d6e99e82146105d5578063df3c66de146105f557600080fd5b8063a1d480941161010a578063a1d480941461053a578063a2f77bcc1461055a578063a38d6b0d1461056d578063ad3b1b4714610580578063ae5ab4711461059357600080fd5b8063715018a6146104f15780637c4304ff146104f95780638da5cb5b1461050c578063946d920414610514578063958746311461052757600080fd5b80633a51f383116101df57806350928ba4116101a357806350928ba4146104545780635132faca1461047857806365833f681461048b57806369958ab9146104ab5780636cc5f3ad146104be5780636ffec293146104de57600080fd5b80633a51f383146103e95780633b356bbb146103fe5780633d6ae3a71461040c5780634b13ab70146104165780634ca38d4a1461042957600080fd5b806322257d2f1161022657806322257d2f1461037957806327713536146103995780632a628e83146103ac57806330d52053146103bf57806339c73133146103c857600080fd5b80630bb79aa714610263578063117a5b901461027e578063151ee1221461033157806319a3c0091461034657806319d1dc7e14610366575b600080fd5b61026b600581565b6040519081526020015b60405180910390f35b61031761028c3660046148c1565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460099097015495969495939492936001600160a01b038084169463ffffffff600160a01b9586900481169585841695819004821694938316939204169060ff80821691610100810482169162010000909104168e565b6040516102759e9d9c9b9a9998979695949392919061491d565b61034461033f366004614ae0565b61067d565b005b610359610354366004614c5a565b61069c565b6040516102759190614e02565b610344610374366004614e15565b610f75565b61026b610387366004614ec5565b60066020526000908152604090205481565b6103446103a7366004614ae0565b610fb6565b6103446103ba3660046148c1565b610fd1565b61026b6101f481565b6103db6103d6366004614ef9565b6112a8565b604051610275929190615008565b6103f1611320565b604051610275919061502a565b61026b662386f26fc1000081565b61026b6203f48081565b61026b6104243660046148c1565b611382565b61043c6104373660046148c1565b6113a3565b6040516001600160a01b039091168152602001610275565b60095461046890600160a01b900460ff1681565b6040519015158152602001610275565b60085461043c906001600160a01b031681565b61049e610499366004615077565b6113cd565b60405161027591906150a3565b6103446104b93660046148c1565b61165a565b6104d16104cc366004615111565b611893565b6040516102759190615145565b6103446104ec3660046151b5565b6119d3565b6103446119f9565b610344610507366004615077565b611a0d565b61043c611bde565b6103446105223660046151d2565b611c0c565b61043c6105353660046148c1565b611d6d565b61026b610548366004614ec5565b60056020526000908152604090205481565b6103596105683660046148c1565b611d7d565b600b5461043c906001600160a01b031681565b61034461058e366004615077565b611f7e565b61049e6105a1366004615221565b61208d565b61026b60005481565b6103596105bd3660046148c1565b612114565b6103446105d0366004614ec5565b6124eb565b6105e86105e3366004615077565b612515565b6040516102759190615299565b61035961060336600461530d565b6128ef565b610359610616366004615398565b612e33565b61062e610629366004615441565b61345a565b6040516102759190615497565b61049e610649366004614ef9565b613567565b61026b61019081565b610344610665366004614ec5565b613647565b6103446106783660046148c1565b613685565b610685613709565b805161069890600a9060208401906147a6565b5050565b6106a461480b565b8151600081815260016020526040812060050154600160a01b900463ffffffff1690036106ec5760405162461bcd60e51b81526004016106e3906154aa565b60405180910390fd5b82516001600082815260016020526040902060090154610100900460ff16600381111561071b5761071b6148da565b146107605760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106e3565b83516040808601516020808801519251600093600293610782939092016154d7565b60408051601f198184030181529082905261079c91615527565b602060405180830381855afa1580156107b9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107dc9190615543565b600083815260016020526040902060040154909150811461082f5760405162461bcd60e51b815260206004820152600d60248201526c090c2e6d040dad2e6dac2e8c6d609b1b60448201526064016106e3565b6000808760400151516005146108815760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106e3565b600084815260026020526040812054905b6005811015610aa05760008a6040015182815181106108b3576108b361555c565b602002602001015160038111156108cc576108cc6148da565b036109115760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106e3565b61094c826000838d60400151858151811061092e5761092e61555c565b60200260200101516003811115610947576109476148da565b61373b565b915060008a6040015182815181106109665761096661555c565b60200260200101519050600061097e846001856137e1565b60ff166003811115610992576109926148da565b90508060038111156109a6576109a66148da565b8260038111156109b8576109b86148da565b036109c4575050610a8e565b60018260038111156109d8576109d86148da565b1480156109f6575060038160038111156109f4576109f46148da565b145b80610a2e57506002826003811115610a1057610a106148da565b148015610a2e57506001816003811115610a2c57610a2c6148da565b145b80610a6657506003826003811115610a4857610a486148da565b148015610a6657506002816003811115610a6457610a646148da565b145b15610a7d5785610a7581615588565b965050610a8b565b84610a8781615588565b9550505b50505b80610a9881615588565b915050610892565b506000858152600260205260409020819055818303610ade576000858152600160205260409020600901805462ff0000191662030000179055610b24565b818311610aec576002610aef565b60015b6000868152600160205260409020600901805462ff0000191662010000836004811115610b1e57610b1e6148da565b02179055505b600085815260016020526040902060078101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff001981166102001790915560ff1615610bcc576000858152600160208190526040909120600581015490820154610b9b926001600160a01b039092169161381a565b60008581526001602081905260409091206006810154600290910154610bcc926001600160a01b039092169161381a565b600160008681526001602052604090206009015462010000900460ff166004811115610bfa57610bfa6148da565b03610c58576000858152600160208190526040909120600581015491810154600390910154610c53926001600160a01b03169190610c399060026155a1565b60008981526001602052604090206009015460ff1661388f565b610d3d565b600260008681526001602052604090206009015462010000900460ff166004811115610c8657610c866148da565b03610cc55760008581526001602052604090206006810154600280830154600390930154610c53936001600160a01b039093169291610c3991906155a1565b60008581526001602081905260409091206005810154918101546003820154600990920154610d01936001600160a01b0316929060ff1661388f565b6000858152600160205260409020600681015460028201546003830154600990930154610d3d936001600160a01b03909316929060ff1661388f565b60008581526001602052604090206009015462010000900460ff166004811115610d6957610d696148da565b60405186907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600085815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b82821015610ee557600084815260209020604080518082019091529083018054829060ff166003811115610e8d57610e8d6148da565b6003811115610e9e57610e9e6148da565b81528154602090910190610100900460ff166003811115610ec157610ec16148da565b6003811115610ed257610ed26148da565b8152505081526020019060010190610e57565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115610f1b57610f1b6148da565b6003811115610f2c57610f2c6148da565b81526020016009820160029054906101000a900460ff166004811115610f5457610f546148da565b6004811115610f6557610f656148da565b9052509998505050505050505050565b60005b815181101561069857610fa3828281518110610f9657610f9661555c565b602002602001015161069c565b5080610fae81615588565b915050610f78565b610fbe613709565b80516106989060079060208401906147a6565b6000818152600160205260408120600501548291600160a01b90910463ffffffff1690036110115760405162461bcd60e51b81526004016106e3906154aa565b611019613709565b6002600083815260016020526040902060090154610100900460ff166003811115611046576110466148da565b106110935760405162461bcd60e51b815260206004820152601a60248201527f47616d6520636f6d706c657465206f722063616e63656c6c656400000000000060448201526064016106e3565b600954600083815260016020819052604090912060058101549101546001600160a01b039283169263a9059cbb926110cd9291169061399b565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f91906155b8565b506001600083815260016020526040902060090154610100900460ff16600381111561117d5761117d6148da565b0361124057600954600083815260016020526040902060068101546002909101546001600160a01b039283169263a9059cbb926111bc9291169061399b565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906155b8565b505b600082815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166112795761127982613a11565b60405182907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a25050565b60045460609060009081036112f45760408051600080825260208201909252906112e8565b6112d5614885565b8152602001906001900390816112cd5790505b50600091509150611319565b61131061130b6113046004613ac9565b868661345a565b613b86565b60045490925090505b9250929050565b6060600780548060200260200160405190810160405280929190818152602001828054801561137857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161135a575b5050505050905090565b6004818154811061139257600080fd5b600091825260209091200154905081565b600781815481106113b357600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0382166000908152600360209081526040808320848452825280832080548251818502810185019093528083526060949383018282801561143457602002820191906000526020600020905b815481526020019060010190808311611420575b5050505050905060008080600090505b83518110156115025783818151811061145f5761145f61555c565b602002602001015191506000600381111561147c5761147c6148da565b600083815260016020526040902060090154610100900460ff1660038111156114a7576114a76148da565b14806114dd57506001600083815260016020526040902060090154610100900460ff1660038111156114db576114db6148da565b145b156114f057826114ec81615588565b9350505b806114fa81615588565b915050611444565b506000826001600160401b0381111561151d5761151d6149c6565b604051908082528060200260200182016040528015611546578160200160208202803683370190505b5090506000805b8551811015611642578581815181106115685761156861555c565b6020026020010151935060006003811115611585576115856148da565b600085815260016020526040902060090154610100900460ff1660038111156115b0576115b06148da565b14806115e657506001600085815260016020526040902060090154610100900460ff1660038111156115e4576115e46148da565b145b15611630578581815181106115fd576115fd61555c565b60200260200101518383815181106116175761161761555c565b60209081029190910101528161162c81615588565b9250505b8061163a81615588565b91505061154d565b5061164c82613b86565b955050505050505b92915050565b6000818152600160205260408120600501548291600160a01b90910463ffffffff16900361169a5760405162461bcd60e51b81526004016106e3906154aa565b8160008082815260016020526040902060090154610100900460ff1660038111156116c7576116c76148da565b1461170f5760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106e3565b60008381526001602081905260409091206005810154910154339161173f916001600160a01b039091169061399b565b6001600160a01b0316146117955760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f74207468652067616d65206f776e657200000000000060448201526064016106e3565b6009546001600160a01b031663a9059cbb336000868152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182991906155b8565b50600083815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166118635761186383613a11565b60405183907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a2505050565b6060600082516001600160401b038111156118b0576118b06149c6565b6040519080825280602002602001820160405280156118e957816020015b6118d661480b565b8152602001906001900390816118ce5790505b50905060005b83518110156119cc5761191a84828151811061190d5761190d61555c565b6020026020010151611d7d565b82828151811061192c5761192c61555c565b60200260200101819052508181815181106119495761194961555c565b602002602001015160c0015163ffffffff166000036119ba576119848482815181106119775761197761555c565b6020026020010151613fb0565b60405160200161199491906155d5565b60408051601f198184030181529082905262461bcd60e51b82526106e39160040161561e565b806119c481615588565b9150506118ef565b5092915050565b6119db613709565b60098054911515600160a01b0260ff60a01b19909216919091179055565b611a01613709565b611a0b6000614042565b565b611a77600a805480602002602001604051908101604052809291908181526020018280548015611a6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a48575b5050505050611a723390565b6140b3565b80611a91575033611a86611bde565b6001600160a01b0316145b611ace5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016106e3565b6008546001600160a01b0316600090815260066020526040902054811115611b335760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106e3565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa91906155b8565b506008546001600160a01b031660009081526006602052604081208054839290611bd5908490615631565b90915550505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611c515750825b90506000826001600160401b03166001148015611c6d5750303b155b905081158015611c7b575080155b15611c995760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611cc357845460ff60401b1916600160401b1785555b600880546001600160a01b0389166001600160a01b031991821681179092556009805490911690911790558551611d019060079060208901906147a6565b506009805460ff60a01b1916600160a01b179055611d1e33614118565b8315611d6457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600a81815481106113b357600080fd5b611d8561480b565b600082815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e0890152839004811661010088015260078401549182166101208801529190041661014085015260088101805483518186028101860190945280845291936101608601939290879084015b82821015611ed457600084815260209020604080518082019091529083018054829060ff166003811115611e7c57611e7c6148da565b6003811115611e8d57611e8d6148da565b81528154602090910190610100900460ff166003811115611eb057611eb06148da565b6003811115611ec157611ec16148da565b8152505081526020019060010190611e46565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115611f0a57611f0a6148da565b6003811115611f1b57611f1b6148da565b81526020016009820160029054906101000a900460ff166004811115611f4357611f436148da565b6004811115611f5457611f546148da565b905250600084815260026020526040902054909150611f7290614129565b61016082015292915050565b611f86613709565b6008546001600160a01b0316600090815260056020526040902054811115611feb5760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106e3565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561203e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206291906155b8565b506008546001600160a01b031660009081526005602052604081208054839290611bd5908490615631565b6001600160a01b0384166000908152600360209081526040808320868452825291829020805483518184028101840190945280845260609361210b9361130b939192908301828280156120ff57602002820191906000526020600020905b8154815260200190600101908083116120eb575b5050505050858561345a565b95945050505050565b61211c61480b565b6000828152600160205260408120600501548391600160a01b90910463ffffffff16900361215c5760405162461bcd60e51b81526004016106e3906154aa565b826001600082815260016020526040902060090154610100900460ff16600381111561218a5761218a6148da565b146121cf5760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106e3565b6000848152600160205260409020600601546121fc906203f48090600160a01b900463ffffffff16615644565b421161224a5760405162461bcd60e51b815260206004820152601a60248201527f52657665616c2074696d656f7574206e6f74206578706972656400000000000060448201526064016106e3565b6000848152600160205260409020600681015460028083015460039093015461229e936001600160a01b03909316929161228491906155a1565b60008881526001602052604090206009015460ff1661388f565b600084815260016020819052604090912060098101805462ffff0019166204020017905560068101546002909101546122e2926001600160a01b039092169161381a565b600460405185907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561246057600084815260209020604080518082019091529083018054829060ff166003811115612408576124086148da565b6003811115612419576124196148da565b81528154602090910190610100900460ff16600381111561243c5761243c6148da565b600381111561244d5761244d6148da565b81525050815260200190600101906123d2565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115612496576124966148da565b60038111156124a7576124a76148da565b81526020016009820160029054906101000a900460ff1660048111156124cf576124cf6148da565b60048111156124e0576124e06148da565b905250949350505050565b6124f3613709565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6125646040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b600b5460405163097dbef760e31b81526001600160a01b03858116600483015260248201859052909116906000908290634bedf7b890604401600060405180830381865afa1580156125ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125e29190810190615657565b60408051610120810182526001600160a01b0388166000908152600360209081528382208983528152838220548352808301829052828401829052606083018290526080830182905260a08301829052845160c084015284015160e0830152918301516101008201529192505b6001600160a01b03871660009081526003602090815260408083208984529091529020548110156128e5576001600160a01b038716600090815260036020908152604080832089845290915281208054839081106126af576126af61555c565b60009182526020909120015490506002600082815260016020526040902060090154610100900460ff1660038111156126ea576126ea6148da565b146126f557506128d3565b600081815260016020526040812060038101546009909101548291829161271f919060ff1661421f565b91945092509050600360008581526001602052604090206009015462010000900460ff166004811115612754576127546148da565b0361278f576060860180519061276982615588565b9052506127768183615644565b8660a001818151612787919061572d565b9052506128b0565b600084815260016020819052604090912001548a148080156127dc5750600160008681526001602052604090206009015462010000900460ff1660048111156127da576127da6148da565b145b8061281c57508015801561281c5750600160008681526001602052604090206009015462010000900460ff166004811115612819576128196148da565b14155b15612874576020870180519061283182615588565b9052506000858152600160205260409020600301546128518560026155a1565b61285b9190615631565b8760a00181815161286c919061574d565b9052506128ae565b6040870180519061288482615588565b90525060008581526001602052604090206003015460a0880180516128aa90839061572d565b9052505b505b6128ba8183615644565b866080018181516128cb9190615644565b905250505050505b806128dd81615588565b91505061264f565b5095945050505050565b6128f761480b565b600954600160a01b900460ff166129505760405162461bcd60e51b815260206004820152601760248201527f47616d65206372656174696f6e2069732070617573656400000000000000000060448201526064016106e3565b815161295b90614282565b6129b55760405162461bcd60e51b815260206004820152602560248201527f43726561746f72204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106e3565b60006129c98360000151846020015161399b565b90506129d4816142e6565b60408301516001600160a01b031615612a70576129f48360400151614282565b612a4e5760405162461bcd60e51b815260206004820152602560248201527f496e7669746564204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106e3565b6000612a628460400151856060015161399b565b9050612a6e8282614335565b505b662386f26fc100008360a001511015612ac35760405162461bcd60e51b8152602060048201526015602482015274135a5b9a5b5d5b481cdd185ad9481b9bdd081b595d605a1b60448201526064016106e3565b612ad08360a0015161438e565b600080548082526001602081815260409384902083815587516005820180546001600160a01b0319166001600160a01b03928316179055918801519201919091559185015190911615612b5f5760408481015160008381526001602052919091206006810180546001600160a01b0319166001600160a01b039093169290921790915560608501516002909101555b6080840151600082815260016020526040812060048101929092556008546007830180546001600160a01b0319166001600160a01b0390921691909117905560a086015160038301556005909101805463ffffffff4216600160a01b0263ffffffff60a01b1990911617905580549080612bd883615588565b909155505083516001600160a01b0390811660009081526003602090815260408083208289015184528252808320805460018101825590845291909220018390558501511615612c63576040808501516001600160a01b0316600090815260036020908152828220606088015183528152918120805460018101825590825291902001819055612cb2565b60008181526001602081905260408220600901805460ff1916821790556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018190555b608084015160405182907fe0eb15f8324648c97893a63e725995febbf40c5ed00da9249b0b1ea5173796f790600090a3600081815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561246057600084815260209020604080518082019091529083018054829060ff166003811115612ddb57612ddb6148da565b6003811115612dec57612dec6148da565b81528154602090910190610100900460ff166003811115612e0f57612e0f6148da565b6003811115612e2057612e206148da565b8152505081526020019060010190612da5565b612e3b61480b565b8151600081815260016020526040812060050154600160a01b900463ffffffff169003612e7a5760405162461bcd60e51b81526004016106e3906154aa565b825160008082815260016020526040902060090154610100900460ff166003811115612ea857612ea86148da565b14612ef05760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106e3565b8351600081815260016020819052604082206005810154910154612f1d916001600160a01b03169061399b565b90506000612f338760200151886040015161399b565b9050612f3e816142e6565b612f488282614335565b6000838152600160205260409020600601546001600160a01b03161561300d57602080880151600085815260019092526040909120600601546001600160a01b039081169116148015612fb05750604080880151600085815260016020529190912060020154145b6130085760405162461bcd60e51b815260206004820152602360248201527f596f7572206e6f742074686520696e766974656520666f72207468697320676160448201526236b29760e91b60648201526084016106e3565b6130e9565b61301a8760200151614282565b6130755760405162461bcd60e51b815260206004820152602660248201527f537570706c696564204e465420636f6c6c656374696f6e206973206e6f7420616044820152651b1b1bddd95960d21b60648201526084016106e3565b602087810180516000868152600180855260408083206006810180546001600160a01b0319166001600160a01b03968716179055818e01805160029092019190915594519093168252600385528282209351825292845290812080549283018155815291909120018390556130e983613a11565b6000838152600160205260409020600301546131049061438e565b8660600151516005146131535760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106e3565b6000805b6005811015613207576000896060015182815181106131785761317861555c565b60200260200101516003811115613191576131916148da565b036131d65760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106e3565b6131f3826001838c60600151858151811061092e5761092e61555c565b9150806131ff81615588565b915050613157565b506000848152600260209081526040808320849055600190915280822060068101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff0019166101001790555185917f5f8e2556f053753c316c48a4cc3bb582c792a32d588cac9e7cf1f7c9be538bdb91a2600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b828210156133cb57600084815260209020604080518082019091529083018054829060ff166003811115613373576133736148da565b6003811115613384576133846148da565b81528154602090910190610100900460ff1660038111156133a7576133a76148da565b60038111156133b8576133b86148da565b815250508152602001906001019061333d565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115613401576134016148da565b6003811115613412576134126148da565b81526020016009820160029054906101000a900460ff16600481111561343a5761343a6148da565b600481111561344b5761344b6148da565b90525098975050505050505050565b6060835160000361346c575082613560565b60008385511161347d576000613497565b6134978361ffff168587516134929190615631565b6144e7565b90506000816001600160401b038111156134b3576134b36149c6565b6040519080825280602002602001820160405280156134dc578160200160208202803683370190505b5080519091501561355c5760008587516134f69190615631565b905060005b83811015613559578161350d81615775565b9250508782815181106135225761352261555c565b602002602001015183828151811061353c5761353c61555c565b60209081029190910101528061355181615588565b9150506134fb565b50505b9150505b9392505050565b60606000836000541161357b576000613591565b6135918361ffff16856000546134929190615631565b90506000816001600160401b038111156135ad576135ad6149c6565b6040519080825280602002602001820160405280156135d6578160200160208202803683370190505b5080519091501561363e576000856000546135f19190615631565b905060005b8381101561363b578161360881615775565b9250508183828151811061361e5761361e61555c565b60209081029190910101528061363381615588565b9150506135f6565b50505b61210b81613b86565b61364f613709565b6001600160a01b03811661367957604051631e4fbdf760e01b8152600060048201526024016106e3565b61368281614042565b50565b61368d613709565b6003600082815260016020526040902060090154610100900460ff1660038111156136ba576136ba6148da565b146137005760405162461bcd60e51b815260206004820152601660248201527511d85b59481b5d5cdd0818994818d85b98d95b1b195960521b60448201526064016106e3565b61368281613a11565b33613712611bde565b6001600160a01b031614611a0b5760405163118cdaa760e01b81523360048201526024016106e3565b60006004821061377c5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206d6f766560a01b60448201526064016106e3565b831561378957608061378c565b60005b60ff1661379a8460026155a1565b6137a49190615644565b6003901b198516905083156137ba5760806137bd565b60005b60ff166137cb8460026155a1565b6137d59190615644565b9190911b179392505050565b600082156137f05760806137f3565b60005b60ff166138018360026155a1565b61380b9190615644565b84901c60031690509392505050565b600b54604051635618f6ff60e01b81526001600160a01b0385811660048301526024820185905260448201849052909116908190635618f6ff90606401600060405180830381600087803b15801561387157600080fd5b505af1158015613885573d6000803e3d6000fd5b5050505050505050565b600061389b858561399b565b905060008060006138ac868661421f565b6008546001600160a01b03166000908152600560205260408120805494975092955090935083926138de908490615644565b90915550508415613919576008546001600160a01b031660009081526006602052604081208054849290613913908490615644565b90915550505b60095460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af115801561396c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399091906155b8565b505050505050505050565b6040516331a9108f60e11b81526004810182905260009083906001600160a01b03821690636352211e90602401602060405180830381865afa1580156139e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a09919061578c565b949350505050565b60005b6004548110156106985760048181548110613a3157613a3161555c565b90600052602060002001548203613ab75760048054613a5290600190615631565b81548110613a6257613a6261555c565b906000526020600020015460048281548110613a8057613a8061555c565b6000918252602090912001556004805480613a9d57613a9d6157a9565b600190038181906000526020600020016000905590555050565b80613ac181615588565b915050613a14565b80546060906000906001600160401b03811115613ae857613ae86149c6565b604051908082528060200260200182016040528015613b11578160200160208202803683370190505b50905060005b8354811015613b6c57838181548110613b3257613b3261555c565b9060005260206000200154828281518110613b4f57613b4f61555c565b602090810291909101015280613b6481615588565b915050613b17565b5061165481600060018451613b819190615631565b6144fd565b6060600082516001600160401b03811115613ba357613ba36149c6565b604051908082528060200260200182016040528015613bdc57816020015b613bc9614885565b815260200190600190039081613bc15790505b5090508051600003613bee5792915050565b613bf661480b565b60005b8451811015613fa7576000858281518110613c1657613c1661555c565b60209081029190910181015160008181526001808452604080832081516101e081018352815481529281015483870152600281015483830152600381015460608401526004810154608084015260058101546001600160a01b0380821660a086015263ffffffff600160a01b92839004811660c0870152600684015480831660e0880152839004811661010087015260078401549182166101208701529190041661014084015260088101805483518189028101890190945280845295975092959094610160870194929392909184015b82821015613d7557600084815260209020604080518082019091529083018054829060ff166003811115613d1d57613d1d6148da565b6003811115613d2e57613d2e6148da565b81528154602090910190610100900460ff166003811115613d5157613d516148da565b6003811115613d6257613d626148da565b8152505081526020019060010190613ce7565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115613dab57613dab6148da565b6003811115613dbc57613dbc6148da565b81526020016009820160029054906101000a900460ff166004811115613de457613de46148da565b6004811115613df557613df56148da565b905250600082815260026020526040902054909350613e1390614129565b61016084015260408051606081018252848152600083815260016020818152918490206005810154910154935163c87b56dd60e01b815260048101949094529192908301916001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613e88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613eb091908101906157bf565b81526000838152600160209081526040909120600601549101906001600160a01b0316613eec5760405180602001604052806000815250613f73565b600083815260016020526040908190206006810154600290910154915163c87b56dd60e01b815260048101929092526001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f7391908101906157bf565b815250848381518110613f8857613f8861555c565b6020026020010181905250508080613f9f90615588565b915050613bf9565b50909392505050565b60606000613fbd8361467d565b60010190506000816001600160401b03811115613fdc57613fdc6149c6565b6040519080825280601f01601f191660200182016040528015614006576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461401057509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000805b835181101561410e57826001600160a01b03168482815181106140dc576140dc61555c565b60200260200101516001600160a01b0316036140fc576001915050611654565b8061410681615588565b9150506140b7565b5060009392505050565b614120614755565b6136828161479e565b60408051600580825260c0820190925260609160009190816020015b604080518082019091526000808252602082015281526020019060019003908161414557905050905060005b60058110156119cc576040518060400160405280614191866000856137e1565b60ff1660038111156141a5576141a56148da565b60038111156141b6576141b66148da565b81526020016141c7866001856137e1565b60ff1660038111156141db576141db6148da565b60038111156141ec576141ec6148da565b8152508282815181106142015761420161555c565b6020026020010181905250808061421790615588565b915050614171565b60008080612710614232610190876155a1565b61423c9190615842565b90508361424a576000614263565b6127106142596101f4876155a1565b6142639190615842565b915061426f8282615644565b6142799086615631565b92509250925092565b6000805b6007548110156142dd57600781815481106142a3576142a361555c565b6000918252602090912001546001600160a01b03908116908416036142cb5750600192915050565b806142d581615588565b915050614286565b50600092915050565b6001600160a01b03811633146136825760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016106e3565b806001600160a01b0316826001600160a01b0316036106985760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba10383630bc9037bbb7103a37b5b2b760591b60448201526064016106e3565b60095481906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156143ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144109190615543565b101561445e5760405162461bcd60e51b815260206004820181905260248201527f4552432d323020616c6c6f77616e636520697320696e73756666696369656e7460448201526064016106e3565b6009546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af11580156144c3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069891906155b8565b60008183106144f65781613560565b5090919050565b818180820361450d575050505050565b600085600261451c878761572d565b6145269190615856565b614530908761574d565b815181106145405761454061555c565b602002602001015190505b81831361464f575b808684815181106145665761456661555c565b60200260200101511015614586578261457e81615884565b935050614553565b8582815181106145985761459861555c565b60200260200101518110156145b957816145b18161589c565b925050614586565b81831361464a578582815181106145d2576145d261555c565b60200260200101518684815181106145ec576145ec61555c565b60200260200101518785815181106146065761460661555c565b6020026020010188858151811061461f5761461f61555c565b6020908102919091010191909152528261463881615884565b93505081806146469061589c565b9250505b61454b565b81851215614662576146628686846144fd565b83831215614675576146758684866144fd565b505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106146bc5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106146e8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061470657662386f26fc10000830492506010015b6305f5e100831061471e576305f5e100830492506008015b612710831061473257612710830492506004015b60648310614744576064830492506002015b600a83106116545760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a0b57604051631afcd79f60e31b815260040160405180910390fd5b61364f614755565b8280548282559060005260206000209081019282156147fb579160200282015b828111156147fb57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147c6565b506148079291506148ac565b5090565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820183905261014082018390526101608201526101808101829052906101a082019081526020016000905290565b604051806060016040528061489861480b565b815260200160608152602001606081525090565b5b8082111561480757600081556001016148ad565b6000602082840312156148d357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110613682576136826148da565b614909816148f0565b9052565b60058110614909576149096148da565b8e8152602081018e9052604081018d9052606081018c9052608081018b90526001600160a01b038a811660a083015263ffffffff8a1660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b03871661012083015263ffffffff86166101408301528415156101608301526149a5610180830185614900565b6149b36101a083018461490d565b9f9e505050505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156149fe576149fe6149c6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614a2c57614a2c6149c6565b604052919050565b60006001600160401b03821115614a4d57614a4d6149c6565b5060051b60200190565b6001600160a01b038116811461368257600080fd5b600082601f830112614a7d57600080fd5b81356020614a92614a8d83614a34565b614a04565b82815260059290921b84018101918181019086841115614ab157600080fd5b8286015b84811015614ad5578035614ac881614a57565b8352918301918301614ab5565b509695505050505050565b600060208284031215614af257600080fd5b81356001600160401b03811115614b0857600080fd5b613a0984828501614a6c565b60006001600160401b03821115614b2d57614b2d6149c6565b50601f01601f191660200190565b600082601f830112614b4c57600080fd5b81356020614b5c614a8d83614a34565b82815260059290921b84018101918181019086841115614b7b57600080fd5b8286015b84811015614ad557803560048110614b975760008081fd5b8352918301918301614b7f565b600060608284031215614bb657600080fd5b614bbe6149dc565b9050813581526020808301356001600160401b0380821115614bdf57600080fd5b818501915085601f830112614bf357600080fd5b8135614c01614a8d82614b14565b8181528785838601011115614c1557600080fd5b81858501868301376000858383010152808587015250506040850135925080831115614c4057600080fd5b5050614c4e84828501614b3b565b60408301525092915050565b600060208284031215614c6c57600080fd5b81356001600160401b03811115614c8257600080fd5b613a0984828501614ba4565b600081518084526020808501945080840160005b83811015614cdb5781518051614cb7816148f0565b8852830151614cc5816148f0565b8784015260409096019590820190600101614ca2565b509495945050505050565b60006101e0825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a0830151614d3160a08601826001600160a01b03169052565b5060c0830151614d4960c086018263ffffffff169052565b5060e0830151614d6460e08601826001600160a01b03169052565b506101008381015163ffffffff90811691860191909152610120808501516001600160a01b031690860152610140808501519091169085015261016080840151818601839052614db683870182614c8e565b9250505061018080840151614dce8287018215159052565b50506101a080840151614de382870182614900565b50506101c080840151614df88287018261490d565b5090949350505050565b6020815260006135606020830184614ce6565b60006020808385031215614e2857600080fd5b82356001600160401b0380821115614e3f57600080fd5b818501915085601f830112614e5357600080fd5b8135614e61614a8d82614a34565b81815260059190911b83018401908481019088831115614e8057600080fd5b8585015b83811015614eb857803585811115614e9c5760008081fd5b614eaa8b89838a0101614ba4565b845250918601918601614e84565b5098975050505050505050565b600060208284031215614ed757600080fd5b813561356081614a57565b803561ffff81168114614ef457600080fd5b919050565b60008060408385031215614f0c57600080fd5b82359150614f1c60208401614ee2565b90509250929050565b60005b83811015614f40578181015183820152602001614f28565b50506000910152565b60008151808452614f61816020860160208601614f25565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015614ffb578383038952815160608151818652614fb282870182614ce6565b9150508682015185820388870152614fca8282614f49565b91505060408083015192508582038187015250614fe78183614f49565b9a87019a9450505090840190600101614f90565b5090979650505050505050565b60408152600061501b6040830185614f75565b90508260208301529392505050565b6020808252825182820181905260009190848201906040850190845b8181101561506b5783516001600160a01b031683529284019291840191600101615046565b50909695505050505050565b6000806040838503121561508a57600080fd5b823561509581614a57565b946020939093013593505050565b6020815260006135606020830184614f75565b600082601f8301126150c757600080fd5b813560206150d7614a8d83614a34565b82815260059290921b840181019181810190868411156150f657600080fd5b8286015b84811015614ad557803583529183019183016150fa565b60006020828403121561512357600080fd5b81356001600160401b0381111561513957600080fd5b613a09848285016150b6565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561519a57603f19888603018452615188858351614ce6565b9450928501929085019060010161516c565b5092979650505050505050565b801515811461368257600080fd5b6000602082840312156151c757600080fd5b8135613560816151a7565b600080604083850312156151e557600080fd5b82356151f081614a57565b915060208301356001600160401b0381111561520b57600080fd5b61521785828601614a6c565b9150509250929050565b6000806000806080858703121561523757600080fd5b843561524281614a57565b9350602085013592506040850135915061525e60608601614ee2565b905092959194509250565b600081518084526020808501945080840160005b83811015614cdb5781518752958201959082019060010161527d565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260c082015160e0820152600060e0830151610100818185015280850151915050610120808185015250613a09610140840182615269565b600060c0828403121561531f57600080fd5b60405160c081018181106001600160401b0382111715615341576153416149c6565b604052823561534f81614a57565b815260208381013590820152604083013561536981614a57565b80604083015250606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156153aa57600080fd5b81356001600160401b03808211156153c157600080fd5b90830190608082860312156153d557600080fd5b6040516080810181811083821117156153f0576153f06149c6565b60405282358152602083013561540581614a57565b60208201526040838101359082015260608301358281111561542657600080fd5b61543287828601614b3b565b60608301525095945050505050565b60008060006060848603121561545657600080fd5b83356001600160401b0381111561546c57600080fd5b615478868287016150b6565b9350506020840135915061548e60408501614ee2565b90509250925092565b6020815260006135606020830184615269565b60208082526013908201527211d85b5948191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b825160009082906020808701845b8381101561550a5781516154f8816148f0565b855293820193908201906001016154e5565b50508551915061551d8284838901614f25565b5001949350505050565b60008251615539818460208701614f25565b9190910192915050565b60006020828403121561555557600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161559a5761559a615572565b5060010190565b808202811582820484141761165457611654615572565b6000602082840312156155ca57600080fd5b8151613560816151a7565b67023b0b6b29024a2160c51b8152600082516155f8816008850160208701614f25565b6e08191bd95cc81b9bdd08195e1a5cdd608a1b6008939091019283015250601701919050565b6020815260006135606020830184614f49565b8181038181111561165457611654615572565b8082018082111561165457611654615572565b6000602080838503121561566a57600080fd5b82516001600160401b038082111561568157600080fd5b908401906060828703121561569557600080fd5b61569d6149dc565b8251815283830151848201526040830151828111156156bb57600080fd5b80840193505086601f8401126156d057600080fd5b825191506156e0614a8d83614a34565b82815260059290921b830184019184810190888411156156ff57600080fd5b938501935b8385101561571d57845182529385019390850190615704565b6040830152509695505050505050565b81810360008312801583831316838312821617156119cc576119cc615572565b808201828112600083128015821682158216171561576d5761576d615572565b505092915050565b60008161578457615784615572565b506000190190565b60006020828403121561579e57600080fd5b815161356081614a57565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156157d157600080fd5b81516001600160401b038111156157e757600080fd5b8201601f810184136157f857600080fd5b8051615806614a8d82614b14565b81815285602083850101111561581b57600080fd5b61210b826020830160208601614f25565b634e487b7160e01b600052601260045260246000fd5b6000826158515761585161582c565b500490565b6000826158655761586561582c565b600160ff1b82146000198414161561587f5761587f615572565b500590565b60006001600160ff1b01820161559a5761559a615572565b6000600160ff1b82016157845761578461557256fea26469706673582212207d2766c32ece4a931a629e883210e67f20028b4c083990a773e24f4d1159a45d64736f6c63430008140033