ETH Price: $2,343.56 (+2.22%)

Contract

0xD8183cD212ad587b495C5681334a70137356e979
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Withdraw My Divi...127807752021-07-07 14:19:511161 days ago1625667591IN
0xD8183cD2...37356e979
0 ETH0.0040816137.4
Withdraw My Divi...126798582021-06-21 20:43:421176 days ago1624308222IN
0xD8183cD2...37356e979
0 ETH0.0021826820
Withdraw My Divi...126638342021-06-19 8:50:081179 days ago1624092608IN
0xD8183cD2...37356e979
0 ETH0.0011175510
Withdraw My Divi...126433152021-06-16 4:13:201182 days ago1623816800IN
0xD8183cD2...37356e979
0 ETH0.0009465510
Withdraw My Divi...126041292021-06-10 2:39:091188 days ago1623292749IN
0xD8183cD2...37356e979
0 ETH0.0020735419
Withdraw My Divi...126031582021-06-09 23:01:021188 days ago1623279662IN
0xD8183cD2...37356e979
0 ETH0.0027283525
Withdraw My Divi...125983712021-06-09 5:08:451189 days ago1623215325IN
0xD8183cD2...37356e979
0 ETH0.001309612
Withdraw My Divi...125975052021-06-09 1:55:161189 days ago1623203716IN
0xD8183cD2...37356e979
0 ETH0.0015278714
Transfer125962402021-06-08 21:13:271189 days ago1623186807IN
0xD8183cD2...37356e979
0.04038107 ETH0.00056727
Withdraw My Divi...125934682021-06-08 10:56:201190 days ago1623149780IN
0xD8183cD2...37356e979
0 ETH0.0012004711
Distribute Divid...125902602021-06-07 23:00:001190 days ago1623106800IN
0xD8183cD2...37356e979
0 ETH0.0010780518
Deposit Dividend125902522021-06-07 22:58:221190 days ago1623106702IN
0xD8183cD2...37356e979
0 ETH0.0010898618
Withdraw My Divi...125834722021-06-06 21:46:121191 days ago1623015972IN
0xD8183cD2...37356e979
0 ETH0.001309612
Withdraw My Divi...125812052021-06-06 13:25:591192 days ago1622985959IN
0xD8183cD2...37356e979
0 ETH0.0016370115
Withdraw My Divi...125782222021-06-06 2:28:371192 days ago1622946517IN
0xD8183cD2...37356e979
0 ETH0.0014187413
Withdraw My Divi...125569922021-06-02 19:32:021195 days ago1622662322IN
0xD8183cD2...37356e979
0 ETH0.0025556827
Withdraw My Divi...125562022021-06-02 16:35:271195 days ago1622651727IN
0xD8183cD2...37356e979
0 ETH0.0034790827
Withdraw My Divi...125529182021-06-02 4:37:121196 days ago1622608632IN
0xD8183cD2...37356e979
0 ETH0.0024009422
Withdraw My Divi...125470862021-06-01 6:56:301197 days ago1622530590IN
0xD8183cD2...37356e979
0 ETH0.0020824122
Withdraw My Divi...125297922021-05-29 14:35:091200 days ago1622298909IN
0xD8183cD2...37356e979
0 ETH0.0037104739.2
Withdraw My Divi...125246932021-05-28 19:33:091200 days ago1622230389IN
0xD8183cD2...37356e979
0 ETH0.0036014233
Withdraw My Divi...125196892021-05-28 0:53:021201 days ago1622163182IN
0xD8183cD2...37356e979
0 ETH0.0028374826.00000145
Withdraw My Divi...125051152021-05-25 18:26:411203 days ago1621967201IN
0xD8183cD2...37356e979
0 ETH0.004470240
Withdraw My Divi...125041572021-05-25 14:57:351204 days ago1621954655IN
0xD8183cD2...37356e979
0 ETH0.0036922652
Withdraw My Divi...125041462021-05-25 14:54:291204 days ago1621954469IN
0xD8183cD2...37356e979
0 ETH0.0068800348
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UTOPIA_Dividend

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-26
*/

pragma solidity 0.5.16; 


library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
        return 0;
    }
    uint256 c = a * b;
    require(c / a == b, 'SafeMath mul failed');
    return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, 'SafeMath sub failed');
    return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, 'SafeMath add failed');
    return c;
    }
}

contract owned
{
    address payable public owner;
    address payable public  newOwner;
    address payable public signer;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
        signer = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }


    modifier onlySigner {
        require(msg.sender == signer, 'caller must be signer');
        _;
    }


    function changeSigner(address payable _signer) public onlyOwner {
        signer = _signer;
    }

    function transferOwnership(address payable _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}



interface UTOPIAInterface
{
    function userStakedAmount(address _token,address user) external view returns (uint) ;
    function totalStakedAmount(address _token) external view returns(uint);
    function authorisedToken(address _token) external view returns(bool);
    function updateUserData(address _token, address user, uint d_T, uint d_E, uint s_A, uint t_T, uint t_E) external returns(bool);
    function reInvestMyToken(address _token, uint _amount) external returns(bool);
    function blackListedUser(address _token, address _user) external returns (bool);
}

interface tokenInterface
{
    function transfer(address _to, uint256 _amount) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);
}

contract UTOPIA_Dividend is owned 
{
    using SafeMath for uint256;

    struct userData
    {
        uint distCount_T;
        uint distCount_Direct;
        uint distCount_E;
        uint totalWhenWithdrawn_T;
        uint totalWhenWithdrawn_Direct;
        uint totalWhenWithdrawn_E;
    }

    bool public safeGuard;

    // All first address in mapping is token 
    //  => user 
    mapping(address => mapping(address => userData)) public userDatas;

    mapping (address => uint) public lastDistributionTime;  // last time when distributed
    mapping (address => uint) public distributionInterval;  // Next distribution after this seconds
    mapping (address => bool) public accumulateDirect;  // if true direct dividend will be accumulated and distributed by admin

    mapping (address => uint) public totalDepositedDividend_T; // total deposited dividend for all time for token
    mapping (address => uint) public totalDepositedDividend_Direct; // total direct dividend for all time for token
    mapping (address => uint) public totalDepositedDividend_E; // total deposited dividend for all time for ether
    mapping (address => uint) public totalWithdrawnByUser_T; // sum of all withdrawn amount withdrawn by user in current distribution
    mapping (address => uint) public totalWithdrawnByUser_E; // sum of all withdrawn amount withdrawn by user in current distribution

    mapping (address => uint) public distributedTotalAmountTillNow_T; // total amount of contract when last distribution done
    mapping (address => uint) public distributedTotalAmountTillNow_E; // total amount of contract when last distribution done
    mapping (address => uint) public distributedTotalAmountTillNow_Direct;

    mapping (address => uint) public totalDistributionCount_T;
    mapping (address => uint) public totalDistributionCount_Direct;
    mapping (address => uint) public totalDistributionCount_E;

    mapping (address => uint) public accumulatedDirectDividend;

    uint public distributionPercent;

    address public stakingContractAddress;

    function adjustDistributionTime(address token, uint _delayInSeconds, bool _increase) public onlyOwner returns(bool)
    {
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(token), "Invalid token");
        if(_increase)
        {
            lastDistributionTime[token] += _delayInSeconds;
        }
        else
        {
            lastDistributionTime[token] -= _delayInSeconds;
        }
        return true;
    }


    function setdistributionInterval(address token, uint _distributionInterval ) public onlyOwner returns(bool)
    {
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(token), "Invalid token");
        distributionInterval[token] = _distributionInterval;
        return true;
    }

    function setAccumulateDirect(address token, bool _accumulateDirect) public onlyOwner returns(bool)
    {
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(token), "Invalid token");
        accumulateDirect[token] = _accumulateDirect;
        return true;
    }

    function setStakingContractAddress(address _stakingContractAddress, uint _distributionPercent ) public onlyOwner returns(bool)
    {
        stakingContractAddress = _stakingContractAddress;
        distributionPercent = _distributionPercent;
        return true;
    }

    constructor() public
    {
        
    }

    function resetUserDatas(address _token, address _user) external returns(bool)
    {
        require(msg.sender == stakingContractAddress, "invalid caller to reset");
        userDatas[_token][_user].distCount_T = 0;
        userDatas[_token][_user].distCount_Direct = 0;
        userDatas[_token][_user].distCount_E = 0;
        userDatas[_token][_user].totalWhenWithdrawn_T = 0;
        userDatas[_token][_user].totalWhenWithdrawn_Direct = 0;
        userDatas[_token][_user].totalWhenWithdrawn_E = 0;        
        return true;
    }

    event depositDividendEv(address token, address depositor, uint amount_E, uint amount_T);
    function depositDividend(address token, uint tokenAmount) public payable returns(bool)
    {
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(token), "Invalid token");
        if(msg.value > 0) totalDepositedDividend_E[token] = totalDepositedDividend_E[token].add(msg.value);
        if(tokenAmount > 0 ) 
        {
            require(tokenInterface(token).transferFrom(msg.sender, address(this), tokenAmount),"token transfer failed");
            totalDepositedDividend_T[token] = totalDepositedDividend_T[token].add(tokenAmount);
        }
        emit depositDividendEv(token, msg.sender, msg.value, tokenAmount);
        return true;
    }


    event distributeDividendEv(address token, address user, uint amount_E, uint amount_T);
    function distributeDividend(address token) public onlySigner returns(bool)
    {
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(token), "Invalid token");
        require(lastDistributionTime[token] + distributionInterval[token] <= now, "please wait some more time" );
        uint amount_E = ( totalDepositedDividend_E[token]-distributedTotalAmountTillNow_E[token]) * distributionPercent / 100000000;
        uint amount_T = ( totalDepositedDividend_T[token]-distributedTotalAmountTillNow_T[token]) * distributionPercent / 100000000;
        require(amount_E > 0 || amount_T > 0 , "no amount to distribute next");
        if(amount_E > 0)
        {
            distributedTotalAmountTillNow_E[token] += amount_E;
            totalDistributionCount_E[token]++;
        }
        if(amount_T > 0)
        {
            distributedTotalAmountTillNow_T[token] += amount_T;
            totalDistributionCount_T[token]++;
        }
        lastDistributionTime[token] = now;
        emit distributeDividendEv(token,msg.sender, amount_E, amount_T);
        return true;
    }

    function addToRegular(address _token, uint _amount) external returns(bool)
    {
        require(msg.sender == stakingContractAddress || msg.sender == owner, "Invalid caller");
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(_token), "Invalid token");
        require(_amount > 0 , "invalid amount to distribute direct");
        totalDepositedDividend_T[_token] += _amount;
        return true;
    }

    function directDistribute(address _token, uint _amount) external returns(bool)
    {
        require(msg.sender == stakingContractAddress || msg.sender == owner, "Invalid caller");
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(_token), "Invalid token");
        require(_amount > 0 , "invalid amount to distribute direct");
        if(userDatas[_token][tx.origin].totalWhenWithdrawn_T == 0 && userDatas[_token][tx.origin].totalWhenWithdrawn_Direct == 0 && userDatas[_token][tx.origin].totalWhenWithdrawn_E == 0)
        {
            userDatas[_token][tx.origin].totalWhenWithdrawn_T = distributedTotalAmountTillNow_T[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_Direct = distributedTotalAmountTillNow_Direct[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_E = distributedTotalAmountTillNow_E[_token];
        }
        if(accumulateDirect[_token])
        {
            accumulatedDirectDividend[_token] += _amount;
            totalDepositedDividend_T[_token] += _amount;
        }
        else
        {
            distributedTotalAmountTillNow_Direct[_token] += _amount;
            totalDepositedDividend_Direct[_token] += _amount;
            totalDistributionCount_Direct[_token]++;
        }
        return true;
    }

    event withdrawMyDividendEv(address token, address user, uint amount_E, uint amount_T);
    // searchFrom = 0 means start searching from latest stake records of the user, and if >  0 then before latest
    function withdrawMyDividend(address _token, bool _reInvest) public returns (bool)
    {
        require(!safeGuard, "Paused by admin");
        require(UTOPIAInterface(stakingContractAddress).authorisedToken(_token), "Invalid token");
        require(!UTOPIAInterface(stakingContractAddress).blackListedUser(_token, tx.origin), "user not allowed");
        uint totalStaked = UTOPIAInterface(stakingContractAddress).totalStakedAmount(_token);
        if(totalStaked == 0 && userDatas[_token][tx.origin].totalWhenWithdrawn_T == 0 && userDatas[_token][tx.origin].totalWhenWithdrawn_Direct == 0 && userDatas[_token][tx.origin].totalWhenWithdrawn_E == 0)
        {
            require(msg.sender == stakingContractAddress, "Invalid caller");
            userDatas[_token][tx.origin].totalWhenWithdrawn_T = distributedTotalAmountTillNow_T[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_Direct = distributedTotalAmountTillNow_Direct[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_E = distributedTotalAmountTillNow_E[_token];
            return true;
        }
        uint amount_E = distributedTotalAmountTillNow_E[_token].sub(userDatas[_token][tx.origin].totalWhenWithdrawn_E);
        uint amount_T = distributedTotalAmountTillNow_T[_token].sub(userDatas[_token][tx.origin].totalWhenWithdrawn_T);
        uint amount_Direct = distributedTotalAmountTillNow_Direct[_token].sub(userDatas[_token][tx.origin].totalWhenWithdrawn_Direct);
        uint userStaked = UTOPIAInterface(stakingContractAddress).userStakedAmount(_token, tx.origin);

        if(totalStaked > 0)
        {
            uint gain_E = ( amount_E * (userStaked * 100000000 / totalStaked)) / 100000000;
            uint gain_T = ( amount_T * (userStaked * 100000000 / totalStaked)) / 100000000;
            gain_T += ( amount_Direct * (userStaked * 100000000 / totalStaked)) / 100000000;
            userDatas[_token][tx.origin].distCount_T = totalDistributionCount_T[_token];
            userDatas[_token][tx.origin].distCount_Direct = totalDistributionCount_Direct[_token];
            userDatas[_token][tx.origin].distCount_E = totalDistributionCount_E[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_T = distributedTotalAmountTillNow_T[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_Direct = distributedTotalAmountTillNow_Direct[_token];
            userDatas[_token][tx.origin].totalWhenWithdrawn_E = distributedTotalAmountTillNow_E[_token];

            if(gain_E > 0) tx.origin.transfer(gain_E);
            if(gain_T > 0) 
            {
                if(_reInvest)
                {
                    require(tokenInterface(_token).transfer(stakingContractAddress, gain_T ), "token transfer failed");
                    require(UTOPIAInterface(stakingContractAddress).reInvestMyToken(_token, gain_T), "reinvest failed");
                }
                else
                {
                    require(tokenInterface(_token).transfer(tx.origin, gain_T ), "token transfer failed");
                }               
            }
            emit withdrawMyDividendEv(_token,tx.origin,gain_E, gain_T);
        }
        return true;
    }

    function viewMyWithdrawable(address _token, address _user) public view returns(uint amount_E,uint amount_T, uint amount_Direct)
    {
        uint userStaked = UTOPIAInterface(stakingContractAddress).userStakedAmount(_token, _user);
        amount_E = distributedTotalAmountTillNow_E[_token].sub(userDatas[_token][_user].totalWhenWithdrawn_E);
        amount_T = distributedTotalAmountTillNow_T[_token].sub(userDatas[_token][_user].totalWhenWithdrawn_T);
        amount_Direct= distributedTotalAmountTillNow_Direct[_token].sub(userDatas[_token][_user].totalWhenWithdrawn_Direct);

        uint totalStaked = UTOPIAInterface(stakingContractAddress).totalStakedAmount(_token);
        amount_E = ( amount_E * (userStaked * 100000000 / totalStaked)) / 100000000;
        amount_T = ( amount_T * (userStaked * 100000000 / totalStaked)) / 100000000;
        amount_Direct = ( amount_Direct * (userStaked * 100000000 / totalStaked)) / 100000000;
        return (amount_E,amount_T, amount_Direct);
    }

    function currentDepositedAmount(address _token) public view returns(uint amount_E, uint amount_T)
    {
        return (totalDepositedDividend_E[_token] - distributedTotalAmountTillNow_E[_token],totalDepositedDividend_T[_token] - distributedTotalAmountTillNow_T[_token]);
    }

    function viewDistributionAmount(address _token) public view returns (uint amount_E, uint amount_T)
    {
        return (distributedTotalAmountTillNow_E[_token],distributedTotalAmountTillNow_T[_token] );
    }    

    function viewTotalDirectDeposited(address _token) public view returns (uint amount_Direct)
    {
        return (accumulatedDirectDividend[_token] );
    }   

    function emergencyWithdrawEth(uint _amount) public onlyOwner returns (bool)
    {
        owner.transfer(_amount);
        return true;
    }

    function emergencyWithdrawToken(address _token, uint _amount) public onlyOwner returns (bool)
    {
        require(tokenInterface(_token).transfer(owner, _amount ), "token transfer failed");
        return true;
    }

    function changeSafeGuardStatus() public onlyOwner returns(bool)
    {
        safeGuard = !safeGuard;
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_E","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount_T","type":"uint256"}],"name":"depositDividendEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_E","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount_T","type":"uint256"}],"name":"distributeDividendEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_E","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount_T","type":"uint256"}],"name":"withdrawMyDividendEv","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accumulateDirect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accumulatedDirectDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addToRegular","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_delayInSeconds","type":"uint256"},{"internalType":"bool","name":"_increase","type":"bool"}],"name":"adjustDistributionTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeSafeGuardStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_signer","type":"address"}],"name":"changeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"currentDepositedAmount","outputs":[{"internalType":"uint256","name":"amount_E","type":"uint256"},{"internalType":"uint256","name":"amount_T","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"depositDividend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"directDistribute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"distributeDividend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributedTotalAmountTillNow_Direct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributedTotalAmountTillNow_E","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributedTotalAmountTillNow_T","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"distributionInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"distributionPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdrawEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"emergencyWithdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastDistributionTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"resetUserDatas","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"safeGuard","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"_accumulateDirect","type":"bool"}],"name":"setAccumulateDirect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_stakingContractAddress","type":"address"},{"internalType":"uint256","name":"_distributionPercent","type":"uint256"}],"name":"setStakingContractAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_distributionInterval","type":"uint256"}],"name":"setdistributionInterval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signer","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDepositedDividend_Direct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDepositedDividend_E","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDepositedDividend_T","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDistributionCount_Direct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDistributionCount_E","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalDistributionCount_T","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalWithdrawnByUser_E","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalWithdrawnByUser_T","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"userDatas","outputs":[{"internalType":"uint256","name":"distCount_T","type":"uint256"},{"internalType":"uint256","name":"distCount_Direct","type":"uint256"},{"internalType":"uint256","name":"distCount_E","type":"uint256"},{"internalType":"uint256","name":"totalWhenWithdrawn_T","type":"uint256"},{"internalType":"uint256","name":"totalWhenWithdrawn_Direct","type":"uint256"},{"internalType":"uint256","name":"totalWhenWithdrawn_E","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"viewDistributionAmount","outputs":[{"internalType":"uint256","name":"amount_E","type":"uint256"},{"internalType":"uint256","name":"amount_T","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"viewMyWithdrawable","outputs":[{"internalType":"uint256","name":"amount_E","type":"uint256"},{"internalType":"uint256","name":"amount_T","type":"uint256"},{"internalType":"uint256","name":"amount_Direct","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"viewTotalDirectDeposited","outputs":[{"internalType":"uint256","name":"amount_Direct","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_reInvest","type":"bool"}],"name":"withdrawMyDividend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060008054336001600160a01b0319918216811783556002805490921617905561295f90819061004090396000f3fe6080604052600436106102505760003560e01c806389e2761f11610139578063cf0c4c9b116100b6578063e32daaf51161007a578063e32daaf51461096d578063e9acd85a146109a0578063eea2a4b7146109e1578063eef659d014610a14578063f2fde38b14610a4f578063f5e80d1414610a8257610250565b8063cf0c4c9b14610858578063d4ee1d901461088b578063d7c157db146108a0578063df683e92146108f9578063dfed98dc1461093257610250565b8063aad2b723116100fd578063aad2b72314610753578063b4b45c5914610786578063b93ac4f1146107bf578063b9bfb296146107f2578063c1e80a141461082557610250565b806389e2761f146106665780638da5cb5b1461069f578063985c4c8a146106b4578063a01d2f91146106e7578063a4c3b0911461071a57610250565b806348f2090b116101d25780635f78d6bd116101965780635f78d6bd1461056d57806363977dff146105995780636ead5a7c146105cc57806379279fd11461060757806379ba50971461061c578063847ec40c1461063357610250565b806348f2090b14610473578063492377451461048857806352b27c5c146104bb5780635319504a146104ee57806355529f921461052157610250565b8063238ac93311610219578063238ac9331461039d5780633535f48b146103ce57806336bffa03146103e3578063429093cc1461041657806347d7ee361461044057610250565b80629ced1d14610255578063066ba3821461029a5780630929b472146102cd5780630e32fbe31461033b578063108ef30514610388575b600080fd5b34801561026157600080fd5b506102886004803603602081101561027857600080fd5b50356001600160a01b0316610ab5565b60408051918252519081900360200190f35b3480156102a657600080fd5b50610288600480360360208110156102bd57600080fd5b50356001600160a01b0316610ac7565b3480156102d957600080fd5b50610308600480360360408110156102f057600080fd5b506001600160a01b0381358116916020013516610ad9565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561034757600080fd5b506103746004803603604081101561035e57600080fd5b506001600160a01b038135169060200135610b19565b604080519115158252519081900360200190f35b34801561039457600080fd5b50610374610ca2565b3480156103a957600080fd5b506103b2610cdf565b604080516001600160a01b039092168252519081900360200190f35b3480156103da57600080fd5b506103b2610cee565b3480156103ef57600080fd5b506103746004803603602081101561040657600080fd5b50356001600160a01b0316610cfd565b34801561042257600080fd5b506103746004803603602081101561043957600080fd5b5035610d12565b34801561044c57600080fd5b506102886004803603602081101561046357600080fd5b50356001600160a01b0316610d6c565b34801561047f57600080fd5b50610288610d7e565b34801561049457600080fd5b50610288600480360360208110156104ab57600080fd5b50356001600160a01b0316610d84565b3480156104c757600080fd5b50610288600480360360208110156104de57600080fd5b50356001600160a01b0316610d96565b3480156104fa57600080fd5b506103746004803603602081101561051157600080fd5b50356001600160a01b0316610da8565b34801561052d57600080fd5b506105546004803603602081101561054457600080fd5b50356001600160a01b03166110ba565b6040805192835260208301919091528051918290030190f35b6103746004803603604081101561058357600080fd5b506001600160a01b0381351690602001356110f8565b3480156105a557600080fd5b50610288600480360360208110156105bc57600080fd5b50356001600160a01b0316611369565b3480156105d857600080fd5b50610374600480360360408110156105ef57600080fd5b506001600160a01b038135169060200135151561137b565b34801561061357600080fd5b5061037461147c565b34801561062857600080fd5b5061063161148c565b005b34801561063f57600080fd5b506102886004803603602081101561065657600080fd5b50356001600160a01b0316611507565b34801561067257600080fd5b506103746004803603604081101561068957600080fd5b506001600160a01b038135169060200135611519565b3480156106ab57600080fd5b506103b261160c565b3480156106c057600080fd5b50610288600480360360208110156106d757600080fd5b50356001600160a01b031661161b565b3480156106f357600080fd5b506102886004803603602081101561070a57600080fd5b50356001600160a01b031661162d565b34801561072657600080fd5b506103746004803603604081101561073d57600080fd5b506001600160a01b03813516906020013561163f565b34801561075f57600080fd5b506106316004803603602081101561077657600080fd5b50356001600160a01b0316611723565b34801561079257600080fd5b50610374600480360360408110156107a957600080fd5b506001600160a01b03813516906020013561175c565b3480156107cb57600080fd5b50610288600480360360208110156107e257600080fd5b50356001600160a01b031661179e565b3480156107fe57600080fd5b506102886004803603602081101561081557600080fd5b50356001600160a01b03166117b0565b34801561083157600080fd5b506102886004803603602081101561084857600080fd5b50356001600160a01b03166117c2565b34801561086457600080fd5b506102886004803603602081101561087b57600080fd5b50356001600160a01b03166117d4565b34801561089757600080fd5b506103b26117e6565b3480156108ac57600080fd5b506108db600480360360408110156108c357600080fd5b506001600160a01b03813581169160200135166117f5565b60408051938452602084019290925282820152519081900360600190f35b34801561090557600080fd5b506103746004803603604081101561091c57600080fd5b506001600160a01b038135169060200135611a46565b34801561093e57600080fd5b506103746004803603604081101561095557600080fd5b506001600160a01b0381358116916020013516611d25565b34801561097957600080fd5b506102886004803603602081101561099057600080fd5b50356001600160a01b0316611dda565b3480156109ac57600080fd5b50610374600480360360608110156109c357600080fd5b506001600160a01b0381351690602081013590604001351515611df5565b3480156109ed57600080fd5b5061055460048036036020811015610a0457600080fd5b50356001600160a01b0316611f1a565b348015610a2057600080fd5b5061037460048036036040811015610a3757600080fd5b506001600160a01b0381351690602001351515611f42565b348015610a5b57600080fd5b5061063160048036036020811015610a7257600080fd5b50356001600160a01b0316612812565b348015610a8e57600080fd5b5061028860048036036020811015610aa557600080fd5b50356001600160a01b031661284b565b60076020526000908152604090205481565b60096020526000908152604090205481565b6003602081815260009384526040808520909152918352912080546001820154600283015493830154600484015460059094015492949193919290919086565b6014546000906001600160a01b0316331480610b3f57506000546001600160a01b031633145b610b81576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d6020811015610bf857600080fd5b5051610c3b576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b60008211610c7a5760405162461bcd60e51b81526004018080602001828103825260238152602001806129086023913960400191505060405180910390fd5b506001600160a01b038216600090815260076020526040902080548201905560015b92915050565b600080546001600160a01b03163314610cba57600080fd5b506002805460ff60a01b198116600160a01b9182900460ff1615909102179055600190565b6002546001600160a01b031681565b6014546001600160a01b031681565b60066020526000908152604090205460ff1681565b600080546001600160a01b03163314610d2a57600080fd5b600080546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610d63573d6000803e3d6000fd5b50600192915050565b600f6020526000908152604090205481565b60135481565b60086020526000908152604090205481565b600c6020526000908152604090205481565b6002546000906001600160a01b03163314610e02576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0385811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b5051610ebc576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b6001600160a01b0382166000908152600560209081526040808320546004909252909120544291011115610f37576040805162461bcd60e51b815260206004820152601a60248201527f706c65617365207761697420736f6d65206d6f72652074696d65000000000000604482015290519081900360640190fd5b6013546001600160a01b0383166000908152600d60209081526040808320546009835281842054600c845282852054600790945291909320546305f5e10093909103840283900493919003020481151580610f925750600081115b610fe3576040805162461bcd60e51b815260206004820152601c60248201527f6e6f20616d6f756e7420746f2064697374726962757465206e65787400000000604482015290519081900360640190fd5b8115611019576001600160a01b0384166000908152600d6020908152604080832080548601905560119091529020805460010190555b801561104f576001600160a01b0384166000908152600c60209081526040808320805485019055600f9091529020805460010190555b6001600160a01b0384166000818152600460209081526040918290204290558151928352339083015281810184905260608201839052517f278f7297319dfab8e0d1ce792069b38ba7f4fe1195a170f5c057a583a4d42f0f9181900360800190a15060019392505050565b6001600160a01b03166000908152600d60209081526040808320546009835281842054600c8452828520546007909452919093205492900392910390565b6014546040805163c48ce27d60e01b81526001600160a01b0385811660048301529151600093929092169163c48ce27d91602480820192602092909190829003018186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506040513d602081101561117357600080fd5b50516111b6576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b34156111ff576001600160a01b0383166000908152600960205260409020546111e5903463ffffffff61285d16565b6001600160a01b0384166000908152600960205260409020555b811561131257604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561125a57600080fd5b505af115801561126e573d6000803e3d6000fd5b505050506040513d602081101561128457600080fd5b50516112cf576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600760205260409020546112f8908363ffffffff61285d16565b6001600160a01b0384166000908152600760205260409020555b604080516001600160a01b038516815233602082015234818301526060810184905290517f7f5732da12c4293283294674648aa892b9dcd7ef279a13ee87cecec9aae256009181900360800190a150600192915050565b600a6020526000908152604090205481565b600080546001600160a01b0316331461139357600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d602081101561140a57600080fd5b505161144d576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b506001600160a01b0382166000908152600660205260409020805482151560ff19909116179055600192915050565b600254600160a01b900460ff1681565b6001546001600160a01b031633146114a357600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60046020526000908152604090205481565b600080546001600160a01b0316331461153157600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b15801561157e57600080fd5b505afa158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50516115eb576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b506001600160a01b0391909116600090815260056020526040902055600190565b6000546001600160a01b031681565b60116020526000908152604090205481565b600e6020526000908152604090205481565b600080546001600160a01b0316331461165757600080fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b505050506040513d60208110156116d857600080fd5b5051610d63576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6000546001600160a01b0316331461173a57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0316331461177457600080fd5b50601480546001600160a01b0319166001600160a01b039390931692909217909155601355600190565b600b6020526000908152604090205481565b600d6020526000908152604090205481565b60106020526000908152604090205481565b60126020526000908152604090205481565b6001546001600160a01b031681565b60145460408051638302fe1160e01b81526001600160a01b038581166004830152848116602483015291516000938493849384939190921691638302fe11916044808301926020929190829003018186803b15801561185357600080fd5b505afa158015611867573d6000803e3d6000fd5b505050506040513d602081101561187d57600080fd5b50516001600160a01b038088166000818152600360209081526040808320948b16835293815283822060050154928252600d905291909120549192506118c9919063ffffffff6128b416565b6001600160a01b038088166000818152600360208181526040808420958c16845294815284832090910154928252600c90529190912054919550611913919063ffffffff6128b416565b6001600160a01b038088166000818152600360209081526040808320948b16835293815283822060040154928252600e9052919091205491945061195d919063ffffffff6128b416565b6014546040805163f3dbdfe560e01b81526001600160a01b038a811660048301529151939550600093919092169163f3dbdfe5916024808301926020929190829003018186803b1580156119b057600080fd5b505afa1580156119c4573d6000803e3d6000fd5b505050506040513d60208110156119da57600080fd5b505190506305f5e10081838202816119ee57fe5b048602816119f857fe5b0494506305f5e10081836305f5e1000281611a0f57fe5b04850281611a1957fe5b0493506305f5e10081836305f5e1000281611a3057fe5b04840281611a3a57fe5b04925050509250925092565b6014546000906001600160a01b0316331480611a6c57506000546001600160a01b031633145b611aae576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611afb57600080fd5b505afa158015611b0f573d6000803e3d6000fd5b505050506040513d6020811015611b2557600080fd5b5051611b68576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b60008211611ba75760405162461bcd60e51b81526004018080602001828103825260238152602001806129086023913960400191505060405180910390fd5b6001600160a01b03831660009081526003602081815260408084203285529091529091200154158015611bfe57506001600160a01b0383166000908152600360209081526040808320328452909152902060040154155b8015611c2e57506001600160a01b0383166000908152600360209081526040808320328452909152902060050154155b15611c8c576001600160a01b0383166000818152600c602090815260408083205460038084528285203280875281865284872092830193909355958552600e8452828520546004820155600d84529184205493529290526005909101555b6001600160a01b03831660009081526006602052604090205460ff1615611ce0576001600160a01b038316600090815260126020908152604080832080548601905560079091529020805483019055610d63565b6001600160a01b0383166000908152600e6020908152604080832080548601905560088252808320805486019055601090915290208054600101905550600192915050565b6014546000906001600160a01b03163314611d87576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642063616c6c657220746f207265736574000000000000000000604482015290519081900360640190fd5b506001600160a01b03918216600090815260036020818152604080842094909516835292909252918220828155600180820184905560028201849055918101839055600481018390556005019190915590565b6001600160a01b031660009081526012602052604090205490565b600080546001600160a01b03163314611e0d57600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0387811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611e5a57600080fd5b505afa158015611e6e573d6000803e3d6000fd5b505050506040513d6020811015611e8457600080fd5b5051611ec7576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b8115611ef0576001600160a01b0384166000908152600460205260409020805484019055611f10565b6001600160a01b0384166000908152600460205260409020805484900390555b5060019392505050565b6001600160a01b03166000908152600d6020908152604080832054600c909252909120549091565b600254600090600160a01b900460ff1615611f96576040805162461bcd60e51b815260206004820152600f60248201526e2830bab9b2b210313c9030b236b4b760891b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d602081101561200d57600080fd5b5051612050576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b6014546040805163dab4574360e01b81526001600160a01b0386811660048301523260248301529151919092169163dab457439160448083019260209291908290030181600087803b1580156120a557600080fd5b505af11580156120b9573d6000803e3d6000fd5b505050506040513d60208110156120cf57600080fd5b505115612116576040805162461bcd60e51b815260206004820152601060248201526f1d5cd95c881b9bdd08185b1b1bddd95960821b604482015290519081900360640190fd5b6014546040805163f3dbdfe560e01b81526001600160a01b0386811660048301529151600093929092169163f3dbdfe591602480820192602092909190829003018186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d602081101561219157600080fd5b50519050801580156121c657506001600160a01b03841660009081526003602081815260408084203285529091529091200154155b80156121f657506001600160a01b0384166000908152600360209081526040808320328452909152902060040154155b801561222657506001600160a01b0384166000908152600360209081526040808320328452909152902060050154155b156122dc576014546001600160a01b0316331461227b576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b50506001600160a01b0382166000818152600c602090815260408083205460038084528285203280875281865284872092830193909355958552600e8452828520546004820155600d84529184205493529290526005909101556001610c9c565b6001600160a01b0384166000818152600360209081526040808320328452825280832060050154938352600d9091528120549091612320919063ffffffff6128b416565b6001600160a01b0386166000818152600360208181526040808420328552825280842090920154938352600c9052812054929350916123649163ffffffff6128b416565b6001600160a01b0387166000818152600360209081526040808320328452825280832060040154938352600e909152812054929350916123a99163ffffffff6128b416565b60145460408051638302fe1160e01b81526001600160a01b038b8116600483015232602483015291519394506000939190921691638302fe11916044808301926020929190829003018186803b15801561240257600080fd5b505afa158015612416573d6000803e3d6000fd5b505050506040513d602081101561242c57600080fd5b5051905084156128045760006305f5e10086836305f5e100028161244c57fe5b0486028161245657fe5b04905060006305f5e10087846305f5e100028161246f57fe5b0486028161247957fe5b0490506305f5e10087846305f5e100028161249057fe5b0485028161249a57fe5b6001600160a01b038c166000818152600f60209081526040808320546003808452828520328087528186528487209384559686526010855283862054600184015560118552838620546002840155600c85528386205491830191909155600e8452828520546004830155600d845291842054949093529052600501550401811561254d57604051329083156108fc029084906000818181858888f1935050505015801561254b573d6000803e3d6000fd5b505b80156127b25788156126ee576014546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018490529051918c169163a9059cbb916044808201926020929091908290030181600087803b1580156125af57600080fd5b505af11580156125c3573d6000803e3d6000fd5b505050506040513d60208110156125d957600080fd5b5051612624576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b601454604080516309fe787560e31b81526001600160a01b038d811660048301526024820185905291519190921691634ff3c3a89160448083019260209291908290030181600087803b15801561267a57600080fd5b505af115801561268e573d6000803e3d6000fd5b505050506040513d60208110156126a457600080fd5b50516126e9576040805162461bcd60e51b815260206004820152600f60248201526e1c995a5b9d995cdd0819985a5b1959608a1b604482015290519081900360640190fd5b6127b2565b6040805163a9059cbb60e01b81523260048201526024810183905290516001600160a01b038c169163a9059cbb9160448083019260209291908290030181600087803b15801561273d57600080fd5b505af1158015612751573d6000803e3d6000fd5b505050506040513d602081101561276757600080fd5b50516127b2576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b604080516001600160a01b038c1681523260208201528082018490526060810183905290517f976f08b02f6a195520e0ad8f745365492909d38b86aa9eb4fbeb6dd1fa6bbeac9181900360800190a150505b506001979650505050505050565b6000546001600160a01b0316331461282957600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205481565b6000828201838110156128ad576040805162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081859190819985a5b1959606a1b604482015290519081900360640190fd5b9392505050565b600082821115612901576040805162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081cdd588819985a5b1959606a1b604482015290519081900360640190fd5b5090039056fe696e76616c696420616d6f756e7420746f206469737472696275746520646972656374a265627a7a72315820a0f1969d71cd92f316736f1b30170e2e84fbac0f704ac18fa53bc3413ab5eb9b64736f6c63430005100032

Deployed Bytecode

0x6080604052600436106102505760003560e01c806389e2761f11610139578063cf0c4c9b116100b6578063e32daaf51161007a578063e32daaf51461096d578063e9acd85a146109a0578063eea2a4b7146109e1578063eef659d014610a14578063f2fde38b14610a4f578063f5e80d1414610a8257610250565b8063cf0c4c9b14610858578063d4ee1d901461088b578063d7c157db146108a0578063df683e92146108f9578063dfed98dc1461093257610250565b8063aad2b723116100fd578063aad2b72314610753578063b4b45c5914610786578063b93ac4f1146107bf578063b9bfb296146107f2578063c1e80a141461082557610250565b806389e2761f146106665780638da5cb5b1461069f578063985c4c8a146106b4578063a01d2f91146106e7578063a4c3b0911461071a57610250565b806348f2090b116101d25780635f78d6bd116101965780635f78d6bd1461056d57806363977dff146105995780636ead5a7c146105cc57806379279fd11461060757806379ba50971461061c578063847ec40c1461063357610250565b806348f2090b14610473578063492377451461048857806352b27c5c146104bb5780635319504a146104ee57806355529f921461052157610250565b8063238ac93311610219578063238ac9331461039d5780633535f48b146103ce57806336bffa03146103e3578063429093cc1461041657806347d7ee361461044057610250565b80629ced1d14610255578063066ba3821461029a5780630929b472146102cd5780630e32fbe31461033b578063108ef30514610388575b600080fd5b34801561026157600080fd5b506102886004803603602081101561027857600080fd5b50356001600160a01b0316610ab5565b60408051918252519081900360200190f35b3480156102a657600080fd5b50610288600480360360208110156102bd57600080fd5b50356001600160a01b0316610ac7565b3480156102d957600080fd5b50610308600480360360408110156102f057600080fd5b506001600160a01b0381358116916020013516610ad9565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561034757600080fd5b506103746004803603604081101561035e57600080fd5b506001600160a01b038135169060200135610b19565b604080519115158252519081900360200190f35b34801561039457600080fd5b50610374610ca2565b3480156103a957600080fd5b506103b2610cdf565b604080516001600160a01b039092168252519081900360200190f35b3480156103da57600080fd5b506103b2610cee565b3480156103ef57600080fd5b506103746004803603602081101561040657600080fd5b50356001600160a01b0316610cfd565b34801561042257600080fd5b506103746004803603602081101561043957600080fd5b5035610d12565b34801561044c57600080fd5b506102886004803603602081101561046357600080fd5b50356001600160a01b0316610d6c565b34801561047f57600080fd5b50610288610d7e565b34801561049457600080fd5b50610288600480360360208110156104ab57600080fd5b50356001600160a01b0316610d84565b3480156104c757600080fd5b50610288600480360360208110156104de57600080fd5b50356001600160a01b0316610d96565b3480156104fa57600080fd5b506103746004803603602081101561051157600080fd5b50356001600160a01b0316610da8565b34801561052d57600080fd5b506105546004803603602081101561054457600080fd5b50356001600160a01b03166110ba565b6040805192835260208301919091528051918290030190f35b6103746004803603604081101561058357600080fd5b506001600160a01b0381351690602001356110f8565b3480156105a557600080fd5b50610288600480360360208110156105bc57600080fd5b50356001600160a01b0316611369565b3480156105d857600080fd5b50610374600480360360408110156105ef57600080fd5b506001600160a01b038135169060200135151561137b565b34801561061357600080fd5b5061037461147c565b34801561062857600080fd5b5061063161148c565b005b34801561063f57600080fd5b506102886004803603602081101561065657600080fd5b50356001600160a01b0316611507565b34801561067257600080fd5b506103746004803603604081101561068957600080fd5b506001600160a01b038135169060200135611519565b3480156106ab57600080fd5b506103b261160c565b3480156106c057600080fd5b50610288600480360360208110156106d757600080fd5b50356001600160a01b031661161b565b3480156106f357600080fd5b506102886004803603602081101561070a57600080fd5b50356001600160a01b031661162d565b34801561072657600080fd5b506103746004803603604081101561073d57600080fd5b506001600160a01b03813516906020013561163f565b34801561075f57600080fd5b506106316004803603602081101561077657600080fd5b50356001600160a01b0316611723565b34801561079257600080fd5b50610374600480360360408110156107a957600080fd5b506001600160a01b03813516906020013561175c565b3480156107cb57600080fd5b50610288600480360360208110156107e257600080fd5b50356001600160a01b031661179e565b3480156107fe57600080fd5b506102886004803603602081101561081557600080fd5b50356001600160a01b03166117b0565b34801561083157600080fd5b506102886004803603602081101561084857600080fd5b50356001600160a01b03166117c2565b34801561086457600080fd5b506102886004803603602081101561087b57600080fd5b50356001600160a01b03166117d4565b34801561089757600080fd5b506103b26117e6565b3480156108ac57600080fd5b506108db600480360360408110156108c357600080fd5b506001600160a01b03813581169160200135166117f5565b60408051938452602084019290925282820152519081900360600190f35b34801561090557600080fd5b506103746004803603604081101561091c57600080fd5b506001600160a01b038135169060200135611a46565b34801561093e57600080fd5b506103746004803603604081101561095557600080fd5b506001600160a01b0381358116916020013516611d25565b34801561097957600080fd5b506102886004803603602081101561099057600080fd5b50356001600160a01b0316611dda565b3480156109ac57600080fd5b50610374600480360360608110156109c357600080fd5b506001600160a01b0381351690602081013590604001351515611df5565b3480156109ed57600080fd5b5061055460048036036020811015610a0457600080fd5b50356001600160a01b0316611f1a565b348015610a2057600080fd5b5061037460048036036040811015610a3757600080fd5b506001600160a01b0381351690602001351515611f42565b348015610a5b57600080fd5b5061063160048036036020811015610a7257600080fd5b50356001600160a01b0316612812565b348015610a8e57600080fd5b5061028860048036036020811015610aa557600080fd5b50356001600160a01b031661284b565b60076020526000908152604090205481565b60096020526000908152604090205481565b6003602081815260009384526040808520909152918352912080546001820154600283015493830154600484015460059094015492949193919290919086565b6014546000906001600160a01b0316331480610b3f57506000546001600160a01b031633145b610b81576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d6020811015610bf857600080fd5b5051610c3b576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b60008211610c7a5760405162461bcd60e51b81526004018080602001828103825260238152602001806129086023913960400191505060405180910390fd5b506001600160a01b038216600090815260076020526040902080548201905560015b92915050565b600080546001600160a01b03163314610cba57600080fd5b506002805460ff60a01b198116600160a01b9182900460ff1615909102179055600190565b6002546001600160a01b031681565b6014546001600160a01b031681565b60066020526000908152604090205460ff1681565b600080546001600160a01b03163314610d2a57600080fd5b600080546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610d63573d6000803e3d6000fd5b50600192915050565b600f6020526000908152604090205481565b60135481565b60086020526000908152604090205481565b600c6020526000908152604090205481565b6002546000906001600160a01b03163314610e02576040805162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0385811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b5051610ebc576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b6001600160a01b0382166000908152600560209081526040808320546004909252909120544291011115610f37576040805162461bcd60e51b815260206004820152601a60248201527f706c65617365207761697420736f6d65206d6f72652074696d65000000000000604482015290519081900360640190fd5b6013546001600160a01b0383166000908152600d60209081526040808320546009835281842054600c845282852054600790945291909320546305f5e10093909103840283900493919003020481151580610f925750600081115b610fe3576040805162461bcd60e51b815260206004820152601c60248201527f6e6f20616d6f756e7420746f2064697374726962757465206e65787400000000604482015290519081900360640190fd5b8115611019576001600160a01b0384166000908152600d6020908152604080832080548601905560119091529020805460010190555b801561104f576001600160a01b0384166000908152600c60209081526040808320805485019055600f9091529020805460010190555b6001600160a01b0384166000818152600460209081526040918290204290558151928352339083015281810184905260608201839052517f278f7297319dfab8e0d1ce792069b38ba7f4fe1195a170f5c057a583a4d42f0f9181900360800190a15060019392505050565b6001600160a01b03166000908152600d60209081526040808320546009835281842054600c8452828520546007909452919093205492900392910390565b6014546040805163c48ce27d60e01b81526001600160a01b0385811660048301529151600093929092169163c48ce27d91602480820192602092909190829003018186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506040513d602081101561117357600080fd5b50516111b6576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b34156111ff576001600160a01b0383166000908152600960205260409020546111e5903463ffffffff61285d16565b6001600160a01b0384166000908152600960205260409020555b811561131257604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561125a57600080fd5b505af115801561126e573d6000803e3d6000fd5b505050506040513d602081101561128457600080fd5b50516112cf576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600760205260409020546112f8908363ffffffff61285d16565b6001600160a01b0384166000908152600760205260409020555b604080516001600160a01b038516815233602082015234818301526060810184905290517f7f5732da12c4293283294674648aa892b9dcd7ef279a13ee87cecec9aae256009181900360800190a150600192915050565b600a6020526000908152604090205481565b600080546001600160a01b0316331461139357600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b1580156113e057600080fd5b505afa1580156113f4573d6000803e3d6000fd5b505050506040513d602081101561140a57600080fd5b505161144d576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b506001600160a01b0382166000908152600660205260409020805482151560ff19909116179055600192915050565b600254600160a01b900460ff1681565b6001546001600160a01b031633146114a357600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60046020526000908152604090205481565b600080546001600160a01b0316331461153157600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b15801561157e57600080fd5b505afa158015611592573d6000803e3d6000fd5b505050506040513d60208110156115a857600080fd5b50516115eb576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b506001600160a01b0391909116600090815260056020526040902055600190565b6000546001600160a01b031681565b60116020526000908152604090205481565b600e6020526000908152604090205481565b600080546001600160a01b0316331461165757600080fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b505050506040513d60208110156116d857600080fd5b5051610d63576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6000546001600160a01b0316331461173a57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0316331461177457600080fd5b50601480546001600160a01b0319166001600160a01b039390931692909217909155601355600190565b600b6020526000908152604090205481565b600d6020526000908152604090205481565b60106020526000908152604090205481565b60126020526000908152604090205481565b6001546001600160a01b031681565b60145460408051638302fe1160e01b81526001600160a01b038581166004830152848116602483015291516000938493849384939190921691638302fe11916044808301926020929190829003018186803b15801561185357600080fd5b505afa158015611867573d6000803e3d6000fd5b505050506040513d602081101561187d57600080fd5b50516001600160a01b038088166000818152600360209081526040808320948b16835293815283822060050154928252600d905291909120549192506118c9919063ffffffff6128b416565b6001600160a01b038088166000818152600360208181526040808420958c16845294815284832090910154928252600c90529190912054919550611913919063ffffffff6128b416565b6001600160a01b038088166000818152600360209081526040808320948b16835293815283822060040154928252600e9052919091205491945061195d919063ffffffff6128b416565b6014546040805163f3dbdfe560e01b81526001600160a01b038a811660048301529151939550600093919092169163f3dbdfe5916024808301926020929190829003018186803b1580156119b057600080fd5b505afa1580156119c4573d6000803e3d6000fd5b505050506040513d60208110156119da57600080fd5b505190506305f5e10081838202816119ee57fe5b048602816119f857fe5b0494506305f5e10081836305f5e1000281611a0f57fe5b04850281611a1957fe5b0493506305f5e10081836305f5e1000281611a3057fe5b04840281611a3a57fe5b04925050509250925092565b6014546000906001600160a01b0316331480611a6c57506000546001600160a01b031633145b611aae576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611afb57600080fd5b505afa158015611b0f573d6000803e3d6000fd5b505050506040513d6020811015611b2557600080fd5b5051611b68576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b60008211611ba75760405162461bcd60e51b81526004018080602001828103825260238152602001806129086023913960400191505060405180910390fd5b6001600160a01b03831660009081526003602081815260408084203285529091529091200154158015611bfe57506001600160a01b0383166000908152600360209081526040808320328452909152902060040154155b8015611c2e57506001600160a01b0383166000908152600360209081526040808320328452909152902060050154155b15611c8c576001600160a01b0383166000818152600c602090815260408083205460038084528285203280875281865284872092830193909355958552600e8452828520546004820155600d84529184205493529290526005909101555b6001600160a01b03831660009081526006602052604090205460ff1615611ce0576001600160a01b038316600090815260126020908152604080832080548601905560079091529020805483019055610d63565b6001600160a01b0383166000908152600e6020908152604080832080548601905560088252808320805486019055601090915290208054600101905550600192915050565b6014546000906001600160a01b03163314611d87576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642063616c6c657220746f207265736574000000000000000000604482015290519081900360640190fd5b506001600160a01b03918216600090815260036020818152604080842094909516835292909252918220828155600180820184905560028201849055918101839055600481018390556005019190915590565b6001600160a01b031660009081526012602052604090205490565b600080546001600160a01b03163314611e0d57600080fd5b6014546040805163c48ce27d60e01b81526001600160a01b0387811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611e5a57600080fd5b505afa158015611e6e573d6000803e3d6000fd5b505050506040513d6020811015611e8457600080fd5b5051611ec7576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b8115611ef0576001600160a01b0384166000908152600460205260409020805484019055611f10565b6001600160a01b0384166000908152600460205260409020805484900390555b5060019392505050565b6001600160a01b03166000908152600d6020908152604080832054600c909252909120549091565b600254600090600160a01b900460ff1615611f96576040805162461bcd60e51b815260206004820152600f60248201526e2830bab9b2b210313c9030b236b4b760891b604482015290519081900360640190fd5b6014546040805163c48ce27d60e01b81526001600160a01b0386811660048301529151919092169163c48ce27d916024808301926020929190829003018186803b158015611fe357600080fd5b505afa158015611ff7573d6000803e3d6000fd5b505050506040513d602081101561200d57600080fd5b5051612050576040805162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015290519081900360640190fd5b6014546040805163dab4574360e01b81526001600160a01b0386811660048301523260248301529151919092169163dab457439160448083019260209291908290030181600087803b1580156120a557600080fd5b505af11580156120b9573d6000803e3d6000fd5b505050506040513d60208110156120cf57600080fd5b505115612116576040805162461bcd60e51b815260206004820152601060248201526f1d5cd95c881b9bdd08185b1b1bddd95960821b604482015290519081900360640190fd5b6014546040805163f3dbdfe560e01b81526001600160a01b0386811660048301529151600093929092169163f3dbdfe591602480820192602092909190829003018186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d602081101561219157600080fd5b50519050801580156121c657506001600160a01b03841660009081526003602081815260408084203285529091529091200154155b80156121f657506001600160a01b0384166000908152600360209081526040808320328452909152902060040154155b801561222657506001600160a01b0384166000908152600360209081526040808320328452909152902060050154155b156122dc576014546001600160a01b0316331461227b576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b50506001600160a01b0382166000818152600c602090815260408083205460038084528285203280875281865284872092830193909355958552600e8452828520546004820155600d84529184205493529290526005909101556001610c9c565b6001600160a01b0384166000818152600360209081526040808320328452825280832060050154938352600d9091528120549091612320919063ffffffff6128b416565b6001600160a01b0386166000818152600360208181526040808420328552825280842090920154938352600c9052812054929350916123649163ffffffff6128b416565b6001600160a01b0387166000818152600360209081526040808320328452825280832060040154938352600e909152812054929350916123a99163ffffffff6128b416565b60145460408051638302fe1160e01b81526001600160a01b038b8116600483015232602483015291519394506000939190921691638302fe11916044808301926020929190829003018186803b15801561240257600080fd5b505afa158015612416573d6000803e3d6000fd5b505050506040513d602081101561242c57600080fd5b5051905084156128045760006305f5e10086836305f5e100028161244c57fe5b0486028161245657fe5b04905060006305f5e10087846305f5e100028161246f57fe5b0486028161247957fe5b0490506305f5e10087846305f5e100028161249057fe5b0485028161249a57fe5b6001600160a01b038c166000818152600f60209081526040808320546003808452828520328087528186528487209384559686526010855283862054600184015560118552838620546002840155600c85528386205491830191909155600e8452828520546004830155600d845291842054949093529052600501550401811561254d57604051329083156108fc029084906000818181858888f1935050505015801561254b573d6000803e3d6000fd5b505b80156127b25788156126ee576014546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018490529051918c169163a9059cbb916044808201926020929091908290030181600087803b1580156125af57600080fd5b505af11580156125c3573d6000803e3d6000fd5b505050506040513d60208110156125d957600080fd5b5051612624576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b601454604080516309fe787560e31b81526001600160a01b038d811660048301526024820185905291519190921691634ff3c3a89160448083019260209291908290030181600087803b15801561267a57600080fd5b505af115801561268e573d6000803e3d6000fd5b505050506040513d60208110156126a457600080fd5b50516126e9576040805162461bcd60e51b815260206004820152600f60248201526e1c995a5b9d995cdd0819985a5b1959608a1b604482015290519081900360640190fd5b6127b2565b6040805163a9059cbb60e01b81523260048201526024810183905290516001600160a01b038c169163a9059cbb9160448083019260209291908290030181600087803b15801561273d57600080fd5b505af1158015612751573d6000803e3d6000fd5b505050506040513d602081101561276757600080fd5b50516127b2576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b604080516001600160a01b038c1681523260208201528082018490526060810183905290517f976f08b02f6a195520e0ad8f745365492909d38b86aa9eb4fbeb6dd1fa6bbeac9181900360800190a150505b506001979650505050505050565b6000546001600160a01b0316331461282957600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205481565b6000828201838110156128ad576040805162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081859190819985a5b1959606a1b604482015290519081900360640190fd5b9392505050565b600082821115612901576040805162461bcd60e51b815260206004820152601360248201527214d8599953585d1a081cdd588819985a5b1959606a1b604482015290519081900360640190fd5b5090039056fe696e76616c696420616d6f756e7420746f206469737472696275746520646972656374a265627a7a72315820a0f1969d71cd92f316736f1b30170e2e84fbac0f704ac18fa53bc3413ab5eb9b64736f6c63430005100032

Deployed Bytecode Sourcemap

2715:13511:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3521:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3521:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3521:57:0;-1:-1:-1;;;;;3521:57:0;;:::i;:::-;;;;;;;;;;;;;;;;3753;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3753:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3753:57:0;-1:-1:-1;;;;;3753:57:0;;:::i;3124:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3124:65:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3124:65:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8778:432;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8778:432:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8778:432:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16089:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16089:132:0;;;:::i;960:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;960:29:0;;;;;;;;;;;;;;4778:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4778:37:0;;;:::i;3390:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3390:49:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3390:49:0;-1:-1:-1;;;;;3390:49:0;;:::i;15706:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15706:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15706:145:0;;:::i;4472:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4472:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4472:57:0;-1:-1:-1;;;;;4472:57:0;;:::i;4738:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:31:0;;;:::i;3636:62::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3636:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3636:62:0;-1:-1:-1;;;;;3636:62:0;;:::i;4140:64::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4140:64:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4140:64:0;-1:-1:-1;;;;;4140:64:0;;:::i;7657:1113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7657:1113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7657:1113:0;-1:-1:-1;;;;;7657:1113:0;;:::i;15025:280::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15025:280:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15025:280:0;-1:-1:-1;;;;;15025:280:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6877:678;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6877:678:0;;;;;;;;:::i;3868:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3868:55:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3868:55:0;-1:-1:-1;;;;;3868:55:0;;:::i;5599:287::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5599:287:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5599:287:0;;;;;;;;;;:::i;3029:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3029:21:0;;;:::i;1718:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1718:196:0;;;:::i;:::-;;3198:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3198:53:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3198:53:0;-1:-1:-1;;;;;3198:53:0;;:::i;5287:304::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5287:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5287:304:0;;;;;;;;:::i;886:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;886:28:0;;;:::i;4605:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4605:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4605:57:0;-1:-1:-1;;;;;4605:57:0;;:::i;4394:69::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4394:69:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4394:69:0;-1:-1:-1;;;;;4394:69:0;;:::i;15859:222::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15859:222:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15859:222:0;;;;;;;;:::i;1376:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1376:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1376:99:0;-1:-1:-1;;;;;1376:99:0;;:::i;5894:274::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5894:274:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5894:274:0;;;;;;;;:::i;4003:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4003:55:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4003:55:0;-1:-1:-1;;;;;4003:55:0;;:::i;4267:64::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4267:64:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4267:64:0;-1:-1:-1;;;;;4267:64:0;;:::i;4536:62::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4536:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4536:62:0;-1:-1:-1;;;;;4536:62:0;;:::i;4671:58::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4671:58:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4671:58:0;-1:-1:-1;;;;;4671:58:0;;:::i;921:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;921:32:0;;;:::i;14009:1008::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14009:1008:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14009:1008:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;9218:1321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9218:1321:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9218:1321:0;;;;;;;;:::i;6228:547::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6228:547:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6228:547:0;;;;;;;;;;:::i;15537:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15537:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15537:158:0;-1:-1:-1;;;;;15537:158:0;;:::i;4824:453::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4824:453:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4824:453:0;;;;;;;;;;;;;;;:::i;15313:212::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15313:212:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15313:212:0;-1:-1:-1;;;;;15313:212:0;;:::i;10754:3247::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10754:3247:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10754:3247:0;;;;;;;;;;:::i;1483:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1483:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1483:110:0;-1:-1:-1;;;;;1483:110:0;;:::i;3289:53::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3289:53:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3289:53:0;-1:-1:-1;;;;;3289:53:0;;:::i;3521:57::-;;;;;;;;;;;;;:::o;3753:::-;;;;;;;;;;;;;:::o;3124:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8778:432::-;8891:22;;8847:4;;-1:-1:-1;;;;;8891:22:0;8877:10;:36;;:59;;-1:-1:-1;8931:5:0;;-1:-1:-1;;;;;8931:5:0;8917:10;:19;8877:59;8869:86;;;;;-1:-1:-1;;;8869:86:0;;;;;;;;;;;;-1:-1:-1;;;8869:86:0;;;;;;;;;;;;;;;8990:22;;8974:63;;;-1:-1:-1;;;8974:63:0;;-1:-1:-1;;;;;8974:63:0;;;;;;;;;8990:22;;;;;8974:55;;:63;;;;;;;;;;;;;;8990:22;8974:63;;;5:2:-1;;;;30:1;27;20:12;5:2;8974:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8974:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8974:63:0;8966:89;;;;;-1:-1:-1;;;8966:89:0;;;;;;;;;;;;-1:-1:-1;;;8966:89:0;;;;;;;;;;;;;;;9084:1;9074:7;:11;9066:60;;;;-1:-1:-1;;;9066:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9137:32:0;;;;;;:24;:32;;;;;:43;;;;;;-1:-1:-1;8778:432:0;;;;;:::o;16089:132::-;16147:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;-1:-1:-1;16182:9:0;;;-1:-1:-1;;;;16169:22:0;;-1:-1:-1;;;16182:9:0;;;;;;16181:10;16169:22;;;;;;-1:-1:-1;;16089:132:0:o;960:29::-;;;-1:-1:-1;;;;;960:29:0;;:::o;4778:37::-;;;-1:-1:-1;;;;;4778:37:0;;:::o;3390:49::-;;;;;;;;;;;;;;;:::o;15706:145::-;15776:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;15798:5;;;:23;;-1:-1:-1;;;;;15798:5:0;;;;:23;;;;;15813:7;;15798:23;:5;:23;15813:7;15798:5;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;15839:4:0;;15706:145;-1:-1:-1;;15706:145:0:o;4472:57::-;;;;;;;;;;;;;:::o;4738:31::-;;;;:::o;3636:62::-;;;;;;;;;;;;;:::o;4140:64::-;;;;;;;;;;;;;:::o;7657:1113::-;1314:6;;7726:4;;-1:-1:-1;;;;;1314:6:0;1300:10;:20;1292:54;;;;;-1:-1:-1;;;1292:54:0;;;;;;;;;;;;-1:-1:-1;;;1292:54:0;;;;;;;;;;;;;;;7772:22;;7756:62;;;-1:-1:-1;;;7756:62:0;;-1:-1:-1;;;;;7756:62:0;;;;;;;;;7772:22;;;;;7756:55;;:62;;;;;;;;;;;;;;7772:22;7756:62;;;5:2:-1;;;;30:1;27;20:12;5:2;7756:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7756:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7756:62:0;7748:88;;;;;-1:-1:-1;;;7748:88:0;;;;;;;;;;;;-1:-1:-1;;;7748:88:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7885:27:0;;;;;;:20;:27;;;;;;;;;7855:20;:27;;;;;;;7916:3;7855:57;;:64;;7847:104;;;;;-1:-1:-1;;;7847:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8054:19;;-1:-1:-1;;;;;8012:38:0;;7962:13;8012:38;;;:31;:38;;;;;;;;;7980:24;:31;;;;;;8146;:38;;;;;;8114:24;:31;;;;;;;;8076:9;7980:70;;;;7978:95;;:107;;;;8114:70;;;8112:95;:107;8238:12;;;;:28;;;8265:1;8254:8;:12;8238:28;8230:70;;;;;-1:-1:-1;;;8230:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8314:12;;8311:151;;-1:-1:-1;;;;;8352:38:0;;;;;;:31;:38;;;;;;;;:50;;;;;;8417:24;:31;;;;;:33;;-1:-1:-1;8417:33:0;;;8311:151;8475:12;;8472:151;;-1:-1:-1;;;;;8513:38:0;;;;;;:31;:38;;;;;;;;:50;;;;;;8578:24;:31;;;;;:33;;-1:-1:-1;8578:33:0;;;8472:151;-1:-1:-1;;;;;8633:27:0;;;;;;:20;:27;;;;;;;;;8663:3;8633:33;;8682:58;;;;;8709:10;8682:58;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8758:4:0;;7657:1113;-1:-1:-1;;;7657:1113:0:o;15025:280::-;-1:-1:-1;;;;;15182:39:0;15093:13;15182:39;;;:31;:39;;;;;;;;;15147:24;:32;;;;;;15257:31;:39;;;;;;15222:24;:32;;;;;;;;15147:74;;;;15222;;;15025:280::o;6877:678::-;7004:22;;6988:62;;;-1:-1:-1;;;6988:62:0;;-1:-1:-1;;;;;6988:62:0;;;;;;;;;6958:4;;7004:22;;;;;6988:55;;:62;;;;;;;;;;;;;;;7004:22;6988:62;;;5:2:-1;;;;30:1;27;20:12;5:2;6988:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6988:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6988:62:0;6980:88;;;;;-1:-1:-1;;;6980:88:0;;;;;;;;;;;;-1:-1:-1;;;6980:88:0;;;;;;;;;;;;;;;7082:9;:13;7079:98;;-1:-1:-1;;;;;7131:31:0;;;;;;:24;:31;;;;;;:46;;7167:9;7131:46;:35;:46;:::i;:::-;-1:-1:-1;;;;;7097:31:0;;;;;;:24;:31;;;;;:80;7079:98;7191:15;;7188:262;;7242:74;;;-1:-1:-1;;;7242:74:0;;7277:10;7242:74;;;;7297:4;7242:74;;;;;;;;;;;;-1:-1:-1;;;;;7242:34:0;;;;;:74;;;;;;;;;;;;;;-1:-1:-1;7242:34:0;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;7242:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7242:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7242:74:0;7234:107;;;;;-1:-1:-1;;;7234:107:0;;;;;;;;;;;;-1:-1:-1;;;7234:107:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7390:31:0;;;;;;:24;:31;;;;;;:48;;7426:11;7390:48;:35;:48;:::i;:::-;-1:-1:-1;;;;;7356:31:0;;;;;;:24;:31;;;;;:82;7188:262;7465:60;;;-1:-1:-1;;;;;7465:60:0;;;;7490:10;7465:60;;;;7502:9;7465:60;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7543:4:0;6877:678;;;;:::o;3868:55::-;;;;;;;;;;;;;:::o;5599:287::-;5692:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;5738:22;;5722:62;;;-1:-1:-1;;;5722:62:0;;-1:-1:-1;;;;;5722:62:0;;;;;;;;;5738:22;;;;;5722:55;;:62;;;;;;;;;;;;;;5738:22;5722:62;;;5:2:-1;;;;30:1;27;20:12;5:2;5722:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5722:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5722:62:0;5714:88;;;;;-1:-1:-1;;;5714:88:0;;;;;;;;;;;;-1:-1:-1;;;5714:88:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5813:23:0;;;;;;:16;:23;;;;;:43;;;;;-1:-1:-1;;5813:43:0;;;;;;;5599:287;;;;:::o;3029:21::-;;;-1:-1:-1;;;3029:21:0;;;;;:::o;1718:196::-;1785:8;;-1:-1:-1;;;;;1785:8:0;1771:10;:22;1763:31;;;;;;1838:8;;;1831:5;;1810:37;;-1:-1:-1;;;;;1838:8:0;;;;1831:5;;;;1810:37;;;1866:8;;;;1858:16;;-1:-1:-1;;;;;;1858:16:0;;;-1:-1:-1;;;;;1866:8:0;;1858:16;;;;1885:21;;;1718:196::o;3198:53::-;;;;;;;;;;;;;:::o;5287:304::-;5389:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;5435:22;;5419:62;;;-1:-1:-1;;;5419:62:0;;-1:-1:-1;;;;;5419:62:0;;;;;;;;;5435:22;;;;;5419:55;;:62;;;;;;;;;;;;;;5435:22;5419:62;;;5:2:-1;;;;30:1;27;20:12;5:2;5419:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5419:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5419:62:0;5411:88;;;;;-1:-1:-1;;;5411:88:0;;;;;;;;;;;;-1:-1:-1;;;5411:88:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5510:27:0;;;;;;;;:20;:27;;;;;:51;5579:4;;5287:304::o;886:28::-;;;-1:-1:-1;;;;;886:28:0;;:::o;4605:57::-;;;;;;;;;;;;;:::o;4394:69::-;;;;;;;;;;;;;:::o;15859:222::-;15947:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;16009:5;;;15977:48;;;-1:-1:-1;;;15977:48:0;;-1:-1:-1;;;;;16009:5:0;;;15977:48;;;;;;;;;;;;:31;;;;;;:48;;;;;;;;;;;;;;;;;:31;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;15977:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15977:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15977:48:0;15969:82;;;;;-1:-1:-1;;;15969:82:0;;;;;;;;;;;;-1:-1:-1;;;15969:82:0;;;;;;;;;;;;;;1376:99;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;1451:6;:16;;-1:-1:-1;;;;;;1451:16:0;-1:-1:-1;;;;;1451:16:0;;;;;;;;;;1376:99::o;5894:274::-;6015:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;-1:-1:-1;6037:22:0;:48;;-1:-1:-1;;;;;;6037:48:0;-1:-1:-1;;;;;6037:48:0;;;;;;;;;;;6096:19;:42;-1:-1:-1;;5894:274:0:o;4003:55::-;;;;;;;;;;;;;:::o;4267:64::-;;;;;;;;;;;;;:::o;4536:62::-;;;;;;;;;;;;;:::o;4671:58::-;;;;;;;;;;;;;:::o;921:32::-;;;-1:-1:-1;;;;;921:32:0;;:::o;14009:1008::-;14187:22;;14171:71;;;-1:-1:-1;;;14171:71:0;;-1:-1:-1;;;;;14171:71:0;;;;;;;;;;;;;;;;14088:13;;;;;;;;14187:22;;;;;14171:56;;:71;;;;;;;;;;;;;;14187:22;14171:71;;;5:2:-1;;;;30:1;27;20:12;5:2;14171:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14171:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14171:71:0;-1:-1:-1;;;;;14308:17:0;;;;;;;:9;14171:71;14308:17;;;;;;;:24;;;;;;;;;;;:45;;;14264:39;;;:31;:39;;;;;;;14171:71;;-1:-1:-1;14264:90:0;;:39;:90;:43;:90;:::i;:::-;-1:-1:-1;;;;;14420:17:0;;;;;;;:9;:17;;;;;;;;:24;;;;;;;;;;;:45;;;;14376:39;;;:31;:39;;;;;;;14253:101;;-1:-1:-1;14376:90:0;;:39;:90;:43;:90;:::i;:::-;-1:-1:-1;;;;;14541:17:0;;;;;;;:9;:17;;;;;;;;:24;;;;;;;;;;;:50;;;14492:44;;;:36;:44;;;;;;;14365:101;;-1:-1:-1;14492:100:0;;:44;:100;:48;:100;:::i;:::-;14640:22;;14624:65;;;-1:-1:-1;;;14624:65:0;;-1:-1:-1;;;;;14624:65:0;;;;;;;;;14477:115;;-1:-1:-1;14605:16:0;;14640:22;;;;;14624:57;;:65;;;;;;;;;;;;;;14640:22;14624:65;;;5:2:-1;;;;30:1;27;20:12;5:2;14624:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14624:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14624:65:0;;-1:-1:-1;14766:9:0;14624:65;14725:22;;;14624:65;14725:36;;;;;14713:8;:49;14711:64;;;;;;14700:75;;14852:9;14836:11;14811:10;14824:9;14811:22;:36;;;;;;14799:8;:49;14797:64;;;;;;14786:75;;14948:9;14932:11;14907:10;14920:9;14907:22;:36;;;;;;14890:13;:54;14888:69;;;;;;;-1:-1:-1;;;14009:1008:0;;;;;:::o;9218:1321::-;9335:22;;9291:4;;-1:-1:-1;;;;;9335:22:0;9321:10;:36;;:59;;-1:-1:-1;9375:5:0;;-1:-1:-1;;;;;9375:5:0;9361:10;:19;9321:59;9313:86;;;;;-1:-1:-1;;;9313:86:0;;;;;;;;;;;;-1:-1:-1;;;9313:86:0;;;;;;;;;;;;;;;9434:22;;9418:63;;;-1:-1:-1;;;9418:63:0;;-1:-1:-1;;;;;9418:63:0;;;;;;;;;9434:22;;;;;9418:55;;:63;;;;;;;;;;;;;;9434:22;9418:63;;;5:2:-1;;;;30:1;27;20:12;5:2;9418:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9418:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9418:63:0;9410:89;;;;;-1:-1:-1;;;9410:89:0;;;;;;;;;;;;-1:-1:-1;;;9410:89:0;;;;;;;;;;;;;;;9528:1;9518:7;:11;9510:60;;;;-1:-1:-1;;;9510:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9584:17:0;;;;;;:9;:17;;;;;;;;9602:9;9584:28;;;;;;;;:49;;:54;:117;;;;-1:-1:-1;;;;;;9642:17:0;;;;;;:9;:17;;;;;;;;9660:9;9642:28;;;;;;;:54;;;:59;9584:117;:175;;;;-1:-1:-1;;;;;;9705:17:0;;;;;;:9;:17;;;;;;;;9723:9;9705:28;;;;;;;:49;;;:54;9584:175;9581:529;;;-1:-1:-1;;;;;9837:39:0;;;;;;:31;:39;;;;;;;;;9785:9;:17;;;;;;9803:9;9785:28;;;;;;;;;:49;;;:91;;;;9948:44;;;:36;:44;;;;;;9891:54;;;:101;10059:31;:39;;;;;;10007:28;;;;;:49;;;;:91;9581:529;-1:-1:-1;;;;;10123:24:0;;;;;;:16;:24;;;;;;;;10120:390;;;-1:-1:-1;;;;;10173:33:0;;;;;;:25;:33;;;;;;;;:44;;;;;;10232:24;:32;;;;;:43;;;;;;10120:390;;;-1:-1:-1;;;;;10326:44:0;;;;;;:36;:44;;;;;;;;:55;;;;;;10396:29;:37;;;;;:48;;;;;;10459:29;:37;;;;;:39;;-1:-1:-1;10459:39:0;;;-1:-1:-1;10527:4:0;9218:1321;;;;:::o;6228:547::-;6344:22;;6300:4;;-1:-1:-1;;;;;6344:22:0;6330:10;:36;6322:72;;;;;-1:-1:-1;;;6322:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6405:17:0;;;6444:1;6405:17;;;:9;:17;;;;;;;;:24;;;;;;;;;;;;;:40;;;6456:41;;;;:45;;;6512:36;;;:40;;;6563:45;;;:49;;;6623:50;;;:54;;;6688:45;;:49;;;;6456:41;6228:547::o;15537:158::-;-1:-1:-1;;;;;15652:33:0;15608:18;15652:33;;;:25;:33;;;;;;;15537:158::o;4824:453::-;4934:4;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;4980:22;;4964:62;;;-1:-1:-1;;;4964:62:0;;-1:-1:-1;;;;;4964:62:0;;;;;;;;;4980:22;;;;;4964:55;;:62;;;;;;;;;;;;;;4980:22;4964:62;;;5:2:-1;;;;30:1;27;20:12;5:2;4964:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4964:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4964:62:0;4956:88;;;;;-1:-1:-1;;;4956:88:0;;;;;;;;;;;;-1:-1:-1;;;4956:88:0;;;;;;;;;;;;;;;5058:9;5055:193;;;-1:-1:-1;;;;;5093:27:0;;;;;;:20;:27;;;;;:46;;;;;;5055:193;;;-1:-1:-1;;;;;5190:27:0;;;;;;:20;:27;;;;;:46;;;;;;;5055:193;-1:-1:-1;5265:4:0;4824:453;;;;;:::o;15313:212::-;-1:-1:-1;;;;;15436:39:0;15382:13;15436:39;;;:31;:39;;;;;;;;;15476:31;:39;;;;;;;15436;;15313:212::o;10754:3247::-;10861:9;;10830:4;;-1:-1:-1;;;10861:9:0;;;;10860:10;10852:38;;;;;-1:-1:-1;;;10852:38:0;;;;;;;;;;;;-1:-1:-1;;;10852:38:0;;;;;;;;;;;;;;;10925:22;;10909:63;;;-1:-1:-1;;;10909:63:0;;-1:-1:-1;;;;;10909:63:0;;;;;;;;;10925:22;;;;;10909:55;;:63;;;;;;;;;;;;;;10925:22;10909:63;;;5:2:-1;;;;30:1;27;20:12;5:2;10909:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10909:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10909:63:0;10901:89;;;;;-1:-1:-1;;;10901:89:0;;;;;;;;;;;;-1:-1:-1;;;10901:89:0;;;;;;;;;;;;;;;11026:22;;11010:74;;;-1:-1:-1;;;11010:74:0;;-1:-1:-1;;;;;11010:74:0;;;;;;;11074:9;11010:74;;;;;;11026:22;;;;;11010:55;;:74;;;;;;;;;;;;;;11026:22;;11010:74;;;5:2:-1;;;;30:1;27;20:12;5:2;11010:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11010:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11010:74:0;11009:75;11001:104;;;;;-1:-1:-1;;;11001:104:0;;;;;;;;;;;;-1:-1:-1;;;11001:104:0;;;;;;;;;;;;;;;11151:22;;11135:65;;;-1:-1:-1;;;11135:65:0;;-1:-1:-1;;;;;11135:65:0;;;;;;;;;11116:16;;11151:22;;;;;11135:57;;:65;;;;;;;;;;;;;;;11151:22;11135:65;;;5:2:-1;;;;30:1;27;20:12;5:2;11135:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11135:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11135:65:0;;-1:-1:-1;11214:16:0;;:74;;;;-1:-1:-1;;;;;;11234:17:0;;;;;;:9;:17;;;;;;;;11252:9;11234:28;;;;;;;;:49;;:54;11214:74;:137;;;;-1:-1:-1;;;;;;11292:17:0;;;;;;:9;:17;;;;;;;;11310:9;11292:28;;;;;;;:54;;;:59;11214:137;:195;;;;-1:-1:-1;;;;;;11355:17:0;;;;;;:9;:17;;;;;;;;11373:9;11355:28;;;;;;;:49;;;:54;11214:195;11211:653;;;11457:22;;-1:-1:-1;;;;;11457:22:0;11443:10;:36;11435:63;;;;;-1:-1:-1;;;11435:63:0;;;;;;;;;;;;-1:-1:-1;;;11435:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;11565:39:0;;;;;;:31;:39;;;;;;;;;11513:9;:17;;;;;;11531:9;11513:28;;;;;;;;;:49;;;:91;;;;11676:44;;;:36;:44;;;;;;11619:54;;;:101;11787:31;:39;;;;;;11735:28;;;;;:49;;;;:91;11848:4;11841:11;;11211:653;-1:-1:-1;;;;;11934:17:0;;11874:13;11934:17;;;:9;:17;;;;;;;;11952:9;11934:28;;;;;;;:49;;;11890:39;;;:31;:39;;;;;;11874:13;;11890:94;;:39;:94;:43;:94;:::i;:::-;-1:-1:-1;;;;;12055:17:0;;11995:13;12055:17;;;:9;:17;;;;;;;;12073:9;12055:28;;;;;;;:49;;;;12011:39;;;:31;:39;;;;;11874:110;;-1:-1:-1;11995:13:0;12011:94;;;:43;:94;:::i;:::-;-1:-1:-1;;;;;12186:17:0;;12116:18;12186:17;;;:9;:17;;;;;;;;12204:9;12186:28;;;;;;;:54;;;12137:44;;;:36;:44;;;;;;11995:110;;-1:-1:-1;12116:18:0;12137:104;;;:48;:104;:::i;:::-;12286:22;;12270:75;;;-1:-1:-1;;;12270:75:0;;-1:-1:-1;;;;;12270:75:0;;;;;;;12335:9;12270:75;;;;;;12116:125;;-1:-1:-1;12252:15:0;;12286:22;;;;;12270:56;;:75;;;;;;;;;;;;;;12286:22;12270:75;;;5:2:-1;;;;30:1;27;20:12;5:2;12270:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12270:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12270:75:0;;-1:-1:-1;12361:15:0;;12358:1614;;12402:11;12471:9;12455:11;12430:10;12443:9;12430:22;:36;;;;;;12418:8;:49;12416:64;;;;;;12402:78;;12495:11;12564:9;12548:11;12523:10;12536:9;12523:22;:36;;;;;;12511:8;:49;12509:64;;;;;;12495:78;;12658:9;12642:11;12617:10;12630:9;12617:22;:36;;;;;;12600:13;:54;12598:69;;;;;-1:-1:-1;;;;;12725:32:0;;;;;;:24;:32;;;;;;;;;12682:9;:17;;;;;;12700:9;12682:28;;;;;;;;;:75;;;12820:37;;;:29;:37;;;;;;12772:45;;;:85;12915:24;:32;;;;;;12872:40;;;:75;13014:31;:39;;;;;;12962:49;;;:91;;;;13125:36;:44;;;;;;13068:54;;;:101;13236:31;:39;;;;;;13184:28;;;;;;:49;;:91;12598:69;12588:79;13295:10;;13292:41;;13307:26;;:9;;:26;;;;;13326:6;;13307:26;;;;13326:6;13307:9;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13307:26:0;13292:41;13351:10;;13348:540;;13399:9;13396:462;;;13490:22;;13458:64;;;-1:-1:-1;;;13458:64:0;;-1:-1:-1;;;;;13490:22:0;;;13458:64;;;;;;;;;;;;:31;;;;;;:64;;;;;;;;;;;;;;;13490:22;13458:31;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;13458:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13458:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13458:64:0;13450:98;;;;;-1:-1:-1;;;13450:98:0;;;;;;;;;;;;-1:-1:-1;;;13450:98:0;;;;;;;;;;;;;;;13595:22;;13579:71;;;-1:-1:-1;;;13579:71:0;;-1:-1:-1;;;;;13579:71:0;;;;;;;;;;;;;;;13595:22;;;;;13579:55;;:71;;;;;;;;;;;;;;13595:22;;13579:71;;;5:2:-1;;;;30:1;27;20:12;5:2;13579:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13579:71:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13579:71:0;13571:99;;;;;-1:-1:-1;;;13571:99:0;;;;;;;;;;;;-1:-1:-1;;;13571:99:0;;;;;;;;;;;;;;;13396:462;;;13761:51;;;-1:-1:-1;;;13761:51:0;;13793:9;13761:51;;;;;;;;;;;;-1:-1:-1;;;;;13761:31:0;;;;;:51;;;;;;;;;;;;;;-1:-1:-1;13761:31:0;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;13761:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13761:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13761:51:0;13753:85;;;;;-1:-1:-1;;;13753:85:0;;;;;;;;;;;;-1:-1:-1;;;13753:85:0;;;;;;;;;;;;;;;13907:53;;;-1:-1:-1;;;;;13907:53:0;;;;13935:9;13907:53;;;;;;;;;;;;;;;;;;;;;;;;;;;12358:1614;;;-1:-1:-1;13989:4:0;;10754:3247;-1:-1:-1;;;;;;;10754:3247:0:o;1483:110::-;1225:5;;-1:-1:-1;;;;;1225:5:0;1211:10;:19;1203:28;;;;;;1565:8;:20;;-1:-1:-1;;;;;;1565:20:0;-1:-1:-1;;;;;1565:20:0;;;;;;;;;;1483:110::o;3289:53::-;;;;;;;;;;;;;:::o;697:159::-;755:7;783:5;;;803:6;;;;795:38;;;;;-1:-1:-1;;;795:38:0;;;;;;;;;;;;-1:-1:-1;;;795:38:0;;;;;;;;;;;;;;;847:1;697:159;-1:-1:-1;;;697:159:0:o;550:139::-;608:7;637:1;632;:6;;624:38;;;;;-1:-1:-1;;;624:38:0;;;;;;;;;;;;-1:-1:-1;;;624:38:0;;;;;;;;;;;;;;;-1:-1:-1;676:5:0;;;550:139::o

Swarm Source

bzzr://a0f1969d71cd92f316736f1b30170e2e84fbac0f704ac18fa53bc3413ab5eb9b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.