ETH Price: $3,288.19 (+1.43%)
Gas: 1 Gwei

Contract

0x3C1738eb90405C9806b49a01C14d220b1e61657c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit194625472024-03-18 15:24:23130 days ago1710775463IN
0x3C1738eb...b1e61657c
0 ETH0.0058101246
Exit189508702024-01-06 21:42:59202 days ago1704577379IN
0x3C1738eb...b1e61657c
0 ETH0.0022008517.4246364
Exit184581772023-10-29 20:19:47271 days ago1698610787IN
0x3C1738eb...b1e61657c
0 ETH0.0016470213.03983969
Exit184183912023-10-24 6:39:35277 days ago1698129575IN
0x3C1738eb...b1e61657c
0 ETH0.0027078919.14966232
Exit181956662023-09-23 2:53:47308 days ago1695437627IN
0x3C1738eb...b1e61657c
0 ETH0.001077347.61877621
Exit168343472023-03-15 16:01:23499 days ago1678896083IN
0x3C1738eb...b1e61657c
0 ETH0.01624289113.2643319
Exit167626562023-03-05 14:01:11509 days ago1678024871IN
0x3C1738eb...b1e61657c
0 ETH0.0027817822.02400771
Exit166926422023-02-23 17:40:35519 days ago1677174035IN
0x3C1738eb...b1e61657c
0 ETH0.0068213254.87479814
Exit165651092023-02-05 20:55:59537 days ago1675630559IN
0x3C1738eb...b1e61657c
0 ETH0.003444824.36094805
Exit164689412023-01-23 10:34:59551 days ago1674470099IN
0x3C1738eb...b1e61657c
0 ETH0.0020354816.11538821
Exit163571862023-01-07 20:06:23566 days ago1673121983IN
0x3C1738eb...b1e61657c
0 ETH0.00449531.34439267
Exit163496322023-01-06 18:48:35567 days ago1673030915IN
0x3C1738eb...b1e61657c
0 ETH0.0036446928.85580781
Exit163433792023-01-05 21:50:11568 days ago1672955411IN
0x3C1738eb...b1e61657c
0 ETH0.0032511722.67097233
Exit163298052023-01-04 0:21:11570 days ago1672791671IN
0x3C1738eb...b1e61657c
0 ETH0.0019035318.03616623
Exit163294262023-01-03 23:05:11570 days ago1672787111IN
0x3C1738eb...b1e61657c
0 ETH0.0031147721.71983872
Exit163257482023-01-03 10:45:47571 days ago1672742747IN
0x3C1738eb...b1e61657c
0 ETH0.0018001214.48125583
Exit162764662022-12-27 13:45:35577 days ago1672148735IN
0x3C1738eb...b1e61657c
0 ETH0.0016485113.05165653
Exit162468612022-12-23 10:35:59582 days ago1671791759IN
0x3C1738eb...b1e61657c
0 ETH0.0018085714.54925134
Exit161714792022-12-12 22:02:47592 days ago1670882567IN
0x3C1738eb...b1e61657c
0 ETH0.0022374115.60188439
Exit161629892022-12-11 17:34:11593 days ago1670780051IN
0x3C1738eb...b1e61657c
0 ETH0.0020446116.18769812
Exit159998532022-11-18 22:22:23616 days ago1668810143IN
0x3C1738eb...b1e61657c
0 ETH0.0018011314.2599656
Exit159404272022-11-10 15:11:23624 days ago1668093083IN
0x3C1738eb...b1e61657c
0 ETH0.0106707484.48264539
Exit159114762022-11-06 14:08:35628 days ago1667743715IN
0x3C1738eb...b1e61657c
0 ETH0.0017102113.54010703
Exit158982342022-11-04 17:45:59630 days ago1667583959IN
0x3C1738eb...b1e61657c
0 ETH0.0030023524.15270503
Exit158947652022-11-04 6:09:35631 days ago1667542175IN
0x3C1738eb...b1e61657c
0 ETH0.0021964417.38973258
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:
BsktLPPool

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.5.0;

contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

library Math {
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Context {
    constructor() internal {}

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash =
            0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;

        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != 0x0 && codehash != accountHash);
    }

    function toPayable(address account)
        internal
        pure
        returns (address payable)
    {
        return address(uint160(account));
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call.value(amount)("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance =
            token.allowance(address(this), spender).add(value);
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance =
            token.allowance(address(this), spender).sub(
                value,
                "SafeERC20: decreased allowance below zero"
            );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            
            // Return data is optional
            require(
                abi.decode(returndata, (bool)),
                "SafeERC20: ERC20 operation did not succeed"
            );
        }
    }
}

contract LPTokenWrapper is Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    IERC20 public BSKTASREWARD = IERC20(0xC03841B5135600312707d39Eb2aF0D2aD5d51A91);  // Approve and Transfer for Stake and Withdraw

    uint256 private _totalSupply;
    mapping(address => uint256) private _balances;

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function stake(uint256 amount) nonReentrant public {
        
        uint256 actualAmount = amount.sub(amount.mul(20).div(1000));  // manage 2% token difference 
        
        _totalSupply = _totalSupply.add(actualAmount);
        
        _balances[_msgSender()] = _balances[_msgSender()].add(actualAmount);
        
        BSKTASREWARD.safeTransferFrom(_msgSender(), address(this), amount);
    }

    function withdraw(uint256 amount) nonReentrant public {
        _totalSupply = _totalSupply.sub(amount);
        _balances[_msgSender()] = _balances[_msgSender()].sub(amount);
        BSKTASREWARD.safeTransfer(_msgSender(), amount);
    }
}

contract BsktLPPool is LPTokenWrapper {
    IERC20 public STAKEBSKT = IERC20(0xC03841B5135600312707d39Eb2aF0D2aD5d51A91); // BSKT TOKEN ADDRESS
    
    uint256 public duration = 30 days;              //-----| Pool Duration |-----       
    uint256 public starttime = 0;                   //-----| Pool will start once notify the reward |-----                           
    uint256 public periodFinish = 0;
    uint256 public rewardRate = 0;
    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;

    mapping(address => uint256) public userRewardPerTokenPaid;
    mapping(address => uint256) public rewards;
    mapping(address => bool) public minimumBsktStakingEntry;

    event Staked(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);
    event Rewarded(address indexed from, address indexed to, uint256 value);

    modifier checkStart() {
        require(
            block.timestamp >= starttime,
            "Error:Pool not started yet."
        );
        _;
    }

    modifier updateReward(address account) {
        rewardPerTokenStored = rewardPerToken();
        lastUpdateTime = lastTimeRewardApplicable();
        if (account != address(0)) {
            rewards[account] = earned(account);
            userRewardPerTokenPaid[account] = rewardPerTokenStored;
        }
        _;
    }
    
    function lastTimeRewardApplicable() public view returns (uint256) {
        return Math.min(block.timestamp, periodFinish);
    }

    function rewardPerToken() public view returns (uint256) {
        if (totalSupply() == 0) {
            return rewardPerTokenStored;
        }
        return
            rewardPerTokenStored.add(
                lastTimeRewardApplicable()
                    .sub(lastUpdateTime)
                    .mul(rewardRate)
                    .mul(1e18)
                    .div(totalSupply())
            );
    }

    function earned(address account) public view returns (uint256) {
        return balanceOf(account)
                .mul(rewardPerToken().sub(userRewardPerTokenPaid[account]))
                .div(1e18)
                .add(rewards[account]);
                
    }

    function stake(uint256 amount) public updateReward(_msgSender()) checkStart {
        require(amount > 0, "Cannot stake 0");
        
        if(!minimumBsktStakingEntry[_msgSender()]) 
            require(amount >= 5000 * 10 ** 18, "Error:For Initial entry 5000 token must be required.");
        
        super.stake(amount);
        
        minimumBsktStakingEntry[_msgSender()] = true;
        
        emit Staked(_msgSender(), amount);
    }

    function withdraw(uint256 amount)
        public
        updateReward(_msgSender())
    {
        require(amount > 0, "Cannot withdraw 0");
        super.withdraw(amount);
        
        emit Withdrawn(_msgSender(), amount);
    }

    // withdraw stake and get rewards at once
    function exit() external {
        withdraw(balanceOf(_msgSender()));
        getReward();
    }

    function getReward() public nonReentrant updateReward(_msgSender()){
        uint256 reward = earned(_msgSender());

        if (reward > 0) {
            rewards[_msgSender()] = 0;
        
            STAKEBSKT.safeTransfer(_msgSender(), reward);
            
            emit Rewarded(address(this), _msgSender(), reward);
        }
        
    }

    // notify reward set for duration
    function notifyRewardRate(uint256 _reward) public updateReward(address(0)) onlyOwner{
       
        rewardRate = _reward.div(duration);
       
        lastUpdateTime = block.timestamp;
        starttime = block.timestamp; 
        periodFinish = block.timestamp.add(duration);

    }
    
    // update duration
    function setDuration(uint256 _duration) public onlyOwner {
        duration = _duration;   
    }
    
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Rewarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":true,"inputs":[],"name":"BSKTASREWARD","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAKEBSKT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minimumBsktStakingEntry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_reward","type":"uint256"}],"name":"notifyRewardRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405273c03841b5135600312707d39eb2af0d2ad5d51a91600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c03841b5135600312707d39eb2af0d2ad5d51a91600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062278d006006556000600755600060085560006009556100d261019960201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180819055506101a1565b600033905090565b6122b7806101b06000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80638b876347116100de578063c8f33c9111610097578063e9fad8ee11610071578063e9fad8ee146105dc578063ebe2b12b146105e6578063f2fde38b14610604578063f6be71d1146106485761018d565b8063c8f33c9114610582578063cd3daf9d146105a0578063df136d65146105be5761018d565b80638b876347146104285780638da58897146104805780638da5cb5b1461049e5780638f32d59b146104e8578063a694fc3a1461050a578063b3c7548e146105385761018d565b80632e1a7d4d1161014b57806370a082311161012557806370a082311461038a578063715018a6146103e25780637b0a47ee146103ec57806380faa57d1461040a5761018d565b80632e1a7d4d146103245780633d18b912146103525780634041ef411461035c5761018d565b80628cc262146101925780630700037d146101ea5780630a1c8166146102425780630e51c2861461028c5780630fb5a6b4146102e857806318160ddd14610306575b600080fd5b6101d4600480360360208110156101a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610676565b6040518082815260200191505060405180910390f35b61022c6004803603602081101561020057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075d565b6040518082815260200191505060405180910390f35b61024a610775565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ce600480360360208110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b604051808215151515815260200191505060405180910390f35b6102f06107bb565b6040518082815260200191505060405180910390f35b61030e6107c1565b6040518082815260200191505060405180910390f35b6103506004803603602081101561033a57600080fd5b81019080803590602001909291905050506107cb565b005b61035a61098e565b005b6103886004803603602081101561037257600080fd5b8101908080359060200190929190505050610c2f565b005b6103cc600480360360208110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd6565b6040518082815260200191505060405180910390f35b6103ea610e1f565b005b6103f4610f58565b6040518082815260200191505060405180910390f35b610412610f5e565b6040518082815260200191505060405180910390f35b61046a6004803603602081101561043e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f71565b6040518082815260200191505060405180910390f35b610488610f89565b6040518082815260200191505060405180910390f35b6104a6610f8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f0610fb8565b604051808215151515815260200191505060405180910390f35b6105366004803603602081101561052057600080fd5b8101908080359060200190929190505050611016565b005b61054061136c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058a611392565b6040518082815260200191505060405180910390f35b6105a8611398565b6040518082815260200191505060405180910390f35b6105c6611430565b6040518082815260200191505060405180910390f35b6105e4611436565b005b6105ee611458565b6040518082815260200191505060405180910390f35b6106466004803603602081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145e565b005b6106746004803603602081101561065e57600080fd5b81019080803590602001909291905050506114e4565b005b6000610756600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610748670de0b6b3a764000061073a610723600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610715611398565b61156890919063ffffffff16565b61072c88610dd6565b6115b290919063ffffffff16565b61163890919063ffffffff16565b61168290919063ffffffff16565b9050919050565b600d6020528060005260406000206000915090505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600354905090565b6107d361170a565b6107db611398565b600b819055506107e9610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108b65761082c81610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161092c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b61093582611712565b61093d61170a565b73ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b60026001541415610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550610a1761170a565b610a1f611398565b600b81905550610a2d610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afa57610a7081610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000610b0c610b0761170a565b610676565b90506000811115610c24576000600d6000610b2561170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bb7610b6e61170a565b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118af9092919063ffffffff16565b610bbf61170a565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f6876a213a761d9b4f8d7ba3609528ef85da671684271f75fdacb41be8db29f45836040518082815260200191505060405180910390a35b505060018081905550565b6000610c39611398565b600b81905550610c47610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1457610c8a81610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d1c610fb8565b610d8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610da36006548361163890919063ffffffff16565b60098190555042600a8190555042600781905550610dcc6006544261168290919063ffffffff16565b6008819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e27610fb8565b610e99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000610f6c42600854611980565b905090565b600c6020528060005260406000206000915090505481565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ffa61170a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61101e61170a565b611026611398565b600b81905550611034610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111015761107781610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600754421015611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a506f6f6c206e6f742073746172746564207965742e000000000081525060200191505060405180910390fd5b600082116111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60006111fb61170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112ab5769010f0cf064dd592000008210156112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806122256034913960400191505060405180910390fd5b5b6112b482611999565b6001600e60006112c261170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061131b61170a565b73ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000806113a36107c1565b14156113b357600b54905061142d565b61142a6114196113c16107c1565b61140b670de0b6b3a76400006113fd6009546113ef600a546113e1610f5e565b61156890919063ffffffff16565b6115b290919063ffffffff16565b6115b290919063ffffffff16565b61163890919063ffffffff16565b600b5461168290919063ffffffff16565b90505b90565b600b5481565b61144e61144961144461170a565b610dd6565b6107cb565b61145661098e565b565b60085481565b611466610fb8565b6114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6114e181611b77565b50565b6114ec610fb8565b61155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060068190555050565b60006115aa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cbb565b905092915050565b6000808314156115c55760009050611632565b60008284029050828482816115d657fe5b041461162d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122046021913960400191505060405180910390fd5b809150505b92915050565b600061167a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d7b565b905092915050565b600080828401905083811015611700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b6002600154141561178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506117a88160035461156890919063ffffffff16565b60038190555061180781600460006117be61170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156890919063ffffffff16565b6004600061181361170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118a561185c61170a565b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118af9092919063ffffffff16565b6001808190555050565b61197b838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e41565b505050565b600081831061198f5781611991565b825b905092915050565b60026001541415611a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000611a56611a476103e8611a396014866115b290919063ffffffff16565b61163890919063ffffffff16565b8361156890919063ffffffff16565b9050611a6d8160035461168290919063ffffffff16565b600381905550611acc8160046000611a8361170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461168290919063ffffffff16565b60046000611ad861170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b6c611b2161170a565b3084600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661208c909392919063ffffffff16565b506001808190555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121de6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d2d578082015181840152602081019050611d12565b50505050905090810190601f168015611d5a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dec578082015181840152602081019050611dd1565b50505050905090810190601f168015611e195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e3357fe5b049050809150509392505050565b611e608273ffffffffffffffffffffffffffffffffffffffff16612192565b611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310611f215780518252602082019150602081019050602083039250611efe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f83576040519150601f19603f3d011682016040523d82523d6000602084013e611f88565b606091505b509150915081612000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156120865780806020019051602081101561201f57600080fd5b8101908080519060200190929190505050612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612259602a913960400191505060405180910390fd5b5b50505050565b61218c848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e41565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156121d45750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774572726f723a466f7220496e697469616c20656e747279203530303020746f6b656e206d7573742062652072657175697265642e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820195f11fa5e7ea79878ac2bba266143ae40050892158bee36921361322cd954a664736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80638b876347116100de578063c8f33c9111610097578063e9fad8ee11610071578063e9fad8ee146105dc578063ebe2b12b146105e6578063f2fde38b14610604578063f6be71d1146106485761018d565b8063c8f33c9114610582578063cd3daf9d146105a0578063df136d65146105be5761018d565b80638b876347146104285780638da58897146104805780638da5cb5b1461049e5780638f32d59b146104e8578063a694fc3a1461050a578063b3c7548e146105385761018d565b80632e1a7d4d1161014b57806370a082311161012557806370a082311461038a578063715018a6146103e25780637b0a47ee146103ec57806380faa57d1461040a5761018d565b80632e1a7d4d146103245780633d18b912146103525780634041ef411461035c5761018d565b80628cc262146101925780630700037d146101ea5780630a1c8166146102425780630e51c2861461028c5780630fb5a6b4146102e857806318160ddd14610306575b600080fd5b6101d4600480360360208110156101a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610676565b6040518082815260200191505060405180910390f35b61022c6004803603602081101561020057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061075d565b6040518082815260200191505060405180910390f35b61024a610775565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ce600480360360208110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b604051808215151515815260200191505060405180910390f35b6102f06107bb565b6040518082815260200191505060405180910390f35b61030e6107c1565b6040518082815260200191505060405180910390f35b6103506004803603602081101561033a57600080fd5b81019080803590602001909291905050506107cb565b005b61035a61098e565b005b6103886004803603602081101561037257600080fd5b8101908080359060200190929190505050610c2f565b005b6103cc600480360360208110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd6565b6040518082815260200191505060405180910390f35b6103ea610e1f565b005b6103f4610f58565b6040518082815260200191505060405180910390f35b610412610f5e565b6040518082815260200191505060405180910390f35b61046a6004803603602081101561043e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f71565b6040518082815260200191505060405180910390f35b610488610f89565b6040518082815260200191505060405180910390f35b6104a6610f8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f0610fb8565b604051808215151515815260200191505060405180910390f35b6105366004803603602081101561052057600080fd5b8101908080359060200190929190505050611016565b005b61054061136c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61058a611392565b6040518082815260200191505060405180910390f35b6105a8611398565b6040518082815260200191505060405180910390f35b6105c6611430565b6040518082815260200191505060405180910390f35b6105e4611436565b005b6105ee611458565b6040518082815260200191505060405180910390f35b6106466004803603602081101561061a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061145e565b005b6106746004803603602081101561065e57600080fd5b81019080803590602001909291905050506114e4565b005b6000610756600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610748670de0b6b3a764000061073a610723600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610715611398565b61156890919063ffffffff16565b61072c88610dd6565b6115b290919063ffffffff16565b61163890919063ffffffff16565b61168290919063ffffffff16565b9050919050565b600d6020528060005260406000206000915090505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600354905090565b6107d361170a565b6107db611398565b600b819055506107e9610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108b65761082c81610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000821161092c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b61093582611712565b61093d61170a565b73ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b60026001541415610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550610a1761170a565b610a1f611398565b600b81905550610a2d610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afa57610a7081610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000610b0c610b0761170a565b610676565b90506000811115610c24576000600d6000610b2561170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610bb7610b6e61170a565b82600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118af9092919063ffffffff16565b610bbf61170a565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f6876a213a761d9b4f8d7ba3609528ef85da671684271f75fdacb41be8db29f45836040518082815260200191505060405180910390a35b505060018081905550565b6000610c39611398565b600b81905550610c47610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1457610c8a81610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d1c610fb8565b610d8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610da36006548361163890919063ffffffff16565b60098190555042600a8190555042600781905550610dcc6006544261168290919063ffffffff16565b6008819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e27610fb8565b610e99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000610f6c42600854611980565b905090565b600c6020528060005260406000206000915090505481565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ffa61170a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61101e61170a565b611026611398565b600b81905550611034610f5e565b600a81905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111015761107781610676565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600754421015611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a506f6f6c206e6f742073746172746564207965742e000000000081525060200191505060405180910390fd5b600082116111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60006111fb61170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166112ab5769010f0cf064dd592000008210156112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806122256034913960400191505060405180910390fd5b5b6112b482611999565b6001600e60006112c261170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061131b61170a565b73ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040518082815260200191505060405180910390a25050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000806113a36107c1565b14156113b357600b54905061142d565b61142a6114196113c16107c1565b61140b670de0b6b3a76400006113fd6009546113ef600a546113e1610f5e565b61156890919063ffffffff16565b6115b290919063ffffffff16565b6115b290919063ffffffff16565b61163890919063ffffffff16565b600b5461168290919063ffffffff16565b90505b90565b600b5481565b61144e61144961144461170a565b610dd6565b6107cb565b61145661098e565b565b60085481565b611466610fb8565b6114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6114e181611b77565b50565b6114ec610fb8565b61155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060068190555050565b60006115aa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cbb565b905092915050565b6000808314156115c55760009050611632565b60008284029050828482816115d657fe5b041461162d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122046021913960400191505060405180910390fd5b809150505b92915050565b600061167a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d7b565b905092915050565b600080828401905083811015611700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b6002600154141561178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506117a88160035461156890919063ffffffff16565b60038190555061180781600460006117be61170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156890919063ffffffff16565b6004600061181361170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118a561185c61170a565b82600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118af9092919063ffffffff16565b6001808190555050565b61197b838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e41565b505050565b600081831061198f5781611991565b825b905092915050565b60026001541415611a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000611a56611a476103e8611a396014866115b290919063ffffffff16565b61163890919063ffffffff16565b8361156890919063ffffffff16565b9050611a6d8160035461168290919063ffffffff16565b600381905550611acc8160046000611a8361170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461168290919063ffffffff16565b60046000611ad861170a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b6c611b2161170a565b3084600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661208c909392919063ffffffff16565b506001808190555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bfd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121de6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d2d578082015181840152602081019050611d12565b50505050905090810190601f168015611d5a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dec578082015181840152602081019050611dd1565b50505050905090810190601f168015611e195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611e3357fe5b049050809150509392505050565b611e608273ffffffffffffffffffffffffffffffffffffffff16612192565b611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310611f215780518252602082019150602081019050602083039250611efe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f83576040519150601f19603f3d011682016040523d82523d6000602084013e611f88565b606091505b509150915081612000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156120865780806020019051602081101561201f57600080fd5b8101908080519060200190929190505050612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612259602a913960400191505060405180910390fd5b5b50505050565b61218c848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e41565b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156121d45750808214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774572726f723a466f7220496e697469616c20656e747279203530303020746f6b656e206d7573742062652072657175697265642e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820195f11fa5e7ea79878ac2bba266143ae40050892158bee36921361322cd954a664736f6c63430005110032

Deployed Bytecode Sourcemap

10860:3977:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10860:3977:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12844:270;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12844:270:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11459:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11459:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10905:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11508:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11508:55:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11016:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9974:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13589:240;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13589:240:0;;;;;;;;;;;;;;;;;:::i;:::-;;13991:361;;;:::i;:::-;;14399:294;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14399:294:0;;;;;;;;;;;;;;;;;:::i;:::-;;10073:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10073:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4711:140;;;:::i;:::-;;11279:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12277:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11395:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11395:57:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11106:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4408:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4609:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13122:459;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13122:459:0;;;;;;;;;;;;;;;;;:::i;:::-;;9749:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11315:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12416:420;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11351:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13884:99;;;:::i;:::-;;11241:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4859:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4859:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14729:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14729:99:0;;;;;;;;;;;;;;;;;:::i;:::-;;12844:270;12898:7;12925:163;13071:7;:16;13079:7;13071:16;;;;;;;;;;;;;;;;12925:123;13043:4;12925:95;12966:53;12987:22;:31;13010:7;12987:31;;;;;;;;;;;;;;;;12966:16;:14;:16::i;:::-;:20;;:53;;;;:::i;:::-;12925:18;12935:7;12925:9;:18::i;:::-;:40;;:95;;;;:::i;:::-;:117;;:123;;;;:::i;:::-;:145;;:163;;;;:::i;:::-;12918:170;;12844:270;;;:::o;11459:42::-;;;;;;;;;;;;;;;;;:::o;10905:76::-;;;;;;;;;;;;;:::o;11508:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;11016:33::-;;;;:::o;9974:91::-;10018:7;10045:12;;10038:19;;9974:91;:::o;13589:240::-;13661:12;:10;:12::i;:::-;12008:16;:14;:16::i;:::-;11985:20;:39;;;;12052:26;:24;:26::i;:::-;12035:14;:43;;;;12112:1;12093:21;;:7;:21;;;12089:157;;12150:15;12157:7;12150:6;:15::i;:::-;12131:7;:16;12139:7;12131:16;;;;;;;;;;;;;;;:34;;;;12214:20;;12180:22;:31;12203:7;12180:31;;;;;;;;;;;;;;;:54;;;;12089:157;13708:1;13699:6;:10;13691:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13742:22;13757:6;13742:14;:22::i;:::-;13800:12;:10;:12::i;:::-;13790:31;;;13814:6;13790:31;;;;;;;;;;;;;;;;;;13589:240;;:::o;13991:361::-;902:1;1508:7;;:19;;1500:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:1;1641:7;:18;;;;14045:12;:10;:12::i;:::-;12008:16;:14;:16::i;:::-;11985:20;:39;;;;12052:26;:24;:26::i;:::-;12035:14;:43;;;;12112:1;12093:21;;:7;:21;;;12089:157;;12150:15;12157:7;12150:6;:15::i;:::-;12131:7;:16;12139:7;12131:16;;;;;;;;;;;;;;;:34;;;;12214:20;;12180:22;:31;12203:7;12180:31;;;;;;;;;;;;;;;:54;;;;12089:157;14069:14;14086:20;14093:12;:10;:12::i;:::-;14086:6;:20::i;:::-;14069:37;;14132:1;14123:6;:10;14119:216;;;14174:1;14150:7;:21;14158:12;:10;:12::i;:::-;14150:21;;;;;;;;;;;;;;;:25;;;;14200:44;14223:12;:10;:12::i;:::-;14237:6;14200:9;;;;;;;;;;;:22;;;;:44;;;;;:::i;:::-;14302:12;:10;:12::i;:::-;14278:45;;14295:4;14278:45;;;14316:6;14278:45;;;;;;;;;;;;;;;;;;14119:216;12256:1;1672;858;1820:7;:22;;;;13991:361::o;14399:294::-;14470:1;12008:16;:14;:16::i;:::-;11985:20;:39;;;;12052:26;:24;:26::i;:::-;12035:14;:43;;;;12112:1;12093:21;;:7;:21;;;12089:157;;12150:15;12157:7;12150:6;:15::i;:::-;12131:7;:16;12139:7;12131:16;;;;;;;;;;;;;;;:34;;;;12214:20;;12180:22;:31;12203:7;12180:31;;;;;;;;;;;;;;;:54;;;;12089:157;4535:9;:7;:9::i;:::-;4527:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14516:21;14528:8;;14516:7;:11;;:21;;;;:::i;:::-;14503:10;:34;;;;14574:15;14557:14;:32;;;;14612:15;14600:9;:27;;;;14654:29;14674:8;;14654:15;:19;;:29;;;;:::i;:::-;14639:12;:44;;;;14399:294;;:::o;10073:110::-;10130:7;10157:9;:18;10167:7;10157:18;;;;;;;;;;;;;;;;10150:25;;10073:110;;;:::o;4711:140::-;4535:9;:7;:9::i;:::-;4527:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4810:1;4773:40;;4794:6;;;;;;;;;;;4773:40;;;;;;;;;;;;4841:1;4824:6;;:19;;;;;;;;;;;;;;;;;;4711:140::o;11279:29::-;;;;:::o;12277:131::-;12334:7;12361:39;12370:15;12387:12;;12361:8;:39::i;:::-;12354:46;;12277:131;:::o;11395:57::-;;;;;;;;;;;;;;;;;:::o;11106:28::-;;;;:::o;4408:79::-;4446:7;4473:6;;;;;;;;;;;4466:13;;4408:79;:::o;4609:94::-;4649:4;4689:6;;;;;;;;;;;4673:22;;:12;:10;:12::i;:::-;:22;;;4666:29;;4609:94;:::o;13122:459::-;13173:12;:10;:12::i;:::-;12008:16;:14;:16::i;:::-;11985:20;:39;;;;12052:26;:24;:26::i;:::-;12035:14;:43;;;;12112:1;12093:21;;:7;:21;;;12089:157;;12150:15;12157:7;12150:6;:15::i;:::-;12131:7;:16;12139:7;12131:16;;;;;;;;;;;;;;;:34;;;;12214:20;;12180:22;:31;12203:7;12180:31;;;;;;;;;;;;;;;:54;;;;12089:157;11843:9;;11824:15;:28;;11802:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13226:1;13217:6;:10;13209:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13271:23;:37;13295:12;:10;:12::i;:::-;13271:37;;;;;;;;;;;;;;;;;;;;;;;;;13267:147;;13342:15;13332:6;:25;;13324:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13267:147;13435:19;13447:6;13435:11;:19::i;:::-;13515:4;13475:23;:37;13499:12;:10;:12::i;:::-;13475:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13552:12;:10;:12::i;:::-;13545:28;;;13566:6;13545:28;;;;;;;;;;;;;;;;;;13122:459;;:::o;9749:79::-;;;;;;;;;;;;;:::o;11315:29::-;;;;:::o;12416:420::-;12463:7;12504:1;12487:13;:11;:13::i;:::-;:18;12483:78;;;12529:20;;12522:27;;;;12483:78;12591:237;12634:179;12799:13;:11;:13::i;:::-;12634:138;12767:4;12634:106;12729:10;;12634:68;12687:14;;12634:26;:24;:26::i;:::-;:52;;:68;;;;:::i;:::-;:94;;:106;;;;:::i;:::-;:132;;:138;;;;:::i;:::-;:164;;:179;;;;:::i;:::-;12591:20;;:24;;:237;;;;:::i;:::-;12571:257;;12416:420;;:::o;11351:35::-;;;;:::o;13884:99::-;13920:33;13929:23;13939:12;:10;:12::i;:::-;13929:9;:23::i;:::-;13920:8;:33::i;:::-;13964:11;:9;:11::i;:::-;13884:99::o;11241:31::-;;;;:::o;4859:109::-;4535:9;:7;:9::i;:::-;4527:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4932:28;4951:8;4932:18;:28::i;:::-;4859:109;:::o;14729:99::-;4535:9;:7;:9::i;:::-;4527:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14808:9;14797:8;:20;;;;14729:99;:::o;2468:136::-;2526:7;2553:43;2557:1;2560;2553:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2546:50;;2468:136;;;;:::o;2846:250::-;2904:7;2933:1;2928;:6;2924:47;;;2958:1;2951:8;;;;2924:47;2983:9;2999:1;2995;:5;2983:17;;3028:1;3023;3019;:5;;;;;;:10;3011:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3087:1;3080:8;;;2846:250;;;;;:::o;3104:132::-;3162:7;3189:39;3193:1;3196;3189:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3182:46;;3104:132;;;;:::o;2279:181::-;2337:7;2357:9;2373:1;2369;:5;2357:17;;2398:1;2393;:6;;2385:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:1;2444:8;;;2279:181;;;;:::o;3879:98::-;3924:15;3959:10;3952:17;;3879:98;:::o;10611:242::-;902:1;1508:7;;:19;;1500:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:1;1641:7;:18;;;;10691:24;10708:6;10691:12;;:16;;:24;;;;:::i;:::-;10676:12;:39;;;;10752:35;10780:6;10752:9;:23;10762:12;:10;:12::i;:::-;10752:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;10726:9;:23;10736:12;:10;:12::i;:::-;10726:23;;;;;;;;;;;;;;;:61;;;;10798:47;10824:12;:10;:12::i;:::-;10838:6;10798:12;;;;;;;;;;;:25;;;;:47;;;;;:::i;:::-;858:1;1820:7;:22;;;;10611:242;:::o;7092:247::-;7209:122;7242:5;7285;:14;;;:23;;;;7310:2;7314:5;7262:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7262:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;7262:58:0;7209:18;:122::i;:::-;7092:247;;;:::o;1992:106::-;2050:7;2081:1;2077;:5;:13;;2089:1;2077:13;;;2085:1;2077:13;2070:20;;1992:106;;;;:::o;10191:412::-;902:1;1508:7;;:19;;1500:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:1;1641:7;:18;;;;10263:20;10286:36;10297:24;10316:4;10297:14;10308:2;10297:6;:10;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;10286:6;:10;;:36;;;;:::i;:::-;10263:59;;10390:30;10407:12;10390;;:16;;:30;;;;:::i;:::-;10375:12;:45;;;;10467:41;10495:12;10467:9;:23;10477:12;:10;:12::i;:::-;10467:23;;;;;;;;;;;;;;;;:27;;:41;;;;:::i;:::-;10441:9;:23;10451:12;:10;:12::i;:::-;10441:23;;;;;;;;;;;;;;;:67;;;;10529:66;10559:12;:10;:12::i;:::-;10581:4;10588:6;10529:12;;;;;;;;;;;:29;;;;:66;;;;;;:::i;:::-;1672:1;858;1820:7;:22;;;;10191:412;:::o;4976:266::-;5084:1;5064:22;;:8;:22;;;;5042:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:8;5168:38;;5189:6;;;;;;;;;;;5168:38;;;;;;;;;;;;5226:8;5217:6;;:17;;;;;;;;;;;;;;;;;;4976:266;:::o;2612:226::-;2732:7;2765:1;2760;:6;;2768:12;2752:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2752:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2792:9;2808:1;2804;:5;2792:17;;2829:1;2822:8;;;2612:226;;;;;:::o;3244:225::-;3364:7;3396:1;3392;:5;3399:12;3384:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3384:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3423:9;3439:1;3435;:5;;;;;;3423:17;;3460:1;3453:8;;;3244:225;;;;;:::o;9059:556::-;9147:27;9155:5;9147:25;;;:27::i;:::-;9139:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9224:12;9238:23;9273:5;9265:19;;9285:4;9265:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9265:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;9223:67:0;;;;9309:7;9301:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9390:1;9370:10;:17;:21;9366:242;;;9499:10;9488:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9488:30:0;;;;;;;;;;;;;;;;9462:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9366:242;9059:556;;;;:::o;7347:284::-;7491:132;7524:5;7567;:18;;;:27;;;;7596:4;7602:2;7606:5;7544:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7544:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;7544:68:0;7491:18;:132::i;:::-;7347:284;;;;:::o;6074:354::-;6134:4;6151:16;6178:19;6213:66;6178:101;;;;6340:7;6328:20;6316:32;;6389:3;6377:15;;:8;:15;;:42;;;;;6408:11;6396:8;:23;;6377:42;6369:51;;;;6074:354;;;:::o

Swarm Source

bzzr://195f11fa5e7ea79878ac2bba266143ae40050892158bee36921361322cd954a6

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.