ETH Price: $2,075.78 (-2.52%)

Contract

0xCAF234Ae8112D30d8B20712895937D23787C052D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
WITHDRAW237450722025-11-07 4:41:11118 days ago1762490471IN
0xCAF234Ae...3787C052D
0 ETH0.000304062.21921618
CLAIMREWARD226661932025-06-09 9:42:11269 days ago1749462131IN
0xCAF234Ae...3787C052D
0 ETH0.000165412.38632264
WITHDRAW226661642025-06-09 9:36:23269 days ago1749461783IN
0xCAF234Ae...3787C052D
0 ETH0.000442472.58398164
WITHDRAW208759372024-10-02 6:11:47519 days ago1727849507IN
0xCAF234Ae...3787C052D
0 ETH0.000951647.81853611
CLAIMREWARD207985462024-09-21 11:06:59530 days ago1726916819IN
0xCAF234Ae...3787C052D
0 ETH0.001234214.28177357
CLAIMREWARD205559862024-08-18 14:03:11564 days ago1723989791IN
0xCAF234Ae...3787C052D
0 ETH0.000130041.55518313
CLAIMREWARD205559842024-08-18 14:02:47564 days ago1723989767IN
0xCAF234Ae...3787C052D
0 ETH0.000129281.49607734
WITHDRAW196997522024-04-20 22:57:47684 days ago1713653867IN
0xCAF234Ae...3787C052D
0 ETH0.001026259.80740926
CLAIMREWARD196997522024-04-20 22:57:47684 days ago1713653867IN
0xCAF234Ae...3787C052D
0 ETH0.000867159.80740926
CLAIMREWARD196997392024-04-20 22:55:11684 days ago1713653711IN
0xCAF234Ae...3787C052D
0 ETH0.000783269.06366046
WITHDRAW171303192023-04-26 12:12:111044 days ago1682511131IN
0xCAF234Ae...3787C052D
0 ETH0.003975938
CLAIMREWARD171303112023-04-26 12:10:351044 days ago1682511035IN
0xCAF234Ae...3787C052D
0 ETH0.0031830436
CLAIMREWARD168556402023-03-18 15:50:231083 days ago1679154623IN
0xCAF234Ae...3787C052D
0 ETH0.0020068324
WITHDRAW167239722023-02-28 3:24:351101 days ago1677554675IN
0xCAF234Ae...3787C052D
0 ETH0.0018124817
STAKE167239522023-02-28 3:20:351101 days ago1677554435IN
0xCAF234Ae...3787C052D
0 ETH0.0033755219
WITHDRAW165809022023-02-08 1:53:231121 days ago1675821203IN
0xCAF234Ae...3787C052D
0 ETH0.0034535433
CLAIMREWARD165809002023-02-08 1:52:591121 days ago1675821179IN
0xCAF234Ae...3787C052D
0 ETH0.0028517933
STAKE165548852023-02-04 10:41:111125 days ago1675507271IN
0xCAF234Ae...3787C052D
0 ETH0.0024098918
WITHDRAW161047372022-12-03 13:58:471188 days ago1670075927IN
0xCAF234Ae...3787C052D
0 ETH0.0029299428
CLAIMREWARD161047282022-12-03 13:56:591188 days ago1670075819IN
0xCAF234Ae...3787C052D
0 ETH0.0033598838
STAKE159050852022-11-05 16:43:591216 days ago1667666639IN
0xCAF234Ae...3787C052D
0 ETH0.0017073912
CLAIMREWARD159050722022-11-05 16:41:231216 days ago1667666483IN
0xCAF234Ae...3787C052D
0 ETH0.0012378514
WITHDRAW157631232022-10-16 20:40:351236 days ago1665952835IN
0xCAF234Ae...3787C052D
0 ETH0.0014649714
CLAIMREWARD157273502022-10-11 20:47:231241 days ago1665521243IN
0xCAF234Ae...3787C052D
0 ETH0.0023667827.38766958
CLAIMREWARD156837252022-10-05 18:35:111247 days ago1664994911IN
0xCAF234Ae...3787C052D
0 ETH0.0020212120.81193521
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stake

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at Etherscan.io on 2020-08-29
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.6.0;

// ----------------------------------------------------------------------------
// 'SWFL' Staking smart contract
// ----------------------------------------------------------------------------

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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() public {
        owner = msg.sender;
    }

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

    function transferOwnership(address payable _newOwner) public onlyOwner {
        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;
    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and assisted
// token transfers
// ----------------------------------------------------------------------------
contract Stake is Owned {
    using SafeMath for uint256;
    
    address public SWFL = 0xBa21Ef4c9f433Ede00badEFcC2754B8E74bd538A;
    
    uint256 public totalStakes = 0;
    uint256 stakingFee = 25; // 2.5%
    uint256 unstakingFee = 25; // 2.5% 
    uint256 public totalDividends = 0;
    uint256 private scaledRemainder = 0;
    uint256 private scaling = uint256(10) ** 12;
    uint public round = 1;
    
    struct USER{
        uint256 stakedTokens;
        uint256 lastDividends;
        uint256 fromTotalDividend;
        uint round;
        uint256 remainder;
    }
    
    mapping(address => USER) stakers;
    mapping (uint => uint256) public payouts;                   // keeps record of each payout
    
    event STAKED(address staker, uint256 tokens, uint256 stakingFee);
    event UNSTAKED(address staker, uint256 tokens, uint256 unstakingFee);
    event PAYOUT(uint256 round, uint256 tokens, address sender);
    event CLAIMEDREWARD(address staker, uint256 reward);
    
    // ------------------------------------------------------------------------
    // Token holders can stake their tokens using this function
    // @param tokens number of tokens to stake
    // ------------------------------------------------------------------------
    function STAKE(uint256 tokens) external {
        require(IERC20(SWFL).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from user account");
        
        uint256 _stakingFee = 0;
        if(totalStakes > 0)
            _stakingFee= (onePercent(tokens).mul(stakingFee)).div(10); 
        
        if(totalStakes > 0)
            // distribute the staking fee accumulated before updating the user's stake
            _addPayout(_stakingFee);
            
        // 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 = (tokens.sub(_stakingFee)).add(stakers[msg.sender].stakedTokens);
        stakers[msg.sender].lastDividends = owing;
        stakers[msg.sender].fromTotalDividend= totalDividends;
        stakers[msg.sender].round =  round;
        
        totalStakes = totalStakes.add(tokens.sub(_stakingFee));
        
        emit STAKED(msg.sender, tokens.sub(_stakingFee), _stakingFee);
    }
    
    // ------------------------------------------------------------------------
    // 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 {
        require(IERC20(SWFL).transferFrom(msg.sender, address(this), tokens), "Tokens cannot be transferred from funder account");
        _addPayout(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 {
        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(SWFL).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) {
        uint256 amount =  ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        stakers[staker].remainder += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return amount;
    }
    
    function getPendingReward(address staker) public view returns(uint256 _pendingReward) {
        uint256 amount =  ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)).div(scaling);
        amount += ((totalDividends.sub(payouts[stakers[staker].round - 1])).mul(stakers[staker].stakedTokens)) % scaling ;
        return (amount + 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 {
        
        require(stakers[msg.sender].stakedTokens >= tokens && tokens > 0, "Invalid token amount to withdraw");
        
        uint256 _unstakingFee = (onePercent(tokens).mul(unstakingFee)).div(10);
        
        // 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;
                
        require(IERC20(SWFL).transfer(msg.sender, tokens.sub(_unstakingFee)), "Error in un-staking tokens");
        
        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;
        
        totalStakes = totalStakes.sub(tokens);
        
        if(totalStakes > 0)
            // distribute the un staking fee accumulated after updating the user's stake
            _addPayout(_unstakingFee);
        
        emit UNSTAKED(msg.sender, tokens.sub(_unstakingFee), _unstakingFee);
    }
    
    // ------------------------------------------------------------------------
    // 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 yourStakedSWFL(address staker) external view returns(uint256 stakedSWFL){
        return stakers[staker].stakedTokens;
    }
    
    // ------------------------------------------------------------------------
    // Get the SWFL balance of the token holder
    // @param user the address of the token holder
    // ------------------------------------------------------------------------
    function yourSWFLBalance(address user) external view returns(uint256 SWFLBalance){
        return IERC20(SWFL).balanceOf(user);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":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"},{"indexed":false,"internalType":"uint256","name":"stakingFee","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"},{"indexed":false,"internalType":"uint256","name":"unstakingFee","type":"uint256"}],"name":"UNSTAKED","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ADDFUNDS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CLAIMREWARD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"STAKE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SWFL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"WITHDRAW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"_pendingReward","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":"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":[{"internalType":"address","name":"user","type":"address"}],"name":"yourSWFLBalance","outputs":[{"internalType":"uint256","name":"SWFLBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"yourStakedSWFL","outputs":[{"internalType":"uint256","name":"stakedSWFL","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600180546001600160a01b03191673ba21ef4c9f433ede00badefcc2754b8e74bd538a1781556000600281905560196003819055600455600581905560065564e8d4a5100060075560085534801561005b57600080fd5b50600080546001600160a01b031916331790556110648061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bf9befb111610066578063bf9befb1146101ea578063ca84d591146101f2578063f2fde38b1461020f578063f55487ac14610235576100ea565b80638da5cb5b146101bd578063997664d7146101c5578063b53d6c24146101cd576100ea565b80632c75bcda116100c85780632c75bcda1461014a57806333de3d17146101695780634baf782e1461018f5780634df9d6ba14610197576100ea565b80630e4dbb4c146100ef578063146ca5311461011357806329652e861461012d575b600080fd5b6100f761025b565b604080516001600160a01b039092168252519081900360200190f35b61011b61026a565b60408051918252519081900360200190f35b61011b6004803603602081101561014357600080fd5b5035610270565b6101676004803603602081101561016057600080fd5b5035610282565b005b61011b6004803603602081101561017f57600080fd5b50356001600160a01b03166104e1565b6101676104fc565b61011b600480360360208110156101ad57600080fd5b50356001600160a01b031661067c565b6100f7610746565b61011b610755565b610167600480360360208110156101e357600080fd5b503561075b565b61011b610828565b6101676004803603602081101561020857600080fd5b503561082e565b6101676004803603602081101561022557600080fd5b50356001600160a01b03166109cd565b61011b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a2f565b6001546001600160a01b031681565b60085481565b600a6020526000908152604090205481565b3360009081526009602052604090205481118015906102a15750600081115b6102f2576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b6000610314600a61030e60045461030886610ab2565b90610add565b90610b3f565b9050600061032133610b81565b3360008181526009602052604090206004018054830190556001549192506001600160a01b039091169063a9059cbb9061035b8686610c4d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156103a157600080fd5b505af11580156103b5573d6000803e3d6000fd5b505050506040513d60208110156103cb57600080fd5b505161041e576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b336000908152600960205260409020546104389084610c4d565b33600090815260096020526040902090815560018101829055600554600280830191909155600854600390920191909155546104749084610c4d565b6002819055156104875761048782610c8f565b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa2336104b38585610c4d565b604080516001600160a01b0390931683526020830191909152818101859052519081900360600190a1505050565b6001600160a01b031660009081526009602052604090205490565b33600090815260096020526040902060020154600554111561067a57600061052333610b81565b33600090815260096020526040902060040154909150610544908290610d74565b3360008181526009602090815260408083206004908101849055600154825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50516106165760405162461bcd60e51b815260040180806020018281038252602c815260200180610f84602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a1336000908152600960205260409020600181019190915560085460038201556005546002909101555b565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a909252822054600554929384936106cb93919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610716926103089190610c4d565b8161071d57fe5b6001600160a01b0394909416600090815260096020526040902060040154930601909101919050565b6000546001600160a01b031681565b60055481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b505050506040513d60208110156107df57600080fd5b505161081c5760405162461bcd60e51b8152600401808060200182810382526030815260200180610fff6030913960400191505060405180910390fd5b61082581610c8f565b50565b60025481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516108ef5760405162461bcd60e51b815260040180806020018281038252602e815260200180610fd1602e913960400191505060405180910390fd5b600254600090156109115761090e600a61030e60035461030886610ab2565b90505b600254156109225761092281610c8f565b600061092d33610b81565b336000908152600960205260409020600481018054830190555490915061095e906109588585610c4d565b90610d74565b33600090815260096020526040902090815560018101829055600554600282015560085460039091015561099e6109958484610c4d565b60025490610d74565b6002557f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c336104b38585610c4d565b6000546001600160a01b031633146109e457600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610a8057600080fd5b505afa158015610a94573d6000803e3d6000fd5b505050506040513d6020811015610aaa57600080fd5b505192915050565b600080610ac0836064610dce565b90506000610ad561271061030e846064610add565b949350505050565b600082610aec57506000610b39565b82820282848281610af957fe5b0414610b365760405162461bcd60e51b8152600401808060200182810382526021815260200180610fb06021913960400191505060405180910390fd5b90505b92915050565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a90925282205460055492938493610bd093919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610c1b926103089190610c4d565b81610c2257fe5b6001600160a01b03949094166000908152600960205260409020600401805491909406019092555090565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e8a565b6000610cac60065461095860075485610add90919063ffffffff16565b90506000610cc560025483610b3f90919063ffffffff16565b9050610cdc60025483610ee490919063ffffffff16565b600655600554610cec9082610d74565b600555600854600019016000908152600a6020526040902054610d0f9082610d74565b600880546000908152600a602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a1505060088054600101905550565b600082820183811015610b36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818260018486010381610ddf57fe5b04029392505050565b60008183610e745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e39578181015183820152602001610e21565b50505050905090810190601f168015610e665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e8057fe5b0495945050505050565b60008184841115610edc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b505050900390565b6000610b3683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183610f705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b50828481610f7a57fe5b0694935050505056fe4552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b164736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638da5cb5b1161008c578063bf9befb111610066578063bf9befb1146101ea578063ca84d591146101f2578063f2fde38b1461020f578063f55487ac14610235576100ea565b80638da5cb5b146101bd578063997664d7146101c5578063b53d6c24146101cd576100ea565b80632c75bcda116100c85780632c75bcda1461014a57806333de3d17146101695780634baf782e1461018f5780634df9d6ba14610197576100ea565b80630e4dbb4c146100ef578063146ca5311461011357806329652e861461012d575b600080fd5b6100f761025b565b604080516001600160a01b039092168252519081900360200190f35b61011b61026a565b60408051918252519081900360200190f35b61011b6004803603602081101561014357600080fd5b5035610270565b6101676004803603602081101561016057600080fd5b5035610282565b005b61011b6004803603602081101561017f57600080fd5b50356001600160a01b03166104e1565b6101676104fc565b61011b600480360360208110156101ad57600080fd5b50356001600160a01b031661067c565b6100f7610746565b61011b610755565b610167600480360360208110156101e357600080fd5b503561075b565b61011b610828565b6101676004803603602081101561020857600080fd5b503561082e565b6101676004803603602081101561022557600080fd5b50356001600160a01b03166109cd565b61011b6004803603602081101561024b57600080fd5b50356001600160a01b0316610a2f565b6001546001600160a01b031681565b60085481565b600a6020526000908152604090205481565b3360009081526009602052604090205481118015906102a15750600081115b6102f2576040805162461bcd60e51b815260206004820181905260248201527f496e76616c696420746f6b656e20616d6f756e7420746f207769746864726177604482015290519081900360640190fd5b6000610314600a61030e60045461030886610ab2565b90610add565b90610b3f565b9050600061032133610b81565b3360008181526009602052604090206004018054830190556001549192506001600160a01b039091169063a9059cbb9061035b8686610c4d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156103a157600080fd5b505af11580156103b5573d6000803e3d6000fd5b505050506040513d60208110156103cb57600080fd5b505161041e576040805162461bcd60e51b815260206004820152601a60248201527f4572726f7220696e20756e2d7374616b696e6720746f6b656e73000000000000604482015290519081900360640190fd5b336000908152600960205260409020546104389084610c4d565b33600090815260096020526040902090815560018101829055600554600280830191909155600854600390920191909155546104749084610c4d565b6002819055156104875761048782610c8f565b7faeb913af138cc126643912346d844a49a83761eb58fcfc9e571fc99e1b3d9fa2336104b38585610c4d565b604080516001600160a01b0390931683526020830191909152818101859052519081900360600190a1505050565b6001600160a01b031660009081526009602052604090205490565b33600090815260096020526040902060020154600554111561067a57600061052333610b81565b33600090815260096020526040902060040154909150610544908290610d74565b3360008181526009602090815260408083206004908101849055600154825163a9059cbb60e01b8152918201959095526024810186905290519495506001600160a01b039093169363a9059cbb93604480820194918390030190829087803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50516106165760405162461bcd60e51b815260040180806020018281038252602c815260200180610f84602c913960400191505060405180910390fd5b604080513381526020810183905281517f8a0128b5f12decc7d739e546c0521c3388920368915393f80120bc5b408c7c9e929181900390910190a1336000908152600960205260409020600181019190915560085460038201556005546002909101555b565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a909252822054600554929384936106cb93919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610716926103089190610c4d565b8161071d57fe5b6001600160a01b0394909416600090815260096020526040902060040154930601909101919050565b6000546001600160a01b031681565b60055481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b505050506040513d60208110156107df57600080fd5b505161081c5760405162461bcd60e51b8152600401808060200182810382526030815260200180610fff6030913960400191505060405180910390fd5b61082581610c8f565b50565b60025481565b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516108ef5760405162461bcd60e51b815260040180806020018281038252602e815260200180610fd1602e913960400191505060405180910390fd5b600254600090156109115761090e600a61030e60035461030886610ab2565b90505b600254156109225761092281610c8f565b600061092d33610b81565b336000908152600960205260409020600481018054830190555490915061095e906109588585610c4d565b90610d74565b33600090815260096020526040902090815560018101829055600554600282015560085460039091015561099e6109958484610c4d565b60025490610d74565b6002557f99b6f4b247a06a3dbcda8d2244b818e254005608c2455221a00383939a119e7c336104b38585610c4d565b6000546001600160a01b031633146109e457600080fd5b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b158015610a8057600080fd5b505afa158015610a94573d6000803e3d6000fd5b505050506040513d6020811015610aaa57600080fd5b505192915050565b600080610ac0836064610dce565b90506000610ad561271061030e846064610add565b949350505050565b600082610aec57506000610b39565b82820282848281610af957fe5b0414610b365760405162461bcd60e51b8152600401808060200182810382526021815260200180610fb06021913960400191505060405180910390fd5b90505b92915050565b6000610b3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b6007546001600160a01b03821660009081526009602090815260408083208054600390910154600019018452600a90925282205460055492938493610bd093919261030e929161030891610c4d565b6007546001600160a01b03851660009081526009602090815260408083208054600390910154600019018452600a909252909120546005549394509192610c1b926103089190610c4d565b81610c2257fe5b6001600160a01b03949094166000908152600960205260409020600401805491909406019092555090565b6000610b3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e8a565b6000610cac60065461095860075485610add90919063ffffffff16565b90506000610cc560025483610b3f90919063ffffffff16565b9050610cdc60025483610ee490919063ffffffff16565b600655600554610cec9082610d74565b600555600854600019016000908152600a6020526040902054610d0f9082610d74565b600880546000908152600a602090815260409182902093909355905481519081529182018590523382820152517fddf8c05dcee82ec75482e095e6c06768c848d5a7df7147686033433d141328b69181900360600190a1505060088054600101905550565b600082820183811015610b36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818260018486010381610ddf57fe5b04029392505050565b60008183610e745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e39578181015183820152602001610e21565b50505050905090810190601f168015610e665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e8057fe5b0495945050505050565b60008184841115610edc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b505050900390565b6000610b3683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060008183610f705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610e39578181015183820152602001610e21565b50828481610f7a57fe5b0694935050505056fe4552524f523a206572726f7220696e2073656e64696e67207265776172642066726f6d20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2075736572206163636f756e74546f6b656e732063616e6e6f74206265207472616e736665727265642066726f6d2066756e646572206163636f756e74a2646970667358221220c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b164736f6c634300060c0033

Deployed Bytecode Sourcemap

7740:8550:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:64;;;:::i;:::-;;;;-1:-1:-1;;;;;7810:64:0;;;;;;;;;;;;;;8135:21;;;:::i;:::-;;;;;;;;;;;;;;;;8387:40;;;;;;;;;;;;;;;;-1:-1:-1;8387:40:0;;:::i;13818:1184::-;;;;;;;;;;;;;;;;-1:-1:-1;13818:1184:0;;:::i;:::-;;15742:135;;;;;;;;;;;;;;;;-1:-1:-1;15742:135:0;-1:-1:-1;;;;;15742:135:0;;:::i;11754:703::-;;;:::i;13116:406::-;;;;;;;;;;;;;;;;-1:-1:-1;13116:406:0;-1:-1:-1;;;;;13116:406:0;;:::i;6071:28::-;;;:::i;8003:33::-;;;:::i;10496:212::-;;;;;;;;;;;;;;;;-1:-1:-1;10496:212:0;;:::i;7887:30::-;;;:::i;9040:1146::-;;;;;;;;;;;;;;;;-1:-1:-1;9040:1146:0;;:::i;6339:166::-;;;;;;;;;;;;;;;;-1:-1:-1;6339:166:0;-1:-1:-1;;;;;6339:166:0;;:::i;16152:135::-;;;;;;;;;;;;;;;;-1:-1:-1;16152:135:0;-1:-1:-1;;;;;16152:135:0;;:::i;7810:64::-;;;-1:-1:-1;;;;;7810:64:0;;:::o;8135:21::-;;;;:::o;8387:40::-;;;;;;;;;;;;;:::o;13818:1184::-;13898:10;13890:19;;;;:7;:19;;;;;:32;:42;-1:-1:-1;13890:42:0;;;:56;;;13945:1;13936:6;:10;13890:56;13882:101;;;;;-1:-1:-1;;;13882:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:21;14028:46;14071:2;14029:36;14052:12;;14029:18;14040:6;14029:10;:18::i;:::-;:22;;:36::i;:::-;14028:42;;:46::i;:::-;14004:70;;14200:13;14216:25;14230:10;14216:13;:25::i;:::-;14260:10;14252:19;;;;:7;:19;;;;;:29;;:38;;;;;;-1:-1:-1;14334:4:0;14252:38;;-1:-1:-1;;;;;;14334:4:0;;;;14327:21;;14361:25;:6;14372:13;14361:10;:25::i;:::-;14327:60;;;;;;;;;;;;;-1:-1:-1;;;;;14327:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14327:60:0;14319:99;;;;;-1:-1:-1;;;14319:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14482:10;14474:19;;;;:7;:19;;;;;:32;:44;;14511:6;14474:36;:44::i;:::-;14447:10;14439:19;;;;:7;:19;;;;;:79;;;14529:33;;;:41;;;14620:14;;14581:37;;;;:53;;;;14674:5;;14645:25;;;;:34;;;;14714:11;:23;;14730:6;14714:15;:23::i;:::-;14700:11;:37;;;14761:15;14758:148;;14881:25;14892:13;14881:10;:25::i;:::-;14932:62;14941:10;14953:25;:6;14964:13;14953:10;:25::i;:::-;14932:62;;;-1:-1:-1;;;;;14932:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13818:1184;;;:::o;15742:135::-;-1:-1:-1;;;;;15841:15:0;15804:18;15841:15;;;:7;:15;;;;;:28;;15742:135::o;11754:703::-;11823:10;11815:19;;;;:7;:19;;;;;:37;;;11798:14;;:54;11795:655;;;11868:13;11884:25;11898:10;11884:13;:25::i;:::-;11960:10;11952:19;;;;:7;:19;;;;;:29;;;11868:41;;-1:-1:-1;11942:40:0;;11868:41;;11942:9;:40::i;:::-;12005:10;12029:1;11997:19;;;:7;:19;;;;;;;;:29;;;;:33;;;12070:4;;12063:39;;-1:-1:-1;;;12063:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12070:4:0;;;;12063:21;;:39;;;;;;;;;;;;;12070:4;12063:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12063:39:0;12055:96;;;;-1:-1:-1;;;12055:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12181:32;;;12195:10;12181:32;;;;;;;;;;;;;;;;;;;;;12246:10;12238:19;;;;:7;:19;;;;;:33;;;:41;;;;12334:5;;12306:25;;;:33;12414:14;;12374:37;;;;:54;11795:655;11754:703::o;13116:406::-;13328:7;;-1:-1:-1;;;;;13293:15:0;;13178:22;13293:15;;;:7;:15;;;;;;;;:28;;13260:21;;;;;-1:-1:-1;;13260:25:0;13252:34;;:7;:34;;;;;;13233:14;;13178:22;;;;13231:105;;13328:7;;13232:90;;13293:28;13233:54;;:18;:54::i;13231:105::-;13452:7;;-1:-1:-1;;;;;13419:15:0;;;;;;:7;:15;;;;;;;;:28;;13386:21;;;;;-1:-1:-1;;13386:25:0;13378:34;;:7;:34;;;;;;;13359:14;;13213:123;;-1:-1:-1;13452:7:0;;13358:90;;13359:54;;:14;:18;:54::i;13358:90::-;13357:102;;;;;-1:-1:-1;;;;;13488:15:0;;;;;;;;:7;:15;;;;;:25;;;13357:102;;13347:112;13479:34;;;;13116:406;-1:-1:-1;13116:406:0:o;6071:28::-;;;-1:-1:-1;;;;;6071:28:0;;:::o;8003:33::-;;;;:::o;10496:212::-;10565:4;;10558:60;;;-1:-1:-1;;;10558:60:0;;10584:10;10558:60;;;;10604:4;10558:60;;;;;;;;;;;;-1:-1:-1;;;;;10565:4:0;;;;10558:25;;:60;;;;;;;;;;;;;;;10565:4;;10558:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10558:60:0;10550:121;;;;-1:-1:-1;;;10550:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10682:18;10693:6;10682:10;:18::i;:::-;10496:212;:::o;7887:30::-;;;;:::o;9040:1146::-;9106:4;;9099:60;;;-1:-1:-1;;;9099:60:0;;9125:10;9099:60;;;;9145:4;9099:60;;;;;;;;;;;;-1:-1:-1;;;;;9106:4:0;;;;9099:25;;:60;;;;;;;;;;;;;;;9106:4;;9099:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9099:60:0;9091:119;;;;-1:-1:-1;;;9091:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9268:11;;9231:19;;9268:15;9265:90;;9311:44;9352:2;9312:34;9335:10;;9312:18;9323:6;9312:10;:18::i;9311:44::-;9298:57;;9265:90;9380:11;;:15;9377:144;;9498:23;9509:11;9498:10;:23::i;:::-;9651:13;9667:25;9681:10;9667:13;:25::i;:::-;9711:10;9703:19;;;;:7;:19;;;;;:29;;;:38;;;;;;9827:32;9651:41;;-1:-1:-1;9797:63:0;;9798:23;:6;9809:11;9798:10;:23::i;:::-;9797:29;;:63::i;:::-;9770:10;9762:19;;;;:7;:19;;;;;:98;;;9871:33;;;:41;;;9962:14;;9923:37;;;:53;10016:5;;9987:25;;;;:34;10056:40;10072:23;:6;10083:11;10072:10;:23::i;:::-;10056:11;;;:15;:40::i;:::-;10042:11;:54;10122:56;10129:10;10141:23;:6;10152:11;10141:10;:23::i;6339:166::-;6305:5;;-1:-1:-1;;;;;6305:5:0;6291:10;:19;6283:28;;;;;;6421:5:::1;:17:::0;;-1:-1:-1;;;;;;6421:17:0::1;-1:-1:-1::0;;;;;6421:17:0;::::1;::::0;;::::1;::::0;;6454:43:::1;::::0;6421:17;;6475:10:::1;::::0;6454:43:::1;::::0;6421:5;6454:43:::1;6339:166:::0;:::o;16152:135::-;16258:4;;16251:28;;;-1:-1:-1;;;16251:28:0;;-1:-1:-1;;;;;16251:28:0;;;;;;;;;16213:19;;16258:4;;;;;16251:22;;:28;;;;;;;;;;;;;;;16258:4;16251:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16251:28:0;;16152:135;-1:-1:-1;;16152:135:0:o;15228:239::-;15287:7;;15327:17;:7;15340:3;15327:12;:17::i;:::-;15306:38;-1:-1:-1;15355:23:0;15381:42;15405:17;15381:19;15306:38;15411:11;15381:14;:19::i;:42::-;15355:68;15228:239;-1:-1:-1;;;;15228:239:0:o;2644:471::-;2702:7;2947:6;2943:47;;-1:-1:-1;2977:1:0;2970:8;;2943:47;3014:5;;;3018:1;3014;:5;:1;3038:5;;;;;:10;3030:56;;;;-1:-1:-1;;;3030:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3106:1;-1:-1:-1;2644:471:0;;;;;:::o;3591:132::-;3649:7;3676:39;3680:1;3683;3676:39;;;;;;;;;;;;;;;;;:3;:39::i;12730:374::-;12921:7;;-1:-1:-1;;;;;12886:15:0;;12786:7;12886:15;;;:7;:15;;;;;;;;:28;;12853:21;;;;;-1:-1:-1;;12853:25:0;12845:34;;:7;:34;;;;;;12826:14;;12786:7;;;;12824:105;;12921:7;;12825:90;;12886:28;12826:54;;:18;:54::i;12824:105::-;13064:7;;-1:-1:-1;;;;;13031:15:0;;;;;;:7;:15;;;;;;;;:28;;12998:21;;;;;-1:-1:-1;;12998:25:0;12990:34;;:7;:34;;;;;;;12971:14;;12806:123;;-1:-1:-1;13064:7:0;;12970:90;;12971:54;;:14;:18;:54::i;12970:90::-;12969:102;;;;;-1:-1:-1;;;;;12940:15:0;;;;;;;;:7;:15;;;;;:25;;:131;;12969:102;;;;12940:131;;;;-1:-1:-1;13090:6:0;12730:374::o;1754:136::-;1812:7;1839:43;1843:1;1846;1839:43;;;;;;;;;;;;;;;;;:3;:43::i;10927:585::-;11105:17;11125:42;11151:15;;11126:19;11137:7;;11126:6;:10;;:19;;;;:::i;11125:42::-;11105:62;;11179:24;11206:26;11220:11;;11206:9;:13;;:26;;;;:::i;:::-;11179:53;;11261:26;11275:11;;11261:9;:13;;:26;;;;:::i;:::-;11243:15;:44;11325:14;;:36;;11344:16;11325:18;:36::i;:::-;11308:14;:53;11397:5;;-1:-1:-1;;11397:7:0;11389:16;;;;:7;:16;;;;;;:38;;11410:16;11389:20;:38::i;:::-;11380:5;;;11372:14;;;;:7;:14;;;;;;;;;:55;;;;11460:5;;11453:33;;;;;;;;;;;11475:10;11453:33;;;;;;;;;;;;;;-1:-1:-1;;11497:5:0;:7;;;;;;-1:-1:-1;10927:585:0:o;1290:181::-;1348:7;1380:5;;;1404:6;;;;1396:46;;;;;-1:-1:-1;;;1396:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5755:106;5808:6;5852:1;5848;5843;5839;5835;:5;:9;5834:15;;;;;;:19;;5755:106;-1:-1:-1;;;5755:106:0:o;4219:278::-;4305:7;4340:12;4333:5;4325:28;;;;-1:-1:-1;;;4325:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:9;4380:1;4376;:5;;;;;;;4219:278;-1:-1:-1;;;;;4219:278:0:o;2193:192::-;2279:7;2315:12;2307:6;;;;2299:29;;;;-1:-1:-1;;;2299:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2351:5:0;;;2193:192::o;4962:130::-;5020:7;5047:37;5051:1;5054;5047:37;;;;;;;;;;;;;;;;;5663:7;5699:12;5691:6;5683:29;;;;-1:-1:-1;;;5683:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5734:1;5730;:5;;;;;;;5577:166;-1:-1:-1;;;;5577:166:0:o

Swarm Source

ipfs://c8eca0ecfe48a7e8aea5f141125c65f91982d3a36385500119c9ccb8605153b1

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.