Address Contract Partially Verified
Address
0x2fA39203cb335d08E0Af7731a8B9ae23d5a59449
Balance
0.000000000 ETH
Nonce
1
Code Size
17413 bytes
Creator
0xc96910E6...8632 at tx 0xd003904d...170bea
Indexed Transactions
0
Contract Bytecode
17413 bytes
0x608060405260043610610228575f3560e01c8063715018a611610122578063a9059cbb116100aa578063edaa11681161006e578063edaa1168146107f3578063f2fde38b1461081b578063f66895a314610843578063f887ea401461086f578063fbe6324e146108995761022f565b8063a9059cbb146106ef578063aacebbe31461072b578063c5d32bb214610753578063c9300ed51461078f578063dd62ed3e146107b75761022f565b80638da5cb5b116100f15780638da5cb5b1461060b5780638ea5220f1461063557806395d89b411461065f578063a457c2d714610689578063a8aa1b31146106c55761022f565b8063715018a614610575578063728f8eea1461058b57806375f0a874146105b757806385141a77146105e15761022f565b8063274a533c116101b0578063441b1d3011610174578063441b1d30146104975780634a2b3b13146104bf5780634ada218b146104e75780634e736f221461051157806370a08231146105395761022f565b8063274a533c146103b7578063313ce567146103e1578063355496ca1461040b578063395093511461043357806342b6fa111461046f5761022f565b80631675d802116101f75780631675d802146102e957806318160ddd146103135780631816467f1461033d5780631d97b7cd1461036557806323b872dd1461037b5761022f565b806306fdde0314610233578063095ea7b31461025d5780630e375a5c146102995780631340538f146102c15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b506102476108c3565b6040516102549190612d93565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190612e51565b610953565b6040516102909190612ea9565b60405180910390f35b3480156102a4575f80fd5b506102bf60048036038101906102ba919061302c565b610970565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190613086565b610a77565b005b3480156102f4575f80fd5b506102fd610b10565b60405161030a91906130c0565b60405180910390f35b34801561031e575f80fd5b50610327610b16565b60405161033491906130c0565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e91906130d9565b610b1f565b005b348015610370575f80fd5b50610379610c4c565b005b348015610386575f80fd5b506103a1600480360381019061039c9190613104565b610d57565b6040516103ae9190612ea9565b60405180910390f35b3480156103c2575f80fd5b506103cb610e52565b6040516103d891906130c0565b60405180910390f35b3480156103ec575f80fd5b506103f5610e58565b604051610402919061316f565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190613188565b610e60565b005b34801561043e575f80fd5b5061045960048036038101906104549190612e51565b610f34565b6040516104669190612ea9565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906131c6565b610fdb565b005b3480156104a2575f80fd5b506104bd60048036038101906104b891906131c6565b6110c5565b005b3480156104ca575f80fd5b506104e560048036038101906104e091906131f1565b61118f565b005b3480156104f2575f80fd5b506104fb6112a6565b6040516105089190612ea9565b60405180910390f35b34801561051c575f80fd5b50610537600480360381019061053291906131f1565b6112b9565b005b348015610544575f80fd5b5061055f600480360381019061055a91906130d9565b6113d0565b60405161056c91906130c0565b60405180910390f35b348015610580575f80fd5b50610589611415565b005b348015610596575f80fd5b5061059f61149c565b6040516105ae93929190613241565b60405180910390f35b3480156105c2575f80fd5b506105cb6114b3565b6040516105d89190613285565b60405180910390f35b3480156105ec575f80fd5b506105f56114d8565b6040516106029190613285565b60405180910390f35b348015610616575f80fd5b5061061f6114de565b60405161062c9190613285565b60405180910390f35b348015610640575f80fd5b50610649611506565b6040516106569190613285565b60405180910390f35b34801561066a575f80fd5b5061067361152b565b6040516106809190612d93565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa9190612e51565b6115bb565b6040516106bc9190612ea9565b60405180910390f35b3480156106d0575f80fd5b506106d96116aa565b6040516106e69190613285565b60405180910390f35b3480156106fa575f80fd5b5061071560048036038101906107109190612e51565b6116cf565b6040516107229190612ea9565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906130d9565b6116e5565b005b34801561075e575f80fd5b50610779600480360381019061077491906130d9565b611812565b6040516107869190612ea9565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b09190612e51565b61182f565b005b3480156107c2575f80fd5b506107dd60048036038101906107d8919061329e565b6119a0565b6040516107ea91906130c0565b60405180910390f35b3480156107fe575f80fd5b50610819600480360381019061081491906131c6565b611a22565b005b348015610826575f80fd5b50610841600480360381019061083c91906130d9565b611b3b565b005b34801561084e575f80fd5b50610857611c31565b60405161086693929190613241565b60405180910390f35b34801561087a575f80fd5b50610883611c48565b6040516108909190613337565b60405180910390f35b3480156108a4575f80fd5b506108ad611c6d565b6040516108ba9190612ea9565b60405180910390f35b6060600380546108d29061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061337d565b80156109495780601f1061092057610100808354040283529160200191610949565b820191905f5260205f20905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b5f61096661095f611c80565b8484611c87565b6001905092915050565b610978611c80565b73ffffffffffffffffffffffffffffffffffffffff166109966114de565b73ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906133f7565b60405180910390fd5b5f5b8251811015610a72578160145f858481518110610a0e57610a0d613415565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109ee565b505050565b610a7f611c80565b73ffffffffffffffffffffffffffffffffffffffff16610a9d6114de565b73ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea906133f7565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b5f600254905090565b610b27611c80565b73ffffffffffffffffffffffffffffffffffffffff16610b456114de565b73ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c00906134b2565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c54611c80565b73ffffffffffffffffffffffffffffffffffffffff16610c726114de565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906133f7565b60405180910390fd5b600760169054906101000a900460ff1615610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f9061351a565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600981905550565b5f610d63848484611e4a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610daa611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906135a8565b60405180910390fd5b610e4685610e35611c80565b8584610e4191906135f3565b611c87565b60019150509392505050565b60095481565b5f6012905090565b610e68611c80565b73ffffffffffffffffffffffffffffffffffffffff16610e866114de565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed3906133f7565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610fd1610f40611c80565b848460015f610f4d611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fcc9190613626565b611c87565b6001905092915050565b610fe3611c80565b73ffffffffffffffffffffffffffffffffffffffff166110016114de565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906133f7565b60405180910390fd5b6298968081111561109d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906136c9565b60405180910390fd5b6110a5610e58565b600a6110b19190613816565b816110bc9190613860565b60088190555050565b6110cd611c80565b73ffffffffffffffffffffffffffffffffffffffff166110eb6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611138906133f7565b60405180910390fd5b6111496114de565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561118b573d5f803e3d5ffd5b5050565b611197611c80565b73ffffffffffffffffffffffffffffffffffffffff166111b56114de565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906133f7565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e5f820151815f01556020820151816001015560408201518160020155905050600c8183856112569190613626565b6112609190613626565b11156112a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611298906138eb565b60405180910390fd5b505050565b600760169054906101000a900460ff1681565b6112c1611c80565b73ffffffffffffffffffffffffffffffffffffffff166112df6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c906133f7565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060115f820151815f01556020820151816001015560408201518160020155905050600c8183856113809190613626565b61138a9190613626565b11156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906138eb565b60405180910390fd5b505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61141d611c80565b73ffffffffffffffffffffffffffffffffffffffff1661143b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906133f7565b60405180910390fd5b61149a5f6123d1565b565b600e805f0154908060010154908060020154905083565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461153a9061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546115669061337d565b80156115b15780601f10611588576101008083540402835291602001916115b1565b820191905f5260205f20905b81548152906001019060200180831161159457829003601f168201915b5050505050905090565b5f8060015f6115c8611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613979565b60405180910390fd5b61169f61168d611c80565b85858461169a91906135f3565b611c87565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6116db338484611e4a565b6001905092915050565b6116ed611c80565b73ffffffffffffffffffffffffffffffffffffffff1661170b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611758906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906134b2565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6014602052805f5260405f205f915054906101000a900460ff1681565b611837611c80565b73ffffffffffffffffffffffffffffffffffffffff166118556114de565b73ffffffffffffffffffffffffffffffffffffffff16146118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a2906133f7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613a07565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61193d6114de565b836040518363ffffffff1660e01b815260040161195b929190613a25565b6020604051808303815f875af1158015611977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199b9190613a60565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611a2a611c80565b73ffffffffffffffffffffffffffffffffffffffff16611a486114de565b73ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a95906133f7565b60405180910390fd5b600760169054906101000a900460ff1615611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613afb565b60405180910390fd5b60058110611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613b89565b60405180910390fd5b80600a8190555050565b611b43611c80565b73ffffffffffffffffffffffffffffffffffffffff16611b616114de565b73ffffffffffffffffffffffffffffffffffffffff1614611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613c17565b60405180910390fd5b611c2e816123d1565b50565b6011805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613ca5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a90613d33565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e3d91906130c0565b60405180910390a3505050565b5f8111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613dc1565b60405180910390fd5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f2a575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f7f57600760169054906101000a900460ff16611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613e29565b60405180910390fd5b5b5f805f611f8a612d05565b5f60145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612029575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120435750600a546009546120409190613626565b43105b9050600760149054906101000a900460ff16806120a6575060145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120f7575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612104575f92506122e5565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561215e575080155b156121be5760116002015460115f015460116001015461217e9190613626565b6121889190613626565b945084935060116040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e4565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015612267575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015612271575080155b156122d157600e60020154600e5f0154600e600101546122919190613626565b61229b9190613626565b9450849350600e6040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e3565b80156122e257600b549450600b5493505b5b5b5b606484876122f39190613860565b6122fd9190613e74565b9250600760159054906101000a900460ff168015612368575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612378576123778583612494565b5b61238e8888858961238991906135f3565b61269c565b5f8311156123c7575f8511156123c6575f606486886123ad9190613860565b6123b79190613e74565b90506123c489308361269c565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612698576001600760146101000a81548160ff0219169083151502179055505f82031561267d575f6124d5306113d0565b9050600854811061267b57600160085411156124f15760085490505b5f6002846124ff9190613860565b90505f818460200151846125139190613860565b61251d9190613e74565b90505f818461252c91906135f3565b90505f47905061253b82612904565b5f814761254891906135f3565b90505f87602001518661255b91906135f3565b826125669190613e74565b90505f8860200151826125799190613860565b90505f81111561258e5761258d8682612b3a565b5b5f895f01516002846125a09190613860565b6125aa9190613860565b90505f8111156125ff576125fe81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5f8a604001516002856126129190613860565b61261c9190613860565b90505f8111156126715761267081600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f90613fa2565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614030565b60405180910390fd5b818161280791906135f3565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128929190613626565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f691906130c0565b60405180910390a350505050565b5f600267ffffffffffffffff8111156129205761291f612ec6565b5b60405190808252806020026020018201604052801561294e5781602001602082028036833780820191505090505b50905030815f8151811061296557612964613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a2d9190614062565b81600181518110612a4157612a40613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aa73060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b0995949392919061417d565b5f604051808303815f87803b158015612b20575f80fd5b505af1158015612b32573d5f803e3d5ffd5b505050505050565b612b663060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612bcd969594939291906141d5565b60606040518083038185885af1158015612be9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c0e9190614248565b5050505050565b80471015612c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4f906142e2565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612c7d9061432d565b5f6040518083038185875af1925050503d805f8114612cb7576040519150601f19603f3d011682016040523d82523d5f602084013e612cbc565b606091505b5050905080612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf7906143b1565b60405180910390fd5b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d6582612d23565b612d6f8185612d2d565b9350612d7f818560208601612d3d565b612d8881612d4b565b840191505092915050565b5f6020820190508181035f830152612dab8184612d5b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ded82612dc4565b9050919050565b612dfd81612de3565b8114612e07575f80fd5b50565b5f81359050612e1881612df4565b92915050565b5f819050919050565b612e3081612e1e565b8114612e3a575f80fd5b50565b5f81359050612e4b81612e27565b92915050565b5f8060408385031215612e6757612e66612dbc565b5b5f612e7485828601612e0a565b9250506020612e8585828601612e3d565b9150509250929050565b5f8115159050919050565b612ea381612e8f565b82525050565b5f602082019050612ebc5f830184612e9a565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612efc82612d4b565b810181811067ffffffffffffffff82111715612f1b57612f1a612ec6565b5b80604052505050565b5f612f2d612db3565b9050612f398282612ef3565b919050565b5f67ffffffffffffffff821115612f5857612f57612ec6565b5b602082029050602081019050919050565b5f80fd5b5f612f7f612f7a84612f3e565b612f24565b90508083825260208201905060208402830185811115612fa257612fa1612f69565b5b835b81811015612fcb5780612fb78882612e0a565b845260208401935050602081019050612fa4565b5050509392505050565b5f82601f830112612fe957612fe8612ec2565b5b8135612ff9848260208601612f6d565b91505092915050565b61300b81612e8f565b8114613015575f80fd5b50565b5f8135905061302681613002565b92915050565b5f806040838503121561304257613041612dbc565b5b5f83013567ffffffffffffffff81111561305f5761305e612dc0565b5b61306b85828601612fd5565b925050602061307c85828601613018565b9150509250929050565b5f6020828403121561309b5761309a612dbc565b5b5f6130a884828501613018565b91505092915050565b6130ba81612e1e565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612dbc565b5b5f6130fb84828501612e0a565b91505092915050565b5f805f6060848603121561311b5761311a612dbc565b5b5f61312886828701612e0a565b935050602061313986828701612e0a565b925050604061314a86828701612e3d565b9150509250925092565b5f60ff82169050919050565b61316981613154565b82525050565b5f6020820190506131825f830184613160565b92915050565b5f806040838503121561319e5761319d612dbc565b5b5f6131ab85828601612e0a565b92505060206131bc85828601613018565b9150509250929050565b5f602082840312156131db576131da612dbc565b5b5f6131e884828501612e3d565b91505092915050565b5f805f6060848603121561320857613207612dbc565b5b5f61321586828701612e3d565b935050602061322686828701612e3d565b925050604061323786828701612e3d565b9150509250925092565b5f6060820190506132545f8301866130b1565b61326160208301856130b1565b61326e60408301846130b1565b949350505050565b61327f81612de3565b82525050565b5f6020820190506132985f830184613276565b92915050565b5f80604083850312156132b4576132b3612dbc565b5b5f6132c185828601612e0a565b92505060206132d285828601612e0a565b9150509250929050565b5f819050919050565b5f6132ff6132fa6132f584612dc4565b6132dc565b612dc4565b9050919050565b5f613310826132e5565b9050919050565b5f61332182613306565b9050919050565b61333181613317565b82525050565b5f60208201905061334a5f830184613328565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061339457607f821691505b6020821081036133a7576133a6613350565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133e1602083612d2d565b91506133ec826133ad565b602082019050919050565b5f6020820190508181035f83015261340e816133d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f46656520416464726573732063616e6e6f74206265207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602283612d2d565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e6700000000000000005f82015250565b5f613504601883612d2d565b915061350f826134d0565b602082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613592602883612d2d565b915061359d82613538565b604082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135fd82612e1e565b915061360883612e1e565b92508282039050818111156136205761361f6135c6565b5b92915050565b5f61363082612e1e565b915061363b83612e1e565b9250828201905080821115613653576136526135c6565b5b92915050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c64206265205f8201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000602082015250565b5f6136b3603e83612d2d565b91506136be82613659565b604082019050919050565b5f6020820190508181035f8301526136e0816136a7565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561373c57808604811115613718576137176135c6565b5b60018516156137275780820291505b8081029050613735856136e7565b94506136fc565b94509492505050565b5f82613754576001905061380f565b81613761575f905061380f565b81600181146137775760028114613781576137b0565b600191505061380f565b60ff841115613793576137926135c6565b5b8360020a9150848211156137aa576137a96135c6565b5b5061380f565b5060208310610133831016604e8410600b84101617156137e55782820a9050838111156137e0576137df6135c6565b5b61380f565b6137f284848460016136f3565b92509050818404811115613809576138086135c6565b5b81810290505b9392505050565b5f61382082612e1e565b915061382b83613154565b92506138587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613745565b905092915050565b5f61386a82612e1e565b915061387583612e1e565b925082820261388381612e1e565b9150828204841483151761389a576138996135c6565b5b5092915050565b7f4d757374206b656570206665657320617420313225206f72206c6573730000005f82015250565b5f6138d5601d83612d2d565b91506138e0826138a1565b602082019050919050565b5f6020820190508181035f830152613902816138c9565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613963602583612d2d565b915061396e82613909565b604082019050919050565b5f6020820190508181035f83015261399081613957565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f6139f1603683612d2d565b91506139fc82613997565b604082019050919050565b5f6020820190508181035f830152613a1e816139e5565b9050919050565b5f604082019050613a385f830185613276565b613a4560208301846130b1565b9392505050565b5f81519050613a5a81613002565b92915050565b5f60208284031215613a7557613a74612dbc565b5b5f613a8284828501613a4c565b91505092915050565b7f43616e2774206368616e6765207768656e2074726164696e67206861732073745f8201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b5f613ae5602583612d2d565b9150613af082613a8b565b604082019050919050565b5f6020820190508181035f830152613b1281613ad9565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e203520425f8201527f6c6f636b73000000000000000000000000000000000000000000000000000000602082015250565b5f613b73602583612d2d565b9150613b7e82613b19565b604082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c01602683612d2d565b9150613c0c82613ba7565b604082019050919050565b5f6020820190508181035f830152613c2e81613bf5565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c8f602483612d2d565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d1d602283612d2d565b9150613d2882613cc3565b604082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613dab602983612d2d565b9150613db682613d51565b604082019050919050565b5f6020820190508181035f830152613dd881613d9f565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613e13601383612d2d565b9150613e1e82613ddf565b602082019050919050565b5f6020820190508181035f830152613e4081613e07565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e7e82612e1e565b9150613e8983612e1e565b925082613e9957613e98613e47565b5b828204905092915050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613efe602583612d2d565b9150613f0982613ea4565b604082019050919050565b5f6020820190508181035f830152613f2b81613ef2565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8c602383612d2d565b9150613f9782613f32565b604082019050919050565b5f6020820190508181035f830152613fb981613f80565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61401a602683612d2d565b915061402582613fc0565b604082019050919050565b5f6020820190508181035f8301526140478161400e565b9050919050565b5f8151905061405c81612df4565b92915050565b5f6020828403121561407757614076612dbc565b5b5f6140848482850161404e565b91505092915050565b5f819050919050565b5f6140b06140ab6140a68461408d565b6132dc565b612e1e565b9050919050565b6140c081614096565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140f881612de3565b82525050565b5f61410983836140ef565b60208301905092915050565b5f602082019050919050565b5f61412b826140c6565b61413581856140d0565b9350614140836140e0565b805f5b8381101561417057815161415788826140fe565b975061416283614115565b925050600181019050614143565b5085935050505092915050565b5f60a0820190506141905f8301886130b1565b61419d60208301876140b7565b81810360408301526141af8186614121565b90506141be6060830185613276565b6141cb60808301846130b1565b9695505050505050565b5f60c0820190506141e85f830189613276565b6141f560208301886130b1565b61420260408301876140b7565b61420f60608301866140b7565b61421c6080830185613276565b61422960a08301846130b1565b979650505050505050565b5f8151905061424281612e27565b92915050565b5f805f6060848603121561425f5761425e612dbc565b5b5f61426c86828701614234565b935050602061427d86828701614234565b925050604061428e86828701614234565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6142cc601d83612d2d565b91506142d782614298565b602082019050919050565b5f6020820190508181035f8301526142f9816142c0565b9050919050565b5f81905092915050565b50565b5f6143185f83614300565b91506143238261430a565b5f82019050919050565b5f6143378261430d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61439b603a83612d2d565b91506143a682614341565b604082019050919050565b5f6020820190508181035f8301526143c88161438f565b905091905056fea26469706673582212206d77db5104c2e07c45ccc5c726301c901c8cc063706942b9cd3913bcc1c45ba964736f6c634300081a0033
Verified Source Code Partial Match
Compiler: v0.8.26+commit.8a97fa7a
EVM: cancun
Optimization: No
$SCRATCH.sol 714 lines
// =H=H= :::=== :::===== :::==== :::==== :::==== :::===== ::: ===
// ==H H ::: ::: ::: === ::: === :::==== ::: ::: ===
// ===== ===== === ======= ======== === === ========
// H H== === === === === === === === === === ===
// =H=H= ====== ======= === === === === === ======= === ===
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.8;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IBEP20 {
function totalSupply() external view returns (uint256);
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);
}
interface IBEP20Metadata is IBEP20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract BEP20 is Context, IBEP20, IBEP20Metadata {
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The defaut value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {BEP20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IBEP20-balanceOf} and {IBEP20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IBEP20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IBEP20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IBEP20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount)
public
virtual
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IBEP20-allowance}.
*/
function allowance(address owner, address spender)
public
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
/**
* @dev See {IBEP20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IBEP20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {BEP20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IBEP20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IBEP20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "BEP20: transfer from the zero address");
require(recipient != address(0), "BEP20: transfer to the zero address");
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
_balances[sender] = senderBalance - amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
/** This function will be used to generate the total supply
* while deploying the contract
*
* This function can never be called again after deploying contract
*/
function _tokengeneration(address account, uint256 amount) internal virtual {
_totalSupply = amount;
_balances[account] = amount;
emit Transfer(address(0), account, amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
library Address {
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");
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_setOwner(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract $SCRATCH is BEP20, Ownable {
using Address for address payable;
IRouter public router;
address public pair;
bool private _interlock = false;
bool public providingLiquidity = false;
bool public tradingEnabled = false;
uint256 public tokenLiquidityThreshold = 5e5 * 10**18;
uint256 public genesis_block;
uint256 private deadline = 3;
uint256 private launchtax = 99;
address public marketingWallet = 0x624f0349b71f56a7bD2FCa5F5A624D53eC05E6B6; // Wallet where the tax goes
address public devWallet = 0xc96910E6d15F3e9729A0839A1BFc2b31775d8632; // Developer Wallet
address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
struct Taxes {
uint256 marketing;
uint256 liquidity;
uint256 dev;
}
Taxes public taxes = Taxes(10, 0, 0);
Taxes public sellTaxes = Taxes(3, 0, 0);
mapping(address => bool) public exemptFee;
modifier lockTheSwap() {
if (!_interlock) {
_interlock = true;
_;
_interlock = false;
}
}
constructor() BEP20("$SCRATCH", "$SCRATCH") {
_tokengeneration(msg.sender, 1e10 * 10**decimals());
exemptFee[msg.sender] = true;
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// Create a pancake pair for this new token
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
exemptFee[address(this)] = true;
exemptFee[marketingWallet] = true;
exemptFee[devWallet] = true;
exemptFee[deadWallet] = true;
//////// JS WALLET
exemptFee[0x23C99f168E3B3C0b5f52C094b062f0077cc69afF] = true;
//////// Mexican WALLET
exemptFee[0x6661B69E92C80280Eb2a973ED32F5E46266cD2c2] = true;
//////// BostonShark WALLET
exemptFee[0x01fC66A8745A4F5cEBfF891192aA95acbEF6FA78] = true;
//////// VP Wallet
exemptFee[0x5D7c261B5098A20C5633E2850daD4781043D3D5E] = true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
override
returns (bool)
{
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
override
returns (bool)
{
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal override {
require(amount > 0, "Transfer amount must be greater than zero");
if (!exemptFee[sender] && !exemptFee[recipient]) {
require(tradingEnabled, "Trading not enabled");
}
uint256 feeswap;
uint256 feesum;
uint256 fee;
Taxes memory currentTaxes;
bool useLaunchFee = !exemptFee[sender] &&
!exemptFee[recipient] &&
block.number < genesis_block + deadline;
//set fee to zero if fees in contract are handled or exempted
if (_interlock || exemptFee[sender] || exemptFee[recipient])
fee = 0;
//calculate fee
else if (recipient == pair && !useLaunchFee) {
feeswap =
sellTaxes.liquidity +
sellTaxes.marketing +
sellTaxes.dev;
feesum = feeswap;
currentTaxes = sellTaxes;
} else if (sender == pair && recipient != address(router) && !useLaunchFee) {
feeswap =
taxes.liquidity +
taxes.marketing +
taxes.dev ;
feesum = feeswap;
currentTaxes = taxes;
} else if (useLaunchFee) {
feeswap = launchtax;
feesum = launchtax;
}
fee = (amount * feesum) / 100;
//send fees if threshold has been reached
//don't do this on buys, breaks swap
if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);
//rest to recipient
super._transfer(sender, recipient, amount - fee);
if (fee > 0) {
//send the fee to the contract
if (feeswap > 0) {
uint256 feeAmount = (amount * feeswap) / 100;
super._transfer(sender, address(this), feeAmount);
}
}
}
function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {
if(feeswap == 0){
return;
}
uint256 contractBalance = balanceOf(address(this));
if (contractBalance >= tokenLiquidityThreshold) {
if (tokenLiquidityThreshold > 1) {
contractBalance = tokenLiquidityThreshold;
}
// Split the contract balance into halves
uint256 denominator = feeswap * 2;
uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
denominator;
uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance - initialBalance;
uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;
if (ethToAddLiquidityWith > 0) {
// Add liquidity to pancake
addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
}
uint256 MarketingAmt = unitBalance * 2 * swapTaxes.marketing;
if (MarketingAmt > 0) {
payable(marketingWallet).sendValue(MarketingAmt);
}
uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
if (devAmt > 0) {
payable(devWallet).sendValue(devAmt);
}
}
}
function swapTokensForETH(uint256 tokenAmount) private {
// generate the pancake pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
// make the swap
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(router), tokenAmount);
// add the liquidity
router.addLiquidityETH{ value: ethAmount }(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
deadWallet,
block.timestamp
);
}
function updateLiquidityProvide(bool state) external onlyOwner {
//update liquidity providing state
providingLiquidity = state;
}
function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
//update the treshhold
require(new_amount <= 1e7, "Swap threshold amount should be lower or equal to 1% of tokens");
tokenLiquidityThreshold = new_amount * 10**decimals();
}
function SetBuyTaxes(
uint256 _marketing,
uint256 _liquidity,
uint256 _dev
) external onlyOwner {
taxes = Taxes(_marketing, _liquidity, _dev);
require((_marketing + _liquidity + _dev) <= 12, "Must keep fees at 12% or less");
}
function SetSellTaxes(
uint256 _marketing,
uint256 _liquidity,
uint256 _dev
) external onlyOwner {
sellTaxes = Taxes(_marketing, _liquidity, _dev);
require((_marketing + _liquidity + _dev) <= 12, "Must keep fees at 12% or less");
}
function EnableTrading() external onlyOwner {
require(!tradingEnabled, "Cannot re-enable trading");
tradingEnabled = true;
providingLiquidity = true;
genesis_block = block.number;
}
function updatedeadline(uint256 _deadline) external onlyOwner {
require(!tradingEnabled, "Can't change when trading has started");
require(_deadline < 5,"Deadline should be less than 5 Blocks");
deadline = _deadline;
}
function updateMarketingWallet(address newWallet) external onlyOwner {
require(newWallet != address(0),"Fee Address cannot be zero address");
marketingWallet = newWallet;
}
function updateDevWallet(address newWallet) external onlyOwner {
require(newWallet != address(0),"Fee Address cannot be zero address");
devWallet = newWallet;
}
function updateExemptFee(address _address, bool state) external onlyOwner {
exemptFee[_address] = state;
}
function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
exemptFee[accounts[i]] = state;
}
}
function rescueBNB(uint256 weiAmount) external onlyOwner {
payable(owner()).transfer(weiAmount);
}
function rescueBSC20(address tokenAdd, uint256 amount) external onlyOwner {
require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
IBEP20(tokenAdd).transfer(owner(), amount);
}
// fallbacks
receive() external payable {}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
deadWallet 0x85141a77 → address
decimals 0x313ce567 → uint8
devWallet 0x8ea5220f → address
exemptFee 0xc5d32bb2 → bool
genesis_block 0x274a533c → uint256
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
providingLiquidity 0xfbe6324e → bool
router 0xf887ea40 → address
sellTaxes 0xf66895a3 → uint256, uint256, uint256
symbol 0x95d89b41 → string
taxes 0x728f8eea → uint256, uint256, uint256
tokenLiquidityThreshold 0x1675d802 → uint256
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
Write Contract 19 functions
These functions modify contract state and require a wallet transaction to execute.
EnableTrading 0x1d97b7cd
No parameters
SetBuyTaxes 0x4a2b3b13
uint256 _marketing
uint256 _liquidity
uint256 _dev
SetSellTaxes 0x4e736f22
uint256 _marketing
uint256 _liquidity
uint256 _dev
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
bulkExemptFee 0x0e375a5c
address[] accounts
bool state
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
rescueBNB 0x441b1d30
uint256 weiAmount
rescueBSC20 0xc9300ed5
address tokenAdd
uint256 amount
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateDevWallet 0x1816467f
address newWallet
updateExemptFee 0x355496ca
address _address
bool state
updateLiquidityProvide 0x1340538f
bool state
updateLiquidityTreshhold 0x42b6fa11
uint256 new_amount
updateMarketingWallet 0xaacebbe3
address newWallet
updatedeadline 0xedaa1168
uint256 _deadline
Recent Transactions
No transactions found for this address