Address Contract Verified
Address
0xf20a2A200d0b987d7fA468953469C1277fF512CF
Balance
0 ETH
Nonce
1
Code Size
19563 bytes
Creator
0x3A3156aF...F2A5 at tx 0xeee2b6a5...bc8057
Indexed Transactions
0
Contract Bytecode
19563 bytes
0x608060405260043610610207575f3560e01c8063893d20e811610117578063ca89b8991161009f578063ef43b02b1161006e578063ef43b02b146107a6578063efca2eed146107ce578063f2fde38b146107f8578063fb201b1d14610820578063ffd49c84146108365761020e565b8063ca89b899146106c8578063ce7c2ac214610704578063dd62ed3e14610742578063e2d6f94c1461077e5761020e565b806395d89b41116100e657806395d89b41146105f8578063997664d714610622578063a8aa1b311461064c578063a9059cbb14610676578063c942435d146106b25761020e565b8063893d20e8146105545780638c41180e1461057e5780638cd4426d146105a65780639358928b146105ce5761020e565b8063313ce5671161019a5780634355855a116101695780634355855a1461046057806348ff2b8b1461049c5780634fab0ae8146104c457806360e71962146104ee57806370a08231146105185761020e565b8063313ce567146103a857806334c5d2ce146103d25780633a98ef39146103fa5780633f4218e0146104245761020e565b8063228cb733116101d6578063228cb733146102ca57806323b872dd146102f457806328fd3198146103305780632f54bf6e1461036c5761020e565b806306fdde0314610212578063095ea7b31461023c5780630ca61cb11461027857806318160ddd146102a05761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610860565b6040516102339190613aca565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190613b7b565b61089d565b60405161026f9190613bd3565b60405180910390f35b348015610283575f80fd5b5061029e60048036038101906102999190613bec565b6108b3565b005b3480156102ab575f80fd5b506102b4610915565b6040516102c19190613c4b565b60405180910390f35b3480156102d5575f80fd5b506102de61091e565b6040516102eb9190613c73565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190613c8c565b610943565b6040516103279190613bd3565b60405180910390f35b34801561033b575f80fd5b5061035660048036038101906103519190613cdc565b610a09565b6040516103639190613c4b565b60405180910390f35b348015610377575f80fd5b50610392600480360381019061038d9190613cdc565b610b15565b60405161039f9190613bd3565b60405180910390f35b3480156103b3575f80fd5b506103bc610b6c565b6040516103c99190613d22565b60405180910390f35b3480156103dd575f80fd5b506103f860048036038101906103f39190613bec565b610b74565b005b348015610405575f80fd5b5061040e610cd0565b60405161041b9190613c4b565b60405180910390f35b34801561042f575f80fd5b5061044a60048036038101906104459190613cdc565b610cd6565b6040516104579190613bd3565b60405180910390f35b34801561046b575f80fd5b5061048660048036038101906104819190613cdc565b610cf3565b6040516104939190613bd3565b60405180910390f35b3480156104a7575f80fd5b506104c260048036038101906104bd9190613d65565b610d10565b005b3480156104cf575f80fd5b506104d8610db0565b6040516104e59190613c4b565b60405180910390f35b3480156104f9575f80fd5b50610502610db6565b60405161050f9190613c4b565b60405180910390f35b348015610523575f80fd5b5061053e60048036038101906105399190613cdc565b610dbc565b60405161054b9190613c4b565b60405180910390f35b34801561055f575f80fd5b50610568610e02565b6040516105759190613c73565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190613d65565b610e29565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190613b7b565b610fea565b005b3480156105d9575f80fd5b506105e2611100565b6040516105ef9190613c4b565b60405180910390f35b348015610603575f80fd5b5061060c61113f565b6040516106199190613aca565b60405180910390f35b34801561062d575f80fd5b5061063661117c565b6040516106439190613c4b565b60405180910390f35b348015610657575f80fd5b50610660611182565b60405161066d9190613c73565b60405180910390f35b348015610681575f80fd5b5061069c60048036038101906106979190613b7b565b6111a7565b6040516106a99190613bd3565b60405180910390f35b3480156106bd575f80fd5b506106c66111bd565b005b3480156106d3575f80fd5b506106ee60048036038101906106e99190613cdc565b6111c8565b6040516106fb9190613c4b565b60405180910390f35b34801561070f575f80fd5b5061072a60048036038101906107259190613cdc565b611216565b60405161073993929190613da3565b60405180910390f35b34801561074d575f80fd5b5061076860048036038101906107639190613dd8565b61123c565b6040516107759190613c4b565b60405180910390f35b348015610789575f80fd5b506107a4600480360381019061079f9190613e16565b6112be565b005b3480156107b1575f80fd5b506107cc60048036038101906107c79190613d65565b6113e8565b005b3480156107d9575f80fd5b506107e26114b0565b6040516107ef9190613c4b565b60405180910390f35b348015610803575f80fd5b5061081e60048036038101906108199190613f02565b6114b6565b005b34801561082b575f80fd5b50610834611577565b005b348015610841575f80fd5b5061084a61162c565b6040516108579190613c4b565b60405180910390f35b60606040518060400160405280600c81526020017f476f6c6453747261746567790000000000000000000000000000000000000000815250905090565b5f6108a9338484611632565b6001905092915050565b6108bc33610b15565b6108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290613f77565b60405180910390fd5b826025819055508160268190555080602781905550505050565b5f600154905090565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61094f8484846117f5565b6109fe84336109f985604051806060016040528060288152602001614c0e6028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b039092919063ffffffff16565b611632565b600190509392505050565b5f8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610a58575f9050610b10565b5f610aa160235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611b57565b90505f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050808211610af8575f92505050610b10565b610b0b8183611b8890919063ffffffff16565b925050505b919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b610b7d33610b15565b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390613f77565b60405180910390fd5b5f61271084610bc9610915565b610bd39190613fc2565b610bdd9190614030565b90505f61271084610bec610915565b610bf69190613fc2565b610c009190614030565b90505f61271084610c0f610915565b610c199190613fc2565b610c239190614030565b90508260028190555081600381905550806004819055505f610c6a6103e8610c5c6005610c4e610915565b611b9d90919063ffffffff16565b611bb290919063ffffffff16565b9050808410158015610c7c5750808310155b8015610c885750808210155b610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe906140d0565b60405180910390fd5b50505050505050565b601b5481565b6007602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b610d1933610b15565b610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90613f77565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60265481565b60275481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e3233610b15565b610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890613f77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610f1b5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f5357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990614138565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b7384b9389b60782fc38b9b10ee8edd2b36864fd11973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611063906141a0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7384b9389b60782fc38b9b10ee8edd2b36864fd119836040518363ffffffff1660e01b81526004016110bb9291906141be565b6020604051808303815f875af11580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb91906141f9565b505050565b5f61113a61110d5f610dbc565b61112c61111b61dead610dbc565b600154611b8890919063ffffffff16565b611b8890919063ffffffff16565b905090565b60606040518060400160405280600781526020017f474f4c4453545200000000000000000000000000000000000000000000000000815250905090565b601c5481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6111b33384846117f5565b6001905092915050565b6111c633611bc7565b565b5f8082905060235f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154915050919050565b6023602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112c733610b15565b611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90613f77565b60405180910390fd5b87600c8190555086600d819055508560108190555084600e8190555083600f819055508260118190555081601281905550806013819055506113546005601454611bb290919063ffffffff16565b6011541115801561137c57506113766005601454611bb290919063ffffffff16565b60125411155b801561139f57506113996005601454611bb290919063ffffffff16565b60135411155b6113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590614294565b60405180910390fd5b5050505050505050565b6113f133610b15565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613f77565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550801561149957611494825f611e45565b6114ac565b6114ab826114a684610dbc565b611e45565b5b5050565b601d5481565b6114bf33610b15565b6114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590613f77565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161156c919061430d565b60405180910390a150565b61158033610b15565b6115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690613f77565b60405180910390fd5b600b60149054906101000a900460ff161561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690614370565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550565b60255481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906143fe565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361170e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117059061448c565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e89190613c4b565b60405180910390a3505050565b611800838383612042565b61180a83836121b0565b6118158383836122a7565b61181f8383612477565b61182a83838361253d565b611835838383612765565b6118858160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b8890919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6118d1848461278d565b6118db57816118e7565b6118e6848484612834565b5b90506119398160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d590919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d79190613c4b565b60405180910390a360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611a4057611a3f84611a3a86610dbc565b611e45565b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611aa157611aa083611a9b85610dbc565b611e45565b5b5f60235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01541115611af257611af183611bc7565b5b611afd6027546129ea565b50505050565b5f838311158290611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b419190613aca565b60405180910390fd5b5082840390509392505050565b5f611b81601f54611b73601e5485611b9d90919063ffffffff16565b611bb290919063ffffffff16565b9050919050565b5f8183611b9591906144aa565b905092915050565b5f8183611baa9190613fc2565b905092915050565b5f8183611bbf9190614030565b905092915050565b5f60235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01540315611e42575f611c1882610a09565b90505f811115611e4057611c3781601d546129d590919063ffffffff16565b601d81905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611c999291906141be565b6020604051808303815f875af1158015611cb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd991906141f9565b504260225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d6f8160235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201546129d590919063ffffffff16565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020181905550611dfb60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611b57565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b5f81118015611e9257505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b15611ea557611ea082612b19565b611f02565b5f81148015611ef257505f60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b15611f0157611f0082612bc3565b5b5b611f6881611f5a60235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154601b54611b8890919063ffffffff16565b6129d590919063ffffffff16565b601b819055508060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0181905550611ffa60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154611b57565b60235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a79061454d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612115906145db565b60405180910390fd5b5f8111612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614669565b60405180910390fd5b61216983610dbc565b8111156121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a2906146f7565b60405180910390fd5b505050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561224e575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a357600b60149054906101000a900460ff166122a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122999061475f565b60405180910390fd5b5b5050565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612345575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561239e5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612472576004546124308260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d590919063ffffffff16565b1115612471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612468906147c7565b60405180910390fd5b5b505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614801561251a575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561253957600160165f82825461253191906147e5565b925050819055505b5050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461267957600354811115806125e8575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612639575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f90614862565b60405180910390fd5b5b600254811115806126d0575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612721575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275790614862565b60405180910390fd5b505050565b612770838383612db8565b1561278857612780601854612ee9565b5f6016819055505b505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561282c575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f806128408585613172565b11156129ca575f6128776128548686613172565b61286960145486611bb290919063ffffffff16565b611b9d90919063ffffffff16565b90506128c98160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129d590919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129679190613c4b565b60405180910390a35f60105411156129af576129ae3061dead6129a960105461299b60145489611bb290919063ffffffff16565b611b9d90919063ffffffff16565b6117f5565b5b6129c28184611b8890919063ffffffff16565b9150506129ce565b8190505b9392505050565b5f81836129e291906147e5565b905092915050565b5f60208054905090505f8103612a005750612b16565b5f805a90505f5b8483108015612a1557508381105b15612b11578360245410612a2b575f6024819055505b612a71602060245481548110612a4457612a43614880565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132f8565b15612abd57612abc602060245481548110612a8f57612a8e614880565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bc7565b5b612ae2612ad35a84611b8890919063ffffffff16565b846129d590919063ffffffff16565b92505a915060245f815480929190612af9906148ad565b91905055508080612b09906148ad565b915050612a07565b505050505b50565b60208054905060215f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550602081908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60206001602080549050612bd791906144aa565b81548110612be857612be7614880565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602060215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481548110612c6157612c60614880565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060215f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460215f60206001602080549050612cfb91906144aa565b81548110612d0c57612d0b614880565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506020805480612d8357612d826148f4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f8060195483101590505f601854612dcf30610dbc565b1015905060175f9054906101000a900460ff16158015612dfa575060155f9054906101000a900460ff165b8015612e125750600b60149054906101000a900460ff165b8015612e1b5750815b8015612e6e575060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ec65750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612ed55750600260165410155b8015612ede5750805b925050509392505050565b600160175f6101000a81548160ff0219169083151502179055505f612f696002612f5b600e54612f4d600f54612f3f600d54612f316001600c546129d590919063ffffffff16565b6129d590919063ffffffff16565b6129d590919063ffffffff16565b6129d590919063ffffffff16565b611b9d90919063ffffffff16565b90505f612f9382612f85600c5486611b9d90919063ffffffff16565b611bb290919063ffffffff16565b90505f612fa98285611b8890919063ffffffff16565b90505f479050612fb882613362565b5f612fcc8247611b8890919063ffffffff16565b90505f612ff6612fe7600c5488611b8890919063ffffffff16565b83611bb290919063ffffffff16565b90505f61300e600c5483611b9d90919063ffffffff16565b90505f811115613023576130228682613598565b5b5f61304c600d5461303e600286611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b90505f8111156130af577384b9389b60782fc38b9b10ee8edd2b36864fd11973ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156130ad573d5f803e3d5ffd5b505b5f6130d8600e546130ca600287611b9d90919063ffffffff16565b611b9d90919063ffffffff16565b90505f8111156130ec576130eb81613685565b5b5f47111561314d57733a3156afa8259ee853ae41dd591ad46757e2f2a573ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561314b573d5f803e3d5ffd5b505b5050505050505050505f60175f6101000a81548160ff02191690831515021790555050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061320e575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613230576132296064601454611b8890919063ffffffff16565b90506132f2565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361328e5760125490506132f2565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132ec5760115490506132f2565b60135490505b92915050565b5f4260255460225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461334591906147e5565b10801561335b575060265461335983610a09565b115b9050919050565b5f600267ffffffffffffffff81111561337e5761337d614921565b5b6040519080825280602002602001820160405280156133ac5781602001602082028036833780820191505090505b50905030815f815181106133c3576133c2614880565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613467573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348b9190614962565b8160018151811061349f5761349e614880565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061350530600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611632565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613567959493929190614a7d565b5f604051808303815f87803b15801561357e575f80fd5b505af1158015613590573d5f803e3d5ffd5b505050505050565b6135c430600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611632565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80733a3156afa8259ee853ae41dd591ad46757e2f2a5426040518863ffffffff1660e01b815260040161363d96959493929190614ad5565b60606040518083038185885af1158015613659573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061367e9190614b48565b5050505050565b5f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016136e09190613c73565b602060405180830381865afa1580156136fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061371f9190614b98565b90505f600267ffffffffffffffff81111561373d5761373c614921565b5b60405190808252806020026020018201604052801561376b5781602001602082028036833780820191505090505b509050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137fc9190614962565b815f8151811061380f5761380e614880565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061387f5761387e614880565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b815260040161391a9493929190614bc3565b5f604051808303818588803b158015613931575f80fd5b505af1158015613943573d5f803e3d5ffd5b50505050505f6139f483601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016139a79190613c73565b602060405180830381865afa1580156139c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e69190614b98565b611b8890919063ffffffff16565b9050613a0b81601c546129d590919063ffffffff16565b601c81905550613a4e613a3d601b54613a2f84601f54611b9d90919063ffffffff16565b611bb290919063ffffffff16565b601e546129d590919063ffffffff16565b601e8190555050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613a9c82613a5a565b613aa68185613a64565b9350613ab6818560208601613a74565b613abf81613a82565b840191505092915050565b5f6020820190508181035f830152613ae28184613a92565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613b1782613aee565b9050919050565b613b2781613b0d565b8114613b31575f80fd5b50565b5f81359050613b4281613b1e565b92915050565b5f819050919050565b613b5a81613b48565b8114613b64575f80fd5b50565b5f81359050613b7581613b51565b92915050565b5f8060408385031215613b9157613b90613aea565b5b5f613b9e85828601613b34565b9250506020613baf85828601613b67565b9150509250929050565b5f8115159050919050565b613bcd81613bb9565b82525050565b5f602082019050613be65f830184613bc4565b92915050565b5f805f60608486031215613c0357613c02613aea565b5b5f613c1086828701613b67565b9350506020613c2186828701613b67565b9250506040613c3286828701613b67565b9150509250925092565b613c4581613b48565b82525050565b5f602082019050613c5e5f830184613c3c565b92915050565b613c6d81613b0d565b82525050565b5f602082019050613c865f830184613c64565b92915050565b5f805f60608486031215613ca357613ca2613aea565b5b5f613cb086828701613b34565b9350506020613cc186828701613b34565b9250506040613cd286828701613b67565b9150509250925092565b5f60208284031215613cf157613cf0613aea565b5b5f613cfe84828501613b34565b91505092915050565b5f60ff82169050919050565b613d1c81613d07565b82525050565b5f602082019050613d355f830184613d13565b92915050565b613d4481613bb9565b8114613d4e575f80fd5b50565b5f81359050613d5f81613d3b565b92915050565b5f8060408385031215613d7b57613d7a613aea565b5b5f613d8885828601613b34565b9250506020613d9985828601613d51565b9150509250929050565b5f606082019050613db65f830186613c3c565b613dc36020830185613c3c565b613dd06040830184613c3c565b949350505050565b5f8060408385031215613dee57613ded613aea565b5b5f613dfb85828601613b34565b9250506020613e0c85828601613b34565b9150509250929050565b5f805f805f805f80610100898b031215613e3357613e32613aea565b5b5f613e408b828c01613b67565b9850506020613e518b828c01613b67565b9750506040613e628b828c01613b67565b9650506060613e738b828c01613b67565b9550506080613e848b828c01613b67565b94505060a0613e958b828c01613b67565b93505060c0613ea68b828c01613b67565b92505060e0613eb78b828c01613b67565b9150509295985092959890939650565b5f613ed182613aee565b9050919050565b613ee181613ec7565b8114613eeb575f80fd5b50565b5f81359050613efc81613ed8565b92915050565b5f60208284031215613f1757613f16613aea565b5b5f613f2484828501613eee565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613f61600683613a64565b9150613f6c82613f2d565b602082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fcc82613b48565b9150613fd783613b48565b9250828202613fe581613b48565b91508282048414831517613ffc57613ffb613f95565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61403a82613b48565b915061404583613b48565b92508261405557614054614003565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f6140ba602e83613a64565b91506140c582614060565b604082019050919050565b5f6020820190508181035f8301526140e7816140ae565b9050919050565b7f496e656c696769626c65204164647265737300000000000000000000000000005f82015250565b5f614122601283613a64565b915061412d826140ee565b602082019050919050565b5f6020820190508181035f83015261414f81614116565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f61418a600e83613a64565b915061419582614156565b602082019050919050565b5f6020820190508181035f8301526141b78161417e565b9050919050565b5f6040820190506141d15f830185613c64565b6141de6020830184613c3c565b9392505050565b5f815190506141f381613d3b565b92915050565b5f6020828403121561420e5761420d613aea565b5b5f61421b848285016141e5565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f61427e602c83613a64565b915061428982614224565b604082019050919050565b5f6020820190508181035f8301526142ab81614272565b9050919050565b5f819050919050565b5f6142d56142d06142cb84613aee565b6142b2565b613aee565b9050919050565b5f6142e6826142bb565b9050919050565b5f6142f7826142dc565b9050919050565b614307816142ed565b82525050565b5f6020820190506143205f8301846142fe565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61435a601783613a64565b915061436582614326565b602082019050919050565b5f6020820190508181035f8301526143878161434e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143e8602483613a64565b91506143f38261438e565b604082019050919050565b5f6020820190508181035f830152614415816143dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614476602283613a64565b91506144818261441c565b604082019050919050565b5f6020820190508181035f8301526144a38161446a565b9050919050565b5f6144b482613b48565b91506144bf83613b48565b92508282039050818111156144d7576144d6613f95565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614537602583613a64565b9150614542826144dd565b604082019050919050565b5f6020820190508181035f8301526145648161452b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6145c5602383613a64565b91506145d08261456b565b604082019050919050565b5f6020820190508181035f8301526145f2816145b9565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614653602983613a64565b915061465e826145f9565b604082019050919050565b5f6020820190508181035f83015261468081614647565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6146e1603183613a64565b91506146ec82614687565b604082019050919050565b5f6020820190508181035f83015261470e816146d5565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f614749600e83613a64565b915061475482614715565b602082019050919050565b5f6020820190508181035f8301526147768161473d565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f6147b1601e83613a64565b91506147bc8261477d565b602082019050919050565b5f6020820190508181035f8301526147de816147a5565b9050919050565b5f6147ef82613b48565b91506147fa83613b48565b925082820190508082111561481257614811613f95565b5b92915050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61484c601183613a64565b915061485782614818565b602082019050919050565b5f6020820190508181035f83015261487981614840565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6148b782613b48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148e9576148e8613f95565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061495c81613b1e565b92915050565b5f6020828403121561497757614976613aea565b5b5f6149848482850161494e565b91505092915050565b5f819050919050565b5f6149b06149ab6149a68461498d565b6142b2565b613b48565b9050919050565b6149c081614996565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149f881613b0d565b82525050565b5f614a0983836149ef565b60208301905092915050565b5f602082019050919050565b5f614a2b826149c6565b614a3581856149d0565b9350614a40836149e0565b805f5b83811015614a70578151614a5788826149fe565b9750614a6283614a15565b925050600181019050614a43565b5085935050505092915050565b5f60a082019050614a905f830188613c3c565b614a9d60208301876149b7565b8181036040830152614aaf8186614a21565b9050614abe6060830185613c64565b614acb6080830184613c3c565b9695505050505050565b5f60c082019050614ae85f830189613c64565b614af56020830188613c3c565b614b0260408301876149b7565b614b0f60608301866149b7565b614b1c6080830185613c64565b614b2960a0830184613c3c565b979650505050505050565b5f81519050614b4281613b51565b92915050565b5f805f60608486031215614b5f57614b5e613aea565b5b5f614b6c86828701614b34565b9350506020614b7d86828701614b34565b9250506040614b8e86828701614b34565b9150509250925092565b5f60208284031215614bad57614bac613aea565b5b5f614bba84828501614b34565b91505092915050565b5f608082019050614bd65f8301876149b7565b8181036020830152614be88186614a21565b9050614bf76040830185613c64565b614c046060830184613c3c565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220585bb767a9331cd1bdd08e99ee9c0e093d692eb5a8d7aa657472e543c9b93e1664736f6c634300081a0033
Verified Source Code Full Match
Compiler: v0.8.26+commit.8a97fa7a
EVM: cancun
Optimization: No
main.sol 465 lines
// SPDX-License-Identifier: MIT
/*
▄▖ ▜ ▌▄▖▄▖▄▖
▌ ▛▌▐ ▛▌▚ ▐ ▙▘
▙▌▙▌▐▖▙▌▄▌▐ ▌▌
$GoldSTR provides $PAXG income to all holders and auto deflationary supply.
Buy $GoldSTR earn GOLD rewards and enter on the yellow bright flywheel.
*/
pragma solidity 0.8.26;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b > a) return(false, 0); return(true, a - b);}}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
if(c / a != b) return(false, 0); return(true, c);}}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a / b);}}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a % b);}}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b <= a, errorMessage); return a - b;}}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a / b;}}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a % b;}}}
interface IERC20 {
function totalSupply() external view returns (uint256);
function circulatingSupply() 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 getOwner() external view returns (address);
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 Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() 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);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract GOLD is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = 'GoldStrategy';
string private constant _symbol = 'GOLDSTR';
uint8 private constant _decimals = 9;
uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
uint256 private _maxTxAmount = ( _totalSupply * 100 ) / 10000;
uint256 private _maxSellAmount = ( _totalSupply * 100 ) / 10000;
uint256 private _maxWalletToken = ( _totalSupply * 100 ) / 10000;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) public isDividendExempt;
mapping (address => bool) private isBot;
IRouter router;
address public pair;
bool private tradingAllowed = false;
uint256 private liquidityFee = 0;
uint256 private marketingFee = 500;
uint256 private rewardsFee = 500;
uint256 private developmentFee = 0;
uint256 private burnFee = 0;
uint256 private totalFee = 1000;
uint256 private sellFee = 1000;
uint256 private transferFee = 1000;
uint256 private denominator = 10000;
bool private swapEnabled = true;
uint256 private swapTimes;
bool private swapping;
uint256 private swapThreshold = ( _totalSupply * 250 ) / 100000;
uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
address public reward = 0x45804880De22913dAFE09f4980848ECE6EcbAf78;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 internal dividendsPerShare;
uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
address[] shareholders;
mapping (address => uint256) shareholderIndexes;
mapping (address => uint256) shareholderClaims;
struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
mapping (address => Share) public shares;
uint256 internal currentIndex;
uint256 public minPeriod = 1 minutes;
uint256 public minDistribution = 1 * (10 ** 17);
uint256 public distributorGas = 350000;
function _claimDividend() external {distributeDividend(msg.sender);}
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal constant development_receiver = 0x3A3156aFA8259Ee853Ae41dd591Ad46757E2F2A5;
address internal constant marketing_receiver = 0x84B9389b60782fC38B9B10eE8edd2b36864fd119;
address internal constant liquidity_receiver = 0x3A3156aFA8259Ee853Ae41dd591Ad46757E2F2A5;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[msg.sender] = true;
isDividendExempt[address(pair)] = true;
isDividendExempt[address(msg.sender)] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[address(DEAD)] = true;
isDividendExempt[address(0)] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function getOwner() external view override returns (address) { return owner; }
function totalSupply() public view override returns (uint256) {return _totalSupply;}
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function openTrade() external onlyOwner {
require(!tradingAllowed,"trading is already open");
tradingAllowed = true;
}
function preTxCheck(address sender, address recipient, uint256 amount) internal view {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > uint256(0), "Transfer amount must be greater than zero");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
}
function _transfer(address sender, address recipient, uint256 amount) private {
preTxCheck(sender, recipient, amount);
checkTradingAllowed(sender, recipient);
checkMaxWallet(sender, recipient, amount);
swapbackCounters(sender, recipient);
checkTxLimit(sender, recipient, amount);
swapBack(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
if(shares[recipient].amount > 0){distributeDividend(recipient);}
process(distributorGas);
}
function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
liquidityFee = _liquidity;
marketingFee = _marketing;
burnFee = _burn;
rewardsFee = _rewards;
developmentFee = _development;
totalFee = _total;
sellFee = _sell;
transferFee = _trans;
require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
}
function setisBot(address _address, bool _enabled) external onlyOwner {
require(_address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address");
isBot[_address] = _enabled;
}
function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
uint256 newTx = (totalSupply() * _buy) / 10000;
uint256 newTransfer = (totalSupply() * _trans) / 10000;
uint256 newWallet = (totalSupply() * _wallet) / 10000;
_maxTxAmount = newTx;
_maxSellAmount = newTransfer;
_maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function checkTradingAllowed(address sender, address recipient) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
}
function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
}
function swapbackCounters(address sender, address recipient) internal {
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
}
function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(rewardsFee)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
if(rewardsAmount > 0){deposit(rewardsAmount);}
if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
}
function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= _minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
}
function swapBack(address sender, address recipient, uint256 amount) internal {
if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisDividendExempt(address holder, bool exempt) external onlyOwner {
isDividendExempt[holder] = exempt;
if(exempt){setShare(holder, 0);}
else{setShare(holder, balanceOf(holder)); }
}
function setShare(address shareholder, uint256 amount) internal {
if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
function deposit(uint256 amountETH) internal {
uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(reward);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(
0,
path,
address(this),
block.timestamp);
uint256 amount = IERC20(reward).balanceOf(address(this)).sub(balanceBefore);
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
}
function process(uint256 gas) internal {
uint256 shareholderCount = shareholders.length;
if(shareholderCount == 0) { return; }
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
while(gasUsed < gas && iterations < shareholderCount) {
if(currentIndex >= shareholderCount){currentIndex = 0;}
if(shouldDistribute(shareholders[currentIndex])){
distributeDividend(shareholders[currentIndex]);}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function rescueERC20(address _address, uint256 _amount) external {
require(msg.sender == marketing_receiver, "Not authorized");
IERC20(_address).transfer(marketing_receiver, _amount);
}
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function totalRewardsDistributed(address _wallet) external view returns (uint256) {
address shareholder = _wallet;
return uint256(shares[shareholder].totalRealised);
}
function distributeDividend(address shareholder) internal {
if(shares[shareholder].amount == 0){ return; }
uint256 amount = getUnpaidEarnings(shareholder);
if(amount > 0){
totalDistributed = totalDistributed.add(amount);
IERC20(reward).transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);}
}
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
if(shares[shareholder].amount == 0){ return 0; }
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
shareholders.pop();
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
distributorGas = _distributorGas;
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
circulatingSupply 0x9358928b → uint256
decimals 0x313ce567 → uint8
distributorGas 0x60e71962 → uint256
getOwner 0x893d20e8 → address
getUnpaidEarnings 0x28fd3198 → uint256
isDividendExempt 0x4355855a → bool
isFeeExempt 0x3f4218e0 → bool
isOwner 0x2f54bf6e → bool
minDistribution 0x4fab0ae8 → uint256
minPeriod 0xffd49c84 → uint256
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
reward 0x228cb733 → address
shares 0xce7c2ac2 → uint256, uint256, uint256
symbol 0x95d89b41 → string
totalDistributed 0xefca2eed → uint256
totalDividends 0x997664d7 → uint256
totalRewardsDistributed 0xca89b899 → uint256
totalShares 0x3a98ef39 → uint256
totalSupply 0x18160ddd → uint256
Write Contract 13 functions
These functions modify contract state and require a wallet transaction to execute.
_claimDividend 0xc942435d
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
openTrade 0xfb201b1d
No parameters
rescueERC20 0x8cd4426d
address _address
uint256 _amount
setDistributionCriteria 0x0ca61cb1
uint256 _minPeriod
uint256 _minDistribution
uint256 _distributorGas
setParameters 0x34c5d2ce
uint256 _buy
uint256 _trans
uint256 _wallet
setStructure 0xe2d6f94c
uint256 _liquidity
uint256 _marketing
uint256 _burn
uint256 _rewards
uint256 _development
uint256 _total
uint256 _sell
uint256 _trans
setisBot 0x8c41180e
address _address
bool _enabled
setisDividendExempt 0xef43b02b
address holder
bool exempt
setisExempt 0x48ff2b8b
address _address
bool _enabled
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address adr
Recent Transactions
No transactions found for this address