Token migration announcement. ShareRing token contract has migrated to a new address.
ERC-20
Overview
Max Total Supply
2,038,460,139.8 SHR
Holders
3,045
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ShareToken
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-03 */ pragma solidity ^0.4.21; contract ERC20Interface { event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function totalSupply() public view returns (uint256); function balanceOf(address _owner) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); function allowance(address _owner, address _spender) public view returns (uint256); } contract ERC20Token is ERC20Interface { using SafeMath for uint256; // Total amount of tokens issued uint256 internal totalTokenIssued; mapping(address => uint256) balances; mapping(address => mapping (address => uint256)) internal allowed; function totalSupply() public view returns (uint256) { return totalTokenIssued; } /* Get the account balance for an address */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } /* Check whether an address is a contract address */ function isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return (size > 0); } /* Transfer the balance from owner's account to another account */ function transfer(address _to, uint256 _amount) public returns (bool) { require(_to != address(0x0)); // Do not allow to transfer token to contract address to avoid tokens getting stuck require(isContract(_to) == false); // amount sent cannot exceed balance require(balances[msg.sender] >= _amount); // update balances balances[msg.sender] = balances[msg.sender].sub(_amount); balances[_to] = balances[_to].add(_amount); // log event emit Transfer(msg.sender, _to, _amount); return true; } /* Allow _spender to withdraw from your account up to _amount */ function approve(address _spender, uint256 _amount) public returns (bool) { require(_spender != address(0x0)); // update allowed amount allowed[msg.sender][_spender] = _amount; // log event emit Approval(msg.sender, _spender, _amount); return true; } /* Spender of tokens transfers tokens from the owner's balance */ /* Must be pre-approved by owner */ function transferFrom(address _from, address _to, uint256 _amount) public returns (bool) { require(_to != address(0x0)); // Do not allow to transfer token to contract address to avoid tokens getting stuck require(isContract(_to) == false); // balance checks require(balances[_from] >= _amount); require(allowed[_from][msg.sender] >= _amount); // update balances and allowed amount balances[_from] = balances[_from].sub(_amount); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount); balances[_to] = balances[_to].add(_amount); // log event emit Transfer(_from, _to, _amount); return true; } /* Returns the amount of tokens approved by the owner */ /* that can be transferred by spender */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } } contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() 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; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } } 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 return (a / b); } 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 WhiteListManager is Ownable { // The list here will be updated by multiple separate WhiteList contracts mapping (address => bool) public list; function unset(address addr) public onlyOwner { list[addr] = false; } function unsetMany(address[] addrList) public onlyOwner { for (uint256 i = 0; i < addrList.length; i++) { unset(addrList[i]); } } function set(address addr) public onlyOwner { list[addr] = true; } function setMany(address[] addrList) public onlyOwner { for (uint256 i = 0; i < addrList.length; i++) { set(addrList[i]); } } function isWhitelisted(address addr) public view returns (bool) { return list[addr]; } } contract ShareToken is ERC20Token, WhiteListManager { using SafeMath for uint256; string public constant name = "ShareToken"; string public constant symbol = "SHR"; uint8 public constant decimals = 2; address public icoContract; // Any token amount must be multiplied by this const to reflect decimals uint256 constant E2 = 10**2; mapping(address => bool) public rewardTokenLocked; bool public mainSaleTokenLocked = true; uint256 public constant TOKEN_SUPPLY_MAINSALE_LIMIT = 1000000000 * E2; // 1,000,000,000 tokens (1 billion) uint256 public constant TOKEN_SUPPLY_AIRDROP_LIMIT = 6666666667; // 66,666,666.67 tokens (0.066 billion) uint256 public constant TOKEN_SUPPLY_BOUNTY_LIMIT = 33333333333; // 333,333,333.33 tokens (0.333 billion) uint256 public airDropTokenIssuedTotal; uint256 public bountyTokenIssuedTotal; uint256 public constant TOKEN_SUPPLY_SEED_LIMIT = 500000000 * E2; // 500,000,000 tokens (0.5 billion) uint256 public constant TOKEN_SUPPLY_PRESALE_LIMIT = 2500000000 * E2; // 2,500,000,000.00 tokens (2.5 billion) uint256 public constant TOKEN_SUPPLY_SEED_PRESALE_LIMIT = TOKEN_SUPPLY_SEED_LIMIT + TOKEN_SUPPLY_PRESALE_LIMIT; uint256 public seedAndPresaleTokenIssuedTotal; uint8 private constant PRESALE_EVENT = 0; uint8 private constant MAINSALE_EVENT = 1; uint8 private constant BOUNTY_EVENT = 2; uint8 private constant AIRDROP_EVENT = 3; function ShareToken() public { totalTokenIssued = 0; airDropTokenIssuedTotal = 0; bountyTokenIssuedTotal = 0; seedAndPresaleTokenIssuedTotal = 0; mainSaleTokenLocked = true; } function unlockMainSaleToken() public onlyOwner { mainSaleTokenLocked = false; } function lockMainSaleToken() public onlyOwner { mainSaleTokenLocked = true; } function unlockRewardToken(address addr) public onlyOwner { rewardTokenLocked[addr] = false; } function unlockRewardTokenMany(address[] addrList) public onlyOwner { for (uint256 i = 0; i < addrList.length; i++) { unlockRewardToken(addrList[i]); } } function lockRewardToken(address addr) public onlyOwner { rewardTokenLocked[addr] = true; } function lockRewardTokenMany(address[] addrList) public onlyOwner { for (uint256 i = 0; i < addrList.length; i++) { lockRewardToken(addrList[i]); } } // Check if a given address is locked. The address can be in the whitelist or in the reward function isLocked(address addr) public view returns (bool) { // Main sale is running, any addr is locked if (mainSaleTokenLocked) { return true; } else { // Main sale is ended and thus any whitelist addr is unlocked if (isWhitelisted(addr)) { return false; } else { // If the addr is in the reward, it must be checked if locked // If the addr is not in the reward, it is considered unlocked return rewardTokenLocked[addr]; } } } function totalSupply() public view returns (uint256) { return totalTokenIssued.add(seedAndPresaleTokenIssuedTotal).add(airDropTokenIssuedTotal).add(bountyTokenIssuedTotal); } function totalMainSaleTokenIssued() public view returns (uint256) { return totalTokenIssued; } function totalMainSaleTokenLimit() public view returns (uint256) { return TOKEN_SUPPLY_MAINSALE_LIMIT; } function totalPreSaleTokenIssued() public view returns (uint256) { return seedAndPresaleTokenIssuedTotal; } function transfer(address _to, uint256 _amount) public returns (bool success) { require(isLocked(msg.sender) == false); require(isLocked(_to) == false); return super.transfer(_to, _amount); } function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) { require(isLocked(_from) == false); require(isLocked(_to) == false); return super.transferFrom(_from, _to, _amount); } function setIcoContract(address _icoContract) public onlyOwner { // Allow to set the ICO contract only once require(icoContract == address(0)); require(_icoContract != address(0)); icoContract = _icoContract; } function sell(address buyer, uint256 tokens) public returns (bool success) { require (icoContract != address(0)); // The sell() method can only be called by the fixedly-set ICO contract require (msg.sender == icoContract); require (tokens > 0); require (buyer != address(0)); // Only whitelisted address can buy tokens. Otherwise, refund require (isWhitelisted(buyer)); require (totalTokenIssued.add(tokens) <= TOKEN_SUPPLY_MAINSALE_LIMIT); // Register tokens issued to the buyer balances[buyer] = balances[buyer].add(tokens); // Update total amount of tokens issued totalTokenIssued = totalTokenIssued.add(tokens); emit Transfer(address(MAINSALE_EVENT), buyer, tokens); return true; } function rewardAirdrop(address _to, uint256 _amount) public onlyOwner { // this check also ascertains _amount is positive require(_amount <= TOKEN_SUPPLY_AIRDROP_LIMIT); require(airDropTokenIssuedTotal < TOKEN_SUPPLY_AIRDROP_LIMIT); uint256 remainingTokens = TOKEN_SUPPLY_AIRDROP_LIMIT.sub(airDropTokenIssuedTotal); if (_amount > remainingTokens) { _amount = remainingTokens; } // Register tokens to the receiver balances[_to] = balances[_to].add(_amount); // Update total amount of tokens issued airDropTokenIssuedTotal = airDropTokenIssuedTotal.add(_amount); // Lock the receiver rewardTokenLocked[_to] = true; emit Transfer(address(AIRDROP_EVENT), _to, _amount); } function rewardBounty(address _to, uint256 _amount) public onlyOwner { // this check also ascertains _amount is positive require(_amount <= TOKEN_SUPPLY_BOUNTY_LIMIT); require(bountyTokenIssuedTotal < TOKEN_SUPPLY_BOUNTY_LIMIT); uint256 remainingTokens = TOKEN_SUPPLY_BOUNTY_LIMIT.sub(bountyTokenIssuedTotal); if (_amount > remainingTokens) { _amount = remainingTokens; } // Register tokens to the receiver balances[_to] = balances[_to].add(_amount); // Update total amount of tokens issued bountyTokenIssuedTotal = bountyTokenIssuedTotal.add(_amount); // Lock the receiver rewardTokenLocked[_to] = true; emit Transfer(address(BOUNTY_EVENT), _to, _amount); } function rewardBountyMany(address[] addrList, uint256[] amountList) public onlyOwner { require(addrList.length == amountList.length); for (uint256 i = 0; i < addrList.length; i++) { rewardBounty(addrList[i], amountList[i]); } } function rewardAirdropMany(address[] addrList, uint256[] amountList) public onlyOwner { require(addrList.length == amountList.length); for (uint256 i = 0; i < addrList.length; i++) { rewardAirdrop(addrList[i], amountList[i]); } } function handlePresaleToken(address _to, uint256 _amount) public onlyOwner { require(_amount <= TOKEN_SUPPLY_SEED_PRESALE_LIMIT); require(seedAndPresaleTokenIssuedTotal < TOKEN_SUPPLY_SEED_PRESALE_LIMIT); uint256 remainingTokens = TOKEN_SUPPLY_SEED_PRESALE_LIMIT.sub(seedAndPresaleTokenIssuedTotal); require (_amount <= remainingTokens); // Register tokens to the receiver balances[_to] = balances[_to].add(_amount); // Update total amount of tokens issued seedAndPresaleTokenIssuedTotal = seedAndPresaleTokenIssuedTotal.add(_amount); emit Transfer(address(PRESALE_EVENT), _to, _amount); // Also add to whitelist set(_to); } function handlePresaleTokenMany(address[] addrList, uint256[] amountList) public onlyOwner { require(addrList.length == amountList.length); for (uint256 i = 0; i < addrList.length; i++) { handlePresaleToken(addrList[i], amountList[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalMainSaleTokenLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rewardTokenLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokenIssuedTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"},{"name":"amountList","type":"uint256[]"}],"name":"rewardAirdropMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"}],"name":"unsetMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"unset","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_SEED_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"rewardAirdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_BOUNTY_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"lockRewardToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"airDropTokenIssuedTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seedAndPresaleTokenIssuedTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_AIRDROP_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlockMainSaleToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"buyer","type":"address"},{"name":"tokens","type":"uint256"}],"name":"sell","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"},{"name":"amountList","type":"uint256[]"}],"name":"rewardBountyMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_PRESALE_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"rewardBounty","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lockMainSaleToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"unlockRewardToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalPreSaleTokenIssued","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"list","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_SEED_PRESALE_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"handlePresaleToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"}],"name":"unlockRewardTokenMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_SUPPLY_MAINSALE_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"}],"name":"setMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_icoContract","type":"address"}],"name":"setIcoContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"}],"name":"lockRewardTokenMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrList","type":"address[]"},{"name":"amountList","type":"uint256[]"}],"name":"handlePresaleTokenMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mainSaleTokenLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalMainSaleTokenIssued","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":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60606040526001600760006101000a81548160ff021916908315150217905550341561002a57600080fd5b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008081905550600060088190555060006009819055506000600a819055506001600760006101000a81548160ff021916908315150217905550613045806100b46000396000f300606060405260043610610246576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461024b57806307bee472146102d95780630830e83314610302578063088ee7ec14610353578063095ea7b31461037c578063129f80fb146103d657806314b777981461047057806318160ddd146104ca57806323b872dd146104f35780632801617e1461056c5780632966d1b9146105a557806329d24cbe146105de578063313ce567146106075780633af32abf146106365780633c7b3d90146106875780634a4fbeec146106c95780634b1146ca1461071a578063526664031461074357806357f94c821461077c5780636269420e146107a5578063655b3667146107ce5780636bc6147e146107f75780636c197ff51461080c57806370a0823114610866578063715018a6146108b3578063743521c6146108c85780638da5cb5b1461096257806395d89b41146109b75780639baeac7814610a45578063a0437f6314610a6e578063a78085ef14610ab0578063a9059cbb14610ac5578063aabe7dc414610b1f578063b1e834b014610b58578063bb032a6614610b81578063bf71670814610bd2578063c66e409514610bfb578063c8a90f7614610c50578063d1206a2914610c92578063d3484c1c14610cec578063d86123e114610d15578063dd62ed3e14610d6f578063e09678fd14610ddb578063e1a2c44614610e14578063e701a6d314610e6e578063e78dd6f114610f08578063eb8eea1514610f35578063f2fde38b14610f5e575b600080fd5b341561025657600080fd5b61025e610f97565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029e578082015181840152602081019050610283565b50505050905090810190601f1680156102cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102e457600080fd5b6102ec610fd0565b6040518082815260200191505060405180910390f35b341561030d57600080fd5b610339600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610fdf565b604051808215151515815260200191505060405180910390f35b341561035e57600080fd5b610366610fff565b6040518082815260200191505060405180910390f35b341561038757600080fd5b6103bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611005565b604051808215151515815260200191505060405180910390f35b34156103e157600080fd5b61046e60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611132565b005b341561047b57600080fd5b6104c86004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506111f8565b005b34156104d557600080fd5b6104dd611295565b6040518082815260200191505060405180910390f35b34156104fe57600080fd5b610552600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506112db565b604051808215151515815260200191505060405180910390f35b341561057757600080fd5b6105a3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611326565b005b34156105b057600080fd5b6105dc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113dd565b005b34156105e957600080fd5b6105f1611494565b6040518082815260200191505060405180910390f35b341561061257600080fd5b61061a61149f565b604051808260ff1660ff16815260200191505060405180910390f35b341561064157600080fd5b61066d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114a4565b604051808215151515815260200191505060405180910390f35b341561069257600080fd5b6106c7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506114fa565b005b34156106d457600080fd5b610700600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061171f565b604051808215151515815260200191505060405180910390f35b341561072557600080fd5b61072d6117ab565b6040518082815260200191505060405180910390f35b341561074e57600080fd5b61077a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117b4565b005b341561078757600080fd5b61078f61186b565b6040518082815260200191505060405180910390f35b34156107b057600080fd5b6107b8611871565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107e1611877565b6040518082815260200191505060405180910390f35b341561080257600080fd5b61080a611880565b005b341561081757600080fd5b61084c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118f9565b604051808215151515815260200191505060405180910390f35b341561087157600080fd5b61089d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b60565b6040518082815260200191505060405180910390f35b34156108be57600080fd5b6108c6611ba9565b005b34156108d357600080fd5b61096060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611cae565b005b341561096d57600080fd5b610975611d74565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109c257600080fd5b6109ca611d9a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a0a5780820151818401526020810190506109ef565b50505050905090810190601f168015610a375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a5057600080fd5b610a58611dd3565b6040518082815260200191505060405180910390f35b3415610a7957600080fd5b610aae600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611dde565b005b3415610abb57600080fd5b610ac3612003565b005b3415610ad057600080fd5b610b05600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061207c565b604051808215151515815260200191505060405180910390f35b3415610b2a57600080fd5b610b56600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c5565b005b3415610b6357600080fd5b610b6b61217c565b6040518082815260200191505060405180910390f35b3415610b8c57600080fd5b610bb8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612186565b604051808215151515815260200191505060405180910390f35b3415610bdd57600080fd5b610be56121a6565b6040518082815260200191505060405180910390f35b3415610c0657600080fd5b610c0e6121ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c5b57600080fd5b610c90600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506121e0565b005b3415610c9d57600080fd5b610cea6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506123da565b005b3415610cf757600080fd5b610cff612477565b6040518082815260200191505060405180910390f35b3415610d2057600080fd5b610d6d600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612482565b005b3415610d7a57600080fd5b610dc5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061251f565b6040518082815260200191505060405180910390f35b3415610de657600080fd5b610e12600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a6565b005b3415610e1f57600080fd5b610e6c6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506126df565b005b3415610e7957600080fd5b610f066004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061277c565b005b3415610f1357600080fd5b610f1b612842565b604051808215151515815260200191505060405180910390f35b3415610f4057600080fd5b610f48612855565b6040518082815260200191505060405180910390f35b3415610f6957600080fd5b610f95600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061285e565b005b6040805190810160405280600a81526020017f5368617265546f6b656e0000000000000000000000000000000000000000000081525081565b60006064633b9aca0002905090565b60066020528060005260406000206000915054906101000a900460ff1681565b60095481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561104257600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561119057600080fd5b815183511415156111a057600080fd5b600090505b82518110156111f3576111e683828151811015156111bf57fe5b9060200190602002015183838151811015156111d757fe5b906020019060200201516114fa565b80806001019150506111a5565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125657600080fd5b600090505b815181101561129157611284828281518110151561127557fe5b906020019060200201516113dd565b808060010191505061125b565b5050565b60006112d66009546112c86008546112ba600a546000546129b690919063ffffffff16565b6129b690919063ffffffff16565b6129b690919063ffffffff16565b905090565b60008015156112e98561171f565b15151415156112f757600080fd5b600015156113048461171f565b151514151561131257600080fd5b61131d8484846129d4565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138257600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143957600080fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6064631dcd65000281565b600281565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561155857600080fd5b64018d5d42ab821115151561156c57600080fd5b64018d5d42ab60085410151561158157600080fd5b61159b60085464018d5d42ab612dae90919063ffffffff16565b9050808211156115a9578091505b6115fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611653826008546129b690919063ffffffff16565b6008819055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600360ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000600760009054906101000a900460ff161561173f57600190506117a6565b611748826114a4565b1561175657600090506117a6565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b6407c2d24d5581565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181057600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60085481565b600a5481565b64018d5d42ab81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118dc57600080fd5b6000600760006101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195857600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119b457600080fd5b6000821115156119c357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156119ff57600080fd5b611a08836114a4565b1515611a1357600080fd5b6064633b9aca0002611a30836000546129b690919063ffffffff16565b11151515611a3d57600080fd5b611a8f82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ae7826000546129b690919063ffffffff16565b6000819055508273ffffffffffffffffffffffffffffffffffffffff16600160ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c0557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0c57600080fd5b81518351141515611d1c57600080fd5b600090505b8251811015611d6f57611d628382815181101515611d3b57fe5b906020019060200201518383815181101515611d5357fe5b90602001906020020151611dde565b8080600101915050611d21565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f534852000000000000000000000000000000000000000000000000000000000081525081565b6064639502f9000281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e3c57600080fd5b6407c2d24d558211151515611e5057600080fd5b6407c2d24d55600954101515611e6557600080fd5b611e7f6009546407c2d24d55612dae90919063ffffffff16565b905080821115611e8d578091505b611edf82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f37826009546129b690919063ffffffff16565b6009819055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600260ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561205f57600080fd5b6001600760006101000a81548160ff021916908315150217905550565b600080151561208a3361171f565b151514151561209857600080fd5b600015156120a58461171f565b15151415156120b357600080fd5b6120bd8383612dc7565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212157600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6064639502f900026064631dcd6500020181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223e57600080fd5b6064639502f900026064631dcd65000201821115151561225d57600080fd5b6064639502f900026064631dcd65000201600a5410151561227d57600080fd5b6122a2600a546064639502f900026064631dcd65000201612dae90919063ffffffff16565b90508082111515156122b357600080fd5b61230582600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235d82600a546129b690919063ffffffff16565b600a819055508273ffffffffffffffffffffffffffffffffffffffff16600060ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36123d583611326565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561243857600080fd5b600090505b815181101561247357612466828281518110151561245757fe5b906020019060200201516120c5565b808060010191505061243d565b5050565b6064633b9aca000281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e057600080fd5b600090505b815181101561251b5761250e82828151811015156124ff57fe5b90602001906020020151611326565b80806001019150506124e5565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561265f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561269b57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561273d57600080fd5b600090505b81518110156127785761276b828281518110151561275c57fe5b906020019060200201516117b4565b8080600101915050612742565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127da57600080fd5b815183511415156127ea57600080fd5b600090505b825181101561283d57612830838281518110151561280957fe5b90602001906020020151838381518110151561282157fe5b906020019060200201516121e0565b80806001019150506127ef565b505050565b600760009054906101000a900460ff1681565b60008054905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128ba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156128f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156129ca57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a1157600080fd5b60001515612a1e84613006565b1515141515612a2c57600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612a7a57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612b0557600080fd5b612b5782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c2982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cfb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828211151515612dbc57fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612e0457600080fd5b60001515612e1184613006565b1515141515612e1f57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612e6d57600080fd5b612ebf82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080823b9050600081119150509190505600a165627a7a72305820c7da67b6fb6f79228fcc91dbee8b7165c3091128285cb372a980c5b0d26ef8990029
Deployed Bytecode
0x606060405260043610610246576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461024b57806307bee472146102d95780630830e83314610302578063088ee7ec14610353578063095ea7b31461037c578063129f80fb146103d657806314b777981461047057806318160ddd146104ca57806323b872dd146104f35780632801617e1461056c5780632966d1b9146105a557806329d24cbe146105de578063313ce567146106075780633af32abf146106365780633c7b3d90146106875780634a4fbeec146106c95780634b1146ca1461071a578063526664031461074357806357f94c821461077c5780636269420e146107a5578063655b3667146107ce5780636bc6147e146107f75780636c197ff51461080c57806370a0823114610866578063715018a6146108b3578063743521c6146108c85780638da5cb5b1461096257806395d89b41146109b75780639baeac7814610a45578063a0437f6314610a6e578063a78085ef14610ab0578063a9059cbb14610ac5578063aabe7dc414610b1f578063b1e834b014610b58578063bb032a6614610b81578063bf71670814610bd2578063c66e409514610bfb578063c8a90f7614610c50578063d1206a2914610c92578063d3484c1c14610cec578063d86123e114610d15578063dd62ed3e14610d6f578063e09678fd14610ddb578063e1a2c44614610e14578063e701a6d314610e6e578063e78dd6f114610f08578063eb8eea1514610f35578063f2fde38b14610f5e575b600080fd5b341561025657600080fd5b61025e610f97565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029e578082015181840152602081019050610283565b50505050905090810190601f1680156102cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102e457600080fd5b6102ec610fd0565b6040518082815260200191505060405180910390f35b341561030d57600080fd5b610339600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610fdf565b604051808215151515815260200191505060405180910390f35b341561035e57600080fd5b610366610fff565b6040518082815260200191505060405180910390f35b341561038757600080fd5b6103bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611005565b604051808215151515815260200191505060405180910390f35b34156103e157600080fd5b61046e60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611132565b005b341561047b57600080fd5b6104c86004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506111f8565b005b34156104d557600080fd5b6104dd611295565b6040518082815260200191505060405180910390f35b34156104fe57600080fd5b610552600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506112db565b604051808215151515815260200191505060405180910390f35b341561057757600080fd5b6105a3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611326565b005b34156105b057600080fd5b6105dc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113dd565b005b34156105e957600080fd5b6105f1611494565b6040518082815260200191505060405180910390f35b341561061257600080fd5b61061a61149f565b604051808260ff1660ff16815260200191505060405180910390f35b341561064157600080fd5b61066d600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506114a4565b604051808215151515815260200191505060405180910390f35b341561069257600080fd5b6106c7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506114fa565b005b34156106d457600080fd5b610700600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061171f565b604051808215151515815260200191505060405180910390f35b341561072557600080fd5b61072d6117ab565b6040518082815260200191505060405180910390f35b341561074e57600080fd5b61077a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117b4565b005b341561078757600080fd5b61078f61186b565b6040518082815260200191505060405180910390f35b34156107b057600080fd5b6107b8611871565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107e1611877565b6040518082815260200191505060405180910390f35b341561080257600080fd5b61080a611880565b005b341561081757600080fd5b61084c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118f9565b604051808215151515815260200191505060405180910390f35b341561087157600080fd5b61089d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b60565b6040518082815260200191505060405180910390f35b34156108be57600080fd5b6108c6611ba9565b005b34156108d357600080fd5b61096060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611cae565b005b341561096d57600080fd5b610975611d74565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109c257600080fd5b6109ca611d9a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a0a5780820151818401526020810190506109ef565b50505050905090810190601f168015610a375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a5057600080fd5b610a58611dd3565b6040518082815260200191505060405180910390f35b3415610a7957600080fd5b610aae600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611dde565b005b3415610abb57600080fd5b610ac3612003565b005b3415610ad057600080fd5b610b05600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061207c565b604051808215151515815260200191505060405180910390f35b3415610b2a57600080fd5b610b56600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c5565b005b3415610b6357600080fd5b610b6b61217c565b6040518082815260200191505060405180910390f35b3415610b8c57600080fd5b610bb8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612186565b604051808215151515815260200191505060405180910390f35b3415610bdd57600080fd5b610be56121a6565b6040518082815260200191505060405180910390f35b3415610c0657600080fd5b610c0e6121ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c5b57600080fd5b610c90600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506121e0565b005b3415610c9d57600080fd5b610cea6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506123da565b005b3415610cf757600080fd5b610cff612477565b6040518082815260200191505060405180910390f35b3415610d2057600080fd5b610d6d600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050612482565b005b3415610d7a57600080fd5b610dc5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061251f565b6040518082815260200191505060405180910390f35b3415610de657600080fd5b610e12600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506125a6565b005b3415610e1f57600080fd5b610e6c6004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506126df565b005b3415610e7957600080fd5b610f066004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061277c565b005b3415610f1357600080fd5b610f1b612842565b604051808215151515815260200191505060405180910390f35b3415610f4057600080fd5b610f48612855565b6040518082815260200191505060405180910390f35b3415610f6957600080fd5b610f95600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061285e565b005b6040805190810160405280600a81526020017f5368617265546f6b656e0000000000000000000000000000000000000000000081525081565b60006064633b9aca0002905090565b60066020528060005260406000206000915054906101000a900460ff1681565b60095481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561104257600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561119057600080fd5b815183511415156111a057600080fd5b600090505b82518110156111f3576111e683828151811015156111bf57fe5b9060200190602002015183838151811015156111d757fe5b906020019060200201516114fa565b80806001019150506111a5565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561125657600080fd5b600090505b815181101561129157611284828281518110151561127557fe5b906020019060200201516113dd565b808060010191505061125b565b5050565b60006112d66009546112c86008546112ba600a546000546129b690919063ffffffff16565b6129b690919063ffffffff16565b6129b690919063ffffffff16565b905090565b60008015156112e98561171f565b15151415156112f757600080fd5b600015156113048461171f565b151514151561131257600080fd5b61131d8484846129d4565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138257600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143957600080fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6064631dcd65000281565b600281565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561155857600080fd5b64018d5d42ab821115151561156c57600080fd5b64018d5d42ab60085410151561158157600080fd5b61159b60085464018d5d42ab612dae90919063ffffffff16565b9050808211156115a9578091505b6115fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611653826008546129b690919063ffffffff16565b6008819055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600360ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000600760009054906101000a900460ff161561173f57600190506117a6565b611748826114a4565b1561175657600090506117a6565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b6407c2d24d5581565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181057600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60085481565b600a5481565b64018d5d42ab81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118dc57600080fd5b6000600760006101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195857600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119b457600080fd5b6000821115156119c357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156119ff57600080fd5b611a08836114a4565b1515611a1357600080fd5b6064633b9aca0002611a30836000546129b690919063ffffffff16565b11151515611a3d57600080fd5b611a8f82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ae7826000546129b690919063ffffffff16565b6000819055508273ffffffffffffffffffffffffffffffffffffffff16600160ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c0557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0c57600080fd5b81518351141515611d1c57600080fd5b600090505b8251811015611d6f57611d628382815181101515611d3b57fe5b906020019060200201518383815181101515611d5357fe5b90602001906020020151611dde565b8080600101915050611d21565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f534852000000000000000000000000000000000000000000000000000000000081525081565b6064639502f9000281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e3c57600080fd5b6407c2d24d558211151515611e5057600080fd5b6407c2d24d55600954101515611e6557600080fd5b611e7f6009546407c2d24d55612dae90919063ffffffff16565b905080821115611e8d578091505b611edf82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f37826009546129b690919063ffffffff16565b6009819055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff16600260ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561205f57600080fd5b6001600760006101000a81548160ff021916908315150217905550565b600080151561208a3361171f565b151514151561209857600080fd5b600015156120a58461171f565b15151415156120b357600080fd5b6120bd8383612dc7565b905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212157600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a54905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6064639502f900026064631dcd6500020181565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561223e57600080fd5b6064639502f900026064631dcd65000201821115151561225d57600080fd5b6064639502f900026064631dcd65000201600a5410151561227d57600080fd5b6122a2600a546064639502f900026064631dcd65000201612dae90919063ffffffff16565b90508082111515156122b357600080fd5b61230582600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235d82600a546129b690919063ffffffff16565b600a819055508273ffffffffffffffffffffffffffffffffffffffff16600060ff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36123d583611326565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561243857600080fd5b600090505b815181101561247357612466828281518110151561245757fe5b906020019060200201516120c5565b808060010191505061243d565b5050565b6064633b9aca000281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124e057600080fd5b600090505b815181101561251b5761250e82828151811015156124ff57fe5b90602001906020020151611326565b80806001019150506124e5565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561265f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561269b57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561273d57600080fd5b600090505b81518110156127785761276b828281518110151561275c57fe5b906020019060200201516117b4565b8080600101915050612742565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156127da57600080fd5b815183511415156127ea57600080fd5b600090505b825181101561283d57612830838281518110151561280957fe5b90602001906020020151838381518110151561282157fe5b906020019060200201516121e0565b80806001019150506127ef565b505050565b600760009054906101000a900460ff1681565b60008054905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128ba57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156128f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101515156129ca57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612a1157600080fd5b60001515612a1e84613006565b1515141515612a2c57600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612a7a57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612b0557600080fd5b612b5782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c2982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cfb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828211151515612dbc57fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612e0457600080fd5b60001515612e1184613006565b1515141515612e1f57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612e6d57600080fd5b612ebf82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dae90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129b690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080823b9050600081119150509190505600a165627a7a72305820c7da67b6fb6f79228fcc91dbee8b7165c3091128285cb372a980c5b0d26ef8990029
Swarm Source
bzzr://c7da67b6fb6f79228fcc91dbee8b7165c3091128285cb372a980c5b0d26ef899
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.