Address Contract Partially Verified
Address
0x41DB19A827c8C06835494d3A3612b49DaBebc8Ec
Balance
0 ETH
Nonce
1
Code Size
10968 bytes
Creator
0xAF64BB3e...8B6f at tx 0xe92e7156...b74039
Indexed Transactions
0
Contract Bytecode
10968 bytes
0x6080604052600436106101ba575f3560e01c806375f0a874116100eb578063a8aa1b3111610089578063dd62ed3e11610063578063dd62ed3e14610613578063e01af92c1461064f578063f2fde38b14610677578063f887ea401461069f576101c1565b8063a8aa1b3114610571578063a9059cbb1461059b578063dbe66ca0146105d7576101c1565b806395d89b41116100c557806395d89b41146104bb5780639aed7370146104e5578063a3ca847d1461050d578063a457c2d714610535576101c1565b806375f0a8741461043d5780638091f3bf146104675780638da5cb5b14610491576101c1565b8063313ce567116101585780635d098b38116101325780635d098b38146103995780636ddd1713146103c157806370a08231146103eb578063715018a614610427576101c1565b8063313ce5671461030b5780633950935114610335578063590ffdce14610371576101c1565b8063095ea7b311610194578063095ea7b31461022d57806318160ddd1461026957806323b872dd1461029357806325b86edf146102cf576101c1565b806301339c21146101c557806306fdde03146101db5780630940bbc714610205576101c1565b366101c157005b5f5ffd5b3480156101d0575f5ffd5b506101d96106c9565b005b3480156101e6575f5ffd5b506101ef6107f9565b6040516101fc9190611e82565b60405180910390f35b348015610210575f5ffd5b5061022b60048036038101906102269190611ed9565b610889565b005b348015610238575f5ffd5b50610253600480360381019061024e9190611f5e565b61093b565b6040516102609190611fb6565b60405180910390f35b348015610274575f5ffd5b5061027d610958565b60405161028a9190611fde565b60405180910390f35b34801561029e575f5ffd5b506102b960048036038101906102b49190611ff7565b610961565b6040516102c69190611fb6565b60405180910390f35b3480156102da575f5ffd5b506102f560048036038101906102f09190612047565b610a5c565b6040516103029190611fb6565b60405180910390f35b348015610316575f5ffd5b5061031f610c11565b60405161032c91906120a0565b60405180910390f35b348015610340575f5ffd5b5061035b60048036038101906103569190611f5e565b610c19565b6040516103689190611fb6565b60405180910390f35b34801561037c575f5ffd5b50610397600480360381019061039291906120e3565b610cc0565b005b3480156103a4575f5ffd5b506103bf60048036038101906103ba9190612121565b610dc0565b005b3480156103cc575f5ffd5b506103d5610f8e565b6040516103e29190611fb6565b60405180910390f35b3480156103f6575f5ffd5b50610411600480360381019061040c9190612121565b610fa1565b60405161041e9190611fde565b60405180910390f35b348015610432575f5ffd5b5061043b610fe6565b005b348015610448575f5ffd5b5061045161106d565b60405161045e919061215b565b60405180910390f35b348015610472575f5ffd5b5061047b611092565b6040516104889190611fb6565b60405180910390f35b34801561049c575f5ffd5b506104a56110a5565b6040516104b2919061215b565b60405180910390f35b3480156104c6575f5ffd5b506104cf6110cd565b6040516104dc9190611e82565b60405180910390f35b3480156104f0575f5ffd5b5061050b60048036038101906105069190611ed9565b61115d565b005b348015610518575f5ffd5b50610533600480360381019061052e9190611ed9565b611268565b005b348015610540575f5ffd5b5061055b60048036038101906105569190611f5e565b61131a565b6040516105689190611fb6565b60405180910390f35b34801561057c575f5ffd5b50610585611409565b604051610592919061215b565b60405180910390f35b3480156105a6575f5ffd5b506105c160048036038101906105bc9190611f5e565b61142e565b6040516105ce9190611fb6565b60405180910390f35b3480156105e2575f5ffd5b506105fd60048036038101906105f89190612121565b61144b565b60405161060a9190611fb6565b60405180910390f35b34801561061e575f5ffd5b5061063960048036038101906106349190612047565b611468565b6040516106469190611fde565b60405180910390f35b34801561065a575f5ffd5b5061067560048036038101906106709190612174565b6114ea565b005b348015610682575f5ffd5b5061069d60048036038101906106989190612121565b6115af565b005b3480156106aa575f5ffd5b506106b36116a5565b6040516106c091906121fa565b60405180910390f35b6106d16116ca565b73ffffffffffffffffffffffffffffffffffffffff166106ef6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c9061225d565b60405180910390fd5b600760159054906101000a900460ff1615610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b6001600760156101000a81548160ff0219169083151502179055506001600760146101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60606003805461080890612310565b80601f016020809104026020016040519081016040528092919081815260200182805461083490612310565b801561087f5780601f106108565761010080835404028352916020019161087f565b820191905f5260205f20905b81548152906001019060200180831161086257829003601f168201915b5050505050905090565b6108916116ca565b73ffffffffffffffffffffffffffffffffffffffff166108af6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc9061225d565b60405180910390fd5b80600a819055507f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a150565b5f61094e6109476116ca565b84846116d1565b6001905092915050565b5f600254905090565b5f61096d848484611894565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109b46116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a906123b0565b60405180910390fd5b610a5085610a3f6116ca565b8584610a4b91906123fb565b6116d1565b60019150509392505050565b5f610a656116ca565b73ffffffffffffffffffffffffffffffffffffffff16610a836110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad09061225d565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b13919061215b565b602060405180830381865afa158015610b2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b529190612442565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610b8f92919061246d565b6020604051808303815f875af1158015610bab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcf91906124a8565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610c0292919061246d565b60405180910390a15092915050565b5f6012905090565b5f610cb6610c256116ca565b848460015f610c326116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cb191906124d3565b6116d1565b6001905092915050565b610cc86116ca565b73ffffffffffffffffffffffffffffffffffffffff16610ce66110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061225d565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b610dc86116ca565b73ffffffffffffffffffffffffffffffffffffffff16610de66110a5565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e339061225d565b60405180910390fd5b5f600b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690612576565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b600760149054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fee6116ca565b73ffffffffffffffffffffffffffffffffffffffff1661100c6110a5565b73ffffffffffffffffffffffffffffffffffffffff1614611062576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110599061225d565b60405180910390fd5b61106b5f611ad7565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546110dc90612310565b80601f016020809104026020016040519081016040528092919081815260200182805461110890612310565b80156111535780601f1061112a57610100808354040283529160200191611153565b820191905f5260205f20905b81548152906001019060200180831161113657829003601f168201915b5050505050905090565b6111656116ca565b73ffffffffffffffffffffffffffffffffffffffff166111836110a5565b73ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d09061225d565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846112059190612594565b61120f9190612602565b90811502906040515f60405180830381858888f19350505050158015611237573d5f5f3e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6112706116ca565b73ffffffffffffffffffffffffffffffffffffffff1661128e6110a5565b73ffffffffffffffffffffffffffffffffffffffff16146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061225d565b60405180910390fd5b806009819055507f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a150565b5f5f60015f6113276116ca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d8906126a2565b60405180910390fd5b6113fe6113ec6116ca565b8585846113f991906123fb565b6116d1565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61144161143a6116ca565b8484611894565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114f26116ca565b73ffffffffffffffffffffffffffffffffffffffff166115106110a5565b73ffffffffffffffffffffffffffffffffffffffff1614611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d9061225d565b60405180910390fd5b80600760146101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b6115b76116ca565b73ffffffffffffffffffffffffffffffffffffffff166115d56110a5565b73ffffffffffffffffffffffffffffffffffffffff161461162b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116229061225d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169090612730565b60405180910390fd5b6116a281611ad7565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361173f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611736906127be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a49061284c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118879190611fde565b60405180910390a3505050565b5f81116118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd906128da565b60405180910390fd5b5f600760169054906101000a900460ff16806119385750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806119895750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611996575f9050611a86565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a0b576064600a54836119fa9190612594565b611a049190612602565b9050611a85565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a8057606460095483611a6f9190612594565b611a799190612602565b9050611a84565b5f90505b5b5b611a9c84848385611a9791906123fb565b611b9a565b5f811115611ad157611ad08460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611b9a565b5b50505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90612968565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d906129f6565b60405180910390fd5b611c81838383611e0d565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb90612a84565b60405180910390fd5b8181611d1091906123fb565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d9b91906124d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dff9190611fde565b60405180910390a350505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e5482611e12565b611e5e8185611e1c565b9350611e6e818560208601611e2c565b611e7781611e3a565b840191505092915050565b5f6020820190508181035f830152611e9a8184611e4a565b905092915050565b5f5ffd5b5f819050919050565b611eb881611ea6565b8114611ec2575f5ffd5b50565b5f81359050611ed381611eaf565b92915050565b5f60208284031215611eee57611eed611ea2565b5b5f611efb84828501611ec5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f2d82611f04565b9050919050565b611f3d81611f23565b8114611f47575f5ffd5b50565b5f81359050611f5881611f34565b92915050565b5f5f60408385031215611f7457611f73611ea2565b5b5f611f8185828601611f4a565b9250506020611f9285828601611ec5565b9150509250929050565b5f8115159050919050565b611fb081611f9c565b82525050565b5f602082019050611fc95f830184611fa7565b92915050565b611fd881611ea6565b82525050565b5f602082019050611ff15f830184611fcf565b92915050565b5f5f5f6060848603121561200e5761200d611ea2565b5b5f61201b86828701611f4a565b935050602061202c86828701611f4a565b925050604061203d86828701611ec5565b9150509250925092565b5f5f6040838503121561205d5761205c611ea2565b5b5f61206a85828601611f4a565b925050602061207b85828601611f4a565b9150509250929050565b5f60ff82169050919050565b61209a81612085565b82525050565b5f6020820190506120b35f830184612091565b92915050565b6120c281611f9c565b81146120cc575f5ffd5b50565b5f813590506120dd816120b9565b92915050565b5f5f604083850312156120f9576120f8611ea2565b5b5f61210685828601611f4a565b9250506020612117858286016120cf565b9150509250929050565b5f6020828403121561213657612135611ea2565b5b5f61214384828501611f4a565b91505092915050565b61215581611f23565b82525050565b5f60208201905061216e5f83018461214c565b92915050565b5f6020828403121561218957612188611ea2565b5b5f612196848285016120cf565b91505092915050565b5f819050919050565b5f6121c26121bd6121b884611f04565b61219f565b611f04565b9050919050565b5f6121d3826121a8565b9050919050565b5f6121e4826121c9565b9050919050565b6121f4816121da565b82525050565b5f60208201905061220d5f8301846121eb565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612247602083611e1c565b915061225282612213565b602082019050919050565b5f6020820190508181035f8301526122748161223b565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f6122af601683611e1c565b91506122ba8261227b565b602082019050919050565b5f6020820190508181035f8301526122dc816122a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061232757607f821691505b60208210810361233a576123396122e3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61239a602883611e1c565b91506123a582612340565b604082019050919050565b5f6020820190508181035f8301526123c78161238e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61240582611ea6565b915061241083611ea6565b9250828203905081811115612428576124276123ce565b5b92915050565b5f8151905061243c81611eaf565b92915050565b5f6020828403121561245757612456611ea2565b5b5f6124648482850161242e565b91505092915050565b5f6040820190506124805f83018561214c565b61248d6020830184611fcf565b9392505050565b5f815190506124a2816120b9565b92915050565b5f602082840312156124bd576124bc611ea2565b5b5f6124ca84828501612494565b91505092915050565b5f6124dd82611ea6565b91506124e883611ea6565b9250828201905080821115612500576124ff6123ce565b5b92915050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f612560602783611e1c565b915061256b82612506565b604082019050919050565b5f6020820190508181035f83015261258d81612554565b9050919050565b5f61259e82611ea6565b91506125a983611ea6565b92508282026125b781611ea6565b915082820484148315176125ce576125cd6123ce565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61260c82611ea6565b915061261783611ea6565b925082612627576126266125d5565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61268c602583611e1c565b915061269782612632565b604082019050919050565b5f6020820190508181035f8301526126b981612680565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61271a602683611e1c565b9150612725826126c0565b604082019050919050565b5f6020820190508181035f8301526127478161270e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127a8602483611e1c565b91506127b38261274e565b604082019050919050565b5f6020820190508181035f8301526127d58161279c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612836602283611e1c565b9150612841826127dc565b604082019050919050565b5f6020820190508181035f8301526128638161282a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6128c4602983611e1c565b91506128cf8261286a565b604082019050919050565b5f6020820190508181035f8301526128f1816128b8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612952602583611e1c565b915061295d826128f8565b604082019050919050565b5f6020820190508181035f83015261297f81612946565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129e0602383611e1c565b91506129eb82612986565b604082019050919050565b5f6020820190508181035f830152612a0d816129d4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612a6e602683611e1c565b9150612a7982612a14565b604082019050919050565b5f6020820190508181035f830152612a9b81612a62565b905091905056fea2646970667358221220103efd3ed86079214178635ab643b7d108e508ebd2d51cefadcf66efbd82e7ce64736f6c634300081e0033
Verified Source Code Partial Match
Compiler: v0.8.30+commit.73712a01
EVM: prague
Optimization: No
SansAIAgent.sol 348 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
/*
* @title SansAIAgent (SANS)
* @notice Upgraded to Solidity 0.8.30 compatibility.
* No functional changes were made—only compiler‑version bump
* and minor style tweaks to silence new compiler warnings.
*/
// -------------------- Context --------------------
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// -------------------- ERC‑20 Interfaces --------------------
interface IERC20 {
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 IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
// -------------------- ERC‑20 Base --------------------
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
// --- IERC20Metadata ---
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
// --- IERC20 ---
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
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, "ERC20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
// --- Internal helpers ---
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
_balances[sender] = senderBalance - amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
// -------------------- Address Utilities --------------------
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");
}
}
// -------------------- Ownable --------------------
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);
}
}
// -------------------- DEX Interfaces --------------------
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;
}
// -------------------- SansAIAgent Token --------------------
contract SansAIAgent is ERC20, Ownable {
using Address for address payable;
// --- DEX state ---
IRouter public router;
address public pair;
bool public swapEnabled;
bool public launched;
bool private swapping;
// --- Tokenomics ---
address public marketingWallet = 0x5A075392181A015B088fDF95D6650F6a2D3855F9;
uint256 private totBuyTax = 3; // 3%
uint256 private totSellTax = 3; // 3%
mapping(address => bool) public excludedFromFees;
// --- Events ---
event TransferForeignToken(address token, uint256 amount);
event Launched();
event SwapEnabled();
event BuyTaxesUpdated();
event SellTaxesUpdated();
event MarketingWalletUpdated();
event ExcludedFromFeesUpdated();
event StuckEthersCleared();
// --- Constructor ---
constructor() ERC20("SansTheGoaETH", "SANS") {
uint256 decimalsFactor = 10 ** decimals();
// Initial distribution
_mint(0x9f1688CEa577655865Cd21aeDb69d3B755343e49, 7500000000 * decimalsFactor); // Marketing (7.5B)
_mint(0x8BAE590405707027554ff79DC14361D15164e551, 5000000000 * decimalsFactor); // Treasury (5B)
_mint(0x5D31a54dA3dfEc61C19f0B0B7356D7EA5B02adAf, 2500000000 * decimalsFactor); // CEX (2.5B)
_mint(0xf2c909EbBF33A34DdCB1e9690a2F9BcA27314643, 35000000000 * decimalsFactor); // Public (35B)
// Fee exclusions
excludedFromFees[msg.sender] = true;
excludedFromFees[0x9f1688CEa577655865Cd21aeDb69d3B755343e49] = true; // Marketing
excludedFromFees[0x8BAE590405707027554ff79DC14361D15164e551] = true; // Treasury/CEX
excludedFromFees[0x86790abbaCcD1B21F5ecFDaA67EC6282AFbf3E83] = true; // CoinStore
excludedFromFees[0xf2067aBfabbBC621211935431519d41825d2F344] = true; // CoinStore Hot Wallet
excludedFromFees[address(this)] = true;
// Router & Pair
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap v2
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
}
// --- Core ERC20 override with fee logic ---
function _transfer(address sender, address recipient, uint256 amount) internal override {
require(amount > 0, "Transfer amount must be greater than zero");
uint256 fee;
if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) {
fee = 0;
} else {
if (recipient == pair) {
fee = (amount * totSellTax) / 100;
} else if (sender == pair) {
fee = (amount * totBuyTax) / 100;
} else {
fee = 0;
}
}
super._transfer(sender, recipient, amount - fee);
if (fee > 0) super._transfer(sender, marketingWallet, fee);
}
// --- Admin: trading & taxes ---
function launch() external onlyOwner {
require(!launched, "Trading already active");
launched = true;
swapEnabled = true;
emit Launched();
}
function setSwapEnabled(bool state) external onlyOwner {
swapEnabled = state;
emit SwapEnabled();
}
function setBuyTaxes(uint256 _marketing) external onlyOwner {
totBuyTax = _marketing;
emit BuyTaxesUpdated();
}
function setSellTaxes(uint256 _marketing) external onlyOwner {
totSellTax = _marketing;
emit SellTaxesUpdated();
}
function setMarketingWallet(address newWallet) external onlyOwner {
excludedFromFees[marketingWallet] = false;
require(newWallet != address(0), "Marketing wallet cannot be zero address");
marketingWallet = newWallet;
emit MarketingWalletUpdated();
}
function setExcludedFromFees(address account, bool state) external onlyOwner {
excludedFromFees[account] = state;
emit ExcludedFromFeesUpdated();
}
// --- Rescue functions ---
function withdrawStuckTokens(address token, address to) external onlyOwner returns (bool sent) {
uint256 balance = IERC20(token).balanceOf(address(this));
sent = IERC20(token).transfer(to, balance);
emit TransferForeignToken(token, balance);
}
function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
uint256 amountETH = address(this).balance;
payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
emit StuckEthersCleared();
}
// --- Fallback ---
receive() external payable {}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
excludedFromFees 0xdbe66ca0 → bool
launched 0x8091f3bf → bool
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 15 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
clearStuckEthers 0x9aed7370
uint256 amountPercentage
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
launch 0x01339c21
No parameters
renounceOwnership 0x715018a6
No parameters
setBuyTaxes 0xa3ca847d
uint256 _marketing
setExcludedFromFees 0x590ffdce
address account
bool state
setMarketingWallet 0x5d098b38
address newWallet
setSellTaxes 0x0940bbc7
uint256 _marketing
setSwapEnabled 0xe01af92c
bool state
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
withdrawStuckTokens 0x25b86edf
address token
address to
returns: bool
Recent Transactions
No transactions found for this address