More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 347 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 5534921 | 2457 days ago | IN | 0.2 ETH | 0.000441 | ||||
Transfer | 5533378 | 2457 days ago | IN | 1 ETH | 0.00109022 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085734 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085734 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 | ||||
Whitelist Wallet | 5533359 | 2457 days ago | IN | 0 ETH | 0.00085926 |
Loading...
Loading
Contract Name:
PoolOwners
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-30 */ pragma solidity ^0.4.3; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC677 is ERC20 { function transferAndCall(address to, uint value, bytes data) public returns (bool success); event Transfer(address indexed from, address indexed to, uint value, bytes data); } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract PoolOwners is Ownable { mapping(uint64 => address) private ownerAddresses; mapping(address => bool) private whitelist; mapping(address => uint256) public ownerPercentages; mapping(address => uint256) public ownerShareTokens; mapping(address => uint256) public tokenBalance; mapping(address => mapping(address => uint256)) private balances; uint64 public totalOwners = 0; uint16 public distributionMinimum = 20; bool private contributionStarted = false; bool private distributionActive = false; // Public Contribution Variables uint256 private ethWei = 1000000000000000000; // 1 ether in wei uint256 private valuation = ethWei * 4000; // 1 ether * 4000 uint256 private hardCap = ethWei * 1000; // 1 ether * 1000 address private wallet; bool private locked = false; uint256 public totalContributed = 0; // The contract hard-limit is 0.04 ETH due to the percentage precision, lowest % possible is 0.001% // It's been set at 0.2 ETH to try and minimise the sheer number of contributors as that would up the distribution GAS cost uint256 private minimumContribution = 200000000000000000; // 0.2 ETH /** Events */ event Contribution(address indexed sender, uint256 share, uint256 amount); event TokenDistribution(address indexed token, uint256 amount); event TokenWithdrawal(address indexed token, address indexed owner, uint256 amount); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner, uint256 amount); /** Modifiers */ modifier onlyWhitelisted() { require(whitelist[msg.sender]); _; } /** Constructor */ constructor(address _wallet) public { wallet = _wallet; } /** Contribution Methods */ // Fallback, redirects to contribute function() public payable { contribute(msg.sender); } function contribute(address sender) internal { // Make sure the shares aren't locked require(!locked); // Ensure the contribution phase has started require(contributionStarted); // Make sure they're in the whitelist require(whitelist[sender]); // Assert that the contribution is above or equal to the minimum contribution require(msg.value >= minimumContribution); // Make sure the contribution isn't above the hard cap require(hardCap >= msg.value); // Ensure the amount contributed is cleanly divisible by the minimum contribution require((msg.value % minimumContribution) == 0); // Make sure the contribution doesn't exceed the hardCap require(hardCap >= SafeMath.add(totalContributed, msg.value)); // Increase the total contributed totalContributed = SafeMath.add(totalContributed, msg.value); // Calculated share uint256 share = percent(msg.value, valuation, 5); // Calculate and set the contributors % holding if (ownerPercentages[sender] != 0) { // Existing contributor ownerShareTokens[sender] = SafeMath.add(ownerShareTokens[sender], msg.value); ownerPercentages[sender] = SafeMath.add(share, ownerPercentages[sender]); } else { // New contributor ownerAddresses[totalOwners] = sender; totalOwners += 1; ownerPercentages[sender] = share; ownerShareTokens[sender] = msg.value; } // Transfer the ether to the wallet wallet.transfer(msg.value); // Fire event emit Contribution(sender, share, msg.value); } // Add a wallet to the whitelist function whitelistWallet(address contributor) external onlyOwner() { // Is it actually an address? require(contributor != address(0)); // Add address to whitelist whitelist[contributor] = true; } // Start the contribution function startContribution() external onlyOwner() { require(!contributionStarted); contributionStarted = true; } /** Public Methods */ // Set the owners share per owner, the balancing of shares is done externally function setOwnerShare(address owner, uint256 value) public onlyOwner() { // Make sure the shares aren't locked require(!locked); if (ownerShareTokens[owner] == 0) { whitelist[owner] = true; ownerAddresses[totalOwners] = owner; totalOwners += 1; } ownerShareTokens[owner] = value; ownerPercentages[owner] = percent(value, valuation, 5); } // Non-Standard token transfer, doesn't confine to any ERC function sendOwnership(address receiver, uint256 amount) public onlyWhitelisted() { // Require they have an actual balance require(ownerShareTokens[msg.sender] > 0); // Require the amount to be equal or less to their shares require(ownerShareTokens[msg.sender] >= amount); // Deduct the amount from the owner ownerShareTokens[msg.sender] = SafeMath.sub(ownerShareTokens[msg.sender], amount); // Remove the owner if the share is now 0 if (ownerShareTokens[msg.sender] == 0) { ownerPercentages[msg.sender] = 0; whitelist[receiver] = false; } else { // Recalculate percentage ownerPercentages[msg.sender] = percent(ownerShareTokens[msg.sender], valuation, 5); } // Add the new share holder if (ownerShareTokens[receiver] == 0) { whitelist[receiver] = true; ownerAddresses[totalOwners] = receiver; totalOwners += 1; } ownerShareTokens[receiver] = SafeMath.add(ownerShareTokens[receiver], amount); ownerPercentages[receiver] = SafeMath.add(ownerPercentages[receiver], percent(amount, valuation, 5)); emit OwnershipTransferred(msg.sender, receiver, amount); } // Lock the shares so contract owners cannot change them function lockShares() public onlyOwner() { require(!locked); locked = true; } // Distribute the tokens in the contract to the contributors/creators function distributeTokens(address token) public onlyWhitelisted() { // Is this method already being called? require(!distributionActive); distributionActive = true; // Get the token address ERC677 erc677 = ERC677(token); // Has the contract got a balance? uint256 currentBalance = erc677.balanceOf(this) - tokenBalance[token]; require(currentBalance > ethWei * distributionMinimum); // Add the current balance on to the total returned tokenBalance[token] = SafeMath.add(tokenBalance[token], currentBalance); // Loop through stakers and add the earned shares // This is GAS expensive, but unless complex more bug prone logic was added there is no alternative // This is due to the percentages needed to be calculated for all at once, or the amounts would differ for (uint64 i = 0; i < totalOwners; i++) { address owner = ownerAddresses[i]; // If the owner still has a share if (ownerShareTokens[owner] > 0) { // Calculate and transfer the ownership of shares with a precision of 5, for example: 12.345% balances[owner][token] = SafeMath.add(SafeMath.div(SafeMath.mul(currentBalance, ownerPercentages[owner]), 100000), balances[owner][token]); } } distributionActive = false; // Emit the event emit TokenDistribution(token, currentBalance); } // Withdraw tokens from the owners balance function withdrawTokens(address token, uint256 amount) public { // Can't withdraw nothing require(amount > 0); // Assert they're withdrawing what is in their balance require(balances[msg.sender][token] >= amount); // Substitute the amounts balances[msg.sender][token] = SafeMath.sub(balances[msg.sender][token], amount); tokenBalance[token] = SafeMath.sub(tokenBalance[token], amount); // Transfer the tokens ERC677 erc677 = ERC677(token); require(erc677.transfer(msg.sender, amount) == true); // Emit the event emit TokenWithdrawal(token, msg.sender, amount); } // Sets the minimum balance needed for token distribution function setDistributionMinimum(uint16 minimum) public onlyOwner() { distributionMinimum = minimum; } // Is an account whitelisted? function isWhitelisted(address contributor) public view returns (bool) { return whitelist[contributor]; } // Get the owners token balance function getOwnerBalance(address token) public view returns (uint256) { return balances[msg.sender][token]; } /** Private Methods */ // Credit to Rob Hitchens: https://stackoverflow.com/a/42739843 function percent(uint numerator, uint denominator, uint precision) private pure returns (uint quotient) { uint _numerator = numerator * 10 ** (precision+1); uint _quotient = ((_numerator / denominator) + 5) / 10; return ( _quotient); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"totalContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalOwners","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributor","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contributor","type":"address"}],"name":"whitelistWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getOwnerBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"minimum","type":"uint16"}],"name":"setDistributionMinimum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"distributeTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lockShares","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"distributionMinimum","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"value","type":"uint256"}],"name":"setOwnerShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"amount","type":"uint256"}],"name":"sendOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerShareTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerPercentages","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"share","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Contribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenDistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526000600760006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506014600760086101000a81548161ffff021916908361ffff16021790555060006007600a6101000a81548160ff02191690831515021790555060006007600b6101000a81548160ff021916908315150217905550670de0b6b3a7640000600855610fa0600854026009556103e860085402600a556000600b60146101000a81548160ff0219169083151502179055506000600c556702c68af0bb140000600d553480156100da57600080fd5b5060405160208061230583398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506121778061018e6000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023f41471461010757806306b091f914610132578063243669ad1461017f5780633af32abf146101be578063787c23e0146102195780637fcf440a1461025c578063897463aa146102b35780638da5cb5b146102ca578063a0d63f7e14610321578063b1d17c9814610352578063b75c206814610395578063d439ef55146103ac578063dcac652e146103df578063e2d0d5191461042c578063e64522b514610479578063ecb9330c146104d0578063eedc966a14610527578063f2fde38b1461057e575b610105336105c1565b005b34801561011357600080fd5b5061011c610a3f565b6040518082815260200191505060405180910390f35b34801561013e57600080fd5b5061017d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a45565b005b34801561018b57600080fd5b50610194610dcf565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3480156101ca57600080fd5b506101ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de9565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b5061025a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3f565b005b34801561026857600080fd5b5061029d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f31565b6040518082815260200191505060405180910390f35b3480156102bf57600080fd5b506102c8610fb7565b005b3480156102d657600080fd5b506102df61104b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032d57600080fd5b50610350600480360381019080803561ffff169060200190929190505050611070565b005b34801561035e57600080fd5b50610393600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110eb565b005b3480156103a157600080fd5b506103aa6115ef565b005b3480156103b857600080fd5b506103c1611683565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156103eb57600080fd5b5061042a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611697565b005b34801561043857600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611907565b005b34801561048557600080fd5b506104ba600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef0565b6040518082815260200191505060405180910390f35b3480156104dc57600080fd5b50610511600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f08565b6040518082815260200191505060405180910390f35b34801561053357600080fd5b50610568600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f20565b6040518082815260200191505060405180910390f35b34801561058a57600080fd5b506105bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f38565b005b6000600b60149054906101000a900460ff161515156105df57600080fd5b6007600a9054906101000a900460ff1615156105fa57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561065257600080fd5b600d54341015151561066357600080fd5b34600a541015151561067457600080fd5b6000600d543481151561068357fe5b0614151561069057600080fd5b61069c600c543461208d565b600a54101515156106ac57600080fd5b6106b8600c543461208d565b600c819055506106cc3460095460056120ab565b90506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561083457610760600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543461208d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ec81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061097c565b8160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555034600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156109e4573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a450408234604051808381526020018281526020019250505060405180910390a25050565b600c5481565b60008082111515610a5557600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610ae057600080fd5b610b66600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120e4565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c2f600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120e4565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550829050600115158173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d1c57600080fd5b505af1158015610d30573d6000803e3d6000fd5b505050506040513d6020811015610d4657600080fd5b81019080805190602001909291905050501515141515610d6557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f42856d0378dde02337bb59ae41747abc77ded8ebdbbc5cbdd1e53693b7554938846040518082815260200191505060405180910390a3505050565b600760009054906101000a900467ffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561101257600080fd5b6007600a9054906101000a900460ff1615151561102e57600080fd5b60016007600a6101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110cb57600080fd5b80600760086101000a81548161ffff021916908361ffff16021790555050565b600080600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561114957600080fd5b6007600b9054906101000a900460ff1615151561116557600080fd5b60016007600b6101000a81548160ff021916908315150217905550849350600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b8101908080519060200190929190505050039250600760089054906101000a900461ffff1661ffff1660085402831115156112c257600080fd5b61130b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461208d565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600091505b600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16101561157f57600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611572576114f161146f61146685600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120fd565b620186a0612130565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208d565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8180600101925050611353565b60006007600b6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f55415116040ebe4bc0f2a8c28b2e7e3e8c494a5f4316854c949b548434d35f65846040518082815260200191505060405180910390a25050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164a57600080fd5b600b60149054906101000a900460ff1615151561166657600080fd5b6001600b60146101000a81548160ff021916908315150217905550565b600760089054906101000a900461ffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116f257600080fd5b600b60149054906101000a900460ff1615151561170e57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561186e576001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c08160095460056120ab565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561195f57600080fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156119ad57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156119fb57600080fd5b611a44600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826120e4565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b71576000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c02565b611bbe600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460095460056120ab565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611d62576001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b611dab600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261208d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e44600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3f8360095460056120ab565b61208d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b836040518082815260200191505060405180910390a35050565b60046020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b60056020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f9357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611fcf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156120a157fe5b8091505092915050565b600080600060018401600a0a86029150600a600586848115156120ca57fe5b04018115156120d557fe5b04905080925050509392505050565b60008282111515156120f257fe5b818303905092915050565b6000808284029050600084148061211e575082848281151561211b57fe5b04145b151561212657fe5b8091505092915050565b600080828481151561213e57fe5b04905080915050929150505600a165627a7a7230582058d2709240b4119fe8903215b058807125a4ab21d92ae047024ff6afe6eae84e0029
Deployed Bytecode
0x6080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023f41471461010757806306b091f914610132578063243669ad1461017f5780633af32abf146101be578063787c23e0146102195780637fcf440a1461025c578063897463aa146102b35780638da5cb5b146102ca578063a0d63f7e14610321578063b1d17c9814610352578063b75c206814610395578063d439ef55146103ac578063dcac652e146103df578063e2d0d5191461042c578063e64522b514610479578063ecb9330c146104d0578063eedc966a14610527578063f2fde38b1461057e575b610105336105c1565b005b34801561011357600080fd5b5061011c610a3f565b6040518082815260200191505060405180910390f35b34801561013e57600080fd5b5061017d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a45565b005b34801561018b57600080fd5b50610194610dcf565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3480156101ca57600080fd5b506101ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610de9565b604051808215151515815260200191505060405180910390f35b34801561022557600080fd5b5061025a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3f565b005b34801561026857600080fd5b5061029d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f31565b6040518082815260200191505060405180910390f35b3480156102bf57600080fd5b506102c8610fb7565b005b3480156102d657600080fd5b506102df61104b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032d57600080fd5b50610350600480360381019080803561ffff169060200190929190505050611070565b005b34801561035e57600080fd5b50610393600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110eb565b005b3480156103a157600080fd5b506103aa6115ef565b005b3480156103b857600080fd5b506103c1611683565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156103eb57600080fd5b5061042a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611697565b005b34801561043857600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611907565b005b34801561048557600080fd5b506104ba600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef0565b6040518082815260200191505060405180910390f35b3480156104dc57600080fd5b50610511600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f08565b6040518082815260200191505060405180910390f35b34801561053357600080fd5b50610568600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f20565b6040518082815260200191505060405180910390f35b34801561058a57600080fd5b506105bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f38565b005b6000600b60149054906101000a900460ff161515156105df57600080fd5b6007600a9054906101000a900460ff1615156105fa57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561065257600080fd5b600d54341015151561066357600080fd5b34600a541015151561067457600080fd5b6000600d543481151561068357fe5b0614151561069057600080fd5b61069c600c543461208d565b600a54101515156106ac57600080fd5b6106b8600c543461208d565b600c819055506106cc3460095460056120ab565b90506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561083457610760600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020543461208d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ec81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061097c565b8160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555034600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156109e4573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a450408234604051808381526020018281526020019250505060405180910390a25050565b600c5481565b60008082111515610a5557600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610ae057600080fd5b610b66600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120e4565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c2f600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120e4565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550829050600115158173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d1c57600080fd5b505af1158015610d30573d6000803e3d6000fd5b505050506040513d6020811015610d4657600080fd5b81019080805190602001909291905050501515141515610d6557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f42856d0378dde02337bb59ae41747abc77ded8ebdbbc5cbdd1e53693b7554938846040518082815260200191505060405180910390a3505050565b600760009054906101000a900467ffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e9a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561101257600080fd5b6007600a9054906101000a900460ff1615151561102e57600080fd5b60016007600a6101000a81548160ff021916908315150217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110cb57600080fd5b80600760086101000a81548161ffff021916908361ffff16021790555050565b600080600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561114957600080fd5b6007600b9054906101000a900460ff1615151561116557600080fd5b60016007600b6101000a81548160ff021916908315150217905550849350600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b8101908080519060200190929190505050039250600760089054906101000a900461ffff1661ffff1660085402831115156112c257600080fd5b61130b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461208d565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600091505b600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff168267ffffffffffffffff16101561157f57600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611572576114f161146f61146685600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120fd565b620186a0612130565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208d565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8180600101925050611353565b60006007600b6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f55415116040ebe4bc0f2a8c28b2e7e3e8c494a5f4316854c949b548434d35f65846040518082815260200191505060405180910390a25050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164a57600080fd5b600b60149054906101000a900460ff1615151561166657600080fd5b6001600b60146101000a81548160ff021916908315150217905550565b600760089054906101000a900461ffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116f257600080fd5b600b60149054906101000a900460ff1615151561170e57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561186e576001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c08160095460056120ab565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561195f57600080fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156119ad57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156119fb57600080fd5b611a44600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826120e4565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611b71576000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c02565b611bbe600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460095460056120ab565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611d62576001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508160016000600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b611dab600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261208d565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e44600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3f8360095460056120ab565b61208d565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b836040518082815260200191505060405180910390a35050565b60046020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b60056020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f9357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611fcf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156120a157fe5b8091505092915050565b600080600060018401600a0a86029150600a600586848115156120ca57fe5b04018115156120d557fe5b04905080925050509392505050565b60008282111515156120f257fe5b818303905092915050565b6000808284029050600084148061211e575082848281151561211b57fe5b04145b151561212657fe5b8091505092915050565b600080828481151561213e57fe5b04905080915050929150505600a165627a7a7230582058d2709240b4119fe8903215b058807125a4ab21d92ae047024ff6afe6eae84e0029
Swarm Source
bzzr://58d2709240b4119fe8903215b058807125a4ab21d92ae047024ff6afe6eae84e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.