ETH Price: $2,611.90 (-0.36%)

Contract

0x395F93350D5102B6139Abfc84a7D6ee70488797C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Harvest118646412021-02-16 0:46:041339 days ago1613436364IN
0x395F9335...70488797C
0 ETH0.34824392251
Harvest118440012021-02-12 20:25:501343 days ago1613161550IN
0x395F9335...70488797C
0 ETH0.29716018214
Harvest118243772021-02-09 20:08:211346 days ago1612901301IN
0x395F9335...70488797C
0 ETH0.32622923201
Harvest118078852021-02-07 7:13:321348 days ago1612682012IN
0x395F9335...70488797C
0 ETH0.2013822124
Harvest117801392021-02-03 0:49:361352 days ago1612313376IN
0x395F9335...70488797C
0 ETH0.22614342163
Harvest117547562021-01-30 2:54:531356 days ago1611975293IN
0x395F9335...70488797C
0 ETH0.19427487119
Harvest117206272021-01-24 20:59:241362 days ago1611521964IN
0x395F9335...70488797C
0 ETH0.1848868112
Harvest117004872021-01-21 18:39:321365 days ago1611254372IN
0x395F9335...70488797C
0 ETH0.17547914107
Harvest116809342021-01-18 18:43:021368 days ago1610995382IN
0x395F9335...70488797C
0 ETH0.0858017461
Harvest116671492021-01-16 15:53:501370 days ago1610812430IN
0x395F9335...70488797C
0 ETH0.18793727134
Harvest116475162021-01-13 15:40:021373 days ago1610552402IN
0x395F9335...70488797C
0 ETH0.1210527574
Harvest116341602021-01-11 14:28:051375 days ago1610375285IN
0x395F9335...70488797C
0 ETH0.61082166438
Harvest116148592021-01-08 15:19:121378 days ago1610119152IN
0x395F9335...70488797C
0 ETH0.29552976211
Harvest115956322021-01-05 16:36:281381 days ago1609864588IN
0x395F9335...70488797C
0 ETH0.3218544200
Harvest115397712020-12-28 2:52:381389 days ago1609123958IN
0x395F9335...70488797C
0 ETH0.1026294974
Harvest115204592020-12-25 4:01:201392 days ago1608868880IN
0x395F9335...70488797C
0 ETH0.31826002225
Harvest114951252020-12-21 6:43:001396 days ago1608532980IN
0x395F9335...70488797C
0 ETH0.0742015953
Harvest114683632020-12-17 3:56:141400 days ago1608177374IN
0x395F9335...70488797C
0 ETH0.0047224673.05
Harvest114362532020-12-12 5:45:251405 days ago1607751925IN
0x395F9335...70488797C
0 ETH0.0661093547
Harvest114034172020-12-07 4:14:431410 days ago1607314483IN
0x395F9335...70488797C
0 ETH0.0333123324
Harvest113840762020-12-04 4:52:471413 days ago1607057567IN
0x395F9335...70488797C
0 ETH0.0910019565
Harvest113655242020-12-01 8:26:441416 days ago1606811204IN
0x395F9335...70488797C
0 ETH0.14291803101
Harvest113461962020-11-28 9:28:161419 days ago1606555696IN
0x395F9335...70488797C
0 ETH0.0240555117
Harvest113266612020-11-25 9:09:591422 days ago1606295399IN
0x395F9335...70488797C
0 ETH0.0920520756
Harvest112999262020-11-21 6:48:151426 days ago1605941295IN
0x395F9335...70488797C
0 ETH0.0537711438
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:
StrategyYFIGovernance

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.17;

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 decimals() external view returns (uint);
    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 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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-call-value
        (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 callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

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

interface Controller {
    function vaults(address) external view returns (address);
    function rewards() external view returns (address);
}

/*

 A strategy must implement the following calls;
 
 - deposit()
 - withdraw(address) must exclude any tokens used in the yield - Controller role - withdraw should return to Controller
 - withdraw(uint) - Controller | Vault role - withdraw should always return to vault
 - withdrawAll() - Controller | Vault role - withdraw should always return to vault
 - balanceOf()
 
 Where possible, strategies must remain as immutable as possible, instead of updating variables, we update the contract by linking it in the controller
 
*/

interface Governance {
    function withdraw(uint) external;
    function getReward() external;
    function stake(uint) external;
    function balanceOf(address) external view returns (uint);
    function exit() external;
    function voteFor(uint) external;
    function voteAgainst(uint) external;
}

interface yERC20 {
  function deposit(uint256 _amount) external;
  function withdraw(uint256 _amount) external;
}


interface Uni {
    function swapExactTokensForTokens(uint, uint, address[] calldata, address, uint) external;
}


interface ICurveFi {
  function get_virtual_price() external view returns (uint);
  function add_liquidity(
    uint256[4] calldata amounts,
    uint256 min_mint_amount
  ) external;
  function remove_liquidity_imbalance(
    uint256[4] calldata amounts,
    uint256 max_burn_amount
  ) external;
  function remove_liquidity(
    uint256 _amount,
    uint256[4] calldata amounts
  ) external;
  function exchange(
    int128 from, int128 to, uint256 _from_amount, uint256 _min_to_amount
  ) external;
}

interface Zap {
    function remove_liquidity_one_coin(uint, int128, uint) external;
}

contract StrategyYFIGovernance {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    address constant public want = address(0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e);
    address constant public gov = address(0xBa37B002AbaFDd8E89a1995dA52740bbC013D992);
    address constant public curve = address(0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51);
    address constant public zap = address(0xbBC81d23Ea2c3ec7e56D39296F0cbB648873a5d3);
    
    address constant public reward = address(0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8);
    address constant public usdt = address(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    
    address constant public uni = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address constant public weth = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); // used for crv <> weth <> dai route
    
    uint public fee = 500;
    uint constant public max = 10000;
    
    address public governance;
    address public controller;
    address public strategist;
    
    constructor(address _controller) public {
        governance = msg.sender;
        strategist = msg.sender;
        controller = _controller;
    }
    
    function setFee(uint _fee) external {
        require(msg.sender == governance, "!governance");
        fee = _fee;
    }
    
    function setStrategist(address _strategist) external {
        require(msg.sender == governance, "!governance");
        strategist = _strategist;
    }
    
    function deposit() public {
        IERC20(want).safeApprove(gov, 0);
        IERC20(want).safeApprove(gov, IERC20(want).balanceOf(address(this)));
        Governance(gov).stake(IERC20(want).balanceOf(address(this)));
    }
    
    // Controller only function for creating additional rewards from dust
    function withdraw(IERC20 _asset) external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        require(want != address(_asset), "want");
        balance = _asset.balanceOf(address(this));
        _asset.safeTransfer(controller, balance);
    }
    
    // Withdraw partial funds, normally used with a vault withdrawal
    function withdraw(uint _amount) external {
        require(msg.sender == controller, "!controller");
        uint _balance = IERC20(want).balanceOf(address(this));
        if (_balance < _amount) {
            _amount = _withdrawSome(_amount.sub(_balance));
            _amount = _amount.add(_balance);
        }
        
        uint _fee = _amount.mul(fee).div(max);
        IERC20(want).safeTransfer(Controller(controller).rewards(), _fee);
        address _vault = Controller(controller).vaults(address(want));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        
        IERC20(want).safeTransfer(_vault, _amount.sub(_fee));
    }
    
    // Withdraw all funds, normally used when migrating strategies
    function withdrawAll() external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        _withdrawAll();
        balance = IERC20(want).balanceOf(address(this));
        
        address _vault = Controller(controller).vaults(address(want));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        IERC20(want).safeTransfer(_vault, balance);
    }
    
    function _withdrawAll() internal {
        Governance(gov).exit();
    }
    
    function harvest() public {
        require(msg.sender == strategist || msg.sender == governance || msg.sender == tx.origin, "!authorized");
        Governance(gov).getReward();
        uint _balance = IERC20(reward).balanceOf(address(this));
        if (_balance > 0) {
            IERC20(reward).safeApprove(zap, 0);
            IERC20(reward).safeApprove(zap, _balance);
            Zap(zap).remove_liquidity_one_coin(_balance, 2, 0);
        }
        _balance = IERC20(usdt).balanceOf(address(this));
        if (_balance > 0) {
            IERC20(usdt).safeApprove(uni, 0);
            IERC20(usdt).safeApprove(uni, _balance);
            
            address[] memory path = new address[](3);
            path[0] = usdt;
            path[1] = weth;
            path[2] = want;
            
            Uni(uni).swapExactTokensForTokens(_balance, uint(0), path, address(this), now.add(1800));
        }
        if (IERC20(want).balanceOf(address(this)) > 0) {
            deposit();
        }
        
    }
    
    function _withdrawSome(uint256 _amount) internal returns (uint) {
        Governance(gov).withdraw(_amount);
        return _amount;
    }
    
    function balanceOfWant() public view returns (uint) {
        return IERC20(want).balanceOf(address(this));
    }
    
    function balanceOfYGov() public view returns (uint) {
        return Governance(gov).balanceOf(address(this));
    }
    
    function balanceOf() public view returns (uint) {
        return balanceOfWant()
               .add(balanceOfYGov());
    }
    
    function voteFor(uint _proposal) external {
        require(msg.sender == governance, "!governance");
        Governance(gov).voteFor(_proposal);
    }
    
    function voteAgainst(uint _proposal) external {
        require(msg.sender == governance, "!governance");
        Governance(gov).voteAgainst(_proposal);
    }
    
    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }
    
    function setController(address _controller) external {
        require(msg.sender == governance, "!governance");
        controller = _controller;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfWant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfYGov","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"curve","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"harvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uni","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_proposal","type":"uint256"}],"name":"voteAgainst","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_proposal","type":"uint256"}],"name":"voteFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"zap","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526101f460005534801561001657600080fd5b5060405161329d38038061329d8339818101604052602081101561003957600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506131808061011d6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636ac5db19116100f9578063ab033ea911610097578063d0e30db011610071578063d0e30db0146106c4578063ddca3f43146106ce578063edc9af95146106ec578063f77c479114610736576101a9565b8063ab033ea91461061e578063c1a3d44c14610662578063c7b9d53014610680576101a9565b8063750e443a116100d3578063750e443a14610560578063853828b61461058e57806386a50535146105ac57806392eefe9b146105da576101a9565b80636ac5db19146104da5780637165485d146104f8578063722713f714610542576101a9565b80632e1a7d4d116101665780634641257d116101405780634641257d1461040057806351cff8d91461040a5780635aa6e6751461046257806369fe0e2d146104ac576101a9565b80632e1a7d4d1461033e5780632f48ab7d1461036c5780633fc8cef3146103b6576101a9565b8063077c14b9146101ae57806312d43a51146101cc5780631f1fcd51146102165780631fe4a68614610260578063228cb733146102aa578063262d6152146102f4575b600080fd5b6101b6610780565b6040518082815260200191505060405180910390f35b6101d4610853565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021e61086b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610268610883565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26108a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fc6108c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036a6004803603602081101561035457600080fd5b81019080803590602001909291905050506108d9565b005b610374610da1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103be610db9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610408610dd1565b005b61044c6004803603602081101561042057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611675565b6040518082815260200191505060405180910390f35b61046a6118fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104d8600480360360208110156104c257600080fd5b8101908080359060200190929190505050611922565b005b6104e26119ef565b6040518082815260200191505060405180910390f35b6105006119f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054a611a0d565b6040518082815260200191505060405180910390f35b61058c6004803603602081101561057657600080fd5b8101908080359060200190929190505050611a35565b005b610596611b7a565b6040518082815260200191505060405180910390f35b6105d8600480360360208110156105c257600080fd5b8101908080359060200190929190505050611eed565b005b61061c600480360360208110156105f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612032565b005b6106606004803603602081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612139565b005b61066a612240565b6040518082815260200191505060405180910390f35b6106c26004803603602081101561069657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612313565b005b6106cc61241a565b005b6106d66126d8565b6040518082815260200191505060405180910390f35b6106f46126de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61073e6126f6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561081357600080fd5b505afa158015610827573d6000803e3d6000fd5b505050506040513d602081101561083d57600080fd5b8101908080519060200190929190505050905090565b73ba37b002abafdd8e89a1995da52740bbc013d99281565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b73bbc81d23ea2c3ec7e56d39296f0cbb648873a5d381565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b8101908080519060200190929190505050905081811015610aa757610a8f610a8a828461271c90919063ffffffff16565b612766565b9150610aa481836127ef90919063ffffffff16565b91505b6000610ad2612710610ac46000548661287790919063ffffffff16565b6128fd90919063ffffffff16565b9050610bb5600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3f57600080fd5b505afa158015610b53573d6000803e3d6000fd5b505050506040513d6020811015610b6957600080fd5b810190808051906020019092919050505082730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c730bc529c00c6401aef6d220be8c6ea1667f6ad93e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d6020811015610c9457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610d9b81610d61848761271c90919063ffffffff16565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b50505050565b73dac17f958d2ee523a2206206994597c13d831ec781565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7a5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610eb057503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21617574686f72697a656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f7e57600080fd5b505af1158015610f92573d6000803e3d6000fd5b50505050600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561102957600080fd5b505afa15801561103d573d6000803e3d6000fd5b505050506040513d602081101561105357600080fd5b8101908080519060200190929190505050905060008111156111ab576110c373bbc81d23ea2c3ec7e56d39296f0cbb648873a5d3600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b61111673bbc81d23ea2c3ec7e56d39296f0cbb648873a5d38273df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b73bbc81d23ea2c3ec7e56d39296f0cbb648873a5d373ffffffffffffffffffffffffffffffffffffffff16631a4d01d282600260006040518463ffffffff1660e01b81526004018084815260200183600f0b81526020018281526020019350505050600060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050505b73dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d602081101561126657600080fd5b810190808051906020019092919050505090506000811115611595576112d6737a250d5630b4cf539739df2c5dacb4c659f2488d600073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b611329737a250d5630b4cf539739df2c5dacb4c659f2488d8273dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b6060600360405190808252806020026020018201604052801561135b5781602001602082028038833980820191505090505b50905073dac17f958d2ee523a2206206994597c13d831ec78160008151811061138057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106113dc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050730bc529c00c6401aef6d220be8c6ea1667f6ad93e8160028151811061143857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed173983600084306114bc610708426127ef90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611552578082015181840152602081019050611537565b505050509050019650505050505050600060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b50505050505b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561162857600080fd5b505afa15801561163c573d6000803e3d6000fd5b505050506040513d602081101561165257600080fd5b810190808051906020019092919050505011156116725761167161241a565b5b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff1614156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f77616e740000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d602081101561189757600080fd5b810190808051906020019092919050505090506118f7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060008190555050565b61271081565b7345f783cce6b7ff23b2ab2d70e416cdb7d6055f5181565b6000611a30611a1a610780565b611a22612240565b6127ef90919063ffffffff16565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663750e443a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b5f57600080fd5b505af1158015611b73573d6000803e3d6000fd5b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c47612c38565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cd857600080fd5b505afa158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b810190808051906020019092919050505090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c730bc529c00c6401aef6d220be8c6ea1667f6ad93e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dca57600080fd5b505afa158015611dde573d6000803e3d6000fd5b505050506040513d6020811015611df457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611ee98183730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b5090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff166386a50535826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122d357600080fd5b505afa1580156122e7573d6000803e3d6000fd5b505050506040513d60208110156122fd57600080fd5b8101908080519060200190929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61246e73ba37b002abafdd8e89a1995da52740bbc013d9926000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b61258c73ba37b002abafdd8e89a1995da52740bbc013d992730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561251757600080fd5b505afa15801561252b573d6000803e3d6000fd5b505050506040513d602081101561254157600080fd5b8101908080519060200190929190505050730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663a694fc3a730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561264d57600080fd5b505afa158015612661573d6000803e3d6000fd5b505050506040513d602081101561267757600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b50505050565b60005481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061275e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cae565b905092915050565b600073ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156127cf57600080fd5b505af11580156127e3573d6000803e3d6000fd5b50505050819050919050565b60008082840190508381101561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561288a57600090506128f7565b600082840290508284828161289b57fe5b04146128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806130cb6021913960400191505060405180910390fd5b809150505b92915050565b600061293f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d6e565b905092915050565b612a13838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e34565b505050565b6000811480612b12575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612ad557600080fd5b505afa158015612ae9573d6000803e3d6000fd5b505050506040513d6020811015612aff57600080fd5b8101908080519060200190929190505050145b612b67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806131166036913960400191505060405180910390fd5b612c33838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e34565b505050565b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c9457600080fd5b505af1158015612ca8573d6000803e3d6000fd5b50505050565b6000838311158290612d5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d20578082015181840152602081019050612d05565b50505050905090810190601f168015612d4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612e1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ddf578082015181840152602081019050612dc4565b50505050905090810190601f168015612e0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612e2657fe5b049050809150509392505050565b612e538273ffffffffffffffffffffffffffffffffffffffff1661307f565b612ec5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310612f145780518252602082019150602081019050602083039250612ef1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f76576040519150601f19603f3d011682016040523d82523d6000602084013e612f7b565b606091505b509150915081612ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156130795780806020019051602081101561301257600080fd5b8101908080519060200190929190505050613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806130ec602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156130c15750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158207b84c7d45a4e03d3e6da24ae312b138dfee182a6e241b8731d97e0cf2dcd915664736f6c634300051100320000000000000000000000009e65ad11b299ca0abefc2799ddb6314ef2d91080

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636ac5db19116100f9578063ab033ea911610097578063d0e30db011610071578063d0e30db0146106c4578063ddca3f43146106ce578063edc9af95146106ec578063f77c479114610736576101a9565b8063ab033ea91461061e578063c1a3d44c14610662578063c7b9d53014610680576101a9565b8063750e443a116100d3578063750e443a14610560578063853828b61461058e57806386a50535146105ac57806392eefe9b146105da576101a9565b80636ac5db19146104da5780637165485d146104f8578063722713f714610542576101a9565b80632e1a7d4d116101665780634641257d116101405780634641257d1461040057806351cff8d91461040a5780635aa6e6751461046257806369fe0e2d146104ac576101a9565b80632e1a7d4d1461033e5780632f48ab7d1461036c5780633fc8cef3146103b6576101a9565b8063077c14b9146101ae57806312d43a51146101cc5780631f1fcd51146102165780631fe4a68614610260578063228cb733146102aa578063262d6152146102f4575b600080fd5b6101b6610780565b6040518082815260200191505060405180910390f35b6101d4610853565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021e61086b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610268610883565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102b26108a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fc6108c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036a6004803603602081101561035457600080fd5b81019080803590602001909291905050506108d9565b005b610374610da1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103be610db9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610408610dd1565b005b61044c6004803603602081101561042057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611675565b6040518082815260200191505060405180910390f35b61046a6118fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104d8600480360360208110156104c257600080fd5b8101908080359060200190929190505050611922565b005b6104e26119ef565b6040518082815260200191505060405180910390f35b6105006119f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054a611a0d565b6040518082815260200191505060405180910390f35b61058c6004803603602081101561057657600080fd5b8101908080359060200190929190505050611a35565b005b610596611b7a565b6040518082815260200191505060405180910390f35b6105d8600480360360208110156105c257600080fd5b8101908080359060200190929190505050611eed565b005b61061c600480360360208110156105f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612032565b005b6106606004803603602081101561063457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612139565b005b61066a612240565b6040518082815260200191505060405180910390f35b6106c26004803603602081101561069657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612313565b005b6106cc61241a565b005b6106d66126d8565b6040518082815260200191505060405180910390f35b6106f46126de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61073e6126f6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561081357600080fd5b505afa158015610827573d6000803e3d6000fd5b505050506040513d602081101561083d57600080fd5b8101908080519060200190929190505050905090565b73ba37b002abafdd8e89a1995da52740bbc013d99281565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b73bbc81d23ea2c3ec7e56d39296f0cbb648873a5d381565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b8101908080519060200190929190505050905081811015610aa757610a8f610a8a828461271c90919063ffffffff16565b612766565b9150610aa481836127ef90919063ffffffff16565b91505b6000610ad2612710610ac46000548661287790919063ffffffff16565b6128fd90919063ffffffff16565b9050610bb5600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3f57600080fd5b505afa158015610b53573d6000803e3d6000fd5b505050506040513d6020811015610b6957600080fd5b810190808051906020019092919050505082730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c730bc529c00c6401aef6d220be8c6ea1667f6ad93e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d6020811015610c9457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610d9b81610d61848761271c90919063ffffffff16565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b50505050565b73dac17f958d2ee523a2206206994597c13d831ec781565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7a5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610eb057503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21617574686f72697a656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f7e57600080fd5b505af1158015610f92573d6000803e3d6000fd5b50505050600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561102957600080fd5b505afa15801561103d573d6000803e3d6000fd5b505050506040513d602081101561105357600080fd5b8101908080519060200190929190505050905060008111156111ab576110c373bbc81d23ea2c3ec7e56d39296f0cbb648873a5d3600073df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b61111673bbc81d23ea2c3ec7e56d39296f0cbb648873a5d38273df5e0e81dff6faf3a7e52ba697820c5e32d806a873ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b73bbc81d23ea2c3ec7e56d39296f0cbb648873a5d373ffffffffffffffffffffffffffffffffffffffff16631a4d01d282600260006040518463ffffffff1660e01b81526004018084815260200183600f0b81526020018281526020019350505050600060405180830381600087803b15801561119257600080fd5b505af11580156111a6573d6000803e3d6000fd5b505050505b73dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d602081101561126657600080fd5b810190808051906020019092919050505090506000811115611595576112d6737a250d5630b4cf539739df2c5dacb4c659f2488d600073dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b611329737a250d5630b4cf539739df2c5dacb4c659f2488d8273dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b6060600360405190808252806020026020018201604052801561135b5781602001602082028038833980820191505090505b50905073dac17f958d2ee523a2206206994597c13d831ec78160008151811061138057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106113dc57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050730bc529c00c6401aef6d220be8c6ea1667f6ad93e8160028151811061143857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed173983600084306114bc610708426127ef90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611552578082015181840152602081019050611537565b505050509050019650505050505050600060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b50505050505b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561162857600080fd5b505afa15801561163c573d6000803e3d6000fd5b505050506040513d602081101561165257600080fd5b810190808051906020019092919050505011156116725761167161241a565b5b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff1614156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f77616e740000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d602081101561189757600080fd5b810190808051906020019092919050505090506118f7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060008190555050565b61271081565b7345f783cce6b7ff23b2ab2d70e416cdb7d6055f5181565b6000611a30611a1a610780565b611a22612240565b6127ef90919063ffffffff16565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663750e443a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b5f57600080fd5b505af1158015611b73573d6000803e3d6000fd5b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c47612c38565b730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cd857600080fd5b505afa158015611cec573d6000803e3d6000fd5b505050506040513d6020811015611d0257600080fd5b810190808051906020019092919050505090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c730bc529c00c6401aef6d220be8c6ea1667f6ad93e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dca57600080fd5b505afa158015611dde573d6000803e3d6000fd5b505050506040513d6020811015611df457600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611ee98183730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166129479092919063ffffffff16565b5090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff166386a50535826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122d357600080fd5b505afa1580156122e7573d6000803e3d6000fd5b505050506040513d60208110156122fd57600080fd5b8101908080519060200190929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61246e73ba37b002abafdd8e89a1995da52740bbc013d9926000730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b61258c73ba37b002abafdd8e89a1995da52740bbc013d992730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561251757600080fd5b505afa15801561252b573d6000803e3d6000fd5b505050506040513d602081101561254157600080fd5b8101908080519060200190929190505050730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff16612a189092919063ffffffff16565b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663a694fc3a730bc529c00c6401aef6d220be8c6ea1667f6ad93e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561264d57600080fd5b505afa158015612661573d6000803e3d6000fd5b505050506040513d602081101561267757600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b50505050565b60005481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061275e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cae565b905092915050565b600073ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156127cf57600080fd5b505af11580156127e3573d6000803e3d6000fd5b50505050819050919050565b60008082840190508381101561286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561288a57600090506128f7565b600082840290508284828161289b57fe5b04146128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806130cb6021913960400191505060405180910390fd5b809150505b92915050565b600061293f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d6e565b905092915050565b612a13838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e34565b505050565b6000811480612b12575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612ad557600080fd5b505afa158015612ae9573d6000803e3d6000fd5b505050506040513d6020811015612aff57600080fd5b8101908080519060200190929190505050145b612b67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806131166036913960400191505060405180910390fd5b612c33838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e34565b505050565b73ba37b002abafdd8e89a1995da52740bbc013d99273ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612c9457600080fd5b505af1158015612ca8573d6000803e3d6000fd5b50505050565b6000838311158290612d5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d20578082015181840152602081019050612d05565b50505050905090810190601f168015612d4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290612e1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ddf578082015181840152602081019050612dc4565b50505050905090810190601f168015612e0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612e2657fe5b049050809150509392505050565b612e538273ffffffffffffffffffffffffffffffffffffffff1661307f565b612ec5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310612f145780518252602082019150602081019050602083039250612ef1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612f76576040519150601f19603f3d011682016040523d82523d6000602084013e612f7b565b606091505b509150915081612ff3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156130795780806020019051602081101561301257600080fd5b8101908080519060200190929190505050613078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806130ec602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156130c15750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158207b84c7d45a4e03d3e6da24ae312b138dfee182a6e241b8731d97e0cf2dcd915664736f6c63430005110032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009e65ad11b299ca0abefc2799ddb6314ef2d91080

-----Decoded View---------------
Arg [0] : _controller (address): 0x9E65Ad11b299CA0Abefc2799dDB6314Ef2d91080

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009e65ad11b299ca0abefc2799ddb6314ef2d91080


Deployed Bytecode Sourcemap

6538:5822:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6538:5822:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11426:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6769:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6680:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7584:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7041:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6947:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8770:706;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8770:706:0;;;;;;;;;;;;;;;;;:::i;:::-;;7132:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7315;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10096:1038;;;:::i;:::-;;8402:286;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8402:286:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7520:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7785:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7785:124:0;;;;;;;;;;;;;;;;;:::i;:::-;;7475:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6857:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11556:127;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11861:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11861:162:0;;;;;;;;;;;;;;;;;:::i;:::-;;9556:442;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11695:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11695:154:0;;;;;;;;;;;;;;;;;:::i;:::-;;12202:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12202:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12035;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12035:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11299:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7921:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7921:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8088:227;;;:::i;:::-;;7447:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7227:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7552:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11426:118;11472:4;6807:42;11496:25;;;11530:4;11496:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11496:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11496:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11496:40:0;;;;;;;;;;;;;;;;11489:47;;11426:118;:::o;6769:81::-;6807:42;6769:81;:::o;6680:82::-;6719:42;6680:82;:::o;7584:25::-;;;;;;;;;;;;;:::o;7041:84::-;7082:42;7041:84;:::o;6947:81::-;6985:42;6947:81;:::o;8770:706::-;8844:10;;;;;;;;;;;8830:24;;:10;:24;;;8822:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8881:13;6719:42;8897:22;;;8928:4;8897:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8897:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8897:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8897:37:0;;;;;;;;;;;;;;;;8881:53;;8960:7;8949:8;:18;8945:143;;;8994:36;9008:21;9020:8;9008:7;:11;;:21;;;;:::i;:::-;8994:13;:36::i;:::-;8984:46;;9055:21;9067:8;9055:7;:11;;:21;;;;:::i;:::-;9045:31;;8945:143;9108:9;9120:25;7502:5;9120:16;9132:3;;9120:7;:11;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;9108:37;;9156:65;9193:10;;;;;;;;;;;9182:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9182:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9182:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9182:32:0;;;;;;;;;;;;;;;;9216:4;6719:42;9156:25;;;;:65;;;;;:::i;:::-;9232:14;9260:10;;;;;;;;;;;9249:29;;;6719:42;9249:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9249:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9249:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9249:44:0;;;;;;;;;;;;;;;;9232:61;;9330:1;9312:20;;:6;:20;;;;9304:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9416:52;9442:6;9450:17;9462:4;9450:7;:11;;:17;;;;:::i;:::-;6719:42;9416:25;;;;:52;;;;;:::i;:::-;8770:706;;;;:::o;7132:82::-;7171:42;7132:82;:::o;7315:::-;7354:42;7315:82;:::o;10096:1038::-;10155:10;;;;;;;;;;;10141:24;;:10;:24;;;:52;;;;10183:10;;;;;;;;;;;10169:24;;:10;:24;;;10141:52;:79;;;;10211:9;10197:23;;:10;:23;;;10141:79;10133:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6807:42;10247:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10247:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10247:27:0;;;;10285:13;7082:42;10301:24;;;10334:4;10301:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10301:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10301:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10301:39:0;;;;;;;;;;;;;;;;10285:55;;10366:1;10355:8;:12;10351:200;;;10384:34;6985:42;10416:1;7082:42;10384:26;;;;:34;;;;;:::i;:::-;10433:41;6985:42;10465:8;7082:42;10433:26;;;;:41;;;;;:::i;:::-;6985:42;10489:34;;;10524:8;10534:1;10537;10489:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10489:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10489:50:0;;;;10351:200;7171:42;10572:22;;;10603:4;10572:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10572:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10572:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10572:37:0;;;;;;;;;;;;;;;;10561:48;;10635:1;10624:8;:12;10620:404;;;10653:32;7265:42;10683:1;7171:42;10653:24;;;;:32;;;;;:::i;:::-;10700:39;7265:42;10730:8;7171:42;10700:24;;;;:39;;;;;:::i;:::-;10768:21;10806:1;10792:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;10792:16:0;;;;10768:40;;7171:42;10823:4;10828:1;10823:7;;;;;;;;;;;;;:14;;;;;;;;;;;7354:42;10852:4;10857:1;10852:7;;;;;;;;;;;;;:14;;;;;;;;;;;6719:42;10881:4;10886:1;10881:7;;;;;;;;;;;;;:14;;;;;;;;;;;7265:42;10924:33;;;10958:8;10973:1;10977:4;10991;10998:13;11006:4;10998:3;:7;;:13;;;;:::i;:::-;10924:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10924:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10924:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10924:88:0;;;;10620:404;;11078:1;6719:42;11038:22;;;11069:4;11038:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11038:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11038:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11038:37:0;;;;;;;;;;;;;;;;:41;11034:83;;;11096:9;:7;:9::i;:::-;11034:83;10096:1038;:::o;8402:286::-;8453:12;8500:10;;;;;;;;;;;8486:24;;:10;:24;;;8478:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8561:6;8545:23;;6719:42;8545:23;;;;8537:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8598:6;:16;;;8623:4;8598:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8598:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8598:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8598:31:0;;;;;;;;;;;;;;;;8588:41;;8640:40;8660:10;;;;;;;;;;;8672:7;8640:6;:19;;;;:40;;;;;:::i;:::-;8402:286;;;:::o;7520:25::-;;;;;;;;;;;;;:::o;7785:124::-;7854:10;;;;;;;;;;;7840:24;;:10;:24;;;7832:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7897:4;7891:3;:10;;;;7785:124;:::o;7475:32::-;7502:5;7475:32;:::o;6857:83::-;6897:42;6857:83;:::o;11556:127::-;11598:4;11622:53;11659:15;:13;:15::i;:::-;11622;:13;:15::i;:::-;:36;;:53;;;;:::i;:::-;11615:60;;11556:127;:::o;11861:162::-;11940:10;;;;;;;;;;;11926:24;;:10;:24;;;11918:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6807:42;11977:27;;;12005:9;11977:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11977:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11977:38:0;;;;11861:162;:::o;9556:442::-;9597:12;9644:10;;;;;;;;;;;9630:24;;:10;:24;;;9622:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9681:14;:12;:14::i;:::-;6719:42;9716:22;;;9747:4;9716:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9716:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9716:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9716:37:0;;;;;;;;;;;;;;;;9706:47;;9774:14;9802:10;;;;;;;;;;;9791:29;;;6719:42;9791:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9791:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9791:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9791:44:0;;;;;;;;;;;;;;;;9774:61;;9872:1;9854:20;;:6;:20;;;;9846:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9948:42;9974:6;9982:7;6719:42;9948:25;;;;:42;;;;;:::i;:::-;9556:442;;:::o;11695:154::-;11770:10;;;;;;;;;;;11756:24;;:10;:24;;;11748:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6807:42;11807:23;;;11831:9;11807:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11807:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11807:34:0;;;;11695:154;:::o;12202:155::-;12288:10;;;;;;;;;;;12274:24;;:10;:24;;;12266:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12338:11;12325:10;;:24;;;;;;;;;;;;;;;;;;12202:155;:::o;12035:::-;12121:10;;;;;;;;;;;12107:24;;:10;:24;;;12099:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12171:11;12158:10;;:24;;;;;;;;;;;;;;;;;;12035:155;:::o;11299:115::-;11345:4;6719:42;11369:22;;;11400:4;11369:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11369:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11369:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11369:37:0;;;;;;;;;;;;;;;;11362:44;;11299:115;:::o;7921:155::-;8007:10;;;;;;;;;;;7993:24;;:10;:24;;;7985:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8057:11;8044:10;;:24;;;;;;;;;;;;;;;;;;7921:155;:::o;8088:227::-;8125:32;6807:42;8155:1;6719:42;8125:24;;;;:32;;;;;:::i;:::-;8168:68;6807:42;6719;8198:22;;;8229:4;8198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8198:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8198:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8198:37:0;;;;;;;;;;;;;;;;6719:42;8168:24;;;;:68;;;;;:::i;:::-;6807:42;8247:21;;;6719:42;8269:22;;;8300:4;8269:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8269:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8269:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8269:37:0;;;;;;;;;;;;;;;;8247:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8247:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8247:60:0;;;;8088:227::o;7447:21::-;;;;:::o;7227:81::-;7265:42;7227:81;:::o;7552:25::-;;;;;;;;;;;;;:::o;1006:136::-;1064:7;1091:43;1095:1;1098;1091:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1084:50;;1006:136;;;;:::o;11146:141::-;11204:4;6807:42;11221:24;;;11246:7;11221:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11221:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11221:33:0;;;;11272:7;11265:14;;11146:141;;;:::o;819:181::-;877:7;897:9;913:1;909;:5;897:17;;938:1;933;:6;;925:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:1;984:8;;;819:181;;;;:::o;1346:250::-;1404:7;1433:1;1428;:6;1424:47;;;1458:1;1451:8;;;;1424:47;1483:9;1499:1;1495;:5;1483:17;;1528:1;1523;1519;:5;;;;;;:10;1511:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1587:1;1580:8;;;1346:250;;;;;:::o;1602:132::-;1660:7;1687:39;1691:1;1694;1687:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1680:46;;1602:132;;;;:::o;3319:176::-;3402:85;3421:5;3451;:14;;;:23;;;;3476:2;3480:5;3428:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3428: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;;;3428:58:0;3402:18;:85::i;:::-;3319:176;;;:::o;3715:347::-;3820:1;3811:5;:10;3810:62;;;;3870:1;3827:5;:15;;;3851:4;3858:7;3827:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3827:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3827:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3827:39:0;;;;;;;;;;;;;;;;:44;3810:62;3802:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3965:89;3984:5;4014;:13;;;:22;;;;4038:7;4047:5;3991:62;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3991:62: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;;;3991:62:0;3965:18;:89::i;:::-;3715:347;;;:::o;10010:74::-;6807:42;10054:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10054:22:0;;;;10010:74::o;1148:192::-;1234:7;1267:1;1262;:6;;1270:12;1254: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;1254:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1294:9;1310:1;1306;:5;1294:17;;1331:1;1324:8;;;1148:192;;;;;:::o;1740:258::-;1826:7;1925:1;1921;:5;1928:12;1913: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;1913:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1952:9;1968:1;1964;:5;;;;;;1952:17;;1989:1;1982:8;;;1740:258;;;;;:::o;4068:598::-;4156:27;4164:5;4156:25;;;:27::i;:::-;4148:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4293:12;4307:23;4342:5;4334:19;;4354:4;4334: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;;;4334: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;;4292:67:0;;;;4378:7;4370:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4459:1;4439:10;:17;:21;4435:224;;;4581:10;4570:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4570:30:0;;;;;;;;;;;;;;;;4562:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:224;4068:598;;;;:::o;2336:374::-;2396:4;2413:16;2440:19;2462:66;2440:88;;;;2631:7;2619:20;2607:32;;2671:3;2659:15;;:8;:15;;:42;;;;;2690:11;2678:8;:23;;2659:42;2651:51;;;;2336:374;;;:::o

Swarm Source

bzzr://7b84c7d45a4e03d3e6da24ae312b138dfee182a6e241b8731d97e0cf2dcd9156

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.