Address Contract Verified
Address
0x61DF60707bb1402266eD1FdCd7Bae8AFf5C83517
Balance
0.000000000 ETH
Nonce
1
Code Size
22192 bytes
Creator
0x01c82765...7482 at tx 0x9bac5ab9...aadfb9
Indexed Transactions
0 (1 on-chain, 1.2% indexed)
Contract Bytecode
22192 bytes
0x6080604052600436106101a05760003560e01c80637df0f767116100ec578063c9567bf91161008a578063e4dbc45b11610064578063e4dbc45b146105de578063f2fde38b14610607578063f9fdeae314610630578063fd96502414610659576101a7565b8063c9567bf914610561578063d6f155ad14610578578063dd62ed3e146105a1576101a7565b80639fda0581116100c65780639fda0581146104a3578063a39fac12146104cc578063a9059cbb146104fb578063b142180314610538576101a7565b80637df0f767146103fd578063931b68ea1461043a57806395d89b4114610478576101a7565b806322a62e1e11610159578063672434821161013357806367243482146103405780636d1b229d146103695780636f013db91461039257806370a08231146103c0576101a7565b806322a62e1e146102a857806323b872dd146102d8578063313ce56714610315576101a7565b80630210a83d146101ac57806306fdde03146101c3578063095ea7b3146101ee57806318160ddd1461022b57806318839bc31461025657806321c42e111461027f576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610682565b005b3480156101cf57600080fd5b506101d8610b41565b6040516101e59190613d21565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190613de1565b610b7e565b6040516102229190613e3c565b60405180910390f35b34801561023757600080fd5b50610240610c70565b60405161024d9190613e66565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190613ead565b610c93565b005b34801561028b57600080fd5b506102a660048036038101906102a19190613f00565b610e70565b005b3480156102b457600080fd5b506102bd6110a0565b6040516102cf96959493929190613f79565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613fda565b611121565b60405161030c9190613e3c565b60405180910390f35b34801561032157600080fd5b5061032a61132b565b604051610337919061402d565b60405180910390f35b34801561034c57600080fd5b5061036760048036038101906103629190614103565b611334565b005b34801561037557600080fd5b50610390600480360381019061038b9190614184565b61178c565b005b34801561039e57600080fd5b506103a7611838565b6040516103b794939291906141b1565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e291906141f6565b611858565b6040516103f49190613e66565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906141f6565b6118a1565b6040516104319190613e3c565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906141f6565b6118f7565b60405161046f929190614223565b60405180910390f35b34801561048457600080fd5b5061048d61199d565b60405161049a9190613d21565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c5919061424c565b6119da565b005b3480156104d857600080fd5b506104e1611dc9565b6040516104f29594939291906142ae565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190613de1565b611e90565b60405161052f9190613e3c565b60405180910390f35b34801561054457600080fd5b5061055f600480360381019061055a919061432d565b611eed565b005b34801561056d57600080fd5b506105766120a9565b005b34801561058457600080fd5b5061059f600480360381019061059a919061436d565b612191565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906143ad565b6122dd565b6040516105d59190613e66565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190614429565b612364565b005b34801561061357600080fd5b5061062e600480360381019061062991906144ce565b61259f565b005b34801561063c57600080fd5b50610657600480360381019061065291906144fb565b6126a7565b005b34801561066557600080fd5b50610680600480360381019061067b919061458e565b6127d0565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790614640565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b3906146ac565b60405180910390fd5b600047116107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690614718565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087890614784565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091291906147b9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf91906147b9565b6040518363ffffffff1660e01b81526004016109dc9291906147e6565b6020604051808303816000875af11580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f91906147b9565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aaa600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006128ea565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600f81526020017f53686962617269756d204c6f74746f0000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c5e9190613e66565b60405180910390a36001905092915050565b60006009600a610c809190614971565b620f4240610c8e91906149bc565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890614640565b60405180910390fd5b8080610d2a5750815b15610dbd57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db390614a4a565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590614640565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590614ab6565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561109c576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b600061112c846129d8565b61116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290614b22565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113175781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112969190614b42565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611322848484612ab3565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990614640565b60405180910390fd5b60fa848490501115611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090614bc2565b60405180910390fd5b818190508484905014611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890614c54565b60405180910390fd5b6000805b858590508110156114b2576009600a61146e9190614971565b84848381811061148157611480614c74565b5b9050602002013561149291906149bc565b8261149d9190614ca3565b915080806114aa90614cd7565b915050611455565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90614d91565b60405180910390fd5b60005b85859050811015611748576009600a6115519190614971565b84848381811061156457611563614c74565b5b9050602002013561157591906149bc565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115c39190614b42565b925050819055506009600a6115d89190614971565b8484838181106115eb576115ea614c74565b5b905060200201356115fc91906149bc565b6007600088888581811061161357611612614c74565b5b905060200201602081019061162891906141f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116719190614ca3565b9250508190555085858281811061168b5761168a614c74565b5b90506020020160208101906116a091906141f6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6116fc9190614971565b87878681811061170f5761170e614c74565b5b9050602002013561172091906149bc565b60405161172d9190613e66565b60405180910390a3808061174090614cd7565b915050611538565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161177d929190614db1565b60405180910390a15050505050565b600061179733611858565b9050808211156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390614e26565b60405180910390fd5b6117e63383612fe2565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161182c9190613e66565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f4c6f74746f000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90614640565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b0c5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b625750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614e92565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611e9b336129d8565b611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed190614b22565b60405180910390fd5b611ee5338484612ab3565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7290614640565b60405180910390fd5b600060016103e88461ffff166009600a611f959190614971565b620f4240611fa391906149bc565b611fad91906149bc565b611fb79190614ee1565b611fc19190614ca3565b9050600354811015612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90614f5e565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a6120299190614971565b620f424061203791906149bc565b61204191906149bc565b61204b9190614ee1565b6120559190614ca3565b905060045481101561209c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209390614fca565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90614640565b60405180910390fd5b600f60009054906101000a900460ff1615612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e90615036565b60405180910390fd5b61218f613102565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690614640565b60405180910390fd5b811561228057600061223030611858565b905060008111612275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226c906150a2565b60405180910390fd5b61227e81613193565b505b80156122d9576000479050600081116122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c5906150a2565b60405180910390fd5b6122d7476133b2565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e990614640565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61240e9190614971565b620f424061241c91906149bc565b61242691906149bc565b6124309190614ee1565b6005819055508063ffffffff168263ffffffff166009600a6124529190614971565b620f424061246091906149bc565b61246a91906149bc565b6124749190614ee1565b60068190555060055460065410156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b89061510e565b60405180910390fd5b620186a06009600a6124d39190614971565b620f42406124e191906149bc565b6124eb9190614ee1565b6006541161252e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125259061517a565b60405180910390fd5b60646009600a61253e9190614971565b620f424061254c91906149bc565b6125569190614ee1565b60065410612599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612590906151e6565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461262d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262490614640565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161269c9190615265565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272c90614640565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff1602179055508082848661279a9190615280565b6127a49190615280565b6127ae9190615280565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285590614640565b60405180910390fd5b6063818361286c91906152b6565b60ff1611156128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a790615337565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561291c57600090505b61292584613541565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161298c96959493929190615392565b60606040518083038185885af11580156129aa573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129cf9190615408565b50505050505050565b60008060009050600f60009054906101000a900460ff16156129fd5760019050612aaa565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a9f5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612aa957600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a906154a7565b60405180910390fd5b600f60009054906101000a900460ff16612c1957600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bd95750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0f90614b22565b60405180910390fd5b5b600f60019054906101000a900460ff16158015612c7f5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c8d57612c8c61372b565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612cf557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612d4d575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612d9d57612d5d848484613921565b612d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9390615513565b60405180910390fd5b5b6000612daa858585613ab8565b905060008184612dba9190614b42565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e079190614b42565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612ee25781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e9e9190614ca3565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f2d9190614ca3565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612fcd9190613e66565b60405180910390a36001925050509392505050565b60008111156130fe5780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461303a9190614b42565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130909190614ca3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130f59190613e66565b60405180910390a35b5050565b606460016009600a6131149190614971565b620f424061312291906149bc565b61312c91906149bc565b6131369190614ee1565b600381905550606460016009600a61314e9190614971565b620f424061315c91906149bc565b61316691906149bc565b6131709190614ee1565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b61319c81613541565b6000600267ffffffffffffffff8111156131b9576131b8615533565b5b6040519080825280602002602001820160405280156131e75781602001602082028036833780820191505090505b50905030816000815181106131ff576131fe614c74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ca91906147b9565b816001815181106132de576132dd614c74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161337c959493929190615620565b600060405180830381600087803b15801561339657600080fd5b505af11580156133aa573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff166133df9190615280565b905060008161ffff16111561353d5760008161ffff16600060169054906101000a900461ffff1661ffff168461341591906149bc565b61341f9190614ee1565b905060008261ffff16600060189054906101000a900461ffff1661ffff168561344891906149bc565b6134529190614ee1565b905060008211156134c757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156134c5573d6000803e3d6000fd5b505b600081111561353a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613538573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613728577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161371f9190613e66565b60405180910390a35b50565b6001600f60016101000a81548160ff021916908315150217905550600061375130611858565b905060055481101580156137715750600f60009054906101000a900460ff165b156139035760065481106137855760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846137be91906149bc565b6137c89190614ee1565b6137d29190614ee1565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461380a91906149bc565b6138149190614ee1565b90506138203082612fe2565b600081838561382f9190614b42565b6138399190614b42565b90506009600a6138499190614971565b8111156138e657600047905061385e82613193565b6000814761386c9190614b42565b9050600080601c9054906101000a900461ffff1661ffff1611156138e357600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836138c091906149bc565b6138ca9190614ee1565b90506138d586613541565b6138e1868260006128ea565b505b50505b600047905060008111156138fe576138fd816133b2565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff16801561398e5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139e45750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613aad576003548311156139fc5760009050613aac565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613aa1575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9f9190614ca3565b115b15613aab57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff161580613b205750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613b745750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b825760009050613c86565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c05576064600060149054906101000a900460ff1660ff1684613bf491906149bc565b613bfe9190614ee1565b9050613c85565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c84576064600060159054906101000a900460ff1660ff1684613c7791906149bc565b613c819190614ee1565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ccb578082015181840152602081019050613cb0565b60008484015250505050565b6000601f19601f8301169050919050565b6000613cf382613c91565b613cfd8185613c9c565b9350613d0d818560208601613cad565b613d1681613cd7565b840191505092915050565b60006020820190508181036000830152613d3b8184613ce8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d7882613d4d565b9050919050565b613d8881613d6d565b8114613d9357600080fd5b50565b600081359050613da581613d7f565b92915050565b6000819050919050565b613dbe81613dab565b8114613dc957600080fd5b50565b600081359050613ddb81613db5565b92915050565b60008060408385031215613df857613df7613d43565b5b6000613e0685828601613d96565b9250506020613e1785828601613dcc565b9150509250929050565b60008115159050919050565b613e3681613e21565b82525050565b6000602082019050613e516000830184613e2d565b92915050565b613e6081613dab565b82525050565b6000602082019050613e7b6000830184613e57565b92915050565b613e8a81613e21565b8114613e9557600080fd5b50565b600081359050613ea781613e81565b92915050565b600080600060608486031215613ec657613ec5613d43565b5b6000613ed486828701613d96565b9350506020613ee586828701613e98565b9250506040613ef686828701613e98565b9150509250925092565b60008060408385031215613f1757613f16613d43565b5b6000613f2585828601613d96565b9250506020613f3685828601613e98565b9150509250929050565b600060ff82169050919050565b613f5681613f40565b82525050565b600061ffff82169050919050565b613f7381613f5c565b82525050565b600060c082019050613f8e6000830189613f4d565b613f9b6020830188613f4d565b613fa86040830187613f6a565b613fb56060830186613f6a565b613fc26080830185613f6a565b613fcf60a0830184613f6a565b979650505050505050565b600080600060608486031215613ff357613ff2613d43565b5b600061400186828701613d96565b935050602061401286828701613d96565b925050604061402386828701613dcc565b9150509250925092565b60006020820190506140426000830184613f4d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261406d5761406c614048565b5b8235905067ffffffffffffffff81111561408a5761408961404d565b5b6020830191508360208202830111156140a6576140a5614052565b5b9250929050565b60008083601f8401126140c3576140c2614048565b5b8235905067ffffffffffffffff8111156140e0576140df61404d565b5b6020830191508360208202830111156140fc576140fb614052565b5b9250929050565b6000806000806040858703121561411d5761411c613d43565b5b600085013567ffffffffffffffff81111561413b5761413a613d48565b5b61414787828801614057565b9450945050602085013567ffffffffffffffff81111561416a57614169613d48565b5b614176878288016140ad565b925092505092959194509250565b60006020828403121561419a57614199613d43565b5b60006141a884828501613dcc565b91505092915050565b60006080820190506141c66000830187613e57565b6141d36020830186613e57565b6141e06040830185613e57565b6141ed6060830184613e57565b95945050505050565b60006020828403121561420c5761420b613d43565b5b600061421a84828501613d96565b91505092915050565b60006040820190506142386000830185613e2d565b6142456020830184613e2d565b9392505050565b60008060006060848603121561426557614264613d43565b5b600061427386828701613d96565b935050602061428486828701613d96565b925050604061429586828701613d96565b9150509250925092565b6142a881613d6d565b82525050565b600060a0820190506142c3600083018861429f565b6142d0602083018761429f565b6142dd604083018661429f565b6142ea606083018561429f565b6142f7608083018461429f565b9695505050505050565b61430a81613f5c565b811461431557600080fd5b50565b60008135905061432781614301565b92915050565b6000806040838503121561434457614343613d43565b5b600061435285828601614318565b925050602061436385828601614318565b9150509250929050565b6000806040838503121561438457614383613d43565b5b600061439285828601613e98565b92505060206143a385828601613e98565b9150509250929050565b600080604083850312156143c4576143c3613d43565b5b60006143d285828601613d96565b92505060206143e385828601613d96565b9150509250929050565b600063ffffffff82169050919050565b614406816143ed565b811461441157600080fd5b50565b600081359050614423816143fd565b92915050565b6000806000806080858703121561444357614442613d43565b5b600061445187828801614414565b945050602061446287828801614414565b935050604061447387828801614414565b925050606061448487828801614414565b91505092959194509250565b600061449b82613d4d565b9050919050565b6144ab81614490565b81146144b657600080fd5b50565b6000813590506144c8816144a2565b92915050565b6000602082840312156144e4576144e3613d43565b5b60006144f2848285016144b9565b91505092915050565b6000806000806080858703121561451557614514613d43565b5b600061452387828801614318565b945050602061453487828801614318565b935050604061454587828801614318565b925050606061455687828801614318565b91505092959194509250565b61456b81613f40565b811461457657600080fd5b50565b60008135905061458881614562565b92915050565b600080604083850312156145a5576145a4613d43565b5b60006145b385828601614579565b92505060206145c485828601614579565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061462a602b83613c9c565b9150614635826145ce565b604082019050919050565b600060208201905081810360008301526146598161461d565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000614696600983613c9c565b91506146a182614660565b602082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b6000614702601283613c9c565b915061470d826146cc565b602082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061476e601583613c9c565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b6000815190506147b381613d7f565b92915050565b6000602082840312156147cf576147ce613d43565b5b60006147dd848285016147a4565b91505092915050565b60006040820190506147fb600083018561429f565b614808602083018461429f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614895578086048111156148715761487061480f565b5b60018516156148805780820291505b808102905061488e8561483e565b9450614855565b94509492505050565b6000826148ae576001905061496a565b816148bc576000905061496a565b81600181146148d257600281146148dc5761490b565b600191505061496a565b60ff8411156148ee576148ed61480f565b5b8360020a9150848211156149055761490461480f565b5b5061496a565b5060208310610133831016604e8410600b84101617156149405782820a90508381111561493b5761493a61480f565b5b61496a565b61494d848484600161484b565b925090508184048111156149645761496361480f565b5b81810290505b9392505050565b600061497c82613dab565b915061498783613f40565b92506149b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461489e565b905092915050565b60006149c782613dab565b91506149d283613dab565b92508282026149e081613dab565b915082820484148315176149f7576149f661480f565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614a34601083613c9c565b9150614a3f826149fe565b602082019050919050565b60006020820190508181036000830152614a6381614a27565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614aa0601c83613c9c565b9150614aab82614a6a565b602082019050919050565b60006020820190508181036000830152614acf81614a93565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614b0c601083613c9c565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b6000614b4d82613dab565b9150614b5883613dab565b9250828203905081811115614b7057614b6f61480f565b5b92915050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b6000614bac602083613c9c565b9150614bb782614b76565b602082019050919050565b60006020820190508181036000830152614bdb81614b9f565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b6000614c3e602583613c9c565b9150614c4982614be2565b604082019050919050565b60006020820190508181036000830152614c6d81614c31565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614cae82613dab565b9150614cb983613dab565b9250828201905080821115614cd157614cd061480f565b5b92915050565b6000614ce282613dab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d1457614d1361480f565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b6000614d7b602683613c9c565b9150614d8682614d1f565b604082019050919050565b60006020820190508181036000830152614daa81614d6e565b9050919050565b6000604082019050614dc66000830185613e57565b614dd36020830184613e57565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614e10601583613c9c565b9150614e1b82614dda565b602082019050919050565b60006020820190508181036000830152614e3f81614e03565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b6000614e7c601783613c9c565b9150614e8782614e46565b602082019050919050565b60006020820190508181036000830152614eab81614e6f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614eec82613dab565b9150614ef783613dab565b925082614f0757614f06614eb2565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000614f48601083613c9c565b9150614f5382614f12565b602082019050919050565b60006020820190508181036000830152614f7781614f3b565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000614fb4601483613c9c565b9150614fbf82614f7e565b602082019050919050565b60006020820190508181036000830152614fe381614fa7565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000615020601483613c9c565b915061502b82614fea565b602082019050919050565b6000602082019050818103600083015261504f81615013565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061508c600983613c9c565b915061509782615056565b602082019050919050565b600060208201905081810360008301526150bb8161507f565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006150f8600c83613c9c565b9150615103826150c2565b602082019050919050565b60006020820190508181036000830152615127816150eb565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000615164601783613c9c565b915061516f8261512e565b602082019050919050565b6000602082019050818103600083015261519381615157565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006151d0601883613c9c565b91506151db8261519a565b602082019050919050565b600060208201905081810360008301526151ff816151c3565b9050919050565b6000819050919050565b600061522b61522661522184613d4d565b615206565b613d4d565b9050919050565b600061523d82615210565b9050919050565b600061524f82615232565b9050919050565b61525f81615244565b82525050565b600060208201905061527a6000830184615256565b92915050565b600061528b82613f5c565b915061529683613f5c565b9250828201905061ffff8111156152b0576152af61480f565b5b92915050565b60006152c182613f40565b91506152cc83613f40565b9250828201905060ff8111156152e5576152e461480f565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000615321601283613c9c565b915061532c826152eb565b602082019050919050565b6000602082019050818103600083015261535081615314565b9050919050565b6000819050919050565b600061537c61537761537284615357565b615206565b613dab565b9050919050565b61538c81615361565b82525050565b600060c0820190506153a7600083018961429f565b6153b46020830188613e57565b6153c16040830187615383565b6153ce6060830186615383565b6153db608083018561429f565b6153e860a0830184613e57565b979650505050505050565b60008151905061540281613db5565b92915050565b60008060006060848603121561542157615420613d43565b5b600061542f868287016153f3565b9350506020615440868287016153f3565b9250506040615451868287016153f3565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615491601d83613c9c565b915061549c8261545b565b602082019050919050565b600060208201905081810360008301526154c081615484565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006154fd601183613c9c565b9150615508826154c7565b602082019050919050565b6000602082019050818103600083015261552c816154f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61559781613d6d565b82525050565b60006155a9838361558e565b60208301905092915050565b6000602082019050919050565b60006155cd82615562565b6155d7818561556d565b93506155e28361557e565b8060005b838110156156135781516155fa888261559d565b9750615605836155b5565b9250506001810190506155e6565b5085935050505092915050565b600060a0820190506156356000830188613e57565b6156426020830187615383565b818103604083015261565481866155c2565b9050615663606083018561429f565b6156706080830184613e57565b969550505050505056fea264697066735822122093e9b4e2b878a6d5dc10d2672a8d76920c53418f013f6472618a32432f010b1d64736f6c63430008110033
Verified Source Code Full Match
Compiler: v0.8.17+commit.8df45f5f
EVM: london
Optimization: No
Lotto.sol 375 lines
//SPDX-License-Identifier: MIT
/*
Shibarium's Very First Lottery Token!
https://www.shibariumlottery.com
https://t.me/ShibariumLottery
*/
pragma solidity 0.8.17;
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address __owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed _owner, address indexed spender, uint256 value);
}
abstract contract Auth {
address internal _owner;
constructor(address creatorOwner) { _owner = creatorOwner; }
modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; }
function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); }
event OwnershipTransferred(address _owner);
}
interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
function WETH() external pure returns (address);
function factory() external pure returns (address);
function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract Lotto is IERC20, Auth {
uint8 private constant _decimals = 9;
uint256 private constant _totalSupply = 1_000_000 * (10**_decimals);
string private constant _name = "Shibarium Lotto";
string private constant _symbol = "Lotto";
uint8 private _buyTaxRate = 5;
uint8 private _sellTaxRate = 5;
uint16 private _taxSharesMarketing = 4;
uint16 private _taxSharesDevelopment = 1;
uint16 private _taxSharesBurn = 0;
uint16 private _taxSharesLP = 0;
uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP;
address payable private _walletMarketing = payable(0xa5DDB5e0EcB62F4900FC8F749C85c3137de6aBCD);
address payable private _walletDevelopment = payable(0x13b67d63a91876d07C696933dcf48630Acd1de6B);
uint256 private _maxTxAmount = _totalSupply;
uint256 private _maxWalletAmount = _totalSupply;
uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
uint256 private _taxSwapMax = _totalSupply * 85 / 100000;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _noFees;
mapping (address => bool) private _noLimits;
address constant private _burnWallet = address(0);
address private _lpOwner;
address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //uniswap v2 router
IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
address private _primaryLP;
mapping (address => bool) private _isLP;
bool private _tradingOpen;
bool private _inTaxSwap = false;
modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }
event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);
constructor() Auth(msg.sender) {
_lpOwner = msg.sender;
_balances[address(this)] = 1_000_000 * (10 ** _decimals);
emit Transfer(address(0), address(this), _balances[address(this)]);
_balances[_owner] = _totalSupply - _balances[address(this)];
emit Transfer(address(0), _owner, _balances[_owner]);
_noFees[_owner] = true;
_noFees[address(this)] = true;
_noFees[_swapRouterAddress] = true;
_noFees[_walletMarketing] = true;
_noFees[_walletDevelopment] = true;
_noFees[_burnWallet] = true;
_noLimits[_owner] = true;
_noLimits[address(this)] = true;
_noLimits[_swapRouterAddress] = true;
_noLimits[_walletMarketing] = true;
_noLimits[_walletDevelopment] = true;
_noLimits[_burnWallet] = true;
}
receive() external payable {}
function totalSupply() external pure override returns (uint256) { return _totalSupply; }
function decimals() external pure override returns (uint8) { return _decimals; }
function symbol() external pure override returns (string memory) { return _symbol; }
function name() external pure override returns (string memory) { return _name; }
function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
require(_checkTradingOpen(msg.sender), "Trading not open");
return _transferFrom(msg.sender, recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
require(_checkTradingOpen(sender), "Trading not open");
if(_allowances[sender][msg.sender] != type(uint256).max){
_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
}
return _transferFrom(sender, recipient, amount);
}
function openTrading() external onlyOwner {
require(!_tradingOpen, "trading already open");
_openTrading();
}
function _approveRouter(uint256 _tokenAmount) internal {
if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
emit Approval(address(this), _swapRouterAddress, type(uint256).max);
}
}
function addInitialLiquidity() external onlyOwner lockTaxSwap {
require(_primaryLP == address(0), "LP exists");
require(address(this).balance>0, "No ETH in contract");
require(_balances[address(this)]>0, "No tokens in contract");
_primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
_addLiquidity(_balances[address(this)], address(this).balance, false);
_isLP[_primaryLP] = true;
}
function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
address lpTokenRecipient = _lpOwner;
if ( autoburn ) { lpTokenRecipient = address(0); }
_approveRouter(_tokenAmount);
_primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
}
function _openTrading() internal {
_maxTxAmount = _totalSupply * 1 / 100;
_maxWalletAmount = _totalSupply * 1 / 100;
_tradingOpen = true;
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
require(sender != address(0), "No transfers from Zero wallet");
if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }
uint256 _taxAmount = _calculateTax(sender, recipient, amount);
uint256 _transferAmount = amount - _taxAmount;
_balances[sender] = _balances[sender] - amount;
if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
_balances[recipient] = _balances[recipient] + _transferAmount;
emit Transfer(sender, recipient, amount);
return true;
}
function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
bool limitCheckPassed = true;
if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
}
return limitCheckPassed;
}
function _checkTradingOpen(address sender) private view returns (bool){
bool checkResult = false;
if ( _tradingOpen ) { checkResult = true; }
else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; }
return checkResult;
}
function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
uint256 taxAmount;
if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
return taxAmount;
}
function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) {
return ( _noFees[wallet], _noLimits[wallet] );
}
function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
_noFees[ wallet ] = noFees;
_noLimits[ wallet ] = noLimits;
}
function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner {
require(lpContractAddress != _primaryLP, "Cannot change the primary LP");
_isLP[lpContractAddress] = isLiquidityPool;
if (isLiquidityPool) {
_noFees[lpContractAddress] = false;
_noLimits[lpContractAddress] = false;
}
}
function isLP(address wallet) external view returns (bool) {
return _isLP[wallet];
}
function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) {
return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn);
}
function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner {
require(newBuyTax + newSellTax <= 99, "Roundtrip too high");
_buyTaxRate = newBuyTax;
_sellTaxRate = newSellTax;
}
function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
_taxSharesLP = sharesAutoLP;
_taxSharesMarketing = sharesMarketing;
_taxSharesDevelopment = sharesDevelopment;
_totalTaxShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment;
}
function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) {
return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner);
}
function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner {
require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet");
_walletMarketing = payable(newMarketing);
_walletDevelopment = payable(newDevelopment);
_lpOwner = newLpOwner;
_noFees[newMarketing] = true;
_noFees[newDevelopment] = true;
_noLimits[newMarketing] = true;
_noLimits[newDevelopment] = true;
}
function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) {
return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax);
}
function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
require(newTxAmt >= _maxTxAmount, "tx limit too low");
_maxTxAmount = newTxAmt;
uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
require(newWalletAmt >= _maxWalletAmount, "wallet limit too low");
_maxWalletAmount = newWalletAmt;
}
function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
_taxSwapMin = _totalSupply * minValue / minDivider;
_taxSwapMax = _totalSupply * maxValue / maxDivider;
require(_taxSwapMax>=_taxSwapMin, "MinMax error");
require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high");
}
function _burnTokens(address fromWallet, uint256 amount) private {
if ( amount > 0 ) {
_balances[fromWallet] -= amount;
_balances[_burnWallet] += amount;
emit Transfer(fromWallet, _burnWallet, amount);
}
}
function _swapTaxAndLiquify() private lockTaxSwap {
uint256 _taxTokensAvailable = balanceOf(address(this));
if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares;
_burnTokens(address(this), _tokensToBurn);
uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn;
if( _tokensToSwap > 10**_decimals ) {
uint256 _ethPreSwap = address(this).balance;
_swapTaxTokensForEth(_tokensToSwap);
uint256 _ethSwapped = address(this).balance - _ethPreSwap;
if ( _taxSharesLP > 0 ) {
uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
_approveRouter(_tokensForLP);
_addLiquidity(_tokensForLP, _ethWeiAmount, false);
}
}
uint256 _contractETHBalance = address(this).balance;
if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
}
}
function _swapTaxTokensForEth(uint256 tokenAmount) private {
_approveRouter(tokenAmount);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = _primarySwapRouter.WETH();
_primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
}
function _distributeTaxEth(uint256 amount) private {
uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment;
if (_taxShareTotal > 0) {
uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal;
if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); }
}
}
function manualTaxSwapAndSend(bool swapTokens, bool sendEth) external onlyOwner {
if (swapTokens) {
uint256 taxTokenBalance = balanceOf(address(this));
require(taxTokenBalance > 0, "No tokens");
_swapTaxTokensForEth(taxTokenBalance);
}
if (sendEth) {
uint256 ethBalance = address(this).balance;
require(ethBalance > 0, "No tokens");
_distributeTaxEth(address(this).balance);
}
}
function burnTokens(uint256 amount) external {
uint256 _tokensAvailable = balanceOf(msg.sender);
require(amount <= _tokensAvailable, "Token balance too low");
_burnTokens(msg.sender, amount);
emit TokensBurned(msg.sender, amount);
}
function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
require(addresses.length <= 250,"Wallet count over 250 (gas risk)");
require(addresses.length == tokenAmounts.length,"Address and token amount list mismach");
uint256 airdropTotal = 0;
for(uint i=0; i < addresses.length; i++){
airdropTotal += (tokenAmounts[i] * 10**_decimals);
}
require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total");
for(uint i=0; i < addresses.length; i++){
_balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
_balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );
}
emit TokensAirdropped(addresses.length, airdropTotal);
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getAddresses 0xa39fac12 → address, address, address, address, address
getExemptions 0x931b68ea → bool, bool
getLimitsInfo 0x6f013db9 → uint256, uint256, uint256, uint256
getTaxInfo 0x22a62e1e → uint8, uint8, uint16, uint16, uint16, uint16
isLP 0x7df0f767 → bool
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 16 functions
These functions modify contract state and require a wallet transaction to execute.
addInitialLiquidity 0x0210a83d
No parameters
airdrop 0x67243482
address[] addresses
uint256[] tokenAmounts
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burnTokens 0x6d1b229d
uint256 amount
increaseLimits 0xb1421803
uint16 maxTxAmtPermile
uint16 maxWalletAmtPermile
manualTaxSwapAndSend 0xd6f155ad
bool swapTokens
bool sendEth
openTrading 0xc9567bf9
No parameters
setExemptions 0x18839bc3
address wallet
bool noFees
bool noLimits
setExtraLP 0x21c42e11
address lpContractAddress
bool isLiquidityPool
setTaxDistribution 0xf9fdeae3
uint16 sharesTokenBurn
uint16 sharesAutoLP
uint16 sharesMarketing
uint16 sharesDevelopment
setTaxRates 0xfd965024
uint8 newBuyTax
uint8 newSellTax
setTaxSwapLimits 0xe4dbc45b
uint32 minValue
uint32 minDivider
uint32 maxValue
uint32 maxDivider
setTaxWallets 0x9fda0581
address newMarketing
address newDevelopment
address newLpOwner
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
This address has 1 on-chain transactions, but only 1.2% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →