ETH Price: $3,355.11 (-0.89%)

Token

AfterShock (SHOCK)
 

Overview

Max Total Supply

942,256.498249301871602995 SHOCK

Holders

904 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.4 SHOCK

Value
$0.00
0xA72BB64b439414E3dA72Bf35694BC97B638fD7a5
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AfterShock

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-07
*/

pragma solidity 0.5.8;

interface IERC20 
{
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ApproveAndCallFallBack {

    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
}

library SafeMath 
{
    function mul(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        if (a == 0) 
        {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) 
    {
        uint256 c = a / b;
        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;
    }
    
    function ceil(uint256 a, uint256 m) internal pure returns (uint256) 
    {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }
}

contract ERC20Detailed is IERC20 
{
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    constructor(string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    
    function name() public view returns(string memory) {
        return _name;
    }
    
    function symbol() public view returns(string memory) {
        return _symbol;
    }
    
    function decimals() public view returns(uint8) {
        return _decimals;
    }
}

contract AfterShock is ERC20Detailed 
{
    using SafeMath for uint256;
    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;
    
    string constant tokenName = "AfterShock";//"AfterShock";
    string constant tokenSymbol = "SHOCK";//"SHOCK"; 
    uint8  constant tokenDecimals = 18;
    uint256 _totalSupply = 0;
    
    // ------------------------------------------------------------------------
  
    address public contractOwner;

    uint256 public fullUnitsStaked_total = 0;
    mapping (address => bool) public excludedFromStaking; //exchanges/other contracts will be excluded from staking

    uint256 _totalRewardsPerUnit = 0;
    mapping (address => uint256) private _totalRewardsPerUnit_positions;
    mapping (address => uint256) private _savedRewards;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    // ------------------------------------------------------------------------
    
    constructor() public ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) 
    {
        contractOwner = msg.sender;
        excludedFromStaking[msg.sender] = true;
        excludedFromStaking[address(this)] = true;
        _mint(msg.sender, 1000000 * (10**uint256(tokenDecimals)));
    }
    
    // ------------------------------------------------------------------------

    function transferOwnership(address newOwner) public 
    {
        require(msg.sender == contractOwner);
        require(newOwner != address(0));
        emit OwnershipTransferred(contractOwner, newOwner);
        contractOwner = newOwner;
    }
    
    function totalSupply() public view returns (uint256) 
    {
        return _totalSupply;
    }
    
    function balanceOf(address owner) public view returns (uint256) 
    {
        return _balances[owner];
    }
    
    function fullUnitsStaked(address owner) public view returns (uint256) 
    {
        return toFullUnits(_balances[owner]);
    }
    
    function toFullUnits(uint256 valueWithDecimals) public pure returns (uint256) 
    {
        return valueWithDecimals.div(10**uint256(tokenDecimals));
    }
    
    function allowance(address owner, address spender) public view returns (uint256) 
    {
        return _allowed[owner][spender];
    }
    
    function transfer(address to, uint256 value) public returns (bool) 
    {
        _executeTransfer(msg.sender, to, value);
        return true;
    }
    
    function multiTransfer(address[] memory receivers, uint256[] memory values) public
    {
        require(receivers.length == values.length);
        for(uint256 i = 0; i < receivers.length; i++)
            _executeTransfer(msg.sender, receivers[i], values[i]);
    }
    
    function transferFrom(address from, address to, uint256 value) public returns (bool) 
    {
        require(value <= _allowed[from][msg.sender]);
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _executeTransfer(from, to, value);
        return true;
    }
    
    function approve(address spender, uint256 value) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) 
    {
        _allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
        return true;
    }
    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) 
    {
        require(spender != address(0));
        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].sub(subtractedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }
    
    function _mint(address account, uint256 value) internal 
    {
        require(value != 0);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.add(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.add(value);
        
        //update full units staked
        if(!excludedFromStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        emit Transfer(address(0), account, value);
    }
    
    function burn(uint256 value) external 
    {
        _burn(msg.sender, value);
    }
    
    function burnFrom(address account, uint256 value) external 
    {
        require(value <= _allowed[account][msg.sender]);
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
    }
    
    function _burn(address account, uint256 value) internal 
    {
        require(value != 0);
        require(value <= _balances[account]);
        
        uint256 initalBalance = _balances[account];
        uint256 newBalance = initalBalance.sub(value);
        
        _balances[account] = newBalance;
        _totalSupply = _totalSupply.sub(value);
        
        //update full units staked
        if(!excludedFromStaking[account])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance));
            fus_total = fus_total.add(toFullUnits(newBalance));
            fullUnitsStaked_total = fus_total;
        }
        
        emit Transfer(account, address(0), value);
    }
    
    /*
    *   transfer with additional burn and stake rewards
    *   the receiver gets 94% of the sent value
    *   6% are split to be burnt and distributed to holders
    */
    function _executeTransfer(address from, address to, uint256 value) private
    {
        require(value <= _balances[from]);
        require(to != address(0) && to != address(this));

        //Update sender and receivers rewards - changing balances will change rewards shares
        updateRewardsFor(from);
        updateRewardsFor(to);
        
        uint256 sixPercent = value.mul(6).div(100);
        
        //set a minimum burn rate to prevent no-burn-txs due to precision loss
        if(sixPercent == 0 && value > 0)
            sixPercent = 1;
            
        uint256 initalBalance_from = _balances[from];
        uint256 newBalance_from = initalBalance_from.sub(value);
        
        value = value.sub(sixPercent);
        
        uint256 initalBalance_to = _balances[to];
        uint256 newBalance_to = initalBalance_to.add(value);
        
        //transfer
        _balances[from] = newBalance_from;
        _balances[to] = newBalance_to;
        emit Transfer(from, to, value);
         
        //update full units staked
        uint256 fus_total = fullUnitsStaked_total;
        if(!excludedFromStaking[from])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_from));
            fus_total = fus_total.add(toFullUnits(newBalance_from));
        }
        if(!excludedFromStaking[to])
        {
            fus_total = fus_total.sub(toFullUnits(initalBalance_to));
            fus_total = fus_total.add(toFullUnits(newBalance_to));
        }
        fullUnitsStaked_total = fus_total;
        
        uint256 amountToBurn = sixPercent;
        
        if(fus_total > 0)
        {
            uint256 stakingRewards = sixPercent.div(2);
            //split up to rewards per unit in stake
            uint256 rewardsPerUnit = stakingRewards.div(fus_total);
            //apply rewards
            _totalRewardsPerUnit = _totalRewardsPerUnit.add(rewardsPerUnit);
            _balances[address(this)] = _balances[address(this)].add(stakingRewards);
            emit Transfer(msg.sender, address(this), stakingRewards);
    
            amountToBurn = amountToBurn.sub(stakingRewards);
        }
        
        //update total supply
        _totalSupply = _totalSupply.sub(amountToBurn);
        emit Transfer(msg.sender, address(0), amountToBurn);
    }
    
    //catch up with the current total rewards. This needs to be done before an addresses balance is changed
    function updateRewardsFor(address staker) private
    {
        _savedRewards[staker] = viewUnpaidRewards(staker);
        _totalRewardsPerUnit_positions[staker] = _totalRewardsPerUnit;
    }
    
    //get all rewards that have not been claimed yet
    function viewUnpaidRewards(address staker) public view returns (uint256)
    {
        if(excludedFromStaking[staker])
            return _savedRewards[staker];
        uint256 newRewardsPerUnit = _totalRewardsPerUnit.sub(_totalRewardsPerUnit_positions[staker]);
        
        uint256 newRewards = newRewardsPerUnit.mul(fullUnitsStaked(staker));
        return _savedRewards[staker].add(newRewards);
    }
    
    //pay out unclaimed rewards
    function payoutRewards() public
    {
        updateRewardsFor(msg.sender);
        uint256 rewards = _savedRewards[msg.sender];
        require(rewards > 0 && rewards <= _balances[address(this)]);
        
        _savedRewards[msg.sender] = 0;
        
        uint256 initalBalance_staker = _balances[msg.sender];
        uint256 newBalance_staker = initalBalance_staker.add(rewards);
        
        //update full units staked
        if(!excludedFromStaking[msg.sender])
        {
            uint256 fus_total = fullUnitsStaked_total;
            fus_total = fus_total.sub(toFullUnits(initalBalance_staker));
            fus_total = fus_total.add(toFullUnits(newBalance_staker));
            fullUnitsStaked_total = fus_total;
        }
        
        //transfer
        _balances[address(this)] = _balances[address(this)].sub(rewards);
        _balances[msg.sender] = newBalance_staker;
        emit Transfer(address(this), msg.sender, rewards);
    }
    
    //exchanges or other contracts can be excluded from receiving stake rewards
    function excludeAddressFromStaking(address excludeAddress, bool exclude) public
    {
        require(msg.sender == contractOwner);
        require(excludeAddress != address(this)); //contract may never be included
        require(exclude != excludedFromStaking[excludeAddress]);
        updateRewardsFor(excludeAddress);
        excludedFromStaking[excludeAddress] = exclude;
        fullUnitsStaked_total = exclude ? fullUnitsStaked_total.sub(fullUnitsStaked(excludeAddress)) : fullUnitsStaked_total.add(fullUnitsStaked(excludeAddress));
    }
    
    //withdraw tokens that were sent to this contract by accident
    function withdrawERC20Tokens(address tokenAddress, uint256 amount) public
    {
        require(msg.sender == contractOwner);
        require(tokenAddress != address(this));
        IERC20(tokenAddress).transfer(msg.sender, amount);
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"excludedFromStaking","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"staker","type":"address"}],"name":"viewUnpaidRewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payoutRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fullUnitsStaked_total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"excludeAddress","type":"address"},{"name":"exclude","type":"bool"}],"name":"excludeAddressFromStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"valueWithDecimals","type":"uint256"}],"name":"toFullUnits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"owner","type":"address"}],"name":"fullUnitsStaked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"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"}]

60806040526000600555600060075560006009553480156200002057600080fd5b506040518060400160405280600a81526020017f416674657253686f636b000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53484f434b00000000000000000000000000000000000000000000000000000081525060128260009080519060200190620000a79291906200046a565b508160019080519060200190620000c09291906200046a565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001ee33601260ff16600a0a620f424002620001f460201b60201c565b62000519565b60008114156200020357600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000620002638383620003f160201b620028c21790919060201c565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002c583600554620003f160201b620028c21790919060201c565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166200038557600060075490506200034e62000339846200040e60201b60201c565b826200043860201b620028741790919060201c565b90506200037a62000365836200040e60201b60201c565b82620003f160201b620028c21790919060201c565b905080600781905550505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000808284019050838110156200040457fe5b8091505092915050565b600062000431601260ff16600a0a836200045060201b62002b8e1790919060201c565b9050919050565b6000828211156200044557fe5b818303905092915050565b6000808284816200045d57fe5b0490508091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004ad57805160ff1916838001178555620004de565b82800160010185558215620004de579182015b82811115620004dd578251825591602001919060010190620004c0565b5b509050620004ed9190620004f1565b5090565b6200051691905b8082111562000512576000816000905550600101620004f8565b5090565b90565b612bd380620005296000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b1369e6a11610097578063dd62ed3e11610071578063dd62ed3e146109b3578063e1eae0b414610a2b578063e49cb2fb14610a83578063f2fde38b14610ad157610173565b8063b1369e6a1461082a578063cae9ca511461086c578063ce606ee01461096957610173565b806370a08231146105e55780637964dd2b1461063d57806379cc67901461068d57806395d89b41146106db578063a457c2d71461075e578063a9059cbb146107c457610173565b806323b872dd1161013057806323b872dd1461047f5780632961308614610505578063313ce5671461050f578063395093511461053357806342966c68146105995780634b56c39e146105c757610173565b806306fdde0314610178578063095ea7b3146101fb5780630ccaa97e1461026157806318160ddd146102bd5780631e89d545146102db578063223d041714610427575b600080fd5b610180610b15565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb7565b604051808215151515815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce2565b604051808215151515815260200191505060405180910390f35b6102c5610d02565b6040518082815260200191505060405180910390f35b610425600480360360408110156102f157600080fd5b810190808035906020019064010000000081111561030e57600080fd5b82018360208201111561032057600080fd5b8035906020019184602083028401116401000000008311171561034257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103a257600080fd5b8201836020820111156103b457600080fd5b803590602001918460208302840111640100000000831117156103d657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610d0c565b005b6104696004803603602081101561043d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d6c565b6040518082815260200191505060405180910390f35b6104eb6004803603606081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eda565b604051808215151515815260200191505060405180910390f35b61050d61108a565b005b6105176113ad565b604051808260ff1660ff16815260200191505060405180910390f35b61057f6004803603604081101561054957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c4565b604051808215151515815260200191505060405180910390f35b6105c5600480360360208110156105af57600080fd5b81019080803590602001909291905050506115f9565b005b6105cf611606565b6040518082815260200191505060405180910390f35b610627600480360360208110156105fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160c565b6040518082815260200191505060405180910390f35b61068b6004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611655565b005b6106d9600480360360408110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117f4565b005b6106e361199a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610723578082015181840152602081019050610708565b50505050905090810190601f1680156107505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107aa6004803603604081101561077457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a3c565b604051808215151515815260200191505060405180910390f35b610810600480360360408110156107da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c71565b604051808215151515815260200191505060405180910390f35b6108566004803603602081101561084057600080fd5b8101908080359060200190929190505050611c88565b6040518082815260200191505060405180910390f35b61094f6004803603606081101561088257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460018302840111640100000000831117156108fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cab565b604051808215151515815260200191505060405180910390f35b610971611ede565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a15600480360360408110156109c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f04565b6040518082815260200191505060405180910390f35b610a6d60048036036020811015610a4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8b565b6040518082815260200191505060405180910390f35b610acf60048036036040811015610a9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fdc565b005b610b1360048036036020811015610ae757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bad5780601f10610b8257610100808354040283529160200191610bad565b820191906000526020600020905b815481529060010190602001808311610b9057829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bf257600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b8051825114610d1a57600080fd5b60008090505b8251811015610d6757610d5a33848381518110610d3957fe5b6020026020010151848481518110610d4d57fe5b602002602001015161228a565b8080600101915050610d20565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e0757600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ed5565b6000610e5d600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460095461287490919063ffffffff16565b90506000610e7c610e6d85611f8b565b8361288b90919063ffffffff16565b9050610ed081600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610f6557600080fd5b610ff482600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061107f84848461228a565b600190509392505050565b611093336128de565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811180156111265750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b61112f57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006111cd83836128c290919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661126a576000600754905061124261123384611c88565b8261287490919063ffffffff16565b905061125f61125083611c88565b826128c290919063ffffffff16565b905080600781905550505b6112bc83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ff57600080fd5b61148e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6116033382612973565b50565b60075481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116af57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e857600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515811515141561174557600080fd5b61174e826128de565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806117cc576117c76117b683611f8b565b6007546128c290919063ffffffff16565b6117ea565b6117e96117d883611f8b565b60075461287490919063ffffffff16565b5b6007819055505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561187d57600080fd5b61190c81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119968282612973565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a325780601f10611a0757610100808354040283529160200191611a32565b820191906000526020600020905b815481529060010190602001808311611a1557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a7757600080fd5b611b0682600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000611c7e33848461228a565b6001905092915050565b6000611ca4601260ff16600a0a83612b8e90919063ffffffff16565b9050919050565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e6c578082015181840152602081019050611e51565b50505050905090810190601f168015611e995780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b50505050600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611fd5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c88565b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561206f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b505050506040513d602081101561212057600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121ca57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156122d657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561233f57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61234857600080fd5b612351836128de565b61235a826128de565b6000612383606461237560068561288b90919063ffffffff16565b612b8e90919063ffffffff16565b90506000811480156123955750600082115b1561239f57600190505b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006123f8848361287490919063ffffffff16565b905061240d838561287490919063ffffffff16565b93506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061246886836128c290919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125ea576125ca6125bb86611c88565b8261287490919063ffffffff16565b90506125e76125d885611c88565b826128c290919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126765761265661264784611c88565b8261287490919063ffffffff16565b905061267361266483611c88565b826128c290919063ffffffff16565b90505b80600781905550600086905060008211156127e75760006126a1600289612b8e90919063ffffffff16565b905060006126b88483612b8e90919063ffffffff16565b90506126cf816009546128c290919063ffffffff16565b60098190555061272782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36127e2828461287490919063ffffffff16565b925050505b6127fc8160055461287490919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505050505050505050565b60008282111561288057fe5b818303905092915050565b60008083141561289e57600090506128bc565b60008284029050828482816128af57fe5b04146128b757fe5b809150505b92915050565b6000808284019050838110156128d457fe5b8091505092915050565b6128e781610d6c565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600081141561298157600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156129cd57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612a26838361287490919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a818360055461287490919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b225760006007549050612afa612aeb84611c88565b8261287490919063ffffffff16565b9050612b17612b0883611c88565b826128c290919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600080828481612b9a57fe5b049050809150509291505056fea165627a7a72305820c8faba3111dfb8a6443e9087dc9be754ac526b7ad9adab5d52d6e41db75d69630029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b1369e6a11610097578063dd62ed3e11610071578063dd62ed3e146109b3578063e1eae0b414610a2b578063e49cb2fb14610a83578063f2fde38b14610ad157610173565b8063b1369e6a1461082a578063cae9ca511461086c578063ce606ee01461096957610173565b806370a08231146105e55780637964dd2b1461063d57806379cc67901461068d57806395d89b41146106db578063a457c2d71461075e578063a9059cbb146107c457610173565b806323b872dd1161013057806323b872dd1461047f5780632961308614610505578063313ce5671461050f578063395093511461053357806342966c68146105995780634b56c39e146105c757610173565b806306fdde0314610178578063095ea7b3146101fb5780630ccaa97e1461026157806318160ddd146102bd5780631e89d545146102db578063223d041714610427575b600080fd5b610180610b15565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb7565b604051808215151515815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce2565b604051808215151515815260200191505060405180910390f35b6102c5610d02565b6040518082815260200191505060405180910390f35b610425600480360360408110156102f157600080fd5b810190808035906020019064010000000081111561030e57600080fd5b82018360208201111561032057600080fd5b8035906020019184602083028401116401000000008311171561034257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103a257600080fd5b8201836020820111156103b457600080fd5b803590602001918460208302840111640100000000831117156103d657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610d0c565b005b6104696004803603602081101561043d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d6c565b6040518082815260200191505060405180910390f35b6104eb6004803603606081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eda565b604051808215151515815260200191505060405180910390f35b61050d61108a565b005b6105176113ad565b604051808260ff1660ff16815260200191505060405180910390f35b61057f6004803603604081101561054957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113c4565b604051808215151515815260200191505060405180910390f35b6105c5600480360360208110156105af57600080fd5b81019080803590602001909291905050506115f9565b005b6105cf611606565b6040518082815260200191505060405180910390f35b610627600480360360208110156105fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160c565b6040518082815260200191505060405180910390f35b61068b6004803603604081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611655565b005b6106d9600480360360408110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117f4565b005b6106e361199a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610723578082015181840152602081019050610708565b50505050905090810190601f1680156107505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107aa6004803603604081101561077457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a3c565b604051808215151515815260200191505060405180910390f35b610810600480360360408110156107da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c71565b604051808215151515815260200191505060405180910390f35b6108566004803603602081101561084057600080fd5b8101908080359060200190929190505050611c88565b6040518082815260200191505060405180910390f35b61094f6004803603606081101561088257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460018302840111640100000000831117156108fd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611cab565b604051808215151515815260200191505060405180910390f35b610971611ede565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a15600480360360408110156109c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f04565b6040518082815260200191505060405180910390f35b610a6d60048036036020811015610a4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8b565b6040518082815260200191505060405180910390f35b610acf60048036036040811015610a9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fdc565b005b610b1360048036036020811015610ae757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bad5780601f10610b8257610100808354040283529160200191610bad565b820191906000526020600020905b815481529060010190602001808311610b9057829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bf257600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600554905090565b8051825114610d1a57600080fd5b60008090505b8251811015610d6757610d5a33848381518110610d3957fe5b6020026020010151848481518110610d4d57fe5b602002602001015161228a565b8080600101915050610d20565b505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e0757600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610ed5565b6000610e5d600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460095461287490919063ffffffff16565b90506000610e7c610e6d85611f8b565b8361288b90919063ffffffff16565b9050610ed081600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b925050505b919050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610f6557600080fd5b610ff482600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061107f84848461228a565b600190509392505050565b611093336128de565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811180156111265750600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b61112f57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006111cd83836128c290919063ffffffff16565b9050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661126a576000600754905061124261123384611c88565b8261287490919063ffffffff16565b905061125f61125083611c88565b826128c290919063ffffffff16565b905080600781905550505b6112bc83600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b6000600260009054906101000a900460ff16905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ff57600080fd5b61148e82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6116033382612973565b50565b60075481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116af57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e857600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515811515141561174557600080fd5b61174e826128de565b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806117cc576117c76117b683611f8b565b6007546128c290919063ffffffff16565b6117ea565b6117e96117d883611f8b565b60075461287490919063ffffffff16565b5b6007819055505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561187d57600080fd5b61190c81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119968282612973565b5050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a325780601f10611a0757610100808354040283529160200191611a32565b820191906000526020600020905b815481529060010190602001808311611a1557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a7757600080fd5b611b0682600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287490919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000611c7e33848461228a565b6001905092915050565b6000611ca4601260ff16600a0a83612b8e90919063ffffffff16565b9050919050565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e6c578082015181840152602081019050611e51565b50505050905090810190601f168015611e995780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b50505050600190509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000611fd5600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c88565b9050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561206f57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b505050506040513d602081101561212057600080fd5b8101908080519060200190929190505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461219057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121ca57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156122d657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561233f57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61234857600080fd5b612351836128de565b61235a826128de565b6000612383606461237560068561288b90919063ffffffff16565b612b8e90919063ffffffff16565b90506000811480156123955750600082115b1561239f57600190505b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006123f8848361287490919063ffffffff16565b905061240d838561287490919063ffffffff16565b93506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061246886836128c290919063ffffffff16565b905082600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360006007549050600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166125ea576125ca6125bb86611c88565b8261287490919063ffffffff16565b90506125e76125d885611c88565b826128c290919063ffffffff16565b90505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126765761265661264784611c88565b8261287490919063ffffffff16565b905061267361266483611c88565b826128c290919063ffffffff16565b90505b80600781905550600086905060008211156127e75760006126a1600289612b8e90919063ffffffff16565b905060006126b88483612b8e90919063ffffffff16565b90506126cf816009546128c290919063ffffffff16565b60098190555061272782600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36127e2828461287490919063ffffffff16565b925050505b6127fc8160055461287490919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505050505050505050565b60008282111561288057fe5b818303905092915050565b60008083141561289e57600090506128bc565b60008284029050828482816128af57fe5b04146128b757fe5b809150505b92915050565b6000808284019050838110156128d457fe5b8091505092915050565b6128e781610d6c565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600954600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600081141561298157600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156129cd57600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612a26838361287490919063ffffffff16565b905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a818360055461287490919063ffffffff16565b600581905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b225760006007549050612afa612aeb84611c88565b8261287490919063ffffffff16565b9050612b17612b0883611c88565b826128c290919063ffffffff16565b905080600781905550505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b600080828481612b9a57fe5b049050809150509291505056fea165627a7a72305820c8faba3111dfb8a6443e9087dc9be754ac526b7ad9adab5d52d6e41db75d69630029

Deployed Bytecode Sourcemap

2317:11703:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2317:11703:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2036:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5482:248;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5482:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2898:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2898:52:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4028:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4889:272;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4889:272:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4889:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4889:272:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4889:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4889:272:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4889:272:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4889:272:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4889:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4889:272:0;;;;;;;;;;;;;;;:::i;:::-;;11597:416;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11597:416:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5173:297;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5173:297:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12058:985;;;:::i;:::-;;2228:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6094:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6094:329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7518:87;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7518:87:0;;;;;;;;;;;;;;;;;:::i;:::-;;2851:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4137:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4137:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13136:553;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13136:553:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7617:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7617:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2130:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2130:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:339;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6435:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4724:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4724:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4404:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4404:159:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5742:340;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5742:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5742:340:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5742:340:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5742:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5742:340:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2814:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4575:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4575:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4261:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4261:131:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13768:243;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13768:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3765:251;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3765:251:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2036:82;2072:13;2105:5;2098:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:82;:::o;5482:248::-;5547:4;5597:1;5578:21;;:7;:21;;;;5570:30;;;;;;5643:5;5611:8;:20;5620:10;5611:20;;;;;;;;;;;;;;;:29;5632:7;5611:29;;;;;;;;;;;;;;;:37;;;;5685:7;5664:36;;5673:10;5664:36;;;5694:5;5664:36;;;;;;;;;;;;;;;;;;5718:4;5711:11;;5482:248;;;;:::o;2898:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4028:97::-;4072:7;4105:12;;4098:19;;4028:97;:::o;4889:272::-;5016:6;:13;4996:9;:16;:33;4988:42;;;;;;5045:9;5057:1;5045:13;;5041:112;5064:9;:16;5060:1;:20;5041:112;;;5100:53;5117:10;5129:9;5139:1;5129:12;;;;;;;;;;;;;;5143:6;5150:1;5143:9;;;;;;;;;;;;;;5100:16;:53::i;:::-;5082:3;;;;;;;5041:112;;;;4889:272;;:::o;11597:416::-;11661:7;11689:19;:27;11709:6;11689:27;;;;;;;;;;;;;;;;;;;;;;;;;11686:73;;;11738:13;:21;11752:6;11738:21;;;;;;;;;;;;;;;;11731:28;;;;11686:73;11770:25;11798:64;11823:30;:38;11854:6;11823:38;;;;;;;;;;;;;;;;11798:20;;:24;;:64;;;;:::i;:::-;11770:92;;11883:18;11904:46;11926:23;11942:6;11926:15;:23::i;:::-;11904:17;:21;;:46;;;;:::i;:::-;11883:67;;11968:37;11994:10;11968:13;:21;11982:6;11968:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;11961:44;;;;11597:416;;;;:::o;5173:297::-;5252:4;5292:8;:14;5301:4;5292:14;;;;;;;;;;;;;;;:26;5307:10;5292:26;;;;;;;;;;;;;;;;5283:5;:35;;5275:44;;;;;;5359:37;5390:5;5359:8;:14;5368:4;5359:14;;;;;;;;;;;;;;;:26;5374:10;5359:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;5330:8;:14;5339:4;5330:14;;;;;;;;;;;;;;;:26;5345:10;5330:26;;;;;;;;;;;;;;;:66;;;;5407:33;5424:4;5430:2;5434:5;5407:16;:33::i;:::-;5458:4;5451:11;;5173:297;;;;;:::o;12058:985::-;12106:28;12123:10;12106:16;:28::i;:::-;12145:15;12163:13;:25;12177:10;12163:25;;;;;;;;;;;;;;;;12145:43;;12217:1;12207:7;:11;:50;;;;;12233:9;:24;12251:4;12233:24;;;;;;;;;;;;;;;;12222:7;:35;;12207:50;12199:59;;;;;;12307:1;12279:13;:25;12293:10;12279:25;;;;;;;;;;;;;;;:29;;;;12329:28;12360:9;:21;12370:10;12360:21;;;;;;;;;;;;;;;;12329:52;;12392:25;12420:33;12445:7;12420:20;:24;;:33;;;;:::i;:::-;12392:61;;12514:19;:31;12534:10;12514:31;;;;;;;;;;;;;;;;;;;;;;;;;12510:309;;12571:17;12591:21;;12571:41;;12639:48;12653:33;12665:20;12653:11;:33::i;:::-;12639:9;:13;;:48;;;;:::i;:::-;12627:60;;12714:45;12728:30;12740:17;12728:11;:30::i;:::-;12714:9;:13;;:45;;;;:::i;:::-;12702:57;;12798:9;12774:21;:33;;;;12510:309;;12886:37;12915:7;12886:9;:24;12904:4;12886:24;;;;;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;12859:9;:24;12877:4;12859:24;;;;;;;;;;;;;;;:64;;;;12958:17;12934:9;:21;12944:10;12934:21;;;;;;;;;;;;;;;:41;;;;13015:10;12991:44;;13008:4;12991:44;;;13027:7;12991:44;;;;;;;;;;;;;;;;;;12058:985;;;:::o;2228:82::-;2268:5;2293:9;;;;;;;;;;;2286:16;;2228:82;:::o;6094:329::-;6174:4;6224:1;6205:21;;:7;:21;;;;6197:30;;;;;;6271:45;6305:10;6271:8;:20;6280:10;6271:20;;;;;;;;;;;;;;;:29;6292:7;6271:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;6238:8;:20;6247:10;6238:20;;;;;;;;;;;;;;;:29;6259:7;6238:29;;;;;;;;;;;;;;;:79;;;;6354:7;6333:60;;6342:10;6333:60;;;6363:8;:20;6372:10;6363:20;;;;;;;;;;;;;;;:29;6384:7;6363:29;;;;;;;;;;;;;;;;6333:60;;;;;;;;;;;;;;;;;;6411:4;6404:11;;6094:329;;;;:::o;7518:87::-;7573:24;7579:10;7591:5;7573;:24::i;:::-;7518:87;:::o;2851:40::-;;;;:::o;4137:112::-;4192:7;4225:9;:16;4235:5;4225:16;;;;;;;;;;;;;;;;4218:23;;4137:112;;;:::o;13136:553::-;13254:13;;;;;;;;;;;13240:27;;:10;:27;;;13232:36;;;;;;13313:4;13287:31;;:14;:31;;;;13279:40;;;;;;13382:19;:35;13402:14;13382:35;;;;;;;;;;;;;;;;;;;;;;;;;13371:46;;:7;:46;;;;13363:55;;;;;;13429:32;13446:14;13429:16;:32::i;:::-;13510:7;13472:19;:35;13492:14;13472:35;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;13552:7;:129;;13623:58;13649:31;13665:14;13649:15;:31::i;:::-;13623:21;;:25;;:58;;;;:::i;:::-;13552:129;;;13562:58;13588:31;13604:14;13588:15;:31::i;:::-;13562:21;;:25;;:58;;;;:::i;:::-;13552:129;13528:21;:153;;;;13136:553;;:::o;7617:246::-;7710:8;:17;7719:7;7710:17;;;;;;;;;;;;;;;:29;7728:10;7710:29;;;;;;;;;;;;;;;;7701:5;:38;;7693:47;;;;;;7783:40;7817:5;7783:8;:17;7792:7;7783:17;;;;;;;;;;;;;;;:29;7801:10;7783:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;7751:8;:17;7760:7;7751:17;;;;;;;;;;;;;;;:29;7769:10;7751:29;;;;;;;;;;;;;;;:72;;;;7834:21;7840:7;7849:5;7834;:21::i;:::-;7617:246;;:::o;2130:86::-;2168:13;2201:7;2194:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2130:86;:::o;6435:339::-;6520:4;6570:1;6551:21;;:7;:21;;;;6543:30;;;;;;6617:50;6651:15;6617:8;:20;6626:10;6617:20;;;;;;;;;;;;;;;:29;6638:7;6617:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;6584:8;:20;6593:10;6584:20;;;;;;;;;;;;;;;:29;6605:7;6584:29;;;;;;;;;;;;;;;:84;;;;6705:7;6684:60;;6693:10;6684:60;;;6714:8;:20;6723:10;6714:20;;;;;;;;;;;;;;;:29;6735:7;6714:29;;;;;;;;;;;;;;;;6684:60;;;;;;;;;;;;;;;;;;6762:4;6755:11;;6435:339;;;;:::o;4724:153::-;4785:4;4808:39;4825:10;4837:2;4841:5;4808:16;:39::i;:::-;4865:4;4858:11;;4724:153;;;;:::o;4404:159::-;4473:7;4506:49;2683:2;4532:22;;4528:2;:26;4506:17;:21;;:49;;;;:::i;:::-;4499:56;;4404:159;;;:::o;5742:340::-;5831:12;5894:6;5862:8;:20;5871:10;5862:20;;;;;;;;;;;;;;;:29;5883:7;5862:29;;;;;;;;;;;;;;;:38;;;;5937:7;5916:37;;5925:10;5916:37;;;5946:6;5916:37;;;;;;;;;;;;;;;;;;5987:7;5964:47;;;6012:10;6024:6;6040:4;6047;5964:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5964:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5964:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5964:88:0;;;;6070:4;6063:11;;5742:340;;;;;:::o;2814:28::-;;;;;;;;;;;;;:::o;4575:137::-;4647:7;4680:8;:15;4689:5;4680:15;;;;;;;;;;;;;;;:24;4696:7;4680:24;;;;;;;;;;;;;;;;4673:31;;4575:137;;;;:::o;4261:131::-;4322:7;4355:29;4367:9;:16;4377:5;4367:16;;;;;;;;;;;;;;;;4355:11;:29::i;:::-;4348:36;;4261:131;;;:::o;13768:243::-;13880:13;;;;;;;;;;;13866:27;;:10;:27;;;13858:36;;;;;;13937:4;13913:29;;:12;:29;;;;13905:38;;;;;;13961:12;13954:29;;;13984:10;13996:6;13954:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13954:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13954:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13954:49:0;;;;;;;;;;;;;;;;;13768:243;;:::o;3765:251::-;3856:13;;;;;;;;;;;3842:27;;:10;:27;;;3834:36;;;;;;3909:1;3889:22;;:8;:22;;;;3881:31;;;;;;3964:8;3928:45;;3949:13;;;;;;;;;;;3928:45;;;;;;;;;;;;4000:8;3984:13;;:24;;;;;;;;;;;;;;;;;;3765:251;:::o;8847:2368::-;8955:9;:15;8965:4;8955:15;;;;;;;;;;;;;;;;8946:5;:24;;8938:33;;;;;;9004:1;8990:16;;:2;:16;;;;:39;;;;;9024:4;9010:19;;:2;:19;;;;8990:39;8982:48;;;;;;9137:22;9154:4;9137:16;:22::i;:::-;9170:20;9187:2;9170:16;:20::i;:::-;9211:18;9232:21;9249:3;9232:12;9242:1;9232:5;:9;;:12;;;;:::i;:::-;:16;;:21;;;;:::i;:::-;9211:42;;9371:1;9357:10;:15;:28;;;;;9384:1;9376:5;:9;9357:28;9354:60;;;9413:1;9400:14;;9354:60;9439:26;9468:9;:15;9478:4;9468:15;;;;;;;;;;;;;;;;9439:44;;9494:23;9520:29;9543:5;9520:18;:22;;:29;;;;:::i;:::-;9494:55;;9578:21;9588:10;9578:5;:9;;:21;;;;:::i;:::-;9570:29;;9620:24;9647:9;:13;9657:2;9647:13;;;;;;;;;;;;;;;;9620:40;;9671:21;9695:27;9716:5;9695:16;:20;;:27;;;;:::i;:::-;9671:51;;9781:15;9763:9;:15;9773:4;9763:15;;;;;;;;;;;;;;;:33;;;;9823:13;9807:9;:13;9817:2;9807:13;;;;;;;;;;;;;;;:29;;;;9867:2;9852:25;;9861:4;9852:25;;;9871:5;9852:25;;;;;;;;;;;;;;;;;;9935:17;9955:21;;9935:41;;9991:19;:25;10011:4;9991:25;;;;;;;;;;;;;;;;;;;;;;;;;9987:195;;10054:46;10068:31;10080:18;10068:11;:31::i;:::-;10054:9;:13;;:46;;;;:::i;:::-;10042:58;;10127:43;10141:28;10153:15;10141:11;:28::i;:::-;10127:9;:13;;:43;;;;:::i;:::-;10115:55;;9987:195;10196:19;:23;10216:2;10196:23;;;;;;;;;;;;;;;;;;;;;;;;;10192:189;;10257:44;10271:29;10283:16;10271:11;:29::i;:::-;10257:9;:13;;:44;;;;:::i;:::-;10245:56;;10328:41;10342:26;10354:13;10342:11;:26::i;:::-;10328:9;:13;;:41;;;;:::i;:::-;10316:53;;10192:189;10415:9;10391:21;:33;;;;10445:20;10468:10;10445:33;;10514:1;10502:9;:13;10499:550;;;10541:22;10566:17;10581:1;10566:10;:14;;:17;;;;:::i;:::-;10541:42;;10651:22;10676:29;10695:9;10676:14;:18;;:29;;;;:::i;:::-;10651:54;;10772:40;10797:14;10772:20;;:24;;:40;;;;:::i;:::-;10749:20;:63;;;;10854:44;10883:14;10854:9;:24;10872:4;10854:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;10827:9;:24;10845:4;10827:24;;;;;;;;;;;;;;;:71;;;;10947:4;10918:51;;10927:10;10918:51;;;10954:14;10918:51;;;;;;;;;;;;;;;;;;11005:32;11022:14;11005:12;:16;;:32;;;;:::i;:::-;10990:47;;10499:550;;;11115:30;11132:12;11115;;:16;;:30;;;;:::i;:::-;11100:12;:45;;;;11190:1;11161:46;;11170:10;11161:46;;;11194:12;11161:46;;;;;;;;;;;;;;;;;;8847:2368;;;;;;;;;;:::o;1234:129::-;1292:7;1330:1;1325;:6;;1318:14;;;;1354:1;1350;:5;1343:12;;1234:129;;;;:::o;858:224::-;916:7;951:1;946;:6;942:57;;;986:1;979:8;;;;942:57;1009:9;1025:1;1021;:5;1009:17;;1053:1;1048;1044;:5;;;;;;:10;1037:18;;;;1073:1;1066:8;;;858:224;;;;;:::o;1375:153::-;1433:7;1459:9;1475:1;1471;:5;1459:17;;1499:1;1494;:6;;1487:14;;;;1519:1;1512:8;;;1375:153;;;;:::o;11336:195::-;11426:25;11444:6;11426:17;:25::i;:::-;11402:13;:21;11416:6;11402:21;;;;;;;;;;;;;;;:49;;;;11503:20;;11462:30;:38;11493:6;11462:38;;;;;;;;;;;;;;;:61;;;;11336:195;:::o;7875:777::-;7965:1;7956:5;:10;;7948:19;;;;;;7995:9;:18;8005:7;7995:18;;;;;;;;;;;;;;;;7986:5;:27;;7978:36;;;;;;8035:21;8059:9;:18;8069:7;8059:18;;;;;;;;;;;;;;;;8035:42;;8088:18;8109:24;8127:5;8109:13;:17;;:24;;;;:::i;:::-;8088:45;;8175:10;8154:9;:18;8164:7;8154:18;;;;;;;;;;;;;;;:31;;;;8211:23;8228:5;8211:12;;:16;;:23;;;;:::i;:::-;8196:12;:38;;;;8295:19;:28;8315:7;8295:28;;;;;;;;;;;;;;;;;;;;;;;;;8291:292;;8349:17;8369:21;;8349:41;;8417;8431:26;8443:13;8431:11;:26::i;:::-;8417:9;:13;;:41;;;;:::i;:::-;8405:53;;8485:38;8499:23;8511:10;8499:11;:23::i;:::-;8485:9;:13;;:38;;;;:::i;:::-;8473:50;;8562:9;8538:21;:33;;;;8291:292;;8634:1;8608:36;;8617:7;8608:36;;;8638:5;8608:36;;;;;;;;;;;;;;;;;;7875:777;;;;:::o;1094:128::-;1152:7;1178:9;1194:1;1190;:5;;;;;;1178:17;;1213:1;1206:8;;;1094:128;;;;:::o

Swarm Source

bzzr://c8faba3111dfb8a6443e9087dc9be754ac526b7ad9adab5d52d6e41db75d6963
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.