ETH Price: $2,823.20 (-10.43%)
 
Transaction Hash
Method
Block
From
To
STAKE204530082024-08-04 5:10:35182 days ago1722748235IN
0x5bCF1f40...539f6644D
0 ETH0.002370151
CLAIMREWARD200744922024-06-12 8:15:59235 days ago1718180159IN
0x5bCF1f40...539f6644D
0 ETH0.002025520
CLAIMREWARD168793942023-03-21 23:53:11684 days ago1679442791IN
0x5bCF1f40...539f6644D
0 ETH0.0014121313.67353924
CLAIMREWARD168689622023-03-20 12:43:59685 days ago1679316239IN
0x5bCF1f40...539f6644D
0 ETH0.0027101122.89431452
CLAIMREWARD166914252023-02-23 13:34:35710 days ago1677159275IN
0x5bCF1f40...539f6644D
0 ETH0.0037644531.27268992
CLAIMREWARD166861912023-02-22 19:56:35711 days ago1677095795IN
0x5bCF1f40...539f6644D
0 ETH0.0009800335.13287262
CLAIMREWARD166861722023-02-22 19:52:47711 days ago1677095567IN
0x5bCF1f40...539f6644D
0 ETH0.0009732334.88927607
Changeregreward ...166835962023-02-22 11:09:59711 days ago1677064199IN
0x5bCF1f40...539f6644D
0 ETH0.0007626726.34639614
Change Perform166835952023-02-22 11:09:47711 days ago1677064187IN
0x5bCF1f40...539f6644D
0 ETH0.0006547425.35788945
CLAIMREWARD166296442023-02-14 21:23:35719 days ago1676409815IN
0x5bCF1f40...539f6644D
0 ETH0.0090168787.30935991
WITHDRAW165047042023-01-28 10:25:11736 days ago1674901511IN
0x5bCF1f40...539f6644D
0 ETH0.0022400216.27964135
CLAIMREWARD165046922023-01-28 10:22:47736 days ago1674901367IN
0x5bCF1f40...539f6644D
0 ETH0.0016679713.85649906
WITHDRAW164765212023-01-24 11:58:59740 days ago1674561539IN
0x5bCF1f40...539f6644D
0 ETH0.0018833613.97186808
CLAIMREWARD164583282023-01-21 23:01:11743 days ago1674342071IN
0x5bCF1f40...539f6644D
0 ETH0.0017548317.32745927
CLAIMREWARD162942562022-12-30 1:19:47765 days ago1672363187IN
0x5bCF1f40...539f6644D
0 ETH0.0016039915.83800585
CLAIMREWARD161681132022-12-12 10:45:11783 days ago1670841911IN
0x5bCF1f40...539f6644D
0 ETH0.0019876614.45836623
WITHDRAW159179862022-11-07 11:56:11818 days ago1667822171IN
0x5bCF1f40...539f6644D
0 ETH0.0017333113.05590397
CLAIMREWARD159179822022-11-07 11:55:23818 days ago1667822123IN
0x5bCF1f40...539f6644D
0 ETH0.0017281812.57087007
WITHDRAW158679802022-10-31 12:15:35825 days ago1667218535IN
0x5bCF1f40...539f6644D
0 ETH0.0027519420
CLAIMREWARD158679622022-10-31 12:11:59825 days ago1667218319IN
0x5bCF1f40...539f6644D
0 ETH0.0025818725
CLAIMREWARD158548622022-10-29 16:19:59827 days ago1667060399IN
0x5bCF1f40...539f6644D
0 ETH0.000664323.8143359
CLAIMREWARD158548472022-10-29 16:16:59827 days ago1667060219IN
0x5bCF1f40...539f6644D
0 ETH0.0007281326.10272126
CLAIMREWARD158548312022-10-29 16:13:47827 days ago1667060027IN
0x5bCF1f40...539f6644D
0 ETH0.0006697924.01122952
CLAIMREWARD158548202022-10-29 16:11:35827 days ago1667059895IN
0x5bCF1f40...539f6644D
0 ETH0.0006800324.37835513
WITHDRAW158548202022-10-29 16:11:35827 days ago1667059895IN
0x5bCF1f40...539f6644D
0 ETH0.003877323.76163655
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:
FEGstake

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-08
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.7.5;



abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {

        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

// ----------------------------------------------------------------------------
// SafeMath library
// ----------------------------------------------------------------------------


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
    
    function ceil(uint a, uint m) internal pure returns (uint r) {
        return (a + m - 1) / m * m;
    }
}

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address payable public owner;

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

    constructor() {
        owner = msg.sender;
    }

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

    function transferOwnership(address payable _newOwner) public onlyOwner {
        require(_newOwner != address(0), "ERC20: sending to the zero address");
        owner = _newOwner;
        emit OwnershipTransferred(msg.sender, _newOwner);
    }
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// ----------------------------------------------------------------------------
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address tokenOwner) external view returns (uint256 balance);
    function allowance(address tokenOwner, address spender) external view returns (uint256 remaining);
    function transfer(address to, uint256 tokens) external returns (bool success);
    function approve(address spender, uint256 tokens) external returns (bool success);
    function transferFrom(address from, address to, uint256 tokens) external returns (bool success);
    function burnTokens(uint256 _amount) external;
    
    function calculateFeesBeforeSend(
        address sender,
        address recipient,
        uint256 amount
    ) external view returns (uint256, uint256);
    
    
    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}

interface regreward {
    function distributeAll() external;
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract WhitelistAdminRole is Owned  {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

   constructor () {
        _addWhitelistAdmin(msg.sender);
    }
    
    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(msg.sender), "WhitelistAdminRole: caller does not have the WhitelistAdmin role");
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }
    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(msg.sender);
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    } 

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}
contract FEGstake is Owned, ReentrancyGuard, WhitelistAdminRole {
    using SafeMath for uint256;
    
    address public FEG   = 0x389999216860AB8E0175387A0c90E5c52522C945;
    address public fETH   = 0xf786c34106762Ab4Eeb45a51B42a62470E9D5332;
    address public regrewardContract;
    
    uint256 public totalStakes = 0;
    bool public perform = true; //if true then distribution of rewards from the pool to stakers via the withdraw function is enabled
    uint256 public txFee = 20; // FEG has 2% TX fee, deduct this fee from total stake to not break math
    uint256 public txFee1 = 11; // fETH has 1% TX fee, 0.1% was also added this fee from total stake to not break math
    
    uint256 public totalDividends = 0;
    uint256 private scaledRemainder = 0;
    uint256 private scaling = uint256(10) ** 12;
    uint public round = 1;
 
    mapping(address => uint) public farmTime; // period that your sake it locked to keep it for farming
    uint public lock = 0; // no locktime
    
    struct USER{
        uint256 stakedTokens;
        uint256 lastDividends;
        uint256 fromTotalDividend;
        uint round;
        uint256 remainder;
    }
    
    address[] internal stakeholders;
    mapping(address => USER) stakers;
    mapping (uint => uint256) public payouts;                   // keeps record of each payout
    
    event STAKED(address staker, uint256 tokens);
    event EARNED(address staker, uint256 tokens);
    event UNSTAKED(address staker, uint256 tokens);
    event PAYOUT(uint256 round, uint256 tokens, address sender);
    event CLAIMEDREWARD(address staker, uint256 reward);
    
    
    function isStakeholder(address _address)
       public
       view
       returns(bool)
   {
       for (uint256 s = 0; s < stakeholders.length; s += 1){
           if (_address == stakeholders[s]) return (true);
       }
       return (false);
   }
   
   function addStakeholder(address _stakeholder)
       public
   {
       (bool _isStakeholder) = isStakeholder(_stakeholder);
       if(!_isStakeholder) {
           stakeholders.push(_stakeholder);
           farmTime[msg.sender] =  block.timestamp;
       }
   }
   
   // ------------------------------------------------------------------------
    // Token holders can stake their tokens using this function
    // @param tokens number of tokens to stake
    // ------------------------------------------------------------------------
    function STAKE(uint256 tokens) external nonReentrant { 
        require(IERC20(FEG).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user for locking");
        
            uint256 transferTxFee = (onePercent(tokens).mul(txFee)).div(10);
            uint256 tokensToStake = (tokens.sub(transferTxFee));
        
            
            // add pending rewards to remainder to be claimed by user later, if there is any existing stake
            uint256 owing = pendingReward(msg.sender);
            stakers[msg.sender].remainder += owing;
            
            stakers[msg.sender].stakedTokens = tokensToStake.add(stakers[msg.sender].stakedTokens);
            stakers[msg.sender].lastDividends = owing;
            stakers[msg.sender].fromTotalDividend= totalDividends;
            stakers[msg.sender].round =  round;
            
            
            totalStakes = totalStakes.add(tokensToStake);
            
            addStakeholder(msg.sender);
            
            emit STAKED(msg.sender, tokens);
        
    }
    
    // ------------------------------------------------------------------------
    // Owners can send the funds to be distributed to stakers using this function
    // @param tokens number of tokens to distribute
    // ------------------------------------------------------------------------
    function ADDFUNDS(uint256 tokens) external onlyWhitelistAdmin{ //can only be called by regrewardContract
        uint256 transferTxFee = (onePercent(tokens).mul(txFee1)).div(10);
        uint256 tokens_ = (tokens.sub(transferTxFee));
        
        _addPayout(tokens_);
    }
    
    function ADDFUNDS1(uint256 tokens) external{
        require(IERC20(fETH).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        uint256 transferTxFee = (onePercent(tokens).mul(txFee1)).div(10);
        uint256 tokens_ = (tokens.sub(transferTxFee));
        
        _addPayout(tokens_);
    }
    
    
    
    
    function DisributeTxFunds() external { // Distribute tx fees collected for conversion into rewards
        
        uint256 transferToAmount = (IERC20(FEG).balanceOf(address(this))).sub(totalStakes);
        require(IERC20(FEG).transfer(address(owner), transferToAmount), "Error in un-staking tokens");
    }
    
    
    // ------------------------------------------------------------------------
    // Private function to register payouts
    // ------------------------------------------------------------------------
    function _addPayout(uint256 tokens_) private{
        // divide the funds among the currently staked tokens
        // scale the deposit and add the previous remainder
        uint256 available = (tokens_.mul(scaling)).add(scaledRemainder); 
        uint256 dividendPerToken = available.div(totalStakes);
        scaledRemainder = available.mod(totalStakes);
        
        totalDividends = totalDividends.add(dividendPerToken);
        payouts[round] = payouts[round - 1].add(dividendPerToken);
        
        emit PAYOUT(round, tokens_, msg.sender);
        round++;
    }
    
    // ------------------------------------------------------------------------
    // Stakers can claim their pending rewards using this function
    // ------------------------------------------------------------------------
    function CLAIMREWARD() public nonReentrant{
        
        if(totalDividends > stakers[msg.sender].fromTotalDividend){
            uint256 owing = pendingReward(msg.sender);
        
            owing = owing.add(stakers[msg.sender].remainder);
            stakers[msg.sender].remainder = 0;
        
            require(IERC20(fETH).transfer(msg.sender,owing), "ERROR: error in sending reward from contract");
        
            emit CLAIMEDREWARD(msg.sender, owing);
        
            stakers[msg.sender].lastDividends = owing; // unscaled
            stakers[msg.sender].round = round; // update the round
            stakers[msg.sender].fromTotalDividend = totalDividends; // scaled
        }
    }
    
    // ------------------------------------------------------------------------
    // Get the pending rewards of the staker
    // @param _staker the address of the staker
    // ------------------------------------------------------------------------    
    function pendingReward(address staker) private returns (uint256) {
        require(staker != address(0), "ERC20: sending to the zero address");
        
        uint stakersRound = stakers[staker].round;
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        stakers[staker].remainder += ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return amount;
    }
    
    function getPendingReward(address staker) public view returns(uint256 _pendingReward) {
        require(staker != address(0), "ERC20: sending to the zero address");
         uint stakersRound = stakers[staker].round;
         
        uint256 amount =  ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        amount += ((totalDividends.sub(payouts[stakersRound - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return (amount.add(stakers[staker].remainder));
    }
    
    // ------------------------------------------------------------------------
    // Stakers can un stake the staked tokens using this function
    // @param tokens the number of tokens to withdraw
    // ------------------------------------------------------------------------
    function WITHDRAW(uint256 tokens) external nonReentrant{
        require(stakers[msg.sender].stakedTokens >= tokens && tokens > 0, "Invalid token amount to withdraw");
        
        totalStakes = totalStakes.sub(tokens);
        
        // add pending rewards to remainder to be claimed by user later, if there is any existing stake
        uint256 owing = pendingReward(msg.sender);
        stakers[msg.sender].remainder += owing;
                
        stakers[msg.sender].stakedTokens = stakers[msg.sender].stakedTokens.sub(tokens);
        stakers[msg.sender].lastDividends = owing;
        stakers[msg.sender].fromTotalDividend= totalDividends;
        stakers[msg.sender].round =  round;
        
        
        require(IERC20(FEG).transfer(msg.sender, tokens), "Error in un-staking tokens");
        emit UNSTAKED(msg.sender, tokens);
        
        if(perform==true) {
        regreward(regrewardContract).distributeAll();
        }
    }
    
    // ------------------------------------------------------------------------
    // Private function to calculate 1% percentage
    // ------------------------------------------------------------------------
    function onePercent(uint256 _tokens) private pure returns (uint256){
        uint256 roundValue = _tokens.ceil(100);
        uint onePercentofTokens = roundValue.mul(100).div(100 * 10**uint(2));
        return onePercentofTokens;
    }
    
    // ------------------------------------------------------------------------
    // Get the number of tokens staked by a staker
    // @param _staker the address of the staker
    // ------------------------------------------------------------------------
    function yourStakedFEG(address staker) public view returns(uint256 stakedFEG){
        require(staker != address(0), "ERC20: sending to the zero address");
        
        return stakers[staker].stakedTokens;
    }
    
    // ------------------------------------------------------------------------
    // Get the FEG balance of the token holder
    // @param user the address of the token holder
    // ------------------------------------------------------------------------
    function yourFEGBalance(address user) external view returns(uint256 FEGBalance){
        require(user != address(0), "ERC20: sending to the zero address");
        return IERC20(FEG).balanceOf(user);
    }
    
    function emergencySaveLostTokens(address _token) public onlyOwner {
        require(IERC20(_token).transfer(owner, IERC20(_token).balanceOf(address(this))), "Error in retrieving tokens");
        owner.transfer(address(this).balance);
    }
    
    function changeregrewardContract(address _regrewardContract) external onlyOwner{
        require(address(_regrewardContract) != address(0), "setting 0 to contract");
        regrewardContract = _regrewardContract;
    }
   
   function changePerform(bool _bool) external onlyOwner{
        perform = _bool;
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"CLAIMEDREWARD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"EARNED","type":"event"},{"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":"uint256","name":"round","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"PAYOUT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DisributeTxFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"FEG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"addStakeholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changePerform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_regrewardContract","type":"address"}],"name":"changeregrewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"emergencySaveLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"farmTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isStakeholder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regrewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"txFee1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"yourFEGBalance","outputs":[{"internalType":"uint256","name":"FEGBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"yourStakedFEG","outputs":[{"internalType":"uint256","name":"stakedFEG","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600380546001600160a01b031990811673389999216860ab8e0175387a0c90e5c52522c945179091556004805490911673f786c34106762ab4eeb45a51b42a62470e9d5332179055600060068190556007805460ff191660019081179091556014600855600b6009819055600a83905582905564e8d4a51000600c55600d55600f553480156200009357600080fd5b50600080546001600160a01b0319163390811790915560018055620000b890620000be565b620001fd565b620000d98160026200011060201b6200153b1790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6200011c828262000194565b156200016f576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620001dd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001fb46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b611da7806200020d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063c3f344a8116100a2578063e5c42fd111610071578063e5c42fd114610476578063ef037b901461049c578063f2fde38b146104c2578063f83d08ba146104e8576101e5565b8063c3f344a814610423578063ca84d59114610449578063cc14d68814610466578063cf8204611461046e576101e5565b8063b53d6c24116100de578063b53d6c24146103d0578063b6ee290a146103ed578063bb5f747b146103f5578063bf9befb11461041b576101e5565b80638da5cb5b1461039c578063997664d7146103a4578063b0684318146103ac578063b147f40c146103b4576101e5565b80634baf782e116101875780634f49e655116101565780634f49e655146103325780637362d9c8146103515780637a75572c146103775780638ade8d8c14610394576101e5565b80634baf782e146102d65780634bc76334146102de5780634c5a628c146103045780634df9d6ba1461030c576101e5565b806320068139116101c3578063200681391461024e57806329652e86146102765780632c75bcda1461029357806348510671146102b0576101e5565b8063063731bb146101ea578063093a9fbc14610222578063146ca53114610246575b600080fd5b6102106004803603602081101561020057600080fd5b50356001600160a01b03166104f0565b60408051918252519081900360200190f35b61022a6105b8565b604080516001600160a01b039092168252519081900360200190f35b6102106105c7565b6102746004803603602081101561026457600080fd5b50356001600160a01b03166105cd565b005b6102106004803603602081101561028c57600080fd5b503561076f565b610274600480360360208110156102a957600080fd5b5035610781565b610210600480360360208110156102c657600080fd5b50356001600160a01b0316610a44565b610274610aa7565b610274600480360360208110156102f457600080fd5b50356001600160a01b0316610c87565b610274610d13565b6102106004803603602081101561032257600080fd5b50356001600160a01b0316610d1e565b6102746004803603602081101561034857600080fd5b50351515610e41565b6102746004803603602081101561036757600080fd5b50356001600160a01b0316610e6b565b6102746004803603602081101561038d57600080fd5b5035610ebb565b61022a610fb1565b61022a610fc0565b610210610fcf565b610274610fd5565b6103bc611137565b604080519115158252519081900360200190f35b610274600480360360208110156103e657600080fd5b5035611140565b610210611184565b6103bc6004803603602081101561040b57600080fd5b50356001600160a01b031661118a565b61021061119d565b6102106004803603602081101561043957600080fd5b50356001600160a01b03166111a3565b6102746004803603602081101561045f57600080fd5b50356111b5565b61022a6113b4565b6102106113c3565b6102746004803603602081101561048c57600080fd5b50356001600160a01b03166113c9565b6103bc600480360360208110156104b257600080fd5b50356001600160a01b0316611439565b610274600480360360208110156104d857600080fd5b50356001600160a01b031661148e565b610210611535565b60006001600160a01b0382166105375760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600354604080516370a0823160e01b81526001600160a01b038581166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561058457600080fd5b505afa158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b505190505b919050565b6003546001600160a01b031681565b600d5481565b6000546001600160a01b031633146105e457600080fd5b600054604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d602081101561066357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051610731576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e73000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561076b573d6000803e3d6000fd5b5050565b60126020526000908152604090205481565b600260015414156107d9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001553360009081526011602052604090205481118015906107fd5750600081115b61084e576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b60065461085b90826115bc565b600655600061086933611605565b336000908152601160205260409020600481018054830190555490915061089090836115bc565b33600081815260116020908152604080832094855560018501869055600a546002860155600d546003958601559354845163a9059cbb60e01b815260048101949094526024840187905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b505050506040513d602081101561093557600080fd5b5051610988576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b604080513381526020810184905281517f4c48d8823de8aa74e6ea4bed3a0c422e95a3d1e10f8f3e47dc7e2fe779be9514929181900390910190a160075460ff16151560011415610a3c57600560009054906101000a90046001600160a01b03166001600160a01b031663436596c46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050505b505060018055565b60006001600160a01b038216610a8b5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b506001600160a01b031660009081526011602052604090205490565b60026001541415610aff576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260018190553360009081526011602052604090200154600a541115610c81576000610b2b33611605565b33600090815260116020526040902060040154909150610b4c908290611713565b33600081815260116020908152604080832060049081018490558054825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b505050506040513d6020811015610be057600080fd5b5051610c1d5760405162461bcd60e51b815260040180806020018281038252602c815260200180611c50602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a13360009081526011602052604090206001810191909155600d546003820155600a546002909101555b60018055565b6000546001600160a01b03163314610c9e57600080fd5b6001600160a01b038116610cf1576040805162461bcd60e51b81526020600482015260156024820152741cd95d1d1a5b99c80c081d1bc818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610d1c3361176d565b565b60006001600160a01b038216610d655760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a54929493610dbe93610db892610db291906115bc565b906117af565b90611808565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a549394509192610e0392610db291906115bc565b81610e0a57fe5b6001600160a01b0386166000908152601160205260409020600401549190069190910190610e39908290611713565b949350505050565b6000546001600160a01b03163314610e5857600080fd5b6007805460ff1916911515919091179055565b610e743361118a565b610eaf5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b610eb88161184a565b50565b60048054604080516323b872dd60e01b8152339381019390935230602484015260448301849052516001600160a01b03909116916323b872dd9160648083019260209291908290030181600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b5051610f7d5760405162461bcd60e51b8152600401808060200182810382526030815260200180611d426030913960400191505060405180910390fd5b6000610f93600a610db8600954610db28661188c565b90506000610fa183836115bc565b9050610fac816118af565b505050565b6005546001600160a01b031681565b6000546001600160a01b031681565b600a5481565b600654600354604080516370a0823160e01b8152306004820152905160009361105e9390926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561102c57600080fd5b505afa158015611040573d6000803e3d6000fd5b505050506040513d602081101561105657600080fd5b5051906115bc565b600354600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955092169263a9059cbb926044808201936020939283900390910190829087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b505050506040513d60208110156110e457600080fd5b5051610eb8576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b60075460ff1681565b6111493361118a565b610f7d5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b60095481565b600061119760028361199a565b92915050565b60065481565b600e6020526000908152604090205481565b6002600154141561120d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b505050506040513d602081101561129657600080fd5b50516112d35760405162461bcd60e51b8152600401808060200182810382526032815260200180611c1e6032913960400191505060405180910390fd5b60006112e9600a610db8600854610db28661188c565b905060006112f783836115bc565b9050600061130433611605565b336000908152601160205260409020600481018054830190555490915061132c908390611713565b33600090815260116020526040902090815560018101829055600a546002820155600d546003909101556006546113639083611713565b60065561136f336113c9565b604080513381526020810186905281517f4031c63bb53dc5dfada7ef8d75bef8c44d0283658c1585fc74107ed5b75e97c8929181900390910190a15050600180555050565b6004546001600160a01b031681565b60085481565b60006113d482611439565b90508061076b5760108054600181019091557f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0384166001600160a01b0319909116179055336000908152600e602052604090204290555050565b6000805b601054811015611485576010818154811061145457fe5b6000918252602090912001546001600160a01b038481169116141561147d5760019150506105b3565b60010161143d565b50600092915050565b6000546001600160a01b031633146114a557600080fd5b6001600160a01b0381166114ea5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600f5481565b611545828261199a565b15611597576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006115fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a01565b9392505050565b60006001600160a01b03821661164c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a5492949361169993610db892610db291906115bc565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a5493945091926116de92610db291906115bc565b816116e557fe5b6001600160a01b03959095166000908152601160205260409020600401805491909506019093555090919050565b6000828201838110156115fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611778600282611a98565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6000826117be57506000611197565b828202828482816117cb57fe5b04146115fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180611cbf6021913960400191505060405180910390fd5b60006115fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611aff565b61185560028261153b565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b60008061189a836064611b64565b90506000610e39612710610db88460646117af565b60006118d2600b546118cc600c54856117af90919063ffffffff16565b90611713565b905060006118eb6006548361180890919063ffffffff16565b905061190260065483611b7e90919063ffffffff16565b600b55600a546119129082611713565b600a55600d54600019016000908152601260205260409020546119359082611713565b600d805460009081526012602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a15050600d8054600101905550565b60006001600160a01b0382166119e15760405162461bcd60e51b8152600401808060200182810382526022815260200180611ce06022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008184841115611a905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a55578181015183820152602001611a3d565b50505050905090810190601f168015611a825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611aa2828261199a565b611add5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c7c6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008183611b4e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b506000838581611b5a57fe5b0495945050505050565b6000818260018486010381611b7557fe5b04029392505050565b60006115fe83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183611c0a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b50828481611c1457fe5b0694935050505056fe546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d207573657220666f72206c6f636b696e674552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a2073656e64696e6720746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220322a290e4bcd3d4b34638f759727099682ff32a2b5764a0a2e1ecdc7e70799eb64736f6c63430007050033526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063c3f344a8116100a2578063e5c42fd111610071578063e5c42fd114610476578063ef037b901461049c578063f2fde38b146104c2578063f83d08ba146104e8576101e5565b8063c3f344a814610423578063ca84d59114610449578063cc14d68814610466578063cf8204611461046e576101e5565b8063b53d6c24116100de578063b53d6c24146103d0578063b6ee290a146103ed578063bb5f747b146103f5578063bf9befb11461041b576101e5565b80638da5cb5b1461039c578063997664d7146103a4578063b0684318146103ac578063b147f40c146103b4576101e5565b80634baf782e116101875780634f49e655116101565780634f49e655146103325780637362d9c8146103515780637a75572c146103775780638ade8d8c14610394576101e5565b80634baf782e146102d65780634bc76334146102de5780634c5a628c146103045780634df9d6ba1461030c576101e5565b806320068139116101c3578063200681391461024e57806329652e86146102765780632c75bcda1461029357806348510671146102b0576101e5565b8063063731bb146101ea578063093a9fbc14610222578063146ca53114610246575b600080fd5b6102106004803603602081101561020057600080fd5b50356001600160a01b03166104f0565b60408051918252519081900360200190f35b61022a6105b8565b604080516001600160a01b039092168252519081900360200190f35b6102106105c7565b6102746004803603602081101561026457600080fd5b50356001600160a01b03166105cd565b005b6102106004803603602081101561028c57600080fd5b503561076f565b610274600480360360208110156102a957600080fd5b5035610781565b610210600480360360208110156102c657600080fd5b50356001600160a01b0316610a44565b610274610aa7565b610274600480360360208110156102f457600080fd5b50356001600160a01b0316610c87565b610274610d13565b6102106004803603602081101561032257600080fd5b50356001600160a01b0316610d1e565b6102746004803603602081101561034857600080fd5b50351515610e41565b6102746004803603602081101561036757600080fd5b50356001600160a01b0316610e6b565b6102746004803603602081101561038d57600080fd5b5035610ebb565b61022a610fb1565b61022a610fc0565b610210610fcf565b610274610fd5565b6103bc611137565b604080519115158252519081900360200190f35b610274600480360360208110156103e657600080fd5b5035611140565b610210611184565b6103bc6004803603602081101561040b57600080fd5b50356001600160a01b031661118a565b61021061119d565b6102106004803603602081101561043957600080fd5b50356001600160a01b03166111a3565b6102746004803603602081101561045f57600080fd5b50356111b5565b61022a6113b4565b6102106113c3565b6102746004803603602081101561048c57600080fd5b50356001600160a01b03166113c9565b6103bc600480360360208110156104b257600080fd5b50356001600160a01b0316611439565b610274600480360360208110156104d857600080fd5b50356001600160a01b031661148e565b610210611535565b60006001600160a01b0382166105375760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600354604080516370a0823160e01b81526001600160a01b038581166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561058457600080fd5b505afa158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b505190505b919050565b6003546001600160a01b031681565b600d5481565b6000546001600160a01b031633146105e457600080fd5b600054604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d602081101561066357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b5051610731576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e2072657472696576696e6720746f6b656e73000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561076b573d6000803e3d6000fd5b5050565b60126020526000908152604090205481565b600260015414156107d9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026001553360009081526011602052604090205481118015906107fd5750600081115b61084e576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b60065461085b90826115bc565b600655600061086933611605565b336000908152601160205260409020600481018054830190555490915061089090836115bc565b33600081815260116020908152604080832094855560018501869055600a546002860155600d546003958601559354845163a9059cbb60e01b815260048101949094526024840187905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b505050506040513d602081101561093557600080fd5b5051610988576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b604080513381526020810184905281517f4c48d8823de8aa74e6ea4bed3a0c422e95a3d1e10f8f3e47dc7e2fe779be9514929181900390910190a160075460ff16151560011415610a3c57600560009054906101000a90046001600160a01b03166001600160a01b031663436596c46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050505b505060018055565b60006001600160a01b038216610a8b5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b506001600160a01b031660009081526011602052604090205490565b60026001541415610aff576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260018190553360009081526011602052604090200154600a541115610c81576000610b2b33611605565b33600090815260116020526040902060040154909150610b4c908290611713565b33600081815260116020908152604080832060049081018490558054825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b505050506040513d6020811015610be057600080fd5b5051610c1d5760405162461bcd60e51b815260040180806020018281038252602c815260200180611c50602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a13360009081526011602052604090206001810191909155600d546003820155600a546002909101555b60018055565b6000546001600160a01b03163314610c9e57600080fd5b6001600160a01b038116610cf1576040805162461bcd60e51b81526020600482015260156024820152741cd95d1d1a5b99c80c081d1bc818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610d1c3361176d565b565b60006001600160a01b038216610d655760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a54929493610dbe93610db892610db291906115bc565b906117af565b90611808565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a549394509192610e0392610db291906115bc565b81610e0a57fe5b6001600160a01b0386166000908152601160205260409020600401549190069190910190610e39908290611713565b949350505050565b6000546001600160a01b03163314610e5857600080fd5b6007805460ff1916911515919091179055565b610e743361118a565b610eaf5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b610eb88161184a565b50565b60048054604080516323b872dd60e01b8152339381019390935230602484015260448301849052516001600160a01b03909116916323b872dd9160648083019260209291908290030181600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b505050506040513d6020811015610f4057600080fd5b5051610f7d5760405162461bcd60e51b8152600401808060200182810382526030815260200180611d426030913960400191505060405180910390fd5b6000610f93600a610db8600954610db28661188c565b90506000610fa183836115bc565b9050610fac816118af565b505050565b6005546001600160a01b031681565b6000546001600160a01b031681565b600a5481565b600654600354604080516370a0823160e01b8152306004820152905160009361105e9390926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561102c57600080fd5b505afa158015611040573d6000803e3d6000fd5b505050506040513d602081101561105657600080fd5b5051906115bc565b600354600080546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955092169263a9059cbb926044808201936020939283900390910190829087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b505050506040513d60208110156110e457600080fd5b5051610eb8576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b60075460ff1681565b6111493361118a565b610f7d5760405162461bcd60e51b8152600401808060200182810382526040815260200180611d026040913960400191505060405180910390fd5b60095481565b600061119760028361199a565b92915050565b60065481565b600e6020526000908152604090205481565b6002600154141561120d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600155600354604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b505050506040513d602081101561129657600080fd5b50516112d35760405162461bcd60e51b8152600401808060200182810382526032815260200180611c1e6032913960400191505060405180910390fd5b60006112e9600a610db8600854610db28661188c565b905060006112f783836115bc565b9050600061130433611605565b336000908152601160205260409020600481018054830190555490915061132c908390611713565b33600090815260116020526040902090815560018101829055600a546002820155600d546003909101556006546113639083611713565b60065561136f336113c9565b604080513381526020810186905281517f4031c63bb53dc5dfada7ef8d75bef8c44d0283658c1585fc74107ed5b75e97c8929181900390910190a15050600180555050565b6004546001600160a01b031681565b60085481565b60006113d482611439565b90508061076b5760108054600181019091557f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0384166001600160a01b0319909116179055336000908152600e602052604090204290555050565b6000805b601054811015611485576010818154811061145457fe5b6000918252602090912001546001600160a01b038481169116141561147d5760019150506105b3565b60010161143d565b50600092915050565b6000546001600160a01b031633146114a557600080fd5b6001600160a01b0381166114ea5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600f5481565b611545828261199a565b15611597576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006115fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a01565b9392505050565b60006001600160a01b03821661164c5760405162461bcd60e51b8152600401808060200182810382526022815260200180611c9d6022913960400191505060405180910390fd5b6001600160a01b03821660009081526011602090815260408083206003810154600c54915460001982018652601290945291842054600a5492949361169993610db892610db291906115bc565b600c546001600160a01b03861660009081526011602090815260408083205460001988018452601290925290912054600a5493945091926116de92610db291906115bc565b816116e557fe5b6001600160a01b03959095166000908152601160205260409020600401805491909506019093555090919050565b6000828201838110156115fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611778600282611a98565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6000826117be57506000611197565b828202828482816117cb57fe5b04146115fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180611cbf6021913960400191505060405180910390fd5b60006115fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611aff565b61185560028261153b565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b60008061189a836064611b64565b90506000610e39612710610db88460646117af565b60006118d2600b546118cc600c54856117af90919063ffffffff16565b90611713565b905060006118eb6006548361180890919063ffffffff16565b905061190260065483611b7e90919063ffffffff16565b600b55600a546119129082611713565b600a55600d54600019016000908152601260205260409020546119359082611713565b600d805460009081526012602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a15050600d8054600101905550565b60006001600160a01b0382166119e15760405162461bcd60e51b8152600401808060200182810382526022815260200180611ce06022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008184841115611a905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a55578181015183820152602001611a3d565b50505050905090810190601f168015611a825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611aa2828261199a565b611add5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c7c6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008183611b4e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b506000838581611b5a57fe5b0495945050505050565b6000818260018486010381611b7557fe5b04029392505050565b60006115fe83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183611c0a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a55578181015183820152602001611a3d565b50828481611c1457fe5b0694935050505056fe546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d207573657220666f72206c6f636b696e674552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a2073656e64696e6720746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c65546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220322a290e4bcd3d4b34638f759727099682ff32a2b5764a0a2e1ecdc7e70799eb64736f6c63430007050033

Deployed Bytecode Sourcemap

9565:11281:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20049:208;;;;;;;;;;;;;;;;-1:-1:-1;20049:208:0;-1:-1:-1;;;;;20049:208:0;;:::i;:::-;;;;;;;;;;;;;;;;9675:65;;;:::i;:::-;;;;-1:-1:-1;;;;;9675:65:0;;;;;;;;;;;;;;10399:21;;;:::i;20269:243::-;;;;;;;;;;;;;;;;-1:-1:-1;20269:243:0;-1:-1:-1;;;;;20269:243:0;;:::i;:::-;;10839:40;;;;;;;;;;;;;;;;-1:-1:-1;10839:40:0;;:::i;17839:977::-;;;;;;;;;;;;;;;;-1:-1:-1;17839:977:0;;:::i;19556:219::-;;;;;;;;;;;;;;;;-1:-1:-1;19556:219:0;-1:-1:-1;;;;;19556:219:0;;:::i;15504:725::-;;;:::i;20524:222::-;;;;;;;;;;;;;;;;-1:-1:-1;20524:222:0;-1:-1:-1;;;;;20524:222:0;;:::i;9150:93::-;;;:::i;17010:533::-;;;;;;;;;;;;;;;;-1:-1:-1;17010:533:0;-1:-1:-1;;;;;17010:533:0;;:::i;20756:87::-;;;;;;;;;;;;;;;;-1:-1:-1;20756:87:0;;;;:::i;9026:116::-;;;;;;;;;;;;;;;;-1:-1:-1;9026:116:0;-1:-1:-1;;;;;9026:116:0;;:::i;13751:354::-;;;;;;;;;;;;;;;;-1:-1:-1;13751:354:0;;:::i;9820:32::-;;;:::i;5729:28::-;;;:::i;10267:33::-;;;:::i;14135:312::-;;;:::i;9902:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;13457:282;;;;;;;;;;;;;;;;-1:-1:-1;13457:282:0;;:::i;10141:26::-;;;:::i;8895:125::-;;;;;;;;;;;;;;;;-1:-1:-1;8895:125:0;-1:-1:-1;;;;;8895:125:0;;:::i;9865:30::-;;;:::i;10430:40::-;;;;;;;;;;;;;;;;-1:-1:-1;10430:40:0;-1:-1:-1;;;;;10430:40:0;;:::i;12056:1091::-;;;;;;;;;;;;;;;;-1:-1:-1;12056:1091:0;;:::i;9747:66::-;;;:::i;10036:25::-;;;:::i;11500:271::-;;;;;;;;;;;;;;;;-1:-1:-1;11500:271:0;-1:-1:-1;;;;;11500:271:0;;:::i;11232:258::-;;;;;;;;;;;;;;;;-1:-1:-1;11232:258:0;-1:-1:-1;;;;;11232:258:0;;:::i;5990:247::-;;;;;;;;;;;;;;;;-1:-1:-1;5990:247:0;-1:-1:-1;;;;;5990:247:0;;:::i;10535:20::-;;;:::i;20049:208::-;20109:18;-1:-1:-1;;;;;20147:18:0;;20139:65;;;;-1:-1:-1;;;20139:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20229:3;;20222:27;;;-1:-1:-1;;;20222:27:0;;-1:-1:-1;;;;;20222:27:0;;;;;;;;;20229:3;;;;;20222:21;;:27;;;;;;;;;;;;;;20229:3;20222:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20222:27:0;;-1:-1:-1;20049:208:0;;;;:::o;9675:65::-;;;-1:-1:-1;;;;;9675:65:0;;:::o;10399:21::-;;;;:::o;20269:243::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;20378:5:::1;::::0;20385:39:::1;::::0;;-1:-1:-1;;;20385:39:0;;20418:4:::1;20385:39;::::0;::::1;::::0;;;-1:-1:-1;;;;;20354:23:0;;::::1;::::0;::::1;::::0;20378:5;::::1;::::0;20354:23;;20385:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;20354:23;20385:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20385:39:0;20354:71:::1;::::0;;-1:-1:-1;;;;;;20354:71:0::1;::::0;;;;;;-1:-1:-1;;;;;20354:71:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;20385:39:::1;::::0;20354:71;;;;;;;-1:-1:-1;20354:71:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20354:71:0;20346:110:::1;;;::::0;;-1:-1:-1;;;20346:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20467:5;::::0;;:37:::1;::::0;-1:-1:-1;;;;;20467:5:0;;::::1;::::0;20482:21:::1;20467:37:::0;::::1;;;::::0;20482:21;;20467:37;:5;:37;20482:21;20467:5;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20269:243:::0;:::o;10839:40::-;;;;;;;;;;;;;:::o;17839:977::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;17921:10:::1;17913:19;::::0;;;:7:::1;:19;::::0;;;;:32;:42;-1:-1:-1;17913:42:0;::::1;::::0;:56:::1;;;17968:1;17959:6;:10;17913:56;17905:101;;;::::0;;-1:-1:-1;;;17905:101:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18041:11;::::0;:23:::1;::::0;18057:6;18041:15:::1;:23::i;:::-;18027:11;:37:::0;18190:13:::1;18206:25;18220:10;18206:13;:25::i;:::-;18250:10;18242:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;::::0;::::1;:38:::0;;;::::1;::::0;;18344:32;18190:41;;-1:-1:-1;18344:44:0::1;::::0;18381:6;18344:36:::1;:44::i;:::-;18317:10;18309:19;::::0;;;:7:::1;:19;::::0;;;;;;;:79;;;18399:33:::1;::::0;::::1;:41:::0;;;18490:14:::1;::::0;18451:37:::1;::::0;::::1;:53:::0;18544:5:::1;::::0;18515:25:::1;::::0;;::::1;:34:::0;18595:3;;18588:40;;-1:-1:-1;;;18588:40:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;-1:-1:-1;;;;;18595:3:0;;::::1;::::0;18588:20:::1;::::0;:40;;;;;;;;;;;;;18595:3;18588:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18588:40:0;18580:79:::1;;;::::0;;-1:-1:-1;;;18580:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18675:28;::::0;;18684:10:::1;18675:28:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;18727:7;::::0;::::1;;:13;;:7:::0;:13:::1;18724:85;;;18763:17;;;;;;;;;-1:-1:-1::0;;;;;18763:17:0::1;-1:-1:-1::0;;;;;18753:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18724:85;-1:-1:-1::0;;153:1:0;461:22;;17839:977::o;19556:219::-;19615:17;-1:-1:-1;;;;;19652:20:0;;19644:67;;;;-1:-1:-1;;;19644:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19739:15:0;;;;;:7;:15;;;;;:28;;19556:219::o;15504:725::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;;;15595:10:::1;15587:19;::::0;;;:7:::1;:19;::::0;;;;:37:::1;::::0;15570:14:::1;::::0;:54:::1;15567:655;;;15640:13;15656:25;15670:10;15656:13;:25::i;:::-;15732:10;15724:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;;::::0;15640:41;;-1:-1:-1;15714:40:0::1;::::0;15640:41;;15714:9:::1;:40::i;:::-;15777:10;15801:1;15769:19:::0;;;:7:::1;:19;::::0;;;;;;;:29:::1;::::0;;::::1;:33:::0;;;15842:4;;15835:39;;-1:-1:-1;;;15835:39:0;;;;::::1;::::0;;;;;;;;;;;;;;-1:-1:-1;;;;;;15842:4:0;;::::1;::::0;15835:21:::1;::::0;:39;;;;;;;;;;;;;15842:4;15835:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15835:39:0;15827:96:::1;;;;-1:-1:-1::0;;;15827:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15953:32;::::0;;15967:10:::1;15953:32:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;16018:10;16010:19;::::0;;;:7:::1;:19;::::0;;;;:33:::1;::::0;::::1;:41:::0;;;;16106:5:::1;::::0;16078:25:::1;::::0;::::1;:33:::0;16186:14:::1;::::0;16146:37:::1;::::0;;::::1;:54:::0;15567:655:::1;153:1:::0;461:22;;15504:725::o;20524:222::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;-1:-1:-1;;;;;20622:41:0;::::1;20614:75;;;::::0;;-1:-1:-1;;;20614:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20614:75:0;;;;;;;;;;;;;::::1;;20700:17;:38:::0;;-1:-1:-1;;;;;;20700:38:0::1;-1:-1:-1::0;;;;;20700:38:0;;;::::1;::::0;;;::::1;::::0;;20524:222::o;9150:93::-;9202:33;9224:10;9202:21;:33::i;:::-;9150:93::o;17010:533::-;17072:22;-1:-1:-1;;;;;17115:20:0;;17107:67;;;;-1:-1:-1;;;17107:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17206:15:0;;17186:17;17206:15;;;:7;:15;;;;;;;;:21;;;;17355:7;;17320:28;;-1:-1:-1;;17296:16:0;;17288:25;;:7;:25;;;;;;;17269:14;;17206:21;;17186:17;17267:96;;17268:81;;17269:45;;:14;:18;:45::i;:::-;17268:51;;:81::i;:::-;17267:87;;:96::i;:::-;17470:7;;-1:-1:-1;;;;;17437:15:0;;;;;;:7;:15;;;;;;;;:28;-1:-1:-1;;17413:16:0;;17405:25;;:7;:25;;;;;;;17386:14;;17249:114;;-1:-1:-1;17470:7:0;;17385:81;;17386:45;;:14;:18;:45::i;17385:81::-;17384:93;;;;;-1:-1:-1;;;;;17508:15:0;;;;;;:7;:15;;;;;:25;;;17384:93;;;17374:103;;;;;17497:37;;17374:103;;17497:10;:37::i;:::-;17489:46;17010:533;-1:-1:-1;;;;17010:533:0:o;20756:87::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;20820:7:::1;:15:::0;;-1:-1:-1;;20820:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20756:87::o;9026:116::-;8770:28;8787:10;8770:16;:28::i;:::-;8762:105;;;;-1:-1:-1;;;8762:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9107:27:::1;9126:7;9107:18;:27::i;:::-;9026:116:::0;:::o;13751:354::-;13820:4;;;13813:60;;;-1:-1:-1;;;13813:60:0;;13839:10;13813:60;;;;;;;13859:4;13813:60;;;;;;;;;;;-1:-1:-1;;;;;13820:4:0;;;;13813:25;;:60;;;;;;;;;;;;;;13820:4;;13813:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13813:60:0;13805:121;;;;-1:-1:-1;;;13805:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13937:21;13961:40;13998:2;13962:30;13985:6;;13962:18;13973:6;13962:10;:18::i;13961:40::-;13937:64;-1:-1:-1;14012:15:0;14031:25;:6;13937:64;14031:10;:25::i;:::-;14012:45;;14078:19;14089:7;14078:10;:19::i;:::-;13751:354;;;:::o;9820:32::-;;;-1:-1:-1;;;;;9820:32:0;;:::o;5729:28::-;;;-1:-1:-1;;;;;5729:28:0;;:::o;10267:33::-;;;;:::o;14135:312::-;14323:11;;14288:3;;14281:36;;;-1:-1:-1;;;14281:36:0;;14311:4;14281:36;;;;;;14253:24;;14280:55;;14323:11;;-1:-1:-1;;;;;14288:3:0;;;;14281:21;;:36;;;;;;;;;;;;;;;14288:3;14281:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14281:36:0;;14280:42;:55::i;:::-;14361:3;;;14383:5;;14354:54;;;-1:-1:-1;;;14354:54:0;;-1:-1:-1;;;;;14383:5:0;;;14354:54;;;;;;;;;;;;14253:82;;-1:-1:-1;14361:3:0;;;14354:20;;:54;;;;;;;;;;;;;;;;;14361:3;14354:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14354:54:0;14346:93;;;;;-1:-1:-1;;;14346:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9902:26;;;;;;:::o;13457:282::-;8770:28;8787:10;8770:16;:28::i;:::-;8762:105;;;;-1:-1:-1;;;8762:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10141:26;;;;:::o;8895:125::-;8959:4;8983:29;:16;9004:7;8983:20;:29::i;:::-;8976:36;8895:125;-1:-1:-1;;8895:125:0:o;9865:30::-;;;;:::o;10430:40::-;;;;;;;;;;;;;:::o;12056:1091::-;197:1;348:7;;:19;;340:63;;;;;-1:-1:-1;;;340:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:1;416:7;:18;12136:3:::1;::::0;12129:59:::1;::::0;;-1:-1:-1;;;12129:59:0;;12154:10:::1;12129:59;::::0;::::1;::::0;12174:4:::1;12129:59:::0;;;;;;;;;;;;-1:-1:-1;;;;;12136:3:0;;::::1;::::0;12129:24:::1;::::0;:59;;;;;::::1;::::0;;;;;;;;;12136:3:::1;::::0;12129:59;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12129:59:0;12121:122:::1;;;;-1:-1:-1::0;;;12121:122:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12268:21;12292:39;12328:2;12293:29;12316:5;;12293:18;12304:6;12293:10;:18::i;12292:39::-;12268:63:::0;-1:-1:-1;12346:21:0::1;12371:25;:6:::0;12268:63;12371:10:::1;:25::i;:::-;12346:51;;12545:13;12561:25;12575:10;12561:13;:25::i;:::-;12609:10;12601:19;::::0;;;:7:::1;:19;::::0;;;;:29:::1;::::0;::::1;:38:::0;;;::::1;::::0;;12721:32;12545:41;;-1:-1:-1;12703:51:0::1;::::0;:13;;:17:::1;:51::i;:::-;12676:10;12668:19;::::0;;;:7:::1;:19;::::0;;;;:86;;;12769:33:::1;::::0;::::1;:41:::0;;;12864:14:::1;::::0;12825:37:::1;::::0;::::1;:53:::0;12922:5:::1;::::0;12893:25:::1;::::0;;::::1;:34:::0;12984:11:::1;::::0;:30:::1;::::0;13000:13;12984:15:::1;:30::i;:::-;12970:11;:44:::0;13043:26:::1;13058:10;13043:14;:26::i;:::-;13103;::::0;;13110:10:::1;13103:26:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;153:1:0;461:22;;-1:-1:-1;;12056:1091:0:o;9747:66::-;;;-1:-1:-1;;;;;9747:66:0;;:::o;10036:25::-;;;;:::o;11500:271::-;11576:19;11599:27;11613:12;11599:13;:27::i;:::-;11575:51;;11640:14;11636:129;;11670:12;:31;;;;;;;;;;;;-1:-1:-1;;;;;11670:31:0;;-1:-1:-1;;;;;;11670:31:0;;;;;;11724:10;-1:-1:-1;11715:20:0;;;:8;11670:31;11715:20;;;;11739:15;11715:39;;11500:271;;:::o;11232:258::-;11317:4;;11337:123;11361:12;:19;11357:23;;11337:123;;;11419:12;11432:1;11419:15;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11407:27:0;;;11419:15;;11407:27;11403:46;;;11444:4;11436:13;;;;;11403:46;11387:1;11382:6;11337:123;;;-1:-1:-1;11477:5:0;;11232:258;-1:-1:-1;;11232:258:0:o;5990:247::-;5956:5;;-1:-1:-1;;;;;5956:5:0;5942:10;:19;5934:28;;;;;;-1:-1:-1;;;;;6080:23:0;::::1;6072:70;;;;-1:-1:-1::0;;;6072:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6153:5;:17:::0;;-1:-1:-1;;;;;;6153:17:0::1;-1:-1:-1::0;;;;;6153:17:0;::::1;::::0;;::::1;::::0;;6186:43:::1;::::0;6153:17;;6207:10:::1;::::0;6186:43:::1;::::0;6153:5;6186:43:::1;5990:247:::0;:::o;10535:20::-;;;;:::o;7817:178::-;7895:18;7899:4;7905:7;7895:3;:18::i;:::-;7894:19;7886:63;;;;;-1:-1:-1;;;7886:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7960:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;7960:27:0;7983:4;7960:27;;;7817:178::o;1412:136::-;1470:7;1497:43;1501:1;1504;1497:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1490:50;1412:136;-1:-1:-1;;;1412:136:0:o;16502:496::-;16558:7;-1:-1:-1;;;;;16586:20:0;;16578:67;;;;-1:-1:-1;;;16578:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16686:15:0;;16666:17;16686:15;;;:7;:15;;;;;;;;:21;;;;16824:7;;16789:28;;-1:-1:-1;;16765:16:0;;16757:25;;:7;:25;;;;;;;16738:14;;16686:21;;16666:17;16736:96;;16737:81;;16738:45;;:14;:18;:45::i;16736:96::-;16958:7;;-1:-1:-1;;;;;16925:15:0;;;;;;:7;:15;;;;;;;;:28;-1:-1:-1;;16901:16:0;;16893:25;;:7;:25;;;;;;;16874:14;;16718:114;;-1:-1:-1;16958:7:0;;16873:81;;16874:45;;:14;:18;:45::i;16873:81::-;16872:93;;;;;-1:-1:-1;;;;;16843:15:0;;;;;;;;:7;:15;;;;;:25;;:122;;16872:93;;;;16843:122;;;;-1:-1:-1;16984:6:0;;16502:496;-1:-1:-1;16502:496:0:o;948:181::-;1006:7;1038:5;;;1062:6;;;;1054:46;;;;;-1:-1:-1;;;1054:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9406:154;9474:32;:16;9498:7;9474:23;:32::i;:::-;9522:30;;-1:-1:-1;;;;;9522:30:0;;;;;;;;9406:154;:::o;2302:471::-;2360:7;2605:6;2601:47;;-1:-1:-1;2635:1:0;2628:8;;2601:47;2672:5;;;2676:1;2672;:5;:1;2696:5;;;;;:10;2688:56;;;;-1:-1:-1;;;2688:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:132;3307:7;3334:39;3338:1;3341;3334:39;;;;;;;;;;;;;;;;;:3;:39::i;9251:146::-;9316:29;:16;9337:7;9316:20;:29::i;:::-;9361:28;;-1:-1:-1;;;;;9361:28:0;;;;;;;;9251:146;:::o;19042:239::-;19101:7;;19141:17;:7;19154:3;19141:12;:17::i;:::-;19120:38;-1:-1:-1;19169:23:0;19195:42;19219:17;19195:19;19120:38;19225:11;19195:14;:19::i;14672:590::-;14851:17;14871:43;14898:15;;14872:20;14884:7;;14872;:11;;:20;;;;:::i;:::-;14871:26;;:43::i;:::-;14851:63;;14926:24;14953:26;14967:11;;14953:9;:13;;:26;;;;:::i;:::-;14926:53;;15008:26;15022:11;;15008:9;:13;;:26;;;;:::i;:::-;14990:15;:44;15072:14;;:36;;15091:16;15072:18;:36::i;:::-;15055:14;:53;15144:5;;-1:-1:-1;;15144:9:0;15136:18;;;;:7;:18;;;;;;:40;;15159:16;15136:22;:40::i;:::-;15127:5;;;15119:14;;;;:7;:14;;;;;;;;;:57;;;;15209:5;;15202:34;;;;;;;;;;;15225:10;15202:34;;;;;;;;;;;;;;-1:-1:-1;;15247:5:0;:7;;;;;;-1:-1:-1;14672:590:0:o;8194:203::-;8266:4;-1:-1:-1;;;;;8291:21:0;;8283:68;;;;-1:-1:-1;;;8283:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8369:20:0;:11;:20;;;;;;;;;;;;;;;8194:203::o;1851:192::-;1937:7;1973:12;1965:6;;;;1957:29;;;;-1:-1:-1;;;1957:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2009:5:0;;;1851:192::o;8003:183::-;8083:18;8087:4;8093:7;8083:3;:18::i;:::-;8075:64;;;;-1:-1:-1;;;8075:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8150:20:0;8173:5;8150:20;;;;;;;;;;;:28;;-1:-1:-1;;8150:28:0;;;8003:183::o;3877:278::-;3963:7;3998:12;3991:5;3983:28;;;;-1:-1:-1;;;3983:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:9;4038:1;4034;:5;;;;;;;3877:278;-1:-1:-1;;;;;3877:278:0:o;5413:106::-;5466:6;5510:1;5506;5501;5497;5493;:5;:9;5492:15;;;;;;:19;;5413:106;-1:-1:-1;;;5413:106:0:o;4620:130::-;4678:7;4705:37;4709:1;4712;4705:37;;;;;;;;;;;;;;;;;5321:7;5357:12;5349:6;5341:29;;;;-1:-1:-1;;;5341:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5392:1;5388;:5;;;;;;;5235:166;-1:-1:-1;;;;5235:166:0:o

Swarm Source

ipfs://322a290e4bcd3d4b34638f759727099682ff32a2b5764a0a2e1ecdc7e70799eb

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.