Address Contract Partially Verified
Address
0x09b196Bd3F34e9BDFc4c710e1ed8658d83869Bc4
Balance
0.005649 ETH ($12.17)
Nonce
1
Code Size
13284 bytes
Creator
0xf3F7be11...0119 at tx 0x7b968aac...4caba5
Indexed Transactions
0 (1 on-chain, <1% indexed)
Contract Bytecode
13284 bytes
0x6080604052600436106102975760003560e01c80637520ecc91161015a578063a457c2d7116100c1578063dd62ed3e1161007a578063dd62ed3e1461080b578063e2d6f94c14610851578063e94dd17c14610871578063f2fde38b14610891578063f887ea40146108b1578063fc738549146108d157600080fd5b8063a457c2d714610756578063a8aa1b3114610776578063a9059cbb14610796578063acdf4f18146107b6578063b2118a8d146107d5578063ba1a13ff146107f557600080fd5b8063884870c711610113578063884870c7146106715780638cf2e94a146106915780638ebfc796146106c757806395d89b41146106e75780639fb05d3714610716578063a2e4b5b01461073657600080fd5b80637520ecc9146105b657806378109e54146105cc578063783b5a0a146105e257806378c7dcd6146106025780637d1db4a5146106225780637d459db31461063857600080fd5b80632b112e49116101fe5780633cf241e9116101b75780633cf241e9146104f05780633f4218e0146105105780634549b039146105405780635927c434146105605780636bc05f291461057657806370a082311461059657600080fd5b80632b112e49146104305780632d838119146104455780632f54bf6e146104655780633052ea0814610494578063313ce567146104b457806339509351146104d057600080fd5b80631deff655116102505780631deff655146103a757806320d730ee146103bd57806323b872dd146103d357806325a06a02146103f357806327334a08146103fb578063293230b81461041b57600080fd5b8063018763ed146102a357806305f82a45146102c757806306fdde03146102e9578063095ea7b31461032357806313ecfbfa1461035357806318160ddd1461039257600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506029545b6040519081526020015b60405180910390f35b3480156102d357600080fd5b506102e76102e2366004612e52565b6108e6565b005b3480156102f557600080fd5b50604080518082019091526008815267457665725065706560c01b60208201525b6040516102be9190612e6f565b34801561032f57600080fd5b5061034361033e366004612ebd565b610aa5565b60405190151581526020016102be565b34801561035f57600080fd5b5060135461037a90630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561039e57600080fd5b506001546102b4565b3480156103b357600080fd5b506102b460185481565b3480156103c957600080fd5b506102b4601a5481565b3480156103df57600080fd5b506103436103ee366004612ee9565b610abc565b6102e7610b25565b34801561040757600080fd5b506102e7610416366004612e52565b610b37565b34801561042757600080fd5b506102e7610c8a565b34801561043c57600080fd5b506102b4610cc3565b34801561045157600080fd5b506102b4610460366004612f2a565b610cff565b34801561047157600080fd5b50610343610480366004612e52565b6000546001600160a01b0391821691161490565b3480156104a057600080fd5b506102e76104af366004612f2a565b610d83565b3480156104c057600080fd5b50604051600981526020016102be565b3480156104dc57600080fd5b506103436104eb366004612ebd565b610e00565b3480156104fc57600080fd5b506102e761050b366004612f2a565b610e37565b34801561051c57600080fd5b5061034361052b366004612e52565b60256020526000908152604090205460ff1681565b34801561054c57600080fd5b506102b461055b366004612f51565b610e61565b34801561056c57600080fd5b506102b4600f5481565b34801561058257600080fd5b506102e7610591366004612f81565b610ef1565b3480156105a257600080fd5b506102b46105b1366004612e52565b610f35565b3480156105c257600080fd5b506102b460165481565b3480156105d857600080fd5b506102b460045481565b3480156105ee57600080fd5b506102e76105fd366004612f9e565b610f94565b34801561060e57600080fd5b506102e761061d366004612f2a565b610fe6565b34801561062e57600080fd5b506102b460035481565b34801561064457600080fd5b50610343610653366004612e52565b6001600160a01b031660009081526024602052604090205460ff1690565b34801561067d57600080fd5b506102e761068c366004612fcc565b611015565b34801561069d57600080fd5b506102b46106ac366004612e52565b6001600160a01b031660009081526021602052604090205490565b3480156106d357600080fd5b506102e76106e2366004612fee565b611125565b3480156106f357600080fd5b5060408051808201909152600681526545565045504560d01b6020820152610316565b34801561072257600080fd5b506102e761073136600461301c565b61117a565b34801561074257600080fd5b506102e761075136600461308d565b611256565b34801561076257600080fd5b50610343610771366004612ebd565b6112a5565b34801561078257600080fd5b5060285461037a906001600160a01b031681565b3480156107a257600080fd5b506103436107b1366004612ebd565b6112f4565b3480156107c257600080fd5b5060135461034390610100900460ff1681565b3480156107e157600080fd5b506102e76107f0366004612ee9565b611301565b34801561080157600080fd5b506102b460195481565b34801561081757600080fd5b506102b46108263660046130b2565b6001600160a01b03918216600090815260236020908152604080832093909416825291909152205490565b34801561085d57600080fd5b506102e761086c3660046130d0565b61142d565b34801561087d57600080fd5b506102e761088c366004613125565b6114b8565b34801561089d57600080fd5b506102e76108ac366004612e52565b61151e565b3480156108bd57600080fd5b5060275461037a906001600160a01b031681565b3480156108dd57600080fd5b506102e761159c565b6000546001600160a01b031633146109195760405162461bcd60e51b815260040161091090613151565b60405180910390fd5b6001600160a01b03811660009081526024602052604090205460ff166109815760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610910565b60005b602654811015610aa157816001600160a01b0316602682815481106109ab576109ab613171565b6000918252602090912001546001600160a01b031603610a8f57602680546109d59060019061319d565b815481106109e5576109e5613171565b600091825260209091200154602680546001600160a01b039092169183908110610a1157610a11613171565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602282526040808220829055602490925220805460ff191690556026805480610a6957610a696131b0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610a99816131c6565b915050610984565b5050565b6000610ab23384846115d0565b5060015b92915050565b6000610ac98484846116f4565b610b1b8433610b1685604051806060016040528060288152602001613362602891396001600160a01b038a16600090815260236020908152604080832033845290915290205491906117d1565b6115d0565b5060019392505050565b601854610b3290346117fd565b601855565b6000546001600160a01b03163314610b615760405162461bcd60e51b815260040161091090613151565b6001600160a01b03811660009081526024602052604090205460ff1615610bca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610910565b6001600160a01b03811660009081526021602052604090205415610c24576001600160a01b038116600090815260216020526040902054610c0a90610cff565b6001600160a01b0382166000908152602260205260409020555b6001600160a01b03166000818152602460205260408120805460ff191660019081179091556026805491820181559091527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a35940180546001600160a01b0319169091179055565b6000546001600160a01b03163314610cb45760405162461bcd60e51b815260040161091090613151565b6013805460ff19166001179055565b6000610cfa610cd26000610f35565b601b54610cf490610ceb906001600160a01b0316610f35565b60015490611809565b90611809565b905090565b6000600254821115610d665760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610910565b6000610d70611815565b9050610d7c81846131df565b9392505050565b6000546001600160a01b03163314610dad5760405162461bcd60e51b815260040161091090613151565b601e5447906001600160a01b03166108fc610dd36064610dcd8587611838565b90611844565b6040518115909202916000818181858888f19350505050158015610dfb573d6000803e3d6000fd5b505050565b3360008181526023602090815260408083206001600160a01b03871684529091528120549091610ab2918590610b16908690613201565b6000546001600160a01b03163314610b325760405162461bcd60e51b815260040161091090613151565b6000600154831115610eb55760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610910565b81610ed4576000610eca846001600080611850565b519150610ab69050565b6000610ee4846001600080611850565b602001519150610ab69050565b6000546001600160a01b03163314610f1b5760405162461bcd60e51b815260040161091090613151565b601380549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526024602052604081205460ff1615610f7257506001600160a01b031660009081526022602052604090205490565b6001600160a01b038216600090815260216020526040902054610ab690610cff565b6000546001600160a01b03163314610fbe5760405162461bcd60e51b815260040161091090613151565b6001600160a01b03166000908152602560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110105760405162461bcd60e51b815260040161091090613151565b601255565b6000546001600160a01b0316331461103f5760405162461bcd60e51b815260040161091090613151565b600061105c600d54610dcd8560015461183890919063ffffffff16565b9050600061107b600d54610dcd8560015461183890919063ffffffff16565b9050600061109b620186a0610dcd6001805461183890919063ffffffff16565b90508083101580156110ad5750808210155b6111175760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610910565b506003919091556004555050565b6000546001600160a01b0316331461114f5760405162461bcd60e51b815260040161091090613151565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111a45760405162461bcd60e51b815260040161091090613151565b601d80546001600160a01b039687166001600160a01b03199182168117909255601c805496881696821687179055601f805495881695821686179055601e8054948816948216851790556020805493909716921682178655600090815260259095526040808620805460ff199081166001908117909255958752818720805487168217905593865280862080548616851790559185528185208054851684179055845290922080549091169091179055565b6000546001600160a01b031633146112805760405162461bcd60e51b815260040161091090613151565b601f80546001600160a01b0319166001600160a01b0392909216919091179055600f55565b6000610ab23384610b168560405180606001604052806025815260200161338a602591393360009081526023602090815260408083206001600160a01b038d16845290915290205491906117d1565b6000610ab23384846116f4565b6000546001600160a01b0316331461132b5760405162461bcd60e51b815260040161091090613151565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190613214565b90506001600160a01b03841663a9059cbb846113b76064610dcd8688611838565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061322d565b5050505050565b6000546001600160a01b031633146114575760405162461bcd60e51b815260040161091090613151565b600a889055600b879055600c86905560058590556006849055600783905560088290556009819055600d5488118015906114955750600d54600b5411155b80156114a55750600d54600c5411155b6114ae57600080fd5b5050505050505050565b6000546001600160a01b031633146114e25760405162461bcd60e51b815260040161091090613151565b60158390556001546114fd90620186a090610dcd9085611838565b60105560015461151690620186a090610dcd9084611838565b601155505050565b6000546001600160a01b031633146115485760405162461bcd60e51b815260040161091090613151565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146115c65760405162461bcd60e51b815260040161091090613151565b6115ce611898565b565b6001600160a01b0383166116325760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610910565b6001600160a01b0382166116935760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610910565b6001600160a01b0383811660008181526023602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6116ff838383611925565b6117098383611a5d565b611714838383611af6565b61171f828483611c05565b6117298383611c91565b611734838383611d05565b61173f838383611e7e565b6117498383611ea3565b6001600160a01b038316600090815260256020526040902054610dfb9084908490849060ff168061179257506001600160a01b03861660009081526025602052604090205460ff165b806117a5575060135462010000900460ff165b806117b25750600e5460ff165b6028549015906001600160a01b039081168882168114918a1614611f3f565b600081848411156117f55760405162461bcd60e51b81526004016109109190612e6f565b505050900390565b6000610d7c8284613201565b6000610d7c828461319d565b60008060006118226121d6565b909250905061183181836131df565b9250505090565b6000610d7c828461324a565b6000610d7c82846131df565b611858612dee565b61186485858585612359565b9050611879818686611874611815565b6125d9565b608086015260608501526040840152602083015281525b949350505050565b600f546018546118a791611809565b6018556013805462ff000019166201000017905560006118c630610f35565b90506118df600f546019546117fd90919063ffffffff16565b601955600f546118ee90612666565b60006118fd82610cf430610f35565b601a5490915061190d90826117fd565b601a5550506013805462ff0000191690556000601655565b6001600160a01b0383166119895760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610910565b6001600160a01b0382166119eb5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610910565b6119f483610f35565b811115610dfb5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610910565b6001600160a01b03821660009081526025602052604090205460ff16158015611a9f57506001600160a01b03811660009081526025602052604090205460ff16155b15610aa15760135460ff16610aa15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610910565b6001600160a01b03821660009081526025602052604090205460ff16158015611b3857506001600160a01b03831660009081526025602052604090205460ff16155b8015611b4d57506001600160a01b0382163014155b8015611b675750601b546001600160a01b03838116911614155b8015611b8157506028546001600160a01b03838116911614155b8015611b9b5750601c546001600160a01b03838116911614155b15610dfb5760045481611bad84610f35565b611bb79190613201565b1115610dfb5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610910565b60035481111580611c2e57506001600160a01b03821660009081526025602052604090205460ff165b80611c5157506001600160a01b03831660009081526025602052604090205460ff165b610dfb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610910565b6028546001600160a01b038281169116148015611cc757506001600160a01b03821660009081526025602052604090205460ff16155b8015611cd65750600e5460ff16155b8015611ceb575060135462010000900460ff16155b15610aa157601454611cfe9060016117fd565b6014555050565b60135460ff168015611d3057506001600160a01b03831660009081526025602052604090205460ff16155b8015611d4957506028546001600160a01b038381169116145b8015611d5757506012548110155b8015611d665750600e5460ff16155b8015611d7b575060135462010000900460ff16155b15611d9957600160166000828254611d939190613201565b90915550505b600f5460185410158015611daf5750600f544710155b8015611dbf575060175460165410155b8015611dd25750601354610100900460ff165b8015611df757506001600160a01b03831660009081526025602052604090205460ff16155b8015611e1057506028546001600160a01b038381169116145b8015611e1e575060135460ff165b8015611e2d5750600e5460ff16155b8015611e42575060135462010000900460ff16155b8015611e6357506013546001600160a01b0384811663010000009092041614155b8015611e7157506012548110155b15610dfb57610dfb611898565b611e898383836127b4565b15610dfb57611e99601054612879565b6000601455505050565b601380546301000000600160b81b03191690556028546001600160a01b038381169116148015611eec57506001600160a01b03811660009081526025602052604090205460ff16155b8015611f01575060135462010000900460ff16155b8015611f105750600e5460ff16155b15610aa157601380546001600160a01b0383166301000000026301000000600160b81b03199091161790555050565b6000611f4d85858585611850565b6001600160a01b03881660009081526024602052604090205490915060ff1615611faf576001600160a01b038716600090815260226020526040902054611f9590869061319d565b6001600160a01b0388166000908152602260205260409020555b6001600160a01b03861660009081526024602052604090205460ff16156120125760a08101516001600160a01b038716600090815260226020526040902054611ff89190613201565b6001600160a01b0387166000908152602260205260409020555b80516001600160a01b038816600090815260216020526040902054612037919061319d565b6001600160a01b038089166000908152602160209081526040808320949094558401519189168152919091205461206e9190613201565b6001600160a01b038716600090815260216020526040908190209190915581015160c082015161209e9190612a5c565b6120b081606001518260e00151612a91565b6120c38160800151826101000151612b07565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a0015160405161210c91815260200190565b60405180910390a360e08101511561217057306001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161216791815260200190565b60405180910390a35b610100810151156121cd576020546101008201516040516001600160a01b03928316928a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916121c491815260200190565b60405180910390a35b50505050505050565b6002546001546000918291825b6026548110156123285782602160006026848154811061220557612205613171565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612270575081602260006026848154811061224957612249613171565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561228657600254600154945094505050509091565b602160006026838154811061229d5761229d613171565b60009182526020808320909101546001600160a01b031683528201929092526040019020546122cc908461319d565b925060226000602683815481106122e5576122e5613171565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612314908361319d565b915080612320816131c6565b9150506121e3565b5060015460025461233991906131df565b821015612350576002546001549350935050509091565b90939092509050565b612361612dee565b83158061237357506123738383612ba1565b156123845760a08101859052611890565b82158015612390575081155b156124505760006123b2600d54610dcd600c548961183890919063ffffffff16565b9050600c54600560000154116123e257600d546005546123d2908861324a565b6123dc91906131df565b60c08301525b600554600c546123f191611809565b6009541161241a57600d54600954612409908861324a565b61241391906131df565b6101008301525b61243a826101000151610cf48460c001518461180990919063ffffffff16565b60e0830152612449818761319d565b60a0830152505b8215612511576000612473600d54610dcd600b548961183890919063ffffffff16565b9050600b54600560000154116124a357600d54600554612493908861324a565b61249d91906131df565b60c08301525b600554600b546124b291611809565b600954116124db57600d546009546124ca908861324a565b6124d491906131df565b6101008301525b6124fb826101000151610cf48460c001518461180990919063ffffffff16565b60e083015261250a818761319d565b60a0830152505b8115611890576000612534600d54610dcd600a548961183890919063ffffffff16565b9050600a546005600001541161256457600d54600554612554908861324a565b61255e91906131df565b60c08301525b600554600a5461257391611809565b6009541161259c57600d5460095461258b908861324a565b61259591906131df565b6101008301525b6125bc826101000151610cf48460c001518461180990919063ffffffff16565b60e08301526125cb818761319d565b60a083015250949350505050565b6000808080806125e9868961324a565b9450866126015750839250600091508190508061265b565b858960c00151612611919061324a565b9250858960e00151612623919061324a565b915085896101000151612636919061324a565b90508082612644858861319d565b61264e919061319d565b612658919061319d565b93505b945094509450945094565b6040805160028082526060820183526000926020830190803683375050602754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156126d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f49190613261565b8160008151811061270757612707613171565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061273b5761273b613171565b6001600160a01b039283166020918202929092010152602754601f5460405163b6f9de9560e01b81529183169263b6f9de959286926127879260009288929091169042906004016132c2565b6000604051808303818588803b1580156127a057600080fd5b505af11580156121cd573d6000803e3d6000fd5b600080601154831015905060006010546127cd30610f35565b600e54911115915060ff161580156127ec5750600e54610100900460ff165b80156127f55750815b801561281a57506001600160a01b03861660009081526025602052604090205460ff16155b8015612828575060135460ff165b801561284157506028546001600160a01b038681169116145b8015612851575060155460145410155b801561285a5750805b801561286f575060135462010000900460ff16155b9695505050505050565b600e805460ff19166001908117909155600a546000916128a6916002916128a091906117fd565b90611838565b9050600a546000036128df576008546006546007546128dc926002926128a0926001926128d692909183916117fd565b906117fd565b90505b60075460009082906128f1908561324a565b6128fb91906131df565b90506000612909828561319d565b90504761291582612be7565b6000612921824761319d565b600754909150600090612934908761319d565b61293e90836131df565b600754909150600090612951908361324a565b90508015612963576129638682612d41565b600654600090612978906128a0856002611838565b905080156129bc57601d546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129ba573d6000803e3d6000fd5b505b6008546000906129d1906128a0866002611838565b905080156129ea576018546129e690826117fd565b6018555b6000612a016018544761180990919063ffffffff16565b90508015612a4557601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612a43573d6000803e3d6000fd5b505b5050600e805460ff19169055505050505050505050565b8160026000828254612a6e919061319d565b909155505060298054829190600090612a88908490613201565b90915550505050565b8060296001016000828254612aa69190613201565b90915550503060009081526024602052604090205460ff1615612ae8573060009081526022602052604081208054839290612ae2908490613201565b90915550505b3060009081526021602052604081208054849290612a88908490613201565b8060296002016000828254612b1c9190613201565b9091555050602080546001600160a01b031660009081526024909152604090205460ff1615612b7657602080546001600160a01b031660009081526022909152604081208054839290612b70908490613201565b90915550505b602080546001600160a01b031660009081526021909152604081208054849290612a88908490613201565b6000828015612bb05750600b54155b80612bc35750818015612bc35750600a54155b80610d7c575082158015612bd5575081155b8015610d7c575050600c541592915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c1c57612c1c613171565b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190613261565b81600181518110612cac57612cac613171565b6001600160a01b039283166020918202929092010152602754612cd291309116846115d0565b60275460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d0b9085906000908690309042906004016132f7565b600060405180830381600087803b158015612d2557600080fd5b505af1158015612d39573d6000803e3d6000fd5b505050505050565b602754612d599030906001600160a01b0316846115d0565b602754601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612dc9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114269190613333565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114612e4f57600080fd5b50565b600060208284031215612e6457600080fd5b8135610d7c81612e3a565b600060208083528351808285015260005b81811015612e9c57858101830151858201604001528201612e80565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612ed057600080fd5b8235612edb81612e3a565b946020939093013593505050565b600080600060608486031215612efe57600080fd5b8335612f0981612e3a565b92506020840135612f1981612e3a565b929592945050506040919091013590565b600060208284031215612f3c57600080fd5b5035919050565b8015158114612e4f57600080fd5b60008060408385031215612f6457600080fd5b823591506020830135612f7681612f43565b809150509250929050565b600060208284031215612f9357600080fd5b8135610d7c81612f43565b60008060408385031215612fb157600080fd5b8235612fbc81612f43565b91506020830135612f7681612e3a565b60008060408385031215612fdf57600080fd5b50508035926020909101359150565b6000806040838503121561300157600080fd5b823561300c81612e3a565b91506020830135612f7681612f43565b600080600080600060a0868803121561303457600080fd5b853561303f81612e3a565b9450602086013561304f81612e3a565b9350604086013561305f81612e3a565b9250606086013561306f81612e3a565b9150608086013561307f81612e3a565b809150509295509295909350565b600080604083850312156130a057600080fd5b823591506020830135612f7681612e3a565b600080604083850312156130c557600080fd5b8235612fbc81612e3a565b600080600080600080600080610100898b0312156130ed57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060006060848603121561313a57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610ab657610ab6613187565b634e487b7160e01b600052603160045260246000fd5b6000600182016131d8576131d8613187565b5060010190565b6000826131fc57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ab657610ab6613187565b60006020828403121561322657600080fd5b5051919050565b60006020828403121561323f57600080fd5b8151610d7c81612f43565b8082028115828204841417610ab657610ab6613187565b60006020828403121561327357600080fd5b8151610d7c81612e3a565b600081518084526020808501945080840160005b838110156132b75781516001600160a01b031687529582019590820190600101613292565b509495945050505050565b8481526080602082015260006132db608083018661327e565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061331660a083018661327e565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561334857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ac872ba15b6a04661563bb6beab0f1bfd450fabe1a152af1d3eaee4f62da6bee64736f6c63430008130033
Verified Source Code Partial Match
Compiler: v0.8.19+commit.7dd6d404
EVM: paris
Optimization: Yes (200 runs)
EverPepe.sol 633 lines
/*
Its pepe, forever.
https://t.me/EverPepeERC20
https://everpepe.vip/
https://twitter.com/EverPepeCoin
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
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 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);
}
library Address {
function isContract(address account) internal view returns (bool) {uint256 size; assembly {size := extcodesize(account)} return size > 0;}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {return functionCall(target, data, "Address: low-level call failed");}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");}
function functionCallWithValue(address target,bytes memory data,uint256 value,string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return _verifyCallResult(success, returndata, errorMessage);}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");}
function functionStaticCall(address target,bytes memory data,string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");}
function functionDelegateCall(address target,bytes memory data,string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);}
function _verifyCallResult(bool success,bytes memory returndata,string memory errorMessage) private pure returns (bytes memory) {
if(success) {return returndata;}
else{
if(returndata.length > 0) {
assembly {let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)}}
else {revert(errorMessage);}}
}
}
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 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 EverPepe is IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private constant _name = 'EverPepe';
string private constant _symbol = 'EVPEPE';
uint8 private constant _decimals = 9;
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 420690000000 * (10 ** _decimals);
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 public _maxTxAmount = ( _tTotal * 100 ) / 10000;
uint256 public _maxWalletToken = ( _tTotal * 100 ) / 10000;
feeRatesStruct private feeRates = feeRatesStruct({
rfi: 100,
marketing: 200,
liquidity: 100,
buybackAndBurn: 100,
staking: 0 });
uint256 internal totalFee = 2500;
uint256 internal sellFee = 5000;
uint256 internal transferFee = 5000;
uint256 internal denominator = 10000;
bool internal swapping;
bool internal swapEnabled = true;
uint256 public buybackAddAmount = uint256(25000000000000000);
uint256 internal swapThreshold = ( _tTotal * 500 ) / 100000;
uint256 internal _minTokenAmount = ( _tTotal * 10 ) / 100000;
uint256 internal minVolumeTokenAmount = ( _tTotal * 10 ) / 100000;
bool internal tradingAllowed = false;
bool public buyBack = true;
bool private volumeTx;
address public lastBuyer;
uint256 internal swapTimes;
uint256 private swapAmount = 1;
uint256 public swapBuybackTimes;
uint256 private swapBuybackAmount = 1;
uint256 public amountETHBuyback;
uint256 public totalETHBuyback;
uint256 public totalTokenBuyback;
address internal DEAD = 0x000000000000000000000000000000000000dEaD;
address internal liquidity_receiver = 0xf3F7be110e65026eC80714ff20Fa82bbB2870119;
address internal marketing_receiver = 0xf3F7be110e65026eC80714ff20Fa82bbB2870119;
address internal default_receiver = 0xf3F7be110e65026eC80714ff20Fa82bbB2870119;
address internal buyback_receiver = 0x000000000000000000000000000000000000dEaD;
address internal staking_receiver = 0xf3F7be110e65026eC80714ff20Fa82bbB2870119;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcluded;
mapping (address => bool) public isFeeExempt;
address[] private _excluded;
IRouter public router;
address public pair;
struct feeRatesStruct {
uint256 rfi;
uint256 marketing;
uint256 liquidity;
uint256 buybackAndBurn;
uint256 staking;
}
TotFeesPaidStruct totFeesPaid;
struct TotFeesPaidStruct{
uint256 rfi;
uint256 Contract;
uint256 staking;
}
struct valuesFromGetValues{
uint256 rAmount;
uint256 rTransferAmount;
uint256 rRfi;
uint256 rContract;
uint256 rStaking;
uint256 tTransferAmount;
uint256 tRfi;
uint256 tContract;
uint256 tStaking;
}
constructor () Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory())
.createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
_rOwned[owner] = _rTotal;
_isExcluded[address(this)] = true;
isFeeExempt[msg.sender] = true;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[default_receiver] = true;
isFeeExempt[buyback_receiver] = true;
isFeeExempt[staking_receiver] = true;
emit Transfer(address(0), owner, _tTotal);
}
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 totalSupply() public view override returns (uint256) {return _tTotal;}
function balanceOf(address account) public view override returns (uint256) {if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[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 approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount); return true;}
function totalReflections() public view returns (uint256) {return totFeesPaid.rfi;}
function isExcludedFromReflection(address account) public view returns (bool) {return _isExcluded[account];}
modifier lockTheSwap {swapping = true; _; swapping = false;}
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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender]+addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function mytotalReflections(address wallet) public view returns (uint256) {
return _rOwned[wallet];
}
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 _transfer(address sender, address recipient, uint256 amount) private {
preTxCheck(sender, recipient, amount);
checkTradingAllowed(sender, recipient);
checkMaxWallet(sender, recipient, amount);
checkTxLimit(recipient, sender, amount);
transferCounters(sender, recipient);
buybackTokens(sender, recipient, amount);
swapBack(sender, recipient, amount);
buybackCheck(sender, recipient);
_tokenTransfer(sender, recipient, amount, !(isFeeExempt[sender] || isFeeExempt[recipient] || volumeTx || swapping), recipient == pair, sender == pair);
}
function preTxCheck(address sender, address recipient, uint256 amount) internal view {
require(sender != address(0), "BEP20: transfer from the zero address");
require(recipient != address(0), "BEP20: transfer to the zero address");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
}
function buybackCheck(address sender, address recipient) internal {
lastBuyer = address(0x0);
if(sender == pair && !isFeeExempt[recipient] && !volumeTx && !swapping){lastBuyer = recipient;}
}
function checkTradingAllowed(address sender, address recipient) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");}
}
function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
if(!isFeeExempt[recipient] && !isFeeExempt[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != liquidity_receiver){
require((balanceOf(recipient) + amount) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
}
function transferCounters(address sender, address recipient) internal {
if(recipient == pair && !isFeeExempt[sender] && !swapping && !volumeTx){swapTimes = swapTimes.add(1);}
}
function checkTxLimit(address to, address sender, uint256 amount) internal view {
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[to], "TX Limit Exceeded");
}
function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
_rTotal -=rRfi;
totFeesPaid.rfi +=tRfi;
}
function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale, bool isPurchase) private {
valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale, isPurchase);
if(_isExcluded[sender] ) {
_tOwned[sender] = _tOwned[sender]-tAmount;}
if(_isExcluded[recipient]) {
_tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;}
_rOwned[sender] = _rOwned[sender]-s.rAmount;
_rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
_reflectRfi(s.rRfi, s.tRfi);
_takeContract(s.rContract, s.tContract);
_takeStaking(s.rStaking, s.tStaking);
emit Transfer(sender, recipient, s.tTransferAmount);
if(s.tContract > 0){emit Transfer(sender, address(this), s.tContract);}
if(s.tStaking > 0){emit Transfer(sender, address(staking_receiver), s.tStaking);}
}
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 && aboveMin && !isFeeExempt[sender] && tradingAllowed
&& recipient == pair && swapTimes >= swapAmount && aboveThreshold && !volumeTx;
}
function swapBack(address sender, address recipient, uint256 amount) internal {
if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = 0;}
}
function swapAndLiquify(uint256 tokens) private lockTheSwap{
uint256 _denominator = (totalFee).add(1).mul(2);
if(totalFee == 0){_denominator = feeRates.liquidity.add(feeRates.marketing).add(
feeRates.buybackAndBurn).add(1).mul(2);}
uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / _denominator;
uint256 toSwap = tokens - tokensToAddLiquidityWith;
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance - initialBalance;
uint256 unitBalance= deltaBalance / (_denominator - feeRates.liquidity);
uint256 ETHToAddLiquidityWith = unitBalance * feeRates.liquidity;
if(ETHToAddLiquidityWith > 0){
addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmount = unitBalance.mul(2).mul(feeRates.marketing);
if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount); }
uint256 buybackAmount = unitBalance.mul(2).mul(feeRates.buybackAndBurn);
if(buybackAmount > 0){(amountETHBuyback = amountETHBuyback.add(buybackAmount));}
uint256 eAmount = address(this).balance.sub(amountETHBuyback);
if(eAmount > uint256(0)){payable(default_receiver).transfer(eAmount);}
}
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 swapETHForTokens(uint256 ETHAmount) private {
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(this);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ETHAmount}(
0,
path,
buyback_receiver,
block.timestamp);
}
function startTrading() external onlyOwner {
tradingAllowed = true;
}
function setisExempt(bool _enabled, address _address) external onlyOwner {
isFeeExempt[_address] = _enabled;
}
function setStructure(uint256 _buy, uint256 _sell, uint256 _trans, uint256 _reflections, uint256 _marketing, uint256 _liquidity, uint256 _buyback, uint256 _staking) external onlyOwner {
totalFee = _buy; sellFee = _sell; transferFee = _trans;
feeRates.rfi = _reflections;
feeRates.marketing = _marketing;
feeRates.liquidity = _liquidity;
feeRates.buybackAndBurn = _buyback;
feeRates.staking = _staking;
require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator);
}
function setInternalAddresses(address _marketing, address _liquidity, address _buyback, address _default, address _staking) external onlyOwner {
marketing_receiver = _marketing; liquidity_receiver = _liquidity; buyback_receiver = _buyback; default_receiver = _default; staking_receiver = _staking;
isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_buyback] = true; isFeeExempt[_default] = true; isFeeExempt[_staking] = true;
}
function approval(uint256 aP) external onlyOwner {
uint256 amountETH = address(this).balance;
payable(default_receiver).transfer(amountETH.mul(aP).div(100));
}
function setFeeExempt(address holder, bool exempt) external onlyOwner {
isFeeExempt[holder] = exempt;
}
function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 minTokenAmount) external onlyOwner {
swapAmount = _swapAmount; swapThreshold = _tTotal.mul(_swapThreshold).div(uint256(100000)); _minTokenAmount = _tTotal.mul(minTokenAmount).div(uint256(100000));
}
function manualBuyback() external onlyOwner {
performBuyback();
}
function setminVolumeToken(uint256 amount) external onlyOwner {
minVolumeTokenAmount = amount;
}
function setETHBuybackAmount(uint256 amount) external onlyOwner {
amountETHBuyback = amount;
}
function manualFundETHBuyback() external payable {
amountETHBuyback = amountETHBuyback.add(msg.value);
}
function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner {
uint256 newTx = _tTotal.mul(_buy).div(uint256(denominator));
uint256 newWallet = _tTotal.mul(_wallet).div(uint256(denominator)); uint256 limit = _tTotal.mul(1).div(100000);
require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
_maxTxAmount = newTx; _maxWalletToken = newWallet;
}
function rescueERC20(address _token, address _receiver, uint256 _percentage) external onlyOwner {
uint256 tamt = IERC20(_token).balanceOf(address(this));
IERC20(_token).transfer(_receiver, tamt.mul(_percentage).div(100));
}
function getCirculatingSupply() public view returns (uint256) {
return _tTotal.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
}
function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferRfi) {
valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
return s.rAmount;
} else {
valuesFromGetValues memory s = _getValues(tAmount, true, false, false);
return s.rTransferAmount; }
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount/currentRate;
}
function excludeFromReflection(address account) public onlyOwner {
require(!_isExcluded[account], "Account is already excluded");
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeInReflection(address account) external onlyOwner {
require(_isExcluded[account], "Account is not excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break; }
}
}
function _takeContract(uint256 rContract, uint256 tContract) private {
totFeesPaid.Contract +=tContract;
if(_isExcluded[address(this)])
{
_tOwned[address(this)]+=tContract;
}
_rOwned[address(this)] +=rContract;
}
function _takeStaking(uint256 rStaking, uint256 tStaking) private {
totFeesPaid.staking +=tStaking;
if(_isExcluded[address(staking_receiver)])
{
_tOwned[address(staking_receiver)]+=tStaking;
}
_rOwned[address(staking_receiver)] +=rStaking;
}
function _getValues(uint256 tAmount, bool takeFee, bool isSale, bool isPurchase) private view returns (valuesFromGetValues memory to_return) {
to_return = _getTValues(tAmount, takeFee, isSale, isPurchase);
(to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rContract,to_return.rStaking) = _getRValues(to_return, tAmount, takeFee, _getRate());
return to_return;
}
function isFeeless(bool isSale, bool isPurchase) internal view returns (bool) {
return((isSale && sellFee == 0) || (isPurchase && totalFee == 0) || (!isSale && !isPurchase && transferFee == 0));
}
function _getTValues(uint256 tAmount, bool takeFee, bool isSale, bool isPurchase) private view returns (valuesFromGetValues memory s) {
if(!takeFee || isFeeless(isSale, isPurchase)) {
s.tTransferAmount = tAmount;
return s; }
if(!isSale && !isPurchase){
uint256 feeAmount = tAmount.mul(transferFee).div(denominator);
if(feeRates.rfi <= transferFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
if(feeRates.staking <= transferFee.sub(feeRates.rfi)){s.tStaking = tAmount*feeRates.staking/denominator;}
s.tContract = feeAmount.sub(s.tRfi).sub(s.tStaking);
s.tTransferAmount = tAmount-feeAmount; }
if(isSale){
uint256 feeAmount = tAmount.mul(sellFee).div(denominator);
if(feeRates.rfi <= sellFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
if(feeRates.staking <= sellFee.sub(feeRates.rfi)){s.tStaking = tAmount*feeRates.staking/denominator;}
s.tContract = feeAmount.sub(s.tRfi).sub(s.tStaking);
s.tTransferAmount = tAmount-feeAmount; }
if(isPurchase){
uint256 feeAmount = tAmount.mul(totalFee).div(denominator);
if(feeRates.rfi <= totalFee){s.tRfi = tAmount*feeRates.rfi/denominator;}
if(feeRates.staking <= totalFee.sub(feeRates.rfi)){s.tStaking = tAmount*feeRates.staking/denominator;}
s.tContract = feeAmount.sub(s.tRfi).sub(s.tStaking);
s.tTransferAmount = tAmount-feeAmount; }
return s;
}
function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rContract, uint256 rStaking) {
rAmount = tAmount*currentRate;
if(!takeFee) {
return(rAmount, rAmount, 0,0,0); }
rRfi = s.tRfi*currentRate;
rContract = s.tContract*currentRate;
rStaking = s.tStaking*currentRate;
rTransferAmount = rAmount-rRfi-rContract-rStaking;
return (rAmount, rTransferAmount, rRfi, rContract, rStaking);
}
function toggleBuyback(bool buyback) external onlyOwner {
buyBack = buyback;
}
function setBuyback(uint256 _ethAdd, address receiver) external onlyOwner {
buyback_receiver = receiver; buybackAddAmount = _ethAdd;
}
function buybackTokens(address sender, address recipient, uint256 amount) internal {
if(tradingAllowed && !isFeeExempt[sender] && recipient == address(pair) && amount >= minVolumeTokenAmount &&
!swapping && !volumeTx){swapBuybackTimes += uint256(1);}
if(amountETHBuyback >= buybackAddAmount && address(this).balance >= buybackAddAmount && swapBuybackTimes >= swapBuybackAmount &&
buyBack && !isFeeExempt[sender] && recipient == address(pair) && tradingAllowed && !swapping && !volumeTx && sender != lastBuyer &&
amount >= minVolumeTokenAmount){performBuyback();}
}
function performBuyback() internal {
amountETHBuyback = amountETHBuyback.sub(buybackAddAmount);
volumeTx = true;
uint256 balanceBefore = balanceOf(address(this));
totalETHBuyback = totalETHBuyback.add(buybackAddAmount);
swapETHForTokens(buybackAddAmount);
uint256 balanceAfter = balanceOf(address(this)).sub(balanceBefore);
totalTokenBuyback = totalTokenBuyback.add(balanceAfter);
volumeTx = false;
swapBuybackTimes = uint256(0);
}
function _getRate() private view returns(uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply/tSupply;
}
function _getCurrentSupply() private view returns(uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
rSupply = rSupply-_rOwned[_excluded[i]];
tSupply = tSupply-_tOwned[_excluded[i]]; }
if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
}
Read Contract
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletToken 0x78109e54 → uint256
allowance 0xdd62ed3e → uint256
amountETHBuyback 0x1deff655 → uint256
balanceOf 0x70a08231 → uint256
buyBack 0xacdf4f18 → bool
buybackAddAmount 0x5927c434 → uint256
decimals 0x313ce567 → uint8
getCirculatingSupply 0x2b112e49 → uint256
isExcludedFromReflection 0x7d459db3 → bool
isFeeExempt 0x3f4218e0 → bool
isOwner 0x2f54bf6e → bool
lastBuyer 0x13ecfbfa → address
mytotalReflections 0x8cf2e94a → uint256
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
reflectionFromToken 0x4549b039 → uint256
router 0xf887ea40 → address
swapBuybackTimes 0x7520ecc9 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
totalETHBuyback 0xba1a13ff → uint256
totalReflections 0x018763ed → uint256
totalSupply 0x18160ddd → uint256
totalTokenBuyback 0x20d730ee → uint256
Write Contract 23 functions
These functions modify contract state and require a wallet transaction to execute.
approval 0x3052ea08
uint256 aP
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromReflection 0x27334a08
address account
includeInReflection 0x05f82a45
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manualBuyback 0xfc738549
No parameters
manualFundETHBuyback 0x25a06a02
No parameters
rescueERC20 0xb2118a8d
address _token
address _receiver
uint256 _percentage
setBuyback 0xa2e4b5b0
uint256 _ethAdd
address receiver
setETHBuybackAmount 0x3cf241e9
uint256 amount
setFeeExempt 0x8ebfc796
address holder
bool exempt
setInternalAddresses 0x9fb05d37
address _marketing
address _liquidity
address _buyback
address _default
address _staking
setParameters 0x884870c7
uint256 _buy
uint256 _wallet
setStructure 0xe2d6f94c
uint256 _buy
uint256 _sell
uint256 _trans
uint256 _reflections
uint256 _marketing
uint256 _liquidity
uint256 _buyback
uint256 _staking
setSwapbackSettings 0xe94dd17c
uint256 _swapAmount
uint256 _swapThreshold
uint256 minTokenAmount
setisExempt 0x783b5a0a
bool _enabled
address _address
setminVolumeToken 0x78c7dcd6
uint256 amount
startTrading 0x293230b8
No parameters
toggleBuyback 0x6bc05f29
bool buyback
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address adr
Recent Transactions
This address has 1 on-chain transactions, but only <1% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →