0 txs
0 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 limit)
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
0x608060405234801561001057600080fd5b5061592780620000216000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c8063715018a611610146578063b135bbb0116100c3578063e752b79311610087578063e752b79314610608578063e96f81aa1461061b578063e9e730a41461063b578063eaf98d231461064e578063f2fde38b14610657578063f2ff2abd1461066a57600080fd5b8063b135bbb0146105a6578063b8892539146105af578063cec9777c146105c2578063d6e99e82146105d5578063df3c66de146105f557600080fd5b8063a1d480941161010a578063a1d480941461053a578063a2f77bcc1461055a578063a38d6b0d1461056d578063ad3b1b4714610580578063ae5ab4711461059357600080fd5b8063715018a6146104f15780637c4304ff146104f95780638da5cb5b1461050c578063946d920414610514578063958746311461052757600080fd5b80633a51f383116101df57806350928ba4116101a357806350928ba4146104545780635132faca1461047857806365833f681461048b57806369958ab9146104ab5780636cc5f3ad146104be5780636ffec293146104de57600080fd5b80633a51f383146103e95780633b356bbb146103fe5780633d6ae3a71461040c5780634b13ab70146104165780634ca38d4a1461042957600080fd5b806322257d2f1161022657806322257d2f1461037957806327713536146103995780632a628e83146103ac57806330d52053146103bf57806339c73133146103c857600080fd5b80630bb79aa714610263578063117a5b901461027e578063151ee1221461033157806319a3c0091461034657806319d1dc7e14610366575b600080fd5b61026b600581565b6040519081526020015b60405180910390f35b61031761028c3660046148fe565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460099097015495969495939492936001600160a01b038084169463ffffffff600160a01b9586900481169585841695819004821694938316939204169060ff80821691610100810482169162010000909104168e565b6040516102759e9d9c9b9a9998979695949392919061495a565b61034461033f366004614b1d565b61067d565b005b610359610354366004614c97565b61069c565b6040516102759190614e3f565b610344610374366004614e52565b610f75565b61026b610387366004614f02565b60066020526000908152604090205481565b6103446103a7366004614b1d565b610fb6565b6103446103ba3660046148fe565b610fd1565b61026b6101f481565b6103db6103d6366004614f36565b6112a8565b604051610275929190615048565b6103f1611320565b604051610275919061506a565b61026b662386f26fc1000081565b61026b6203f48081565b61026b6104243660046148fe565b611382565b61043c6104373660046148fe565b6113a3565b6040516001600160a01b039091168152602001610275565b60095461046890600160a01b900460ff1681565b6040519015158152602001610275565b60085461043c906001600160a01b031681565b61049e6104993660046150b7565b6113cd565b60405161027591906150e3565b6103446104b93660046148fe565b61165a565b6104d16104cc366004615151565b611893565b6040516102759190615185565b6103446104ec3660046151f5565b6119d3565b6103446119f9565b6103446105073660046150b7565b611a0d565b61043c611bde565b610344610522366004615212565b611c0c565b61043c6105353660046148fe565b611d6d565b61026b610548366004614f02565b60056020526000908152604090205481565b6103596105683660046148fe565b611d7d565b600b5461043c906001600160a01b031681565b61034461058e3660046150b7565b611f7e565b61049e6105a1366004615261565b61208d565b61026b60005481565b6103596105bd3660046148fe565b612114565b6103446105d0366004614f02565b6124eb565b6105e86105e33660046150b7565b612515565b60405161027591906152d9565b61035961060336600461534d565b6128ef565b6103596106163660046153d8565b612e33565b61062e610629366004615481565b61345a565b60405161027591906154d7565b61049e610649366004614f36565b613567565b61026b61019081565b610344610665366004614f02565b613647565b6103446106783660046148fe565b613685565b610685613746565b805161069890600a9060208401906147e3565b5050565b6106a4614848565b8151600081815260016020526040812060050154600160a01b900463ffffffff1690036106ec5760405162461bcd60e51b81526004016106e3906154ea565b60405180910390fd5b82516001600082815260016020526040902060090154610100900460ff16600381111561071b5761071b614917565b146107605760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106e3565b8351604080860151602080880151925160009360029361078293909201615517565b60408051601f198184030181529082905261079c91615567565b602060405180830381855afa1580156107b9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107dc9190615583565b600083815260016020526040902060040154909150811461082f5760405162461bcd60e51b815260206004820152600d60248201526c090c2e6d040dad2e6dac2e8c6d609b1b60448201526064016106e3565b6000808760400151516005146108815760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106e3565b600084815260026020526040812054905b6005811015610aa05760008a6040015182815181106108b3576108b361559c565b602002602001015160038111156108cc576108cc614917565b036109115760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106e3565b61094c826000838d60400151858151811061092e5761092e61559c565b6020026020010151600381111561094757610947614917565b613778565b915060008a6040015182815181106109665761096661559c565b60200260200101519050600061097e8460018561381e565b60ff16600381111561099257610992614917565b90508060038111156109a6576109a6614917565b8260038111156109b8576109b8614917565b036109c4575050610a8e565b60018260038111156109d8576109d8614917565b1480156109f6575060038160038111156109f4576109f4614917565b145b80610a2e57506002826003811115610a1057610a10614917565b148015610a2e57506001816003811115610a2c57610a2c614917565b145b80610a6657506003826003811115610a4857610a48614917565b148015610a6657506002816003811115610a6457610a64614917565b145b15610a7d5785610a75816155c8565b965050610a8b565b84610a87816155c8565b9550505b50505b80610a98816155c8565b915050610892565b506000858152600260205260409020819055818303610ade576000858152600160205260409020600901805462ff0000191662030000179055610b24565b818311610aec576002610aef565b60015b6000868152600160205260409020600901805462ff0000191662010000836004811115610b1e57610b1e614917565b02179055505b600085815260016020526040902060078101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff001981166102001790915560ff1615610bcc576000858152600160208190526040909120600581015490820154610b9b926001600160a01b0390921691613857565b60008581526001602081905260409091206006810154600290910154610bcc926001600160a01b0390921691613857565b600160008681526001602052604090206009015462010000900460ff166004811115610bfa57610bfa614917565b03610c58576000858152600160208190526040909120600581015491810154600390910154610c53926001600160a01b03169190610c399060026155e1565b60008981526001602052604090206009015460ff166138cc565b610d3d565b600260008681526001602052604090206009015462010000900460ff166004811115610c8657610c86614917565b03610cc55760008581526001602052604090206006810154600280830154600390930154610c53936001600160a01b039093169291610c3991906155e1565b60008581526001602081905260409091206005810154918101546003820154600990920154610d01936001600160a01b0316929060ff166138cc565b6000858152600160205260409020600681015460028201546003830154600990930154610d3d936001600160a01b03909316929060ff166138cc565b60008581526001602052604090206009015462010000900460ff166004811115610d6957610d69614917565b60405186907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600085815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b82821015610ee557600084815260209020604080518082019091529083018054829060ff166003811115610e8d57610e8d614917565b6003811115610e9e57610e9e614917565b81528154602090910190610100900460ff166003811115610ec157610ec1614917565b6003811115610ed257610ed2614917565b8152505081526020019060010190610e57565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115610f1b57610f1b614917565b6003811115610f2c57610f2c614917565b81526020016009820160029054906101000a900460ff166004811115610f5457610f54614917565b6004811115610f6557610f65614917565b9052509998505050505050505050565b60005b815181101561069857610fa3828281518110610f9657610f9661559c565b602002602001015161069c565b5080610fae816155c8565b915050610f78565b610fbe613746565b80516106989060079060208401906147e3565b6000818152600160205260408120600501548291600160a01b90910463ffffffff1690036110115760405162461bcd60e51b81526004016106e3906154ea565b611019613746565b6002600083815260016020526040902060090154610100900460ff16600381111561104657611046614917565b106110935760405162461bcd60e51b815260206004820152601a60248201527f47616d6520636f6d706c657465206f722063616e63656c6c656400000000000060448201526064016106e3565b600954600083815260016020819052604090912060058101549101546001600160a01b039283169263a9059cbb926110cd929116906139d8565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561112b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f91906155f8565b506001600083815260016020526040902060090154610100900460ff16600381111561117d5761117d614917565b0361124057600954600083815260016020526040902060068101546002909101546001600160a01b039283169263a9059cbb926111bc929116906139d8565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906155f8565b505b600082815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166112795761127982613a4e565b60405182907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a25050565b60045460609060009081036112f45760408051600080825260208201909252906112e8565b6112d56148c2565b8152602001906001900390816112cd5790505b50600091509150611319565b61131061130b6113046004613b06565b868661345a565b613bc3565b60045490925090505b9250929050565b6060600780548060200260200160405190810160405280929190818152602001828054801561137857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161135a575b5050505050905090565b6004818154811061139257600080fd5b600091825260209091200154905081565b600781815481106113b357600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0382166000908152600360209081526040808320848452825280832080548251818502810185019093528083526060949383018282801561143457602002820191906000526020600020905b815481526020019060010190808311611420575b5050505050905060008080600090505b83518110156115025783818151811061145f5761145f61559c565b602002602001015191506000600381111561147c5761147c614917565b600083815260016020526040902060090154610100900460ff1660038111156114a7576114a7614917565b14806114dd57506001600083815260016020526040902060090154610100900460ff1660038111156114db576114db614917565b145b156114f057826114ec816155c8565b9350505b806114fa816155c8565b915050611444565b506000826001600160401b0381111561151d5761151d614a03565b604051908082528060200260200182016040528015611546578160200160208202803683370190505b5090506000805b8551811015611642578581815181106115685761156861559c565b602002602001015193506000600381111561158557611585614917565b600085815260016020526040902060090154610100900460ff1660038111156115b0576115b0614917565b14806115e657506001600085815260016020526040902060090154610100900460ff1660038111156115e4576115e4614917565b145b15611630578581815181106115fd576115fd61559c565b60200260200101518383815181106116175761161761559c565b60209081029190910101528161162c816155c8565b9250505b8061163a816155c8565b91505061154d565b5061164c82613bc3565b955050505050505b92915050565b6000818152600160205260408120600501548291600160a01b90910463ffffffff16900361169a5760405162461bcd60e51b81526004016106e3906154ea565b8160008082815260016020526040902060090154610100900460ff1660038111156116c7576116c7614917565b1461170f5760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106e3565b60008381526001602081905260409091206005810154910154339161173f916001600160a01b03909116906139d8565b6001600160a01b0316146117955760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f74207468652067616d65206f776e657200000000000060448201526064016106e3565b6009546001600160a01b031663a9059cbb336000868152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182991906155f8565b50600083815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166118635761186383613a4e565b60405183907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a2505050565b6060600082516001600160401b038111156118b0576118b0614a03565b6040519080825280602002602001820160405280156118e957816020015b6118d6614848565b8152602001906001900390816118ce5790505b50905060005b83518110156119cc5761191a84828151811061190d5761190d61559c565b6020026020010151611d7d565b82828151811061192c5761192c61559c565b60200260200101819052508181815181106119495761194961559c565b602002602001015160c0015163ffffffff166000036119ba576119848482815181106119775761197761559c565b6020026020010151613fed565b6040516020016119949190615615565b60408051601f198184030181529082905262461bcd60e51b82526106e39160040161565e565b806119c4816155c8565b9150506118ef565b5092915050565b6119db613746565b60098054911515600160a01b0260ff60a01b19909216919091179055565b611a01613746565b611a0b600061407f565b565b611a77600a805480602002602001604051908101604052809291908181526020018280548015611a6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a48575b5050505050611a723390565b6140f0565b80611a91575033611a86611bde565b6001600160a01b0316145b611ace5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016106e3565b6008546001600160a01b0316600090815260066020526040902054811115611b335760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106e3565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa91906155f8565b506008546001600160a01b031660009081526006602052604081208054839290611bd5908490615671565b90915550505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611c515750825b90506000826001600160401b03166001148015611c6d5750303b155b905081158015611c7b575080155b15611c995760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611cc357845460ff60401b1916600160401b1785555b600880546001600160a01b0389166001600160a01b031991821681179092556009805490911690911790558551611d019060079060208901906147e3565b506009805460ff60a01b1916600160a01b179055611d1e33614155565b8315611d6457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600a81815481106113b357600080fd5b611d85614848565b600082815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e0890152839004811661010088015260078401549182166101208801529190041661014085015260088101805483518186028101860190945280845291936101608601939290879084015b82821015611ed457600084815260209020604080518082019091529083018054829060ff166003811115611e7c57611e7c614917565b6003811115611e8d57611e8d614917565b81528154602090910190610100900460ff166003811115611eb057611eb0614917565b6003811115611ec157611ec1614917565b8152505081526020019060010190611e46565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115611f0a57611f0a614917565b6003811115611f1b57611f1b614917565b81526020016009820160029054906101000a900460ff166004811115611f4357611f43614917565b6004811115611f5457611f54614917565b905250600084815260026020526040902054909150611f7290614166565b61016082015292915050565b611f86613746565b6008546001600160a01b0316600090815260056020526040902054811115611feb5760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106e3565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561203e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206291906155f8565b506008546001600160a01b031660009081526005602052604081208054839290611bd5908490615671565b6001600160a01b0384166000908152600360209081526040808320868452825291829020805483518184028101840190945280845260609361210b9361130b939192908301828280156120ff57602002820191906000526020600020905b8154815260200190600101908083116120eb575b5050505050858561345a565b95945050505050565b61211c614848565b6000828152600160205260408120600501548391600160a01b90910463ffffffff16900361215c5760405162461bcd60e51b81526004016106e3906154ea565b826001600082815260016020526040902060090154610100900460ff16600381111561218a5761218a614917565b146121cf5760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106e3565b6000848152600160205260409020600601546121fc906203f48090600160a01b900463ffffffff16615684565b421161224a5760405162461bcd60e51b815260206004820152601a60248201527f52657665616c2074696d656f7574206e6f74206578706972656400000000000060448201526064016106e3565b6000848152600160205260409020600681015460028083015460039093015461229e936001600160a01b03909316929161228491906155e1565b60008881526001602052604090206009015460ff166138cc565b600084815260016020819052604090912060098101805462ffff0019166204020017905560068101546002909101546122e2926001600160a01b0390921691613857565b600460405185907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561246057600084815260209020604080518082019091529083018054829060ff16600381111561240857612408614917565b600381111561241957612419614917565b81528154602090910190610100900460ff16600381111561243c5761243c614917565b600381111561244d5761244d614917565b81525050815260200190600101906123d2565b50505090825250600982015460ff8082161515602084015260409092019161010090910416600381111561249657612496614917565b60038111156124a7576124a7614917565b81526020016009820160029054906101000a900460ff1660048111156124cf576124cf614917565b60048111156124e0576124e0614917565b905250949350505050565b6124f3613746565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6125646040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b600b5460405163097dbef760e31b81526001600160a01b03858116600483015260248201859052909116906000908290634bedf7b890604401600060405180830381865afa1580156125ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125e29190810190615697565b60408051610120810182526001600160a01b0388166000908152600360209081528382208983528152838220548352808301829052828401829052606083018290526080830182905260a08301829052845160c084015284015160e0830152918301516101008201529192505b6001600160a01b03871660009081526003602090815260408083208984529091529020548110156128e5576001600160a01b038716600090815260036020908152604080832089845290915281208054839081106126af576126af61559c565b60009182526020909120015490506002600082815260016020526040902060090154610100900460ff1660038111156126ea576126ea614917565b146126f557506128d3565b600081815260016020526040812060038101546009909101548291829161271f919060ff1661425c565b91945092509050600360008581526001602052604090206009015462010000900460ff16600481111561275457612754614917565b0361278f5760608601805190612769826155c8565b9052506127768183615684565b8660a001818151612787919061576d565b9052506128b0565b600084815260016020819052604090912001548a148080156127dc5750600160008681526001602052604090206009015462010000900460ff1660048111156127da576127da614917565b145b8061281c57508015801561281c5750600160008681526001602052604090206009015462010000900460ff16600481111561281957612819614917565b14155b156128745760208701805190612831826155c8565b9052506000858152600160205260409020600301546128518560026155e1565b61285b9190615671565b8760a00181815161286c919061578d565b9052506128ae565b60408701805190612884826155c8565b90525060008581526001602052604090206003015460a0880180516128aa90839061576d565b9052505b505b6128ba8183615684565b866080018181516128cb9190615684565b905250505050505b806128dd816155c8565b91505061264f565b5095945050505050565b6128f7614848565b600954600160a01b900460ff166129505760405162461bcd60e51b815260206004820152601760248201527f47616d65206372656174696f6e2069732070617573656400000000000000000060448201526064016106e3565b815161295b906142bf565b6129b55760405162461bcd60e51b815260206004820152602560248201527f43726561746f72204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106e3565b60006129c9836000015184602001516139d8565b90506129d481614323565b60408301516001600160a01b031615612a70576129f483604001516142bf565b612a4e5760405162461bcd60e51b815260206004820152602560248201527f496e7669746564204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106e3565b6000612a62846040015185606001516139d8565b9050612a6e8282614372565b505b662386f26fc100008360a001511015612ac35760405162461bcd60e51b8152602060048201526015602482015274135a5b9a5b5d5b481cdd185ad9481b9bdd081b595d605a1b60448201526064016106e3565b612ad08360a001516143cb565b600080548082526001602081815260409384902083815587516005820180546001600160a01b0319166001600160a01b03928316179055918801519201919091559185015190911615612b5f5760408481015160008381526001602052919091206006810180546001600160a01b0319166001600160a01b039093169290921790915560608501516002909101555b6080840151600082815260016020526040812060048101929092556008546007830180546001600160a01b0319166001600160a01b0390921691909117905560a086015160038301556005909101805463ffffffff4216600160a01b0263ffffffff60a01b1990911617905580549080612bd8836155c8565b909155505083516001600160a01b0390811660009081526003602090815260408083208289015184528252808320805460018101825590845291909220018390558501511615612c63576040808501516001600160a01b0316600090815260036020908152828220606088015183528152918120805460018101825590825291902001819055612cb2565b60008181526001602081905260408220600901805460ff1916821790556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018190555b608084015160405182907fe0eb15f8324648c97893a63e725995febbf40c5ed00da9249b0b1ea5173796f790600090a3600081815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561246057600084815260209020604080518082019091529083018054829060ff166003811115612ddb57612ddb614917565b6003811115612dec57612dec614917565b81528154602090910190610100900460ff166003811115612e0f57612e0f614917565b6003811115612e2057612e20614917565b8152505081526020019060010190612da5565b612e3b614848565b8151600081815260016020526040812060050154600160a01b900463ffffffff169003612e7a5760405162461bcd60e51b81526004016106e3906154ea565b825160008082815260016020526040902060090154610100900460ff166003811115612ea857612ea8614917565b14612ef05760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106e3565b8351600081815260016020819052604082206005810154910154612f1d916001600160a01b0316906139d8565b90506000612f33876020015188604001516139d8565b9050612f3e81614323565b612f488282614372565b6000838152600160205260409020600601546001600160a01b03161561300d57602080880151600085815260019092526040909120600601546001600160a01b039081169116148015612fb05750604080880151600085815260016020529190912060020154145b6130085760405162461bcd60e51b815260206004820152602360248201527f596f7572206e6f742074686520696e766974656520666f72207468697320676160448201526236b29760e91b60648201526084016106e3565b6130e9565b61301a87602001516142bf565b6130755760405162461bcd60e51b815260206004820152602660248201527f537570706c696564204e465420636f6c6c656374696f6e206973206e6f7420616044820152651b1b1bddd95960d21b60648201526084016106e3565b602087810180516000868152600180855260408083206006810180546001600160a01b0319166001600160a01b03968716179055818e01805160029092019190915594519093168252600385528282209351825292845290812080549283018155815291909120018390556130e983613a4e565b600083815260016020526040902060030154613104906143cb565b8660600151516005146131535760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106e3565b6000805b6005811015613207576000896060015182815181106131785761317861559c565b6020026020010151600381111561319157613191614917565b036131d65760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106e3565b6131f3826001838c60600151858151811061092e5761092e61559c565b9150806131ff816155c8565b915050613157565b506000848152600260209081526040808320849055600190915280822060068101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff0019166101001790555185917f5f8e2556f053753c316c48a4cc3bb582c792a32d588cac9e7cf1f7c9be538bdb91a2600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b828210156133cb57600084815260209020604080518082019091529083018054829060ff16600381111561337357613373614917565b600381111561338457613384614917565b81528154602090910190610100900460ff1660038111156133a7576133a7614917565b60038111156133b8576133b8614917565b815250508152602001906001019061333d565b50505090825250600982015460ff8082161515602084015260409092019161010090910416600381111561340157613401614917565b600381111561341257613412614917565b81526020016009820160029054906101000a900460ff16600481111561343a5761343a614917565b600481111561344b5761344b614917565b90525098975050505050505050565b6060835160000361346c575082613560565b60008385511161347d576000613497565b6134978361ffff168587516134929190615671565b614524565b90506000816001600160401b038111156134b3576134b3614a03565b6040519080825280602002602001820160405280156134dc578160200160208202803683370190505b5080519091501561355c5760008587516134f69190615671565b905060005b83811015613559578161350d816157b5565b9250508782815181106135225761352261559c565b602002602001015183828151811061353c5761353c61559c565b602090810291909101015280613551816155c8565b9150506134fb565b50505b9150505b9392505050565b60606000836000541161357b576000613591565b6135918361ffff16856000546134929190615671565b90506000816001600160401b038111156135ad576135ad614a03565b6040519080825280602002602001820160405280156135d6578160200160208202803683370190505b5080519091501561363e576000856000546135f19190615671565b905060005b8381101561363b5781613608816157b5565b9250508183828151811061361e5761361e61559c565b602090810291909101015280613633816155c8565b9150506135f6565b50505b61210b81613bc3565b61364f613746565b6001600160a01b03811661367957604051631e4fbdf760e01b8152600060048201526024016106e3565b6136828161407f565b50565b61368d613746565b6000805b60045481101561374157600360016000600484815481106136b4576136b461559c565b9060005260206000200154815260200190815260200160002060090160019054906101000a900460ff1660038111156136ef576136ef614917565b036137285761371a6004828154811061370a5761370a61559c565b9060005260206000200154613a4e565b81613724816155c8565b9250505b8183146137415780613739816155c8565b915050613691565b505050565b3361374f611bde565b6001600160a01b031614611a0b5760405163118cdaa760e01b81523360048201526024016106e3565b6000600482106137b95760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206d6f766560a01b60448201526064016106e3565b83156137c65760806137c9565b60005b60ff166137d78460026155e1565b6137e19190615684565b6003901b198516905083156137f75760806137fa565b60005b60ff166138088460026155e1565b6138129190615684565b9190911b179392505050565b6000821561382d576080613830565b60005b60ff1661383e8360026155e1565b6138489190615684565b84901c60031690509392505050565b600b54604051635618f6ff60e01b81526001600160a01b0385811660048301526024820185905260448201849052909116908190635618f6ff90606401600060405180830381600087803b1580156138ae57600080fd5b505af11580156138c2573d6000803e3d6000fd5b5050505050505050565b60006138d885856139d8565b905060008060006138e9868661425c565b6008546001600160a01b031660009081526005602052604081208054949750929550909350839261391b908490615684565b90915550508415613956576008546001600160a01b031660009081526006602052604081208054849290613950908490615684565b90915550505b60095460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af11580156139a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139cd91906155f8565b505050505050505050565b6040516331a9108f60e11b81526004810182905260009083906001600160a01b03821690636352211e90602401602060405180830381865afa158015613a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4691906157cc565b949350505050565b60005b6004548110156106985760048181548110613a6e57613a6e61559c565b90600052602060002001548203613af45760048054613a8f90600190615671565b81548110613a9f57613a9f61559c565b906000526020600020015460048281548110613abd57613abd61559c565b6000918252602090912001556004805480613ada57613ada6157e9565b600190038181906000526020600020016000905590555050565b80613afe816155c8565b915050613a51565b80546060906000906001600160401b03811115613b2557613b25614a03565b604051908082528060200260200182016040528015613b4e578160200160208202803683370190505b50905060005b8354811015613ba957838181548110613b6f57613b6f61559c565b9060005260206000200154828281518110613b8c57613b8c61559c565b602090810291909101015280613ba1816155c8565b915050613b54565b5061165481600060018451613bbe9190615671565b61453a565b6060600082516001600160401b03811115613be057613be0614a03565b604051908082528060200260200182016040528015613c1957816020015b613c066148c2565b815260200190600190039081613bfe5790505b5090508051600003613c2b5792915050565b613c33614848565b60005b8451811015613fe4576000858281518110613c5357613c5361559c565b60209081029190910181015160008181526001808452604080832081516101e081018352815481529281015483870152600281015483830152600381015460608401526004810154608084015260058101546001600160a01b0380821660a086015263ffffffff600160a01b92839004811660c0870152600684015480831660e0880152839004811661010087015260078401549182166101208701529190041661014084015260088101805483518189028101890190945280845295975092959094610160870194929392909184015b82821015613db257600084815260209020604080518082019091529083018054829060ff166003811115613d5a57613d5a614917565b6003811115613d6b57613d6b614917565b81528154602090910190610100900460ff166003811115613d8e57613d8e614917565b6003811115613d9f57613d9f614917565b8152505081526020019060010190613d24565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115613de857613de8614917565b6003811115613df957613df9614917565b81526020016009820160029054906101000a900460ff166004811115613e2157613e21614917565b6004811115613e3257613e32614917565b905250600082815260026020526040902054909350613e5090614166565b61016084015260408051606081018252848152600083815260016020818152918490206005810154910154935163c87b56dd60e01b815260048101949094529192908301916001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613ec5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613eed91908101906157ff565b81526000838152600160209081526040909120600601549101906001600160a01b0316613f295760405180602001604052806000815250613fb0565b600083815260016020526040908190206006810154600290910154915163c87b56dd60e01b815260048101929092526001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fb091908101906157ff565b815250848381518110613fc557613fc561559c565b6020026020010181905250508080613fdc906155c8565b915050613c36565b50909392505050565b60606000613ffa836146ba565b60010190506000816001600160401b0381111561401957614019614a03565b6040519080825280601f01601f191660200182016040528015614043576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461404d57509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000805b835181101561414b57826001600160a01b03168482815181106141195761411961559c565b60200260200101516001600160a01b031603614139576001915050611654565b80614143816155c8565b9150506140f4565b5060009392505050565b61415d614792565b613682816147db565b60408051600580825260c0820190925260609160009190816020015b604080518082019091526000808252602082015281526020019060019003908161418257905050905060005b60058110156119cc5760405180604001604052806141ce8660008561381e565b60ff1660038111156141e2576141e2614917565b60038111156141f3576141f3614917565b81526020016142048660018561381e565b60ff16600381111561421857614218614917565b600381111561422957614229614917565b81525082828151811061423e5761423e61559c565b60200260200101819052508080614254906155c8565b9150506141ae565b6000808061271061426f610190876155e1565b6142799190615882565b9050836142875760006142a0565b6127106142966101f4876155e1565b6142a09190615882565b91506142ac8282615684565b6142b69086615671565b92509250925092565b6000805b60075481101561431a57600781815481106142e0576142e061559c565b6000918252602090912001546001600160a01b03908116908416036143085750600192915050565b80614312816155c8565b9150506142c3565b50600092915050565b6001600160a01b03811633146136825760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016106e3565b806001600160a01b0316826001600160a01b0316036106985760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba10383630bc9037bbb7103a37b5b2b760591b60448201526064016106e3565b60095481906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015614429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444d9190615583565b101561449b5760405162461bcd60e51b815260206004820181905260248201527f4552432d323020616c6c6f77616e636520697320696e73756666696369656e7460448201526064016106e3565b6009546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af1158015614500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069891906155f8565b60008183106145335781613560565b5090919050565b818180820361454a575050505050565b6000856002614559878761576d565b6145639190615896565b61456d908761578d565b8151811061457d5761457d61559c565b602002602001015190505b81831361468c575b808684815181106145a3576145a361559c565b602002602001015110156145c357826145bb816158c4565b935050614590565b8582815181106145d5576145d561559c565b60200260200101518110156145f657816145ee816158dc565b9250506145c3565b8183136146875785828151811061460f5761460f61559c565b60200260200101518684815181106146295761462961559c565b60200260200101518785815181106146435761464361559c565b6020026020010188858151811061465c5761465c61559c565b60209081029190910101919091525282614675816158c4565b9350508180614683906158dc565b9250505b614588565b8185121561469f5761469f86868461453a565b838312156146b2576146b286848661453a565b505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106146f95772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614725576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061474357662386f26fc10000830492506010015b6305f5e100831061475b576305f5e100830492506008015b612710831061476f57612710830492506004015b60648310614781576064830492506002015b600a83106116545760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a0b57604051631afcd79f60e31b815260040160405180910390fd5b61364f614792565b828054828255906000526020600020908101928215614838579160200282015b8281111561483857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614803565b506148449291506148e9565b5090565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820183905261014082018390526101608201526101808101829052906101a082019081526020016000905290565b60405180606001604052806148d5614848565b815260200160608152602001606081525090565b5b8082111561484457600081556001016148ea565b60006020828403121561491057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6004811061368257613682614917565b6149468161492d565b9052565b6005811061494657614946614917565b8e8152602081018e9052604081018d9052606081018c9052608081018b90526001600160a01b038a811660a083015263ffffffff8a1660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b03871661012083015263ffffffff86166101408301528415156101608301526149e261018083018561493d565b6149f06101a083018461494a565b9f9e505050505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614a3b57614a3b614a03565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614a6957614a69614a03565b604052919050565b60006001600160401b03821115614a8a57614a8a614a03565b5060051b60200190565b6001600160a01b038116811461368257600080fd5b600082601f830112614aba57600080fd5b81356020614acf614aca83614a71565b614a41565b82815260059290921b84018101918181019086841115614aee57600080fd5b8286015b84811015614b12578035614b0581614a94565b8352918301918301614af2565b509695505050505050565b600060208284031215614b2f57600080fd5b81356001600160401b03811115614b4557600080fd5b613a4684828501614aa9565b60006001600160401b03821115614b6a57614b6a614a03565b50601f01601f191660200190565b600082601f830112614b8957600080fd5b81356020614b99614aca83614a71565b82815260059290921b84018101918181019086841115614bb857600080fd5b8286015b84811015614b1257803560048110614bd45760008081fd5b8352918301918301614bbc565b600060608284031215614bf357600080fd5b614bfb614a19565b9050813581526020808301356001600160401b0380821115614c1c57600080fd5b818501915085601f830112614c3057600080fd5b8135614c3e614aca82614b51565b8181528785838601011115614c5257600080fd5b81858501868301376000858383010152808587015250506040850135925080831115614c7d57600080fd5b5050614c8b84828501614b78565b60408301525092915050565b600060208284031215614ca957600080fd5b81356001600160401b03811115614cbf57600080fd5b613a4684828501614be1565b600081518084526020808501945080840160005b83811015614d185781518051614cf48161492d565b8852830151614d028161492d565b8784015260409096019590820190600101614cdf565b509495945050505050565b60006101e0825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a0830151614d6e60a08601826001600160a01b03169052565b5060c0830151614d8660c086018263ffffffff169052565b5060e0830151614da160e08601826001600160a01b03169052565b506101008381015163ffffffff90811691860191909152610120808501516001600160a01b031690860152610140808501519091169085015261016080840151818601839052614df383870182614ccb565b9250505061018080840151614e0b8287018215159052565b50506101a080840151614e208287018261493d565b50506101c080840151614e358287018261494a565b5090949350505050565b6020815260006135606020830184614d23565b60006020808385031215614e6557600080fd5b82356001600160401b0380821115614e7c57600080fd5b818501915085601f830112614e9057600080fd5b8135614e9e614aca82614a71565b81815260059190911b83018401908481019088831115614ebd57600080fd5b8585015b83811015614ef557803585811115614ed95760008081fd5b614ee78b89838a0101614be1565b845250918601918601614ec1565b5098975050505050505050565b600060208284031215614f1457600080fd5b813561356081614a94565b803561ffff81168114614f3157600080fd5b919050565b60008060408385031215614f4957600080fd5b82359150614f5960208401614f1f565b90509250929050565b60005b83811015614f7d578181015183820152602001614f65565b50506000910152565b60008151808452614f9e816020860160208601614f62565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561503b578284038952815160608151818752614ff282880182614d23565b915050868201518682038888015261500a8282614f86565b915050604080830151925086820381880152506150278183614f86565b9a87019a9550505090840190600101614fd0565b5091979650505050505050565b60408152600061505b6040830185614fb2565b90508260208301529392505050565b6020808252825182820181905260009190848201906040850190845b818110156150ab5783516001600160a01b031683529284019291840191600101615086565b50909695505050505050565b600080604083850312156150ca57600080fd5b82356150d581614a94565b946020939093013593505050565b6020815260006135606020830184614fb2565b600082601f83011261510757600080fd5b81356020615117614aca83614a71565b82815260059290921b8401810191818101908684111561513657600080fd5b8286015b84811015614b12578035835291830191830161513a565b60006020828403121561516357600080fd5b81356001600160401b0381111561517957600080fd5b613a46848285016150f6565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151da57603f198886030184526151c8858351614d23565b945092850192908501906001016151ac565b5092979650505050505050565b801515811461368257600080fd5b60006020828403121561520757600080fd5b8135613560816151e7565b6000806040838503121561522557600080fd5b823561523081614a94565b915060208301356001600160401b0381111561524b57600080fd5b61525785828601614aa9565b9150509250929050565b6000806000806080858703121561527757600080fd5b843561528281614a94565b9350602085013592506040850135915061529e60608601614f1f565b905092959194509250565b600081518084526020808501945080840160005b83811015614d18578151875295820195908201906001016152bd565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260c082015160e0820152600060e0830151610100818185015280850151915050610120808185015250613a466101408401826152a9565b600060c0828403121561535f57600080fd5b60405160c081018181106001600160401b038211171561538157615381614a03565b604052823561538f81614a94565b81526020838101359082015260408301356153a981614a94565b80604083015250606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156153ea57600080fd5b81356001600160401b038082111561540157600080fd5b908301906080828603121561541557600080fd5b60405160808101818110838211171561543057615430614a03565b60405282358152602083013561544581614a94565b60208201526040838101359082015260608301358281111561546657600080fd5b61547287828601614b78565b60608301525095945050505050565b60008060006060848603121561549657600080fd5b83356001600160401b038111156154ac57600080fd5b6154b8868287016150f6565b935050602084013591506154ce60408501614f1f565b90509250925092565b60208152600061356060208301846152a9565b60208082526013908201527211d85b5948191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b825160009082906020808701845b8381101561554a5781516155388161492d565b85529382019390820190600101615525565b50508551915061555d8284838901614f62565b5001949350505050565b60008251615579818460208701614f62565b9190910192915050565b60006020828403121561559557600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016155da576155da6155b2565b5060010190565b8082028115828204841417611654576116546155b2565b60006020828403121561560a57600080fd5b8151613560816151e7565b67023b0b6b29024a2160c51b815260008251615638816008850160208701614f62565b6e08191bd95cc81b9bdd08195e1a5cdd608a1b6008939091019283015250601701919050565b6020815260006135606020830184614f86565b81810381811115611654576116546155b2565b80820180821115611654576116546155b2565b600060208083850312156156aa57600080fd5b82516001600160401b03808211156156c157600080fd5b90840190606082870312156156d557600080fd5b6156dd614a19565b8251815283830151848201526040830151828111156156fb57600080fd5b80840193505086601f84011261571057600080fd5b82519150615720614aca83614a71565b82815260059290921b8301840191848101908884111561573f57600080fd5b938501935b8385101561575d57845182529385019390850190615744565b6040830152509695505050505050565b81810360008312801583831316838312821617156119cc576119cc6155b2565b80820182811260008312801582168215821617156157ad576157ad6155b2565b505092915050565b6000816157c4576157c46155b2565b506000190190565b6000602082840312156157de57600080fd5b815161356081614a94565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561581157600080fd5b81516001600160401b0381111561582757600080fd5b8201601f8101841361583857600080fd5b8051615846614aca82614b51565b81815285602083850101111561585b57600080fd5b61210b826020830160208601614f62565b634e487b7160e01b600052601260045260246000fd5b6000826158915761589161586c565b500490565b6000826158a5576158a561586c565b600160ff1b8214600019841416156158bf576158bf6155b2565b500590565b60006001600160ff1b0182016155da576155da6155b2565b6000600160ff1b82016157c4576157c46155b256fea26469706673582212208e40879d466d12f5dd8012b6c4c550e60e99eccb510e44ab9c34a68baa2871ce64736f6c63430008140033