Address Contract Verified
Address
0xf3501079Cd4CF2a1c4a6a33115aC7DFfc922c97B
Balance
0 ETH
Nonce
1
Code Size
12941 bytes
Creator
0x8D53e7FB...13f7 at tx 0x3521cdda...71ff2b
Indexed Transactions
0
Contract Bytecode
12941 bytes
0x60806040526004361061023f5760003560e01c80636c0a24eb1161012e578063954bbdec116100ab578063b09f12661161006f578063b09f1266146108b4578063d28d8852146108df578063dd62ed3e1461090a578063f1d5f51714610947578063f887ea401461097057610246565b8063954bbdec146107cb57806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c578063a9059cbb1461087757610246565b8063715018a6116100f2578063715018a61461070a57806378e9792514610721578063893d20e81461074c5780638a8c523c146107775780638b42507f1461078e57610246565b80636c0a24eb146105fd5780636c9bb93b146106285780636ddd1713146106655780636ebcf6071461069057806370a08231146106cd57610246565b80632f54bf6e116101bc5780633eaaf86b116101805780633eaaf86b146105045780633f4218e01461052f57806352f7c9881461056c578063571ac8b0146105955780636b67c4df146105d257610246565b80632f54bf6e1461042f578063313ce5671461046c57806332424aa314610497578063364333f4146104c25780633d5ca64a146104d957610246565b8063095ea7b311610203578063095ea7b314610334578063180b0d7e1461037157806318160ddd1461039c5780631df4ccfc146103c757806323b872dd146103f257610246565b8063024c2ddd1461024b57806303fd2a45146102885780630445b667146102b3578063064a59d0146102de57806306fdde031461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906126b7565b61099b565b60405161027f9190612710565b60405180910390f35b34801561029457600080fd5b5061029d6109c0565b6040516102aa919061273a565b60405180910390f35b3480156102bf57600080fd5b506102c86109e6565b6040516102d59190612710565b60405180910390f35b3480156102ea57600080fd5b506102f36109ec565b6040516103009190612770565b60405180910390f35b34801561031557600080fd5b5061031e6109ff565b60405161032b919061281b565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612869565b610a3c565b6040516103689190612770565b60405180910390f35b34801561037d57600080fd5b50610386610b2e565b6040516103939190612710565b60405180910390f35b3480156103a857600080fd5b506103b1610b34565b6040516103be9190612710565b60405180910390f35b3480156103d357600080fd5b506103dc610b3e565b6040516103e99190612710565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906128a9565b610b44565b6040516104269190612770565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906128fc565b610d44565b6040516104639190612770565b60405180910390f35b34801561047857600080fd5b50610481610d9d565b60405161048e9190612945565b60405180910390f35b3480156104a357600080fd5b506104ac610da6565b6040516104b99190612945565b60405180910390f35b3480156104ce57600080fd5b506104d7610dab565b005b3480156104e557600080fd5b506104ee610e16565b6040516104fb919061273a565b60405180910390f35b34801561051057600080fd5b50610519610e3c565b6040516105269190612710565b60405180910390f35b34801561053b57600080fd5b50610556600480360381019061055191906128fc565b610e42565b6040516105639190612770565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612960565b610e62565b005b3480156105a157600080fd5b506105bc60048036038101906105b791906128fc565b610ed2565b6040516105c99190612770565b60405180910390f35b3480156105de57600080fd5b506105e7610f05565b6040516105f49190612710565b60405180910390f35b34801561060957600080fd5b50610612610f0b565b60405161061f9190612710565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906128fc565b610f11565b60405161065c9190612770565b60405180910390f35b34801561067157600080fd5b5061067a610f31565b6040516106879190612770565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128fc565b610f44565b6040516106c49190612710565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef91906128fc565b610f5c565b6040516107019190612710565b60405180910390f35b34801561071657600080fd5b5061071f610fa5565b005b34801561072d57600080fd5b50610736611068565b6040516107439190612710565b60405180910390f35b34801561075857600080fd5b5061076161106e565b60405161076e919061273a565b60405180910390f35b34801561078357600080fd5b5061078c611097565b005b34801561079a57600080fd5b506107b560048036038101906107b091906128fc565b611148565b6040516107c29190612770565b60405180910390f35b3480156107d757600080fd5b506107e0611168565b6040516107ed9190612710565b60405180910390f35b34801561080257600080fd5b5061080b61116d565b604051610818919061281b565b60405180910390f35b34801561082d57600080fd5b506108366111aa565b6040516108439190612710565b60405180910390f35b34801561085857600080fd5b506108616111b0565b60405161086e919061273a565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190612869565b6111d6565b6040516108ab9190612770565b60405180910390f35b3480156108c057600080fd5b506108c96111eb565b6040516108d6919061281b565b60405180910390f35b3480156108eb57600080fd5b506108f4611224565b604051610901919061281b565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c91906126b7565b61125d565b60405161093e9190612710565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906129a0565b6112e4565b005b34801561097c57600080fd5b50610985611350565b6040516109929190612a2c565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600a60009054906101000a900460ff1681565b60606040518060400160405280600981526020017f5869676f7520496e750000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b1c9190612710565b60405180910390a36001905092915050565b600f5481565b6000600354905090565b600e5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b8484846113da565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600981565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e13573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60076020528060005260406000206000915054906101000a900460ff1681565b610e6b33610d44565b610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a93565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ec89190612ae2565b600e819055505050565b6000610efe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3c565b9050919050565b600d5481565b60045481565b60096020528060005260406000206000915054906101000a900460ff1681565b601260149054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fae33610d44565b610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612a93565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161105e919061273a565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a033610d44565b6110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612a93565b60405180910390fd5b6000600b5414611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612b62565b60405180910390fd5b6001600a60006101000a81548160ff02191690831515021790555042600b81905550565b60086020528060005260406000206000915054906101000a900460ff1681565b601e81565b60606040518060400160405280600581526020017f5869676f75000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111e33384846113da565b905092915050565b6040518060400160405280600581526020017f5869676f7500000000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600981526020017f5869676f7520496e75000000000000000000000000000000000000000000000081525081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ed33610d44565b61132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612a93565b60405180910390fd5b6103e88160035461133d9190612b82565b6113479190612bf3565b60048190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5919061281b565b60405180910390fd5b50600083856113cd9190612c24565b9050809150509392505050565b6000601460009054906101000a900460ff1615611403576113fc848484611af6565b9050611aef565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114af5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561159857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611558575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115559190612ae2565b11155b611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612cca565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561163c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612d36565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611723575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118eb57600a60009054906101000a900460ff16611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90612da2565b60405180910390fd5b601e600b546117869190612ae2565b4210156118ea57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361183b576001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b6118f3611cc9565b1561190157611900611da0565b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006119d8856122ea565b6119e257826119ed565b6119ec8584612341565b5b9050611a4181600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae19190612710565b60405180910390a360019150505b9392505050565b6000611b81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cb69190612710565b60405180910390a3600190509392505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d365750601460009054906101000a900460ff16155b8015611d4e5750601260149054906101000a900460ff165b8015611d9b5750601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff021916908315150217905550600060135490506000611e006002611df2600e54611de4600c54876124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b90506000611e1782846125a790919063ffffffff16565b90506000600267ffffffffffffffff811115611e3657611e35612dc2565b5b604051908082528060200260200182016040528015611e645781602001602082028036833780820191505090505b5090503081600081518110611e7c57611e7b612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190612e35565b81600181518110611f5b57611f5a612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611ffe959493929190612f5b565b600060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b50505050600061204582476125a790919063ffffffff16565b905060006120736120626002600c5461255d90919063ffffffff16565b600e546125a790919063ffffffff16565b905060006120b160026120a384612095600c54886124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b905060006120dc836120ce600d54876124e390919063ffffffff16565b61255d90919063ffffffff16565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161212a90612fe6565b600060405180830381858888f193505050503d8060008114612168576040519150601f19603f3d011682016040523d82523d6000602084013e61216d565b606091505b50509050806121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613047565b60405180910390fd5b60008911156122c357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161224396959493929190613067565b60606040518083038185885af1158015612261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228691906130dd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516122ba929190613130565b60405180910390a15b505050505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061236d600f5461235f600e54866124e390919063ffffffff16565b61255d90919063ffffffff16565b90506123c181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190612710565b60405180910390a361247c81846125a790919063ffffffff16565b91505092915050565b60008082846124949190612ae2565b9050838110156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906131a5565b60405180910390fd5b8091505092915050565b60008083036124f55760009050612557565b600082846125039190612b82565b90508284826125129190612bf3565b14612552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254990613237565b60405180910390fd5b809150505b92915050565b600061259f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f1565b905092915050565b60006125e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611376565b905092915050565b60008083118290612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f919061281b565b60405180910390fd5b50600083856126479190612bf3565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268482612659565b9050919050565b61269481612679565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b600080604083850312156126ce576126cd612654565b5b60006126dc858286016126a2565b92505060206126ed858286016126a2565b9150509250929050565b6000819050919050565b61270a816126f7565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612679565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008115159050919050565b61276a81612755565b82525050565b60006020820190506127856000830184612761565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c55780820151818401526020810190506127aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ed8261278b565b6127f78185612796565b93506128078185602086016127a7565b612810816127d1565b840191505092915050565b6000602082019050818103600083015261283581846127e2565b905092915050565b612846816126f7565b811461285157600080fd5b50565b6000813590506128638161283d565b92915050565b600080604083850312156128805761287f612654565b5b600061288e858286016126a2565b925050602061289f85828601612854565b9150509250929050565b6000806000606084860312156128c2576128c1612654565b5b60006128d0868287016126a2565b93505060206128e1868287016126a2565b92505060406128f286828701612854565b9150509250925092565b60006020828403121561291257612911612654565b5b6000612920848285016126a2565b91505092915050565b600060ff82169050919050565b61293f81612929565b82525050565b600060208201905061295a6000830184612936565b92915050565b6000806040838503121561297757612976612654565b5b600061298585828601612854565b925050602061299685828601612854565b9150509250929050565b6000602082840312156129b6576129b5612654565b5b60006129c484828501612854565b91505092915050565b6000819050919050565b60006129f26129ed6129e884612659565b6129cd565b612659565b9050919050565b6000612a04826129d7565b9050919050565b6000612a16826129f9565b9050919050565b612a2681612a0b565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7d600683612796565b9150612a8882612a47565b602082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aed826126f7565b9150612af8836126f7565b9250828201905080821115612b1057612b0f612ab3565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612b4c601783612796565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b6000612b8d826126f7565b9150612b98836126f7565b9250828202612ba6816126f7565b91508282048414831517612bbd57612bbc612ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bfe826126f7565b9150612c09836126f7565b925082612c1957612c18612bc4565b5b828204905092915050565b6000612c2f826126f7565b9150612c3a836126f7565b9250828203905081811115612c5257612c51612ab3565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612cb4602583612796565b9150612cbf82612c58565b604082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f4163636f756e7420697320626c61636b6c697374656400000000000000000000600082015250565b6000612d20601683612796565b9150612d2b82612cea565b602082019050919050565b60006020820190508181036000830152612d4f81612d13565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612d8c601783612796565b9150612d9782612d56565b602082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e2f8161268b565b92915050565b600060208284031215612e4b57612e4a612654565b5b6000612e5984828501612e20565b91505092915050565b6000819050919050565b6000612e87612e82612e7d84612e62565b6129cd565b6126f7565b9050919050565b612e9781612e6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ed281612679565b82525050565b6000612ee48383612ec9565b60208301905092915050565b6000602082019050919050565b6000612f0882612e9d565b612f128185612ea8565b9350612f1d83612eb9565b8060005b83811015612f4e578151612f358882612ed8565b9750612f4083612ef0565b925050600181019050612f21565b5085935050505092915050565b600060a082019050612f706000830188612701565b612f7d6020830187612e8e565b8181036040830152612f8f8186612efd565b9050612f9e606083018561272b565b612fab6080830184612701565b9695505050505050565b600081905092915050565b50565b6000612fd0600083612fb5565b9150612fdb82612fc0565b600082019050919050565b6000612ff182612fc3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613031601e83612796565b915061303c82612ffb565b602082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600060c08201905061307c600083018961272b565b6130896020830188612701565b6130966040830187612e8e565b6130a36060830186612e8e565b6130b0608083018561272b565b6130bd60a0830184612701565b979650505050505050565b6000815190506130d78161283d565b92915050565b6000806000606084860312156130f6576130f5612654565b5b6000613104868287016130c8565b9350506020613115868287016130c8565b9250506040613126868287016130c8565b9150509250925092565b60006040820190506131456000830185612701565b6131526020830184612701565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061318f601b83612796565b915061319a82613159565b602082019050919050565b600060208201905081810360008301526131be81613182565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613221602183612796565b915061322c826131c5565b604082019050919050565b6000602082019050818103600083015261325081613214565b905091905056fea2646970667358221220866a3734b1ff5e2db25dc08173886c9c62edcd80b3df77a5f165a17db955aed564736f6c63430008110033
Verified Source Code Full Match
Compiler: v0.8.17+commit.8df45f5f
EVM: london
Optimization: No
XigouInu.sol 373 lines
/**
Telegram: https://t.me/XigouInu
Twitter: https://twitter.com/xigouinu
Website: https://xigouinu.io
*/
//
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
/* solhint-disable */
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface ERC20 {
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 getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {
owner = _owner;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER"); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function renounceOwnership() public onlyOwner {
owner = address(0);
emit OwnershipTransferred(address(0));
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
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 XigouInu is ERC20, Ownable {
using SafeMath for uint256;
address public routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
address public DEAD = 0x000000000000000000000000000000000000dEaD;
string public constant _name = "Xigou Inu";
string public constant _symbol = "Xigou";
uint8 public constant _decimals = 9;
uint256 public _totalSupply = 1_000_000_000 * (10 ** _decimals);
uint256 public _maxWalletAmount = (_totalSupply * 100) / 100;
mapping(address => uint256) public _balances;
mapping(address => mapping(address => uint256)) public _allowances;
mapping(address => bool) public isFeeExempt;
mapping(address => bool) public isTxLimitExempt;
mapping(address => bool) public _isBlackListed;
bool public isTradingEnabled;
uint256 public startTime;
uint256 public constant BLACKLIST_TRADE_UNTIL = 30 seconds;
uint256 public liquidityFee = 20;
uint256 public marketingFee = 50;
uint256 public totalFee = liquidityFee + marketingFee;
uint256 public feeDenominator = 1000;
address private marketingFeeReceiver = 0x82946f878Af1f4933063364e4535D7DB7f56ef0C;
IDEXRouter public router;
address public pair;
bool public swapEnabled = true;
uint256 public swapThreshold = (_totalSupply / 1000) * 2; //
bool internal inSwap;
modifier swapping() {
inSwap = true;
_;
inSwap = false;
}
constructor() Ownable(msg.sender) {
router = IDEXRouter(routerAdress);
pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
_allowances[address(this)][address(router)] = type(uint256).max;
isFeeExempt[marketingFeeReceiver] = true;
isTxLimitExempt[owner] = true;
isTxLimitExempt[marketingFeeReceiver] = true;
isTxLimitExempt[DEAD] = true;
_balances[owner] = _totalSupply;
emit Transfer(address(0), owner, _totalSupply);
}
receive() external payable {}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function decimals() external pure override returns (uint8) {
return _decimals;
}
function symbol() external pure override returns (string memory) {
return _symbol;
}
function name() external pure override returns (string memory) {
return _name;
}
function getOwner() external view override returns (address) {
return owner;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address holder, address spender) external view override returns (uint256) {
return _allowances[holder][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, type(uint256).max);
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
return _transferFrom(msg.sender, recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
if (_allowances[sender][msg.sender] != type(uint256).max) {
_allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
}
return _transferFrom(sender, recipient, amount);
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
if (inSwap) {
return _basicTransfer(sender, recipient, amount);
}
if (recipient != pair && recipient != DEAD) {
require(
isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount,
"Transfer amount exceeds the bag size."
);
}
require(!_isBlackListed[sender] && !_isBlackListed[recipient], "Account is blacklisted");
if (sender != owner && recipient != owner) {
require(isTradingEnabled, "Trading not enabled yet");
if (block.timestamp < startTime + BLACKLIST_TRADE_UNTIL) {
if (sender == pair) {
_isBlackListed[recipient] = true;
}
if (recipient == pair) {
_isBlackListed[sender] = true;
}
}
}
if (shouldSwapBack()) {
swapBack();
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !isFeeExempt[sender];
}
function takeFee(address sender, uint256 amount) internal returns (uint256) {
uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
return amount.sub(feeAmount);
}
function shouldSwapBack() internal view returns (bool) {
return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold;
}
function swapBack() internal swapping {
uint256 contractTokenBalance = swapThreshold;
uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETH = address(this).balance.sub(balanceBefore);
uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
(bool MarketingSuccess /* bytes memory data */, ) = payable(marketingFeeReceiver).call{
value: amountETHMarketing,
gas: 30000
}("");
require(MarketingSuccess, "receiver rejected ETH transfer");
if (amountToLiquify > 0) {
router.addLiquidityETH{ value: amountETHLiquidity }(
address(this),
amountToLiquify,
0,
0,
marketingFeeReceiver,
block.timestamp
);
emit AutoLiquify(amountETHLiquidity, amountToLiquify);
}
}
function buyTokens(uint256 amount, address to) internal swapping {
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(this);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, to, block.timestamp);
}
function clearStuckBalance() external {
payable(marketingFeeReceiver).transfer(address(this).balance);
}
function setWalletLimit(uint256 amountPercent) external onlyOwner {
_maxWalletAmount = (_totalSupply * amountPercent) / 1000;
}
function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
liquidityFee = _liquidityFee;
marketingFee = _marketingFee;
totalFee = liquidityFee + marketingFee;
}
function enableTrading() external onlyOwner {
require(startTime == 0, "Trading already enabled");
isTradingEnabled = true;
startTime = block.timestamp;
}
event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}
Read Contract
BLACKLIST_TRADE_UNTIL 0x954bbdec → uint256
DEAD 0x03fd2a45 → address
_allowances 0x024c2ddd → uint256
_balances 0x6ebcf607 → uint256
_decimals 0x32424aa3 → uint8
_isBlackListed 0x6c9bb93b → bool
_maxWalletAmount 0x6c0a24eb → uint256
_name 0xd28d8852 → string
_symbol 0xb09f1266 → string
_totalSupply 0x3eaaf86b → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
feeDenominator 0x180b0d7e → uint256
getOwner 0x893d20e8 → address
isFeeExempt 0x3f4218e0 → bool
isOwner 0x2f54bf6e → bool
isTradingEnabled 0x064a59d0 → bool
isTxLimitExempt 0x8b42507f → bool
liquidityFee 0x98118cb4 → uint256
marketingFee 0x6b67c4df → uint256
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
routerAdress 0x3d5ca64a → address
startTime 0x78e97925 → uint256
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalFee 0x1df4ccfc → uint256
totalSupply 0x18160ddd → uint256
Write Contract 9 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
clearStuckBalance 0x364333f4
No parameters
enableTrading 0x8a8c523c
No parameters
renounceOwnership 0x715018a6
No parameters
setFee 0x52f7c988
uint256 _liquidityFee
uint256 _marketingFee
setWalletLimit 0xf1d5f517
uint256 amountPercent
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
Recent Transactions
No transactions found for this address