22 txs
143.5k calls
constructor
constructor(address _usdc, address _feeReceiver, address _entropyAddress)
functions
BASE_POINT
viewfunction BASE_POINT() view returns (uint256)
currentJackpot
viewfunction currentJackpot() view returns (uint256)
DAY
viewfunction DAY() view returns (uint256)
entropy
viewfunction entropy() view returns (address)
FEE_BASIS
viewfunction FEE_BASIS() view returns (uint256)
feeReceiver
viewfunction feeReceiver() view returns (address)
fidSponsoredAmount
viewfunction fidSponsoredAmount(uint256, uint256) view returns (uint256)
fidTopSponsor
viewfunction fidTopSponsor(uint256) view returns (uint256)
gameIndex
viewfunction gameIndex() view returns (uint256)
games
viewfunction games(uint256) view returns (uint8 status, uint256 startTime, uint256 initialJackpot, uint256 totalTickets, uint256 winningNumber, uint256 totalFees, uint256 totalPrize, address winner, address referrer)
getEntropyFee
viewfunction getEntropyFee() view returns (uint256)
getTicketPrice
purefunction getTicketPrice(uint256 ticketAmount) pure returns (uint256)
isJackpotSet
viewfunction isJackpotSet() view returns (bool)
jackpotAction
viewfunction jackpotAction() view returns (address)
lastGame
viewfunction lastGame(address) view returns (uint256)
MAX_PURCHASE
viewfunction MAX_PURCHASE() view returns (uint256)
nextAvailableTicket
viewfunction nextAvailableTicket() view returns (uint256)
owner
viewfunction owner() view returns (address)
randomNumbers
viewfunction randomNumbers(uint256) view returns (bytes32)
referralPoints
viewfunction referralPoints(uint256, address) view returns (uint256)
SCALE
viewfunction SCALE() view returns (uint256)
sequenceNumbers
viewfunction sequenceNumbers(uint256) view returns (uint64)
sponsoredAmount
viewfunction sponsoredAmount(uint256, address) view returns (uint256)
STREAK_TARGET
viewfunction STREAK_TARGET() view returns (uint256)
streakCount
viewfunction streakCount(address) view returns (uint256)
TICKET_PRICE
viewfunction TICKET_PRICE() view returns (uint256)
ticketCount
viewfunction ticketCount(uint256, address) view returns (uint256)
ticketOwner
viewfunction ticketOwner(uint256, uint256) view returns (address)
ticketReferrer
viewfunction ticketReferrer(uint256, uint256) view returns (address)
topReferrer
viewfunction topReferrer(uint256) view returns (address)
topSponsor
viewfunction topSponsor(uint256) view returns (address)
USDC
viewfunction USDC() view returns (address)
_entropyCallback
nonpayablefunction _entropyCallback(uint64 sequence, address provider, bytes32 randomNumber)
buyTicket
nonpayablefunction buyTicket(address referrer, uint256 ticketAmount)
buyTicket
nonpayablefunction buyTicket(address to, address referrer, uint256 ticketAmount)
buyTicket
nonpayablefunction buyTicket(uint256 ticketAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestRandomNumber
payablefunction requestRandomNumber(bytes32 userRandomNumber) payable
setFeeReceiver
nonpayablefunction setFeeReceiver(address newFeeReceiver)
setJackpot
nonpayablefunction setJackpot(uint256 initialJackpot)
setJackpotAction
nonpayablefunction setJackpotAction(address newJackpotAction)
sponsorCurrentGame
nonpayablefunction sponsorCurrentGame(uint256 sponsorAmount, uint256 fid)
sponsorCurrentGame
nonpayablefunction sponsorCurrentGame(uint256 sponsorAmount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BuyTicket
event BuyTicket(address indexed user, address indexed referrer, uint256 indexed game, uint256 ticketAmount, uint256 purchaseValue)
CloseJackpot
event CloseJackpot(address indexed winner, address indexed referrer, uint256 indexed game, uint256 jackpotAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetJackpot
event SetJackpot(uint256 indexed game, uint256 initialJackpot)
SponsorGame
event SponsorGame(address indexed sponsor, uint256 indexed game, uint256 sponsorAmount)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60e06040526001600455612710608090815250620f4240600a610022919061028a565b60a090815250348015610033575f5ffd5b5060405161446038038061446083398181016040528101906100559190610329565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100bd9190610388565b60405180910390fd5b6100d58161019360201b60201c565b508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506103a1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61029482610254565b915061029f83610254565b92508282026102ad81610254565b915082820484148315176102c4576102c361025d565b5b5092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f8826102cf565b9050919050565b610308816102ee565b8114610312575f5ffd5b50565b5f81519050610323816102ff565b92915050565b5f5f5f606084860312156103405761033f6102cb565b5b5f61034d86828701610315565b935050602061035e86828701610315565b925050604061036f86828701610315565b9150509250925092565b610382816102ee565b82525050565b5f60208201905061039b5f830184610379565b92915050565b60805160a05160c05161404f6104115f395f8181610fcb015281816112b1015281816113ca01528181611b4001528181612343015281816127e801528181612fce0152818161303d015261308801525f818161126201526122da01525f8181610b7d0152611dd9015261404f5ff3fe608060405260043610610266575f3560e01c8063757eec3311610143578063bd313d78116100b5578063e5bcef7011610079578063e5bcef7014610966578063eced5526146109a2578063efdcd974146109cc578063f06fc961146109f4578063f2fde38b14610a30578063f9cee0bd14610a5857610266565b8063bd313d781461086e578063c41d945e1461088a578063c6e34dd1146108c6578063cd24d53a14610902578063e0db33e21461092a57610266565b8063a1131e8711610107578063a1131e8714610754578063aec95c491461077c578063b03381bc146107a4578063b31d84b2146107e0578063b3f006741461081c578063b5d46dfb1461084657610266565b8063757eec33146106825780638686ebcc146106ac57806389a30271146106d65780638da5cb5b14610700578063965fbd9d1461072a57610266565b806347ce07cc116101dc57806359275f11116101a057806359275f111461058e57806359992cc8146105ca57806366a5ef2f146105f257806367dd74ca1461061a5780637146bd0814610642578063715018a61461066c57610266565b806347ce07cc1461049a5780635094f2b2146104c45780635257cd901461050057806352a5f1f81461053c5780635654a3411461056457610266565b806311f31d441161022e57806311f31d44146103685780631a95f15f146103a457806327cfe856146103ce5780632d971e63146103f857806346044763146104225780634654e7301461045e57610266565b80630a0acf1b1461026a5780630e07ebf5146102945780631012aa73146102d05780631135daeb146102fa578063117a5b9014610324575b5f5ffd5b348015610275575f5ffd5b5061027e610a82565b60405161028b91906131b3565b60405180910390f35b34801561029f575f5ffd5b506102ba60048036038101906102b5919061322a565b610a87565b6040516102c791906131b3565b60405180910390f35b3480156102db575f5ffd5b506102e4610a9c565b6040516102f191906131b3565b60405180910390f35b348015610305575f5ffd5b5061030e610aa2565b60405161031b91906131b3565b60405180910390f35b34801561032f575f5ffd5b5061034a6004803603810190610345919061327f565b610aa8565b60405161035f9998979695949392919061332c565b60405180910390f35b348015610373575f5ffd5b5061038e6004803603810190610389919061327f565b610b4b565b60405161039b91906133b7565b60405180910390f35b3480156103af575f5ffd5b506103b8610b7b565b6040516103c591906131b3565b60405180910390f35b3480156103d9575f5ffd5b506103e2610b9f565b6040516103ef91906131b3565b60405180910390f35b348015610403575f5ffd5b5061040c610ba6565b60405161041991906131b3565b60405180910390f35b34801561042d575f5ffd5b50610448600480360381019061044391906133d0565b610ce4565b60405161045591906131b3565b60405180910390f35b348015610469575f5ffd5b50610484600480360381019061047f919061340e565b610d04565b60405161049191906131b3565b60405180910390f35b3480156104a5575f5ffd5b506104ae610d24565b6040516104bb91906134a7565b60405180910390f35b3480156104cf575f5ffd5b506104ea60048036038101906104e591906133d0565b610d49565b6040516104f791906133b7565b60405180910390f35b34801561050b575f5ffd5b506105266004803603810190610521919061327f565b610d86565b60405161053391906134d8565b60405180910390f35b348015610547575f5ffd5b50610562600480360381019061055d9190613558565b610d9b565b005b34801561056f575f5ffd5b50610578610e93565b60405161058591906131b3565b60405180910390f35b348015610599575f5ffd5b506105b460048036038101906105af919061327f565b610e99565b6040516105c191906133b7565b60405180910390f35b3480156105d5575f5ffd5b506105f060048036038101906105eb919061327f565b610ec9565b005b3480156105fd575f5ffd5b50610618600480360381019061061391906135a8565b61120c565b005b348015610625575f5ffd5b50610640600480360381019061063b919061327f565b611252565b005b34801561064d575f5ffd5b50610656611260565b60405161066391906131b3565b60405180910390f35b348015610677575f5ffd5b50610680611284565b005b34801561068d575f5ffd5b50610696611297565b6040516106a39190613600565b60405180910390f35b3480156106b7575f5ffd5b506106c06112a9565b6040516106cd91906131b3565b60405180910390f35b3480156106e1575f5ffd5b506106ea6112af565b6040516106f791906133b7565b60405180910390f35b34801561070b575f5ffd5b506107146112d3565b60405161072191906133b7565b60405180910390f35b348015610735575f5ffd5b5061073e6112fa565b60405161074b91906133b7565b60405180910390f35b34801561075f575f5ffd5b5061077a6004803603810190610775919061327f565b61131f565b005b348015610787575f5ffd5b506107a2600480360381019061079d919061322a565b611645565b005b3480156107af575f5ffd5b506107ca60048036038101906107c5919061322a565b6116fe565b6040516107d791906131b3565b60405180910390f35b3480156107eb575f5ffd5b506108066004803603810190610801919061340e565b611713565b60405161081391906131b3565b60405180910390f35b348015610827575f5ffd5b50610830611733565b60405161083d91906133b7565b60405180910390f35b348015610851575f5ffd5b5061086c60048036038101906108679190613619565b611759565b005b61088860048036038101906108839190613669565b6117a0565b005b348015610895575f5ffd5b506108b060048036038101906108ab919061340e565b611a60565b6040516108bd91906131b3565b60405180910390f35b3480156108d1575f5ffd5b506108ec60048036038101906108e7919061327f565b611a80565b6040516108f991906131b3565b60405180910390f35b34801561090d575f5ffd5b50610928600480360381019061092391906133d0565b611a95565b005b348015610935575f5ffd5b50610950600480360381019061094b91906133d0565b611cb4565b60405161095d91906133b7565b60405180910390f35b348015610971575f5ffd5b5061098c6004803603810190610987919061327f565b611cf1565b60405161099991906136a3565b60405180910390f35b3480156109ad575f5ffd5b506109b6611d15565b6040516109c391906131b3565b60405180910390f35b3480156109d7575f5ffd5b506109f260048036038101906109ed919061322a565b611d1c565b005b3480156109ff575f5ffd5b50610a1a6004803603810190610a15919061327f565b611dd6565b604051610a2791906131b3565b60405180910390f35b348015610a3b575f5ffd5b50610a566004803603810190610a51919061322a565b611e0a565b005b348015610a63575f5ffd5b50610a6c611e8e565b604051610a7991906131b3565b60405180910390f35b600781565b6011602052805f5260405f205f915090505481565b60045481565b6103e881565b60148181548110610ab7575f80fd5b905f5260205f2090600902015f91509050805f015f9054906101000a900460ff1690806001015490806002015490806003015490806004015490806005015490806006015490806007015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806008015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905089565b600d602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6201518081565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b88c914860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382ee990c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7291906136d0565b6040518263ffffffff1660e01b8152600401610c8e91906133b7565b602060405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccd9190613740565b6fffffffffffffffffffffffffffffffff16905090565b600c602052815f5260405f20602052805f5260405f205f91509150505481565b600a602052815f5260405f20602052805f5260405f205f91509150505481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012602052805f5260405f205f915090505481565b5f610da4611e94565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b906137c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990613853565b60405180910390fd5b610e8d848484611ebc565b50505050565b60025481565b600e602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ed1611ee2565b5f60025414610f3257610ef16001600254610eec919061389e565b611f69565b15610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f289061391b565b60405180910390fd5b5b5f8103610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b906139a9565b60405180910390fd5b60055f9054906101000a900460ff1615610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613a11565b60405180910390fd5b6110103330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612118909392919063ffffffff16565b8060038190555060146040518061012001604052805f6001811115611038576110376132aa565b5b81526020014281526020018381526020015f81526020015f81526020015f81526020018381526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f2090600902015f909190919091505f820151815f015f6101000a81548160ff021916908360018111156110e5576110e46132aa565b5b02179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816008015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600160055f6101000a81548160ff0219169083151502179055506002547f64375de6b63c4653963b7cf359a173c1ba8842004558e13a564779145833ec588260405161120191906131b3565b60405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611243575f91505b61124e33838361219a565b5050565b61125d335f8361219a565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b61128c611ee2565b6112955f61289e565b565b60055f9054906101000a900460ff1681565b6101f481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8103611361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135890613a9f565b60405180910390fd5b60055f9054906101000a900460ff1680156113835750611382600254611f69565b5b6113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613b07565b60405180910390fd5b61140f3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612118909392919063ffffffff16565b5f60025490505f600e5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600b5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114a49190613b25565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115ce57600b5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600b5f8481526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116115cd5733600e5f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b8260035f8282546115df9190613b25565b925050819055506115f15f5f8561295f565b813373ffffffffffffffffffffffffffffffffffffffff167f11cd15c81b1c955c27248ad53194b7664db58761d15830944dfada762d01cc3f8560405161163891906131b3565b60405180910390a3505050565b61164d611ee2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290613ba2565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6010602052805f5260405f205f915090505481565b600b602052815f5260405f20602052805f5260405f205f91509150505481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611790575f91505b61179b83838361219a565b505050565b6117a8611ee2565b60055f9054906101000a900460ff166117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90613b07565b60405180910390fd5b611801600254611f69565b15611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118389061391b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166382ee990c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d091906136d0565b90505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b88c9148836040518263ffffffff1660e01b815260040161192d91906133b7565b602060405180830381865afa158015611948573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196c9190613740565b6fffffffffffffffffffffffffffffffff1690505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166319cb825f8385876040518463ffffffff1660e01b81526004016119de929190613bc0565b60206040518083038185885af11580156119fa573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a1f9190613bfb565b90508060135f60025481526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b600f602052805f5260405f205f915090505481565b5f8203611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace90613a9f565b60405180910390fd5b60055f9054906101000a900460ff168015611af95750611af8600254611f69565b5b611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90613b07565b60405180910390fd5b611b853330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612118909392919063ffffffff16565b5f60025490505f600f5f8381526020019081526020015f2054905083600c5f8481526020019081526020015f205f8581526020019081526020015f205f828254611bcf9190613b25565b92505081905550828114611c3c57600c5f8381526020019081526020015f205f8481526020019081526020015f2054600c5f8481526020019081526020015f205f8381526020019081526020015f205411611c3b5782600f5f8481526020019081526020015f20819055505b5b8360035f828254611c4d9190613b25565b92505081905550611c5f5f5f8661295f565b813373ffffffffffffffffffffffffffffffffffffffff167f11cd15c81b1c955c27248ad53194b7664db58761d15830944dfada762d01cc3f86604051611ca691906131b3565b60405180910390a350505050565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052805f5260405f205f915054906101000a900467ffffffffffffffff1681565b620f424081565b611d24611ee2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613c70565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7f000000000000000000000000000000000000000000000000000000000000000082611e039190613c8e565b9050919050565b611e12611ee2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e82575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611e7991906133b7565b60405180910390fd5b611e8b8161289e565b50565b60035481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060125f60025481526020019081526020015f2081905550611edd816129d8565b505050565b611eea612b5f565b73ffffffffffffffffffffffffffffffffffffffff16611f086112d3565b73ffffffffffffffffffffffffffffffffffffffff1614611f6757611f2b612b5f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f5e91906133b7565b60405180910390fd5b565b5f5f60148381548110611f7f57611f7e613ccf565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff166001811115611fba57611fb96132aa565b5b6001811115611fcc57611fcb6132aa565b5b8152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090505f60018111156120cb576120ca6132aa565b5b815f015160018111156120e1576120e06132aa565b5b1480156120ff57506201518081602001516120fc9190613b25565b42105b1561210e576001915050612113565b5f9150505b919050565b612194848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161214d93929190613cfc565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612b66565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090613d7b565b60405180910390fd5b5f810361226b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226290613e09565b60405180910390fd5b60055f9054906101000a900460ff16801561228d575061228c600254611f69565b5b6122cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c390613b07565b60405180910390fd5b5f6122d682611dd6565b90507f000000000000000000000000000000000000000000000000000000000000000081111561233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233290613e71565b60405180910390fd5b6123883330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612118909392919063ffffffff16565b5f60025490505f61239886612c01565b90506028841180156123aa5750606484105b156123d55780156123c5576014846123c29190613b25565b93505b600a846123d29190613b25565b93505b606484106124035780156123f3576028846123f09190613b25565b93505b601e846124009190613b25565b93505b5f5f90505b848110156124f3578660075f8581526020019081526020015f205f836004546124319190613b25565b81526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560085f8581526020019081526020015f205f8360045461249c9190613b25565b81526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050612408565b508360095f8481526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461254f9190613b25565b925050819055508360045f8282546125679190613b25565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461278d5783600a5f8481526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546125fc9190613b25565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600d5f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156127375750600a5f8381526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600a5f8481526020019081526020015f205f600d5f8681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411155b1561278c5784600d5f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5f5f61279885612da4565b915091508160035f8282546127ad9190613b25565b925050819055506127bf86828461295f565b61282c600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612dd69092919063ffffffff16565b838773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f950e453ec8830eca6a4a30fc836aa9b14aefbc1dadb05ebfa99b37d90f6f45e0898960405161288c929190613e8f565b60405180910390a45050505050505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60146002548154811061297657612975613ccf565b5b905f5260205f209060090201905083816003015f8282546129979190613b25565b9250508190555082816005015f8282546129b19190613b25565b9250508190555081816006015f8282546129cb9190613b25565b9250508190555050505050565b5f6129e282612e55565b90505f6129ee82612e8b565b90505f6129fa83612ed5565b90505f601460025481548110612a1357612a12613ccf565b5b905f5260205f20906009020190506001815f015f6101000a81548160ff02191690836001811115612a4757612a466132aa565b5b021790555083816004018190555082816007015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081816008015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002548273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f043f4b337c4e00d8e43635fa4756d15273c8eff366ff301a34d2bc685773d1b0600354604051612b3b91906131b3565b60405180910390a4612b508383600354612f1f565b612b586130d4565b5050505050565b5f33905090565b5f5f60205f8451602086015f885af180612b85576040513d5f823e3d81fd5b3d92505f519150505f8214612b9e576001811415612bb9565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15612bfb57836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612bf291906133b7565b60405180910390fd5b50505050565b5f5f60025490505f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818114612d48578160115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8214612d4757600182612ca6919061389e565b8103612d035760105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190612cf990613eb6565b9190505550612d46565b5f60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b600760105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612d98575f92505050612d9f565b6001925050505b919050565b5f5f6103e86101f484612db79190613c8e565b612dc19190613f2a565b90508083612dcf919061389e565b9150915091565b612e50838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612e09929190613f5a565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612b66565b505050565b5f60036004541015612e6a5760019050612e86565b612e8382600180600454612e7e919061389e565b613115565b90505b919050565b5f60075f60025481526020019081526020015f205f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f60085f60025481526020019081526020015f205f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f5d57612f5a6112d3565b92505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612fc257508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156130175761301283827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612dd69092919063ffffffff16565b6130cf565b5f6002826130259190613f2a565b90505f8183613034919061389e565b905061308185837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612dd69092919063ffffffff16565b6130cc84827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612dd69092919063ffffffff16565b50505b505050565b60025f8154809291906130e690613eb6565b919050555060016004819055505f6003819055505f60055f6101000a81548160ff021916908315150217905550565b5f828211613158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314f90613fcb565b60405180910390fd5b5f845f1c90505f6001858561316d919061389e565b6131779190613b25565b90508481836131869190613fe9565b6131909190613b25565b925050509392505050565b5f819050919050565b6131ad8161319b565b82525050565b5f6020820190506131c65f8301846131a4565b92915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131f9826131d0565b9050919050565b613209816131ef565b8114613213575f5ffd5b50565b5f8135905061322481613200565b92915050565b5f6020828403121561323f5761323e6131cc565b5b5f61324c84828501613216565b91505092915050565b61325e8161319b565b8114613268575f5ffd5b50565b5f8135905061327981613255565b92915050565b5f60208284031215613294576132936131cc565b5b5f6132a18482850161326b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106132e8576132e76132aa565b5b50565b5f8190506132f8826132d7565b919050565b5f613307826132eb565b9050919050565b613317816132fd565b82525050565b613326816131ef565b82525050565b5f610120820190506133405f83018c61330e565b61334d602083018b6131a4565b61335a604083018a6131a4565b61336760608301896131a4565b61337460808301886131a4565b61338160a08301876131a4565b61338e60c08301866131a4565b61339b60e083018561331d565b6133a961010083018461331d565b9a9950505050505050505050565b5f6020820190506133ca5f83018461331d565b92915050565b5f5f604083850312156133e6576133e56131cc565b5b5f6133f38582860161326b565b92505060206134048582860161326b565b9150509250929050565b5f5f60408385031215613424576134236131cc565b5b5f6134318582860161326b565b925050602061344285828601613216565b9150509250929050565b5f819050919050565b5f61346f61346a613465846131d0565b61344c565b6131d0565b9050919050565b5f61348082613455565b9050919050565b5f61349182613476565b9050919050565b6134a181613487565b82525050565b5f6020820190506134ba5f830184613498565b92915050565b5f819050919050565b6134d2816134c0565b82525050565b5f6020820190506134eb5f8301846134c9565b92915050565b5f67ffffffffffffffff82169050919050565b61350d816134f1565b8114613517575f5ffd5b50565b5f8135905061352881613504565b92915050565b613537816134c0565b8114613541575f5ffd5b50565b5f813590506135528161352e565b92915050565b5f5f5f6060848603121561356f5761356e6131cc565b5b5f61357c8682870161351a565b935050602061358d86828701613216565b925050604061359e86828701613544565b9150509250925092565b5f5f604083850312156135be576135bd6131cc565b5b5f6135cb85828601613216565b92505060206135dc8582860161326b565b9150509250929050565b5f8115159050919050565b6135fa816135e6565b82525050565b5f6020820190506136135f8301846135f1565b92915050565b5f5f5f606084860312156136305761362f6131cc565b5b5f61363d86828701613216565b935050602061364e86828701613216565b925050604061365f8682870161326b565b9150509250925092565b5f6020828403121561367e5761367d6131cc565b5b5f61368b84828501613544565b91505092915050565b61369d816134f1565b82525050565b5f6020820190506136b65f830184613694565b92915050565b5f815190506136ca81613200565b92915050565b5f602082840312156136e5576136e46131cc565b5b5f6136f2848285016136bc565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61371f816136fb565b8114613729575f5ffd5b50565b5f8151905061373a81613716565b92915050565b5f60208284031215613755576137546131cc565b5b5f6137628482850161372c565b91505092915050565b5f82825260208201905092915050565b7f456e74726f70792061646472657373206e6f74207365740000000000000000005f82015250565b5f6137af60178361376b565b91506137ba8261377b565b602082019050919050565b5f6020820190508181035f8301526137dc816137a3565b9050919050565b7f4f6e6c7920456e74726f70792063616e2063616c6c20746869732066756e63745f8201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b5f61383d60238361376b565b9150613848826137e3565b604082019050919050565b5f6020820190508181035f83015261386a81613831565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138a88261319b565b91506138b38361319b565b92508282039050818111156138cb576138ca613871565b5b92915050565b7f4a61636b706f74206e6f74206f766572000000000000000000000000000000005f82015250565b5f61390560108361376b565b9150613910826138d1565b602082019050919050565b5f6020820190508181035f830152613932816138f9565b9050919050565b7f43757272656e74206a61636b706f74206d7573742062652067726561746572205f8201527f7468616e20300000000000000000000000000000000000000000000000000000602082015250565b5f61399360268361376b565b915061399e82613939565b604082019050919050565b5f6020820190508181035f8301526139c081613987565b9050919050565b7f4a61636b706f7420616c726561647920736574000000000000000000000000005f82015250565b5f6139fb60138361376b565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b7f53706f6e736f7220616d6f756e74206d757374206265206772656174657220745f8201527f68616e2030000000000000000000000000000000000000000000000000000000602082015250565b5f613a8960258361376b565b9150613a9482613a2f565b604082019050919050565b5f6020820190508181035f830152613ab681613a7d565b9050919050565b7f4a61636b706f74206e6f742072756e6e696e67000000000000000000000000005f82015250565b5f613af160138361376b565b9150613afc82613abd565b602082019050919050565b5f6020820190508181035f830152613b1e81613ae5565b9050919050565b5f613b2f8261319b565b9150613b3a8361319b565b9250828201905080821115613b5257613b51613871565b5b92915050565b7f496e76616c6964206a61636b706f7420616374696f6e000000000000000000005f82015250565b5f613b8c60168361376b565b9150613b9782613b58565b602082019050919050565b5f6020820190508181035f830152613bb981613b80565b9050919050565b5f604082019050613bd35f83018561331d565b613be060208301846134c9565b9392505050565b5f81519050613bf581613504565b92915050565b5f60208284031215613c1057613c0f6131cc565b5b5f613c1d84828501613be7565b91505092915050565b7f496e76616c6964206665652072656365697665720000000000000000000000005f82015250565b5f613c5a60148361376b565b9150613c6582613c26565b602082019050919050565b5f6020820190508181035f830152613c8781613c4e565b9050919050565b5f613c988261319b565b9150613ca38361319b565b9250828202613cb18161319b565b91508282048414831517613cc857613cc7613871565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f606082019050613d0f5f83018661331d565b613d1c602083018561331d565b613d2960408301846131a4565b949350505050565b7f4e6f74206a61636b706f7420616374696f6e00000000000000000000000000005f82015250565b5f613d6560128361376b565b9150613d7082613d31565b602082019050919050565b5f6020820190508181035f830152613d9281613d59565b9050919050565b7f5469636b657420616d6f756e74206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613df360248361376b565b9150613dfe82613d99565b604082019050919050565b5f6020820190508181035f830152613e2081613de7565b9050919050565b7f507572636861736520616d6f756e7420746f6f206869676800000000000000005f82015250565b5f613e5b60188361376b565b9150613e6682613e27565b602082019050919050565b5f6020820190508181035f830152613e8881613e4f565b9050919050565b5f604082019050613ea25f8301856131a4565b613eaf60208301846131a4565b9392505050565b5f613ec08261319b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ef257613ef1613871565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f348261319b565b9150613f3f8361319b565b925082613f4f57613f4e613efd565b5b828204905092915050565b5f604082019050613f6d5f83018561331d565b613f7a60208301846131a4565b9392505050565b7f496e76616c69642072616e6765000000000000000000000000000000000000005f82015250565b5f613fb5600d8361376b565b9150613fc082613f81565b602082019050919050565b5f6020820190508181035f830152613fe281613fa9565b9050919050565b5f613ff38261319b565b9150613ffe8361319b565b92508261400e5761400d613efd565b5b82820690509291505056fea2646970667358221220aeb4f662d7dcd211b4b303ce22b9c0b99061c6e624749927a6e115bc385a311864736f6c634300081e0033000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000002de9101ee34b242c444a47226966690b3a56f89b0000000000000000000000006e7d74fa7d5c90fef9f0512987605a6d546181bb