ETH Price: $2,764.89 (+4.75%)

Contract

0xd643cf07344428770b84973e049A1c18B5d47edE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Harvest107733462020-09-01 5:21:321635 days ago1598937692IN
0xd643cf07...8B5d47edE
0 ETH0.30247638382
Harvest107728742020-09-01 3:31:191635 days ago1598931079IN
0xd643cf07...8B5d47edE
0 ETH0.20568002260
Harvest107709792020-08-31 20:45:211635 days ago1598906721IN
0xd643cf07...8B5d47edE
0 ETH0.23475953301
Harvest107691732020-08-31 14:20:271636 days ago1598883627IN
0xd643cf07...8B5d47edE
0 ETH0.21060975266
Harvest107674772020-08-31 8:05:541636 days ago1598861154IN
0xd643cf07...8B5d47edE
0 ETH0.18178869233
Harvest107659892020-08-31 2:27:491636 days ago1598840869IN
0xd643cf07...8B5d47edE
0 ETH0.1187061150
Harvest107643232020-08-30 20:19:041636 days ago1598818744IN
0xd643cf07...8B5d47edE
0 ETH0.11318278143
Harvest107629802020-08-30 15:28:061637 days ago1598801286IN
0xd643cf07...8B5d47edE
0 ETH0.18586008240
Harvest107615072020-08-30 9:55:111637 days ago1598781311IN
0xd643cf07...8B5d47edE
0 ETH0.17702635222
Harvest107600392020-08-30 4:24:241637 days ago1598761464IN
0xd643cf07...8B5d47edE
0 ETH0.196534250
Harvest107585452020-08-29 23:00:411637 days ago1598742041IN
0xd643cf07...8B5d47edE
0 ETH0.057803873
Harvest107566812020-08-29 16:16:131638 days ago1598717773IN
0xd643cf07...8B5d47edE
0 ETH0.0797462103
Harvest107559452020-08-29 13:36:531638 days ago1598708213IN
0xd643cf07...8B5d47edE
0 ETH0.0558238271
Harvest107551322020-08-29 10:33:581638 days ago1598697238IN
0xd643cf07...8B5d47edE
0 ETH0.08770601114
Harvest107542172020-08-29 7:10:081638 days ago1598685008IN
0xd643cf07...8B5d47edE
0 ETH0.0731111495
Harvest107535652020-08-29 4:46:161638 days ago1598676376IN
0xd643cf07...8B5d47edE
0 ETH0.0710844691
Harvest107528922020-08-29 2:12:301638 days ago1598667150IN
0xd643cf07...8B5d47edE
0 ETH0.0601705676
Harvest107512052020-08-28 19:58:131638 days ago1598644693IN
0xd643cf07...8B5d47edE
0 ETH0.08586193110
Harvest107499182020-08-28 15:11:191639 days ago1598627479IN
0xd643cf07...8B5d47edE
0 ETH0.078367799
Harvest107490952020-08-28 12:17:301639 days ago1598617050IN
0xd643cf07...8B5d47edE
0 ETH0.0592522676
Harvest107484542020-08-28 9:46:331639 days ago1598607993IN
0xd643cf07...8B5d47edE
0 ETH0.0475968361
Harvest107476972020-08-28 7:04:081639 days ago1598598248IN
0xd643cf07...8B5d47edE
0 ETH0.0562584272
Harvest107470352020-08-28 4:35:201639 days ago1598589320IN
0xd643cf07...8B5d47edE
0 ETH0.0499210163
Harvest107462742020-08-28 1:53:551639 days ago1598579635IN
0xd643cf07...8B5d47edE
0 ETH0.0408775154
Harvest107446812020-08-27 20:08:341639 days ago1598558914IN
0xd643cf07...8B5d47edE
0 ETH0.046446960
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:
StrategyDForceDAI

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-08-13
*/

// 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 dRewards {
    function withdraw(uint) external;
    function getReward() external;
    function stake(uint) external;
    function balanceOf(address) external view returns (uint);
    function exit() external;
}

interface dERC20 {
  function mint(address, uint256) external;
  function redeem(address, uint) external;
  function getTokenBalance(address) external view returns (uint);
  function getExchangeRate() external view returns (uint);
}

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

contract StrategyDForceDAI {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    address constant public want = address(0x6B175474E89094C44Da98b954EedeAC495271d0F);
    address constant public ddai = address(0x02285AcaafEB533e03A7306C55EC031297df9224);
    address constant public pool = address(0xD2fA07cD6Cd4A5A96aa86BacfA6E50bB3aaDBA8B);
    address constant public df = address(0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0);
    address constant public uni = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address constant public weth = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); // used for df <> weth <> usdc route
    
    uint public performanceFee = 5000;
    uint constant public performanceMax = 10000;
    
    uint public withdrawalFee = 50;
    uint constant public withdrawalMax = 10000;
    
    address public governance;
    address public controller;
    address public strategist;
    
    constructor(address _controller) public {
        governance = msg.sender;
        strategist = msg.sender;
        controller = _controller;
    }
    
    function getName() external pure returns (string memory) {
        return "StrategyDForceDAI";
    }
    
    function setStrategist(address _strategist) external {
        require(msg.sender == governance, "!governance");
        strategist = _strategist;
    }
    
    function setWithdrawalFee(uint _withdrawalFee) external {
        require(msg.sender == governance, "!governance");
        withdrawalFee = _withdrawalFee;
    }
    
    function setPerformanceFee(uint _performanceFee) external {
        require(msg.sender == governance, "!governance");
        performanceFee = _performanceFee;
    }
    
    function deposit() public {
        uint _want = IERC20(want).balanceOf(address(this));
        if (_want > 0) {
            IERC20(want).safeApprove(ddai, 0);
            IERC20(want).safeApprove(ddai, _want);
            dERC20(ddai).mint(address(this), _want);
        }
        
        uint _d = IERC20(ddai).balanceOf(address(this));
        if (_d > 0) {
            IERC20(ddai).safeApprove(pool, 0);
            IERC20(ddai).safeApprove(pool, _d);
            dRewards(pool).stake(_d);
        }
        
    }
    
    // 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");
        require(ddai != address(_asset), "ddai");
        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(withdrawalFee).div(withdrawalMax);
        
        
        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 {
        dRewards(pool).exit();
        uint _d = IERC20(ddai).balanceOf(address(this));
        if (_d > 0) {
            dERC20(ddai).redeem(address(this),_d);
        }
    }
    
    function harvest() public {
        require(msg.sender == strategist || msg.sender == governance, "!authorized");
        dRewards(pool).getReward();
        uint _df = IERC20(df).balanceOf(address(this));
        if (_df > 0) {
            IERC20(df).safeApprove(uni, 0);
            IERC20(df).safeApprove(uni, _df);
            
            address[] memory path = new address[](3);
            path[0] = df;
            path[1] = weth;
            path[2] = want;
            
            Uni(uni).swapExactTokensForTokens(_df, uint(0), path, address(this), now.add(1800));
        }
        uint _want = IERC20(want).balanceOf(address(this));
        if (_want > 0) {
            uint _fee = _want.mul(performanceFee).div(performanceMax);
            IERC20(want).safeTransfer(Controller(controller).rewards(), _fee);
            deposit();
        }
    }
    
    function _withdrawSome(uint256 _amount) internal returns (uint) {
        uint _d = _amount.mul(1e18).div(dERC20(ddai).getExchangeRate());
        uint _before = IERC20(ddai).balanceOf(address(this));
        dRewards(pool).withdraw(_d);
        uint _after = IERC20(ddai).balanceOf(address(this));
        uint _withdrew = _after.sub(_before);
        _before = IERC20(want).balanceOf(address(this));
        dERC20(ddai).redeem(address(this), _withdrew);
        _after = IERC20(want).balanceOf(address(this));
        _withdrew = _after.sub(_before);
        return _withdrew;
    }
    
    function balanceOfWant() public view returns (uint) {
        return IERC20(want).balanceOf(address(this));
    }
    
    function balanceOfPool() public view returns (uint) {
        return (dRewards(pool).balanceOf(address(this))).mul(dERC20(ddai).getExchangeRate()).div(1e18);
    }
    
    function getExchangeRate() public view returns (uint) {
        return dERC20(ddai).getExchangeRate();
    }
    
    function balanceOfD() public view returns (uint) {
        return dERC20(ddai).getTokenBalance(address(this));
    }
    
    function balanceOf() public view returns (uint) {
        return balanceOfWant()
               .add(balanceOfD())
               .add(balanceOfPool());
    }
    
    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":"balanceOfD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfPool","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":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ddai","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":"df","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","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":"performanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"performanceMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","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":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_performanceFee","type":"uint256"}],"name":"setPerformanceFee","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":false,"inputs":[{"internalType":"uint256","name":"_withdrawalFee","type":"uint256"}],"name":"setWithdrawalFee","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":"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":"withdrawalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

6080604052611388600055603260015534801561001b57600080fd5b50604051613b12380380613b128339818101604052602081101561003e57600080fd5b810190808051906020019092919050505033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506139f0806101226000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638778878211610104578063c1a3d44c116100a2578063d5c1ff7311610071578063d5c1ff731461070f578063e6aa216c1461072d578063edc9af951461074b578063f77c479114610795576101cf565b8063c1a3d44c14610685578063c4369743146106a3578063c7b9d530146106c1578063d0e30db014610705576101cf565b80639be99182116100de5780639be991821461057f5780639d35f594146105c9578063ab033ea914610613578063ac1e502514610657576101cf565b806387788782146104ff5780638bc7e8c41461051d57806392eefe9b1461053b576101cf565b80634641257d1161017157806370897b231161014b57806370897b2314610477578063722713f7146104a55780637cc79113146104c3578063853828b6146104e1576101cf565b80634641257d146103cb57806351cff8d9146103d55780635aa6e6751461042d576101cf565b80631f1fcd51116101ad5780631f1fcd51146102bf5780631fe4a686146103095780632e1a7d4d146103535780633fc8cef314610381576101cf565b806311588086146101d457806316f0115b146101f257806317d7de7c1461023c575b600080fd5b6101dc6107df565b6040518082815260200191505060405180910390f35b6101fa610972565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61024461098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610284578082015181840152602081019050610269565b50505050905090810190601f1680156102b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c76109c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103116109df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037f6004803603602081101561036957600080fd5b8101908080359060200190929190505050610a05565b005b610389610ecd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d3610ee5565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b610435611992565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a36004803603602081101561048d57600080fd5b81019080803590602001909291905050506119b8565b005b6104ad611a85565b6040518082815260200191505060405180910390f35b6104cb611ac6565b6040518082815260200191505060405180910390f35b6104e9611acc565b6040518082815260200191505060405180910390f35b610507611e3f565b6040518082815260200191505060405180910390f35b610525611e45565b6040518082815260200191505060405180910390f35b61057d6004803603602081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4b565b005b610587611f52565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105d1611f6a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106556004803603602081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b005b6106836004803603602081101561066d57600080fd5b8101908080359060200190929190505050612089565b005b61068d612156565b6040518082815260200191505060405180910390f35b6106ab612229565b6040518082815260200191505060405180910390f35b610703600480360360208110156106d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fc565b005b61070d612403565b005b61071761283b565b6040518082815260200191505060405180910390f35b610735612841565b6040518082815260200191505060405180910390f35b6107536128dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61079d6128f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600061096d670de0b6b3a764000061095f7302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084a57600080fd5b505afa15801561085e573d6000803e3d6000fd5b505050506040513d602081101561087457600080fd5b810190808051906020019092919050505073d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d602081101561094057600080fd5b810190808051906020019092919050505061291b90919063ffffffff16565b6129a190919063ffffffff16565b905090565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b81565b60606040518060400160405280601181526020017f537472617465677944466f726365444149000000000000000000000000000000815250905090565b736b175474e89094c44da98b954eedeac495271d0f81565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b5b57600080fd5b505afa158015610b6f573d6000803e3d6000fd5b505050506040513d6020811015610b8557600080fd5b8101908080519060200190929190505050905081811015610bd357610bbb610bb682846129eb90919063ffffffff16565b612a35565b9150610bd08183612fa190919063ffffffff16565b91505b6000610bfe612710610bf06001548661291b90919063ffffffff16565b6129a190919063ffffffff16565b9050610ce1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6b57600080fd5b505afa158015610c7f573d6000803e3d6000fd5b505050506040513d6020811015610c9557600080fd5b810190808051906020019092919050505082736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c736b175474e89094c44da98b954eedeac495271d0f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d9657600080fd5b505afa158015610daa573d6000803e3d6000fd5b505050506040513d6020811015610dc057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610ec781610e8d84876129eb90919063ffffffff16565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b50505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f8e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21617574686f72697a656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50505050600073431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b810190808051906020019092919050505090506000811115611460576111a1737a250d5630b4cf539739df2c5dacb4c659f2488d600073431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6111f4737a250d5630b4cf539739df2c5dacb4c659f2488d8273431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b606060036040519080825280602002602001820160405280156112265781602001602082028038833980820191505090505b50905073431ad2ff6a9c365805ebad47ee021148d6f7dbe08160008151811061124b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106112a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736b175474e89094c44da98b954eedeac495271d0f8160028151811061130357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739836000843061138761070842612fa190919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561141d578082015181840152602081019050611402565b505050509050019650505050505050600060405180830381600087803b15801561144657600080fd5b505af115801561145a573d6000803e3d6000fd5b50505050505b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f357600080fd5b505afa158015611507573d6000803e3d6000fd5b505050506040513d602081101561151d57600080fd5b8101908080519060200190929190505050905060008111156116515760006115646127106115566000548561291b90919063ffffffff16565b6129a190919063ffffffff16565b9050611647600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60208110156115fb57600080fd5b810190808051906020019092919050505082736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b61164f612403565b505b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1614156117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f77616e740000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f646461690000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561190357600080fd5b505afa158015611917573d6000803e3d6000fd5b505050506040513d602081101561192d57600080fd5b8101908080519060200190929190505050905061198d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060008190555050565b6000611ac1611a926107df565b611ab3611a9d612229565b611aa5612156565b612fa190919063ffffffff16565b612fa190919063ffffffff16565b905090565b61271081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b9961331a565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c2a57600080fd5b505afa158015611c3e573d6000803e3d6000fd5b505050506040513d6020811015611c5457600080fd5b810190808051906020019092919050505090506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c736b175474e89094c44da98b954eedeac495271d0f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d1c57600080fd5b505afa158015611d30573d6000803e3d6000fd5b505050506040513d6020811015611d4657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e3b8183736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b5090565b60005481565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7302285acaafeb533e03a7306c55ec031297df922481565b73431ad2ff6a9c365805ebad47ee021148d6f7dbe081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060018190555050565b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121e957600080fd5b505afa1580156121fd573d6000803e3d6000fd5b505050506040513d602081101561221357600080fd5b8101908080519060200190929190505050905090565b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16633aecd0e3306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122bc57600080fd5b505afa1580156122d0573d6000803e3d6000fd5b505050506040513d60208110156122e657600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b810190808051906020019092919050505090506000811115612637576125307302285acaafeb533e03a7306c55ec031297df92246000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6125837302285acaafeb533e03a7306c55ec031297df922482736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b7302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561261e57600080fd5b505af1158015612632573d6000803e3d6000fd5b505050505b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126ca57600080fd5b505afa1580156126de573d6000803e3d6000fd5b505050506040513d60208110156126f457600080fd5b8101908080519060200190929190505050905060008111156128375761276473d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6127b773d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b827302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff1663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561281e57600080fd5b505af1158015612832573d6000803e3d6000fd5b505050505b5050565b61271081565b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561289d57600080fd5b505afa1580156128b1573d6000803e3d6000fd5b505050506040513d60208110156128c757600080fd5b8101908080519060200190929190505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561292e576000905061299b565b600082840290508284828161293f57fe5b0414612996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061393b6021913960400191505060405180910390fd5b809150505b92915050565b60006129e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351e565b905092915050565b6000612a2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135e4565b905092915050565b600080612af97302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9557600080fd5b505afa158015612aa9573d6000803e3d6000fd5b505050506040513d6020811015612abf57600080fd5b8101908080519060200190929190505050612aeb670de0b6b3a76400008661291b90919063ffffffff16565b6129a190919063ffffffff16565b905060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b8e57600080fd5b505afa158015612ba2573d6000803e3d6000fd5b505050506040513d6020811015612bb857600080fd5b8101908080519060200190929190505050905073d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c3257600080fd5b505af1158015612c46573d6000803e3d6000fd5b5050505060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cdd57600080fd5b505afa158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b810190808051906020019092919050505090506000612d2f83836129eb90919063ffffffff16565b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612dc257600080fd5b505afa158015612dd6573d6000803e3d6000fd5b505050506040513d6020811015612dec57600080fd5b810190808051906020019092919050505092507302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16631e9a695030836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612e9a57600080fd5b505af1158015612eae573d6000803e3d6000fd5b50505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f4357600080fd5b505afa158015612f57573d6000803e3d6000fd5b505050506040513d6020811015612f6d57600080fd5b81019080805190602001909291905050509150612f9383836129eb90919063ffffffff16565b905080945050505050919050565b60008082840190508381101561301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6130f5838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136a4565b505050565b60008114806131f4575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156131b757600080fd5b505afa1580156131cb573d6000803e3d6000fd5b505050506040513d60208110156131e157600080fd5b8101908080519060200190929190505050145b613249576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806139866036913960400191505060405180910390fd5b613315838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136a4565b505050565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561337657600080fd5b505af115801561338a573d6000803e3d6000fd5b5050505060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561342157600080fd5b505afa158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b81019080805190602001909291905050509050600081111561351b577302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16631e9a695030836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561350257600080fd5b505af1158015613516573d6000803e3d6000fd5b505050505b50565b600080831182906135ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561358f578082015181840152602081019050613574565b50505050905090810190601f1680156135bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135d657fe5b049050809150509392505050565b6000838311158290613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561365657808201518184015260208101905061363b565b50505050905090810190601f1680156136835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6136c38273ffffffffffffffffffffffffffffffffffffffff166138ef565b613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106137845780518252602082019150602081019050602083039250613761565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137e6576040519150601f19603f3d011682016040523d82523d6000602084013e6137eb565b606091505b509150915081613863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156138e95780806020019051602081101561388257600080fd5b81019080805190602001909291905050506138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061395c602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156139315750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a7231582006adc9ae3c0fd5b8625ebc95303f26deef1f033813427ec3e63b1accfe8b55f464736f6c634300051100320000000000000000000000009e65ad11b299ca0abefc2799ddb6314ef2d91080

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638778878211610104578063c1a3d44c116100a2578063d5c1ff7311610071578063d5c1ff731461070f578063e6aa216c1461072d578063edc9af951461074b578063f77c479114610795576101cf565b8063c1a3d44c14610685578063c4369743146106a3578063c7b9d530146106c1578063d0e30db014610705576101cf565b80639be99182116100de5780639be991821461057f5780639d35f594146105c9578063ab033ea914610613578063ac1e502514610657576101cf565b806387788782146104ff5780638bc7e8c41461051d57806392eefe9b1461053b576101cf565b80634641257d1161017157806370897b231161014b57806370897b2314610477578063722713f7146104a55780637cc79113146104c3578063853828b6146104e1576101cf565b80634641257d146103cb57806351cff8d9146103d55780635aa6e6751461042d576101cf565b80631f1fcd51116101ad5780631f1fcd51146102bf5780631fe4a686146103095780632e1a7d4d146103535780633fc8cef314610381576101cf565b806311588086146101d457806316f0115b146101f257806317d7de7c1461023c575b600080fd5b6101dc6107df565b6040518082815260200191505060405180910390f35b6101fa610972565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61024461098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610284578082015181840152602081019050610269565b50505050905090810190601f1680156102b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c76109c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103116109df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037f6004803603602081101561036957600080fd5b8101908080359060200190929190505050610a05565b005b610389610ecd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d3610ee5565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b610435611992565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a36004803603602081101561048d57600080fd5b81019080803590602001909291905050506119b8565b005b6104ad611a85565b6040518082815260200191505060405180910390f35b6104cb611ac6565b6040518082815260200191505060405180910390f35b6104e9611acc565b6040518082815260200191505060405180910390f35b610507611e3f565b6040518082815260200191505060405180910390f35b610525611e45565b6040518082815260200191505060405180910390f35b61057d6004803603602081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4b565b005b610587611f52565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105d1611f6a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106556004803603602081101561062957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f82565b005b6106836004803603602081101561066d57600080fd5b8101908080359060200190929190505050612089565b005b61068d612156565b6040518082815260200191505060405180910390f35b6106ab612229565b6040518082815260200191505060405180910390f35b610703600480360360208110156106d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122fc565b005b61070d612403565b005b61071761283b565b6040518082815260200191505060405180910390f35b610735612841565b6040518082815260200191505060405180910390f35b6107536128dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61079d6128f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600061096d670de0b6b3a764000061095f7302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561084a57600080fd5b505afa15801561085e573d6000803e3d6000fd5b505050506040513d602081101561087457600080fd5b810190808051906020019092919050505073d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561091657600080fd5b505afa15801561092a573d6000803e3d6000fd5b505050506040513d602081101561094057600080fd5b810190808051906020019092919050505061291b90919063ffffffff16565b6129a190919063ffffffff16565b905090565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b81565b60606040518060400160405280601181526020017f537472617465677944466f726365444149000000000000000000000000000000815250905090565b736b175474e89094c44da98b954eedeac495271d0f81565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b5b57600080fd5b505afa158015610b6f573d6000803e3d6000fd5b505050506040513d6020811015610b8557600080fd5b8101908080519060200190929190505050905081811015610bd357610bbb610bb682846129eb90919063ffffffff16565b612a35565b9150610bd08183612fa190919063ffffffff16565b91505b6000610bfe612710610bf06001548661291b90919063ffffffff16565b6129a190919063ffffffff16565b9050610ce1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6b57600080fd5b505afa158015610c7f573d6000803e3d6000fd5b505050506040513d6020811015610c9557600080fd5b810190808051906020019092919050505082736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c736b175474e89094c44da98b954eedeac495271d0f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d9657600080fd5b505afa158015610daa573d6000803e3d6000fd5b505050506040513d6020811015610dc057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b610ec781610e8d84876129eb90919063ffffffff16565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b50505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f8e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611000576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21617574686f72697a656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff16633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50505050600073431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b810190808051906020019092919050505090506000811115611460576111a1737a250d5630b4cf539739df2c5dacb4c659f2488d600073431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6111f4737a250d5630b4cf539739df2c5dacb4c659f2488d8273431ad2ff6a9c365805ebad47ee021148d6f7dbe073ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b606060036040519080825280602002602001820160405280156112265781602001602082028038833980820191505090505b50905073431ad2ff6a9c365805ebad47ee021148d6f7dbe08160008151811061124b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106112a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050736b175474e89094c44da98b954eedeac495271d0f8160028151811061130357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed1739836000843061138761070842612fa190919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561141d578082015181840152602081019050611402565b505050509050019650505050505050600060405180830381600087803b15801561144657600080fd5b505af115801561145a573d6000803e3d6000fd5b50505050505b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f357600080fd5b505afa158015611507573d6000803e3d6000fd5b505050506040513d602081101561151d57600080fd5b8101908080519060200190929190505050905060008111156116515760006115646127106115566000548561291b90919063ffffffff16565b6129a190919063ffffffff16565b9050611647600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ec5a8946040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d60208110156115fb57600080fd5b810190808051906020019092919050505082736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b61164f612403565b505b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1614156117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f77616e740000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f646461690000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561190357600080fd5b505afa158015611917573d6000803e3d6000fd5b505050506040513d602081101561192d57600080fd5b8101908080519060200190929190505050905061198d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060008190555050565b6000611ac1611a926107df565b611ab3611a9d612229565b611aa5612156565b612fa190919063ffffffff16565b612fa190919063ffffffff16565b905090565b61271081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611b9961331a565b736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c2a57600080fd5b505afa158015611c3e573d6000803e3d6000fd5b505050506040513d6020811015611c5457600080fd5b810190808051906020019092919050505090506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c736b175474e89094c44da98b954eedeac495271d0f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d1c57600080fd5b505afa158015611d30573d6000803e3d6000fd5b505050506040513d6020811015611d4657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e3b8183736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130299092919063ffffffff16565b5090565b60005481565b60015481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7302285acaafeb533e03a7306c55ec031297df922481565b73431ad2ff6a9c365805ebad47ee021148d6f7dbe081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060018190555050565b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121e957600080fd5b505afa1580156121fd573d6000803e3d6000fd5b505050506040513d602081101561221357600080fd5b8101908080519060200190929190505050905090565b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16633aecd0e3306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122bc57600080fd5b505afa1580156122d0573d6000803e3d6000fd5b505050506040513d60208110156122e657600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561249657600080fd5b505afa1580156124aa573d6000803e3d6000fd5b505050506040513d60208110156124c057600080fd5b810190808051906020019092919050505090506000811115612637576125307302285acaafeb533e03a7306c55ec031297df92246000736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6125837302285acaafeb533e03a7306c55ec031297df922482736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b7302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561261e57600080fd5b505af1158015612632573d6000803e3d6000fd5b505050505b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126ca57600080fd5b505afa1580156126de573d6000803e3d6000fd5b505050506040513d60208110156126f457600080fd5b8101908080519060200190929190505050905060008111156128375761276473d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b6127b773d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b827302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166130fa9092919063ffffffff16565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff1663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561281e57600080fd5b505af1158015612832573d6000803e3d6000fd5b505050505b5050565b61271081565b60007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561289d57600080fd5b505afa1580156128b1573d6000803e3d6000fd5b505050506040513d60208110156128c757600080fd5b8101908080519060200190929190505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561292e576000905061299b565b600082840290508284828161293f57fe5b0414612996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061393b6021913960400191505060405180910390fd5b809150505b92915050565b60006129e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351e565b905092915050565b6000612a2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135e4565b905092915050565b600080612af97302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a9557600080fd5b505afa158015612aa9573d6000803e3d6000fd5b505050506040513d6020811015612abf57600080fd5b8101908080519060200190929190505050612aeb670de0b6b3a76400008661291b90919063ffffffff16565b6129a190919063ffffffff16565b905060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b8e57600080fd5b505afa158015612ba2573d6000803e3d6000fd5b505050506040513d6020811015612bb857600080fd5b8101908080519060200190929190505050905073d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c3257600080fd5b505af1158015612c46573d6000803e3d6000fd5b5050505060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cdd57600080fd5b505afa158015612cf1573d6000803e3d6000fd5b505050506040513d6020811015612d0757600080fd5b810190808051906020019092919050505090506000612d2f83836129eb90919063ffffffff16565b9050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612dc257600080fd5b505afa158015612dd6573d6000803e3d6000fd5b505050506040513d6020811015612dec57600080fd5b810190808051906020019092919050505092507302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16631e9a695030836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612e9a57600080fd5b505af1158015612eae573d6000803e3d6000fd5b50505050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f4357600080fd5b505afa158015612f57573d6000803e3d6000fd5b505050506040513d6020811015612f6d57600080fd5b81019080805190602001909291905050509150612f9383836129eb90919063ffffffff16565b905080945050505050919050565b60008082840190508381101561301f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6130f5838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136a4565b505050565b60008114806131f4575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156131b757600080fd5b505afa1580156131cb573d6000803e3d6000fd5b505050506040513d60208110156131e157600080fd5b8101908080519060200190929190505050145b613249576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806139866036913960400191505060405180910390fd5b613315838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136a4565b505050565b73d2fa07cd6cd4a5a96aa86bacfa6e50bb3aadba8b73ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561337657600080fd5b505af115801561338a573d6000803e3d6000fd5b5050505060007302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561342157600080fd5b505afa158015613435573d6000803e3d6000fd5b505050506040513d602081101561344b57600080fd5b81019080805190602001909291905050509050600081111561351b577302285acaafeb533e03a7306c55ec031297df922473ffffffffffffffffffffffffffffffffffffffff16631e9a695030836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561350257600080fd5b505af1158015613516573d6000803e3d6000fd5b505050505b50565b600080831182906135ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561358f578082015181840152602081019050613574565b50505050905090810190601f1680156135bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816135d657fe5b049050809150509392505050565b6000838311158290613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561365657808201518184015260208101905061363b565b50505050905090810190601f1680156136835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6136c38273ffffffffffffffffffffffffffffffffffffffff166138ef565b613735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106137845780518252602082019150602081019050602083039250613761565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137e6576040519150601f19603f3d011682016040523d82523d6000602084013e6137eb565b606091505b509150915081613863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156138e95780806020019051602081101561388257600080fd5b81019080805190602001909291905050506138e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061395c602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156139315750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a7231582006adc9ae3c0fd5b8625ebc95303f26deef1f033813427ec3e63b1accfe8b55f464736f6c63430005110032

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

5958:6928:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5958:6928:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11958:165;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6274:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7123:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;7123:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6096:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6922:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8800:746;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8800:746:0;;;;;;;;;;;;;;;;;:::i;:::-;;6538:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10329:882;;;:::i;:::-;;8381:337;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8381:337:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6858:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7580:168;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7580:168:0;;;;;;;;;;;;;;;;;:::i;:::-;;12387:162;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6710:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9626:462;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6670:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6766:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12728:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12728:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6185:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6363:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12561:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12561:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7404:164;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7404:164:0;;;;;;;;;;;;;;;;;:::i;:::-;;11831:115;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12257:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7237:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7237:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7760:534;;;:::i;:::-;;6803:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12135:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6450:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6890:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11958:165;12004:4;12028:87;12110:4;12028:77;6224:42;12074:28;;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12074:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12074:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12074:30:0;;;;;;;;;;;;;;;;6313:42;12029:24;;;12062:4;12029:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12029:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12029:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12029:39:0;;;;;;;;;;;;;;;;12028:45;;:77;;;;:::i;:::-;:81;;:87;;;;:::i;:::-;12021:94;;11958:165;:::o;6274:82::-;6313:42;6274:82;:::o;7123:102::-;7165:13;7191:26;;;;;;;;;;;;;;;;;;;7123:102;:::o;6096:82::-;6135:42;6096:82;:::o;6922:25::-;;;;;;;;;;;;;:::o;8800:746::-;8874:10;;;;;;;;;;;8860:24;;:10;:24;;;8852:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8911:13;6135:42;8927:22;;;8958:4;8927:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8927:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8927:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8927:37:0;;;;;;;;;;;;;;;;8911:53;;8990:7;8979:8;:18;8975:143;;;9024:36;9038:21;9050:8;9038:7;:11;;:21;;;;:::i;:::-;9024:13;:36::i;:::-;9014:46;;9085:21;9097:8;9085:7;:11;;:21;;;;:::i;:::-;9075:31;;8975:143;9138:9;9150:45;6840:5;9150:26;9162:13;;9150:7;:11;;:26;;;;:::i;:::-;:30;;:45;;;;:::i;:::-;9138:57;;9226:65;9263:10;;;;;;;;;;;9252:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9252:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9252:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9252:32:0;;;;;;;;;;;;;;;;9286:4;6135:42;9226:25;;;;:65;;;;;:::i;:::-;9302:14;9330:10;;;;;;;;;;;9319:29;;;6135:42;9319:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9319:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9319:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9319:44:0;;;;;;;;;;;;;;;;9302:61;;9400:1;9382:20;;:6;:20;;;;9374:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9486:52;9512:6;9520:17;9532:4;9520:7;:11;;:17;;;;:::i;:::-;6135:42;9486:25;;;;:52;;;;;:::i;:::-;8800:746;;;;:::o;6538:82::-;6577:42;6538:82;:::o;10329:882::-;10388:10;;;;;;;;;;;10374:24;;:10;:24;;;:52;;;;10416:10;;;;;;;;;;;10402:24;;:10;:24;;;10374:52;10366:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6313:42;10453:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10453:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10453:26:0;;;;10490:8;6400:42;10501:20;;;10530:4;10501:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10501:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10501:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10501:35:0;;;;;;;;;;;;;;;;10490:46;;10557:1;10551:3;:7;10547:383;;;10575:30;6488:42;10603:1;6400:42;10575:22;;;;:30;;;;;:::i;:::-;10620:32;6488:42;10648:3;6400:42;10620:22;;;;:32;;;;;:::i;:::-;10681:21;10719:1;10705: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;10705:16:0;;;;10681:40;;6400:42;10736:4;10741:1;10736:7;;;;;;;;;;;;;:12;;;;;;;;;;;6577:42;10763:4;10768:1;10763:7;;;;;;;;;;;;;:14;;;;;;;;;;;6135:42;10792:4;10797:1;10792:7;;;;;;;;;;;;;:14;;;;;;;;;;;6488:42;10835:33;;;10869:3;10879:1;10883:4;10897;10904:13;10912:4;10904:3;:7;;:13;;;;:::i;:::-;10835:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10835:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10835:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10835:83:0;;;;10547:383;;10940:10;6135:42;10953:22;;;10984:4;10953:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10953:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10953:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10953:37:0;;;;;;;;;;;;;;;;10940:50;;11013:1;11005:5;:9;11001:203;;;11031:9;11043:45;6748:5;11043:25;11053:14;;11043:5;:9;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;11031:57;;11103:65;11140:10;;;;;;;;;;;11129:30;;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11129:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11129:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11129:32:0;;;;;;;;;;;;;;;;11163:4;6135:42;11103:25;;;;:65;;;;;:::i;:::-;11183:9;:7;:9::i;:::-;11001:203;;10329:882;;:::o;8381:337::-;8432:12;8479:10;;;;;;;;;;;8465:24;;:10;:24;;;8457:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8540:6;8524:23;;6135:42;8524:23;;;;8516:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8591:6;8575:23;;6224:42;8575:23;;;;8567:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8628:6;:16;;;8653:4;8628:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8628:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8628:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8628:31:0;;;;;;;;;;;;;;;;8618:41;;8670:40;8690:10;;;;;;;;;;;8702:7;8670:6;:19;;;;:40;;;;;:::i;:::-;8381:337;;;:::o;6858:25::-;;;;;;;;;;;;;:::o;7580:168::-;7671:10;;;;;;;;;;;7657:24;;:10;:24;;;7649:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7725:15;7708:14;:32;;;;7580:168;:::o;12387:162::-;12429:4;12453:88;12525:15;:13;:15::i;:::-;12453:50;12490:12;:10;:12::i;:::-;12453:15;:13;:15::i;:::-;:36;;:50;;;;:::i;:::-;:71;;:88;;;;:::i;:::-;12446:95;;12387:162;:::o;6710:43::-;6748:5;6710:43;:::o;9626:462::-;9667:12;9714:10;;;;;;;;;;;9700:24;;:10;:24;;;9692:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9751:14;:12;:14::i;:::-;6135:42;9806:22;;;9837:4;9806:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9806:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9806:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9806:37:0;;;;;;;;;;;;;;;;9796:47;;9864:14;9892:10;;;;;;;;;;;9881:29;;;6135:42;9881:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9881:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9881:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9881:44:0;;;;;;;;;;;;;;;;9864:61;;9962:1;9944:20;;:6;:20;;;;9936:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10038:42;10064:6;10072:7;6135:42;10038:25;;;;:42;;;;;:::i;:::-;9626:462;;:::o;6670:33::-;;;;:::o;6766:30::-;;;;:::o;12728:155::-;12814:10;;;;;;;;;;;12800:24;;:10;:24;;;12792:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12864:11;12851:10;;:24;;;;;;;;;;;;;;;;;;12728:155;:::o;6185:82::-;6224:42;6185:82;:::o;6363:80::-;6400:42;6363:80;:::o;12561:155::-;12647:10;;;;;;;;;;;12633:24;;:10;:24;;;12625:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12697:11;12684:10;;:24;;;;;;;;;;;;;;;;;;12561:155;:::o;7404:164::-;7493:10;;;;;;;;;;;7479:24;;:10;:24;;;7471:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7546:14;7530:13;:30;;;;7404:164;:::o;11831:115::-;11877:4;6135:42;11901:22;;;11932:4;11901:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11901:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11901:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11901:37:0;;;;;;;;;;;;;;;;11894:44;;11831:115;:::o;12257:118::-;12300:4;6224:42;12324:28;;;12361:4;12324:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12324:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12324:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12324:43:0;;;;;;;;;;;;;;;;12317:50;;12257:118;:::o;7237:155::-;7323:10;;;;;;;;;;;7309:24;;:10;:24;;;7301:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7373:11;7360:10;;:24;;;;;;;;;;;;;;;;;;7237:155;:::o;7760:534::-;7797:10;6135:42;7810:22;;;7841:4;7810:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7810:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7810:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7810:37:0;;;;;;;;;;;;;;;;7797:50;;7870:1;7862:5;:9;7858:181;;;7888:33;6224:42;7919:1;6135:42;7888:24;;;;:33;;;;;:::i;:::-;7936:37;6224:42;7967:5;6135:42;7936:24;;;;:37;;;;;:::i;:::-;6224:42;7988:17;;;8014:4;8021:5;7988:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7988:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7988:39:0;;;;7858:181;8059:7;6224:42;8069:22;;;8100:4;8069:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8069:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8069:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8069:37:0;;;;;;;;;;;;;;;;8059:47;;8126:1;8121:2;:6;8117:160;;;8144:33;6313:42;8175:1;6224:42;8144:24;;;;:33;;;;;:::i;:::-;8192:34;6313:42;8223:2;6224:42;8192:24;;;;:34;;;;;:::i;:::-;6313:42;8241:20;;;8262:2;8241:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8241:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8241:24:0;;;;8117:160;7760:534;;:::o;6803:42::-;6840:5;6803:42;:::o;12135:110::-;12183:4;6224:42;12207:28;;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12207:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12207:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12207:30:0;;;;;;;;;;;;;;;;12200:37;;12135:110;:::o;6450:81::-;6488:42;6450:81;:::o;6890:25::-;;;;;;;;;;;;;:::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;1006:136::-;1064:7;1091:43;1095:1;1098;1091:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1084:50;;1006:136;;;;:::o;11223:596::-;11281:4;11298:7;11308:53;6224:42;11330:28;;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11330:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11330:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11330:30:0;;;;;;;;;;;;;;;;11308:17;11320:4;11308:7;:11;;:17;;;;:::i;:::-;:21;;:53;;;;:::i;:::-;11298:63;;11372:12;6224:42;11387:22;;;11418:4;11387:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11387:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11387:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11387:37:0;;;;;;;;;;;;;;;;11372:52;;6313:42;11435:23;;;11459:2;11435:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11435:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11435:27:0;;;;11473:11;6224:42;11487:22;;;11518:4;11487:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11487:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11487:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11487:37:0;;;;;;;;;;;;;;;;11473:51;;11535:14;11552:19;11563:7;11552:6;:10;;:19;;;;:::i;:::-;11535:36;;6135:42;11592:22;;;11623:4;11592:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11592:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11592:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11592:37:0;;;;;;;;;;;;;;;;11582:47;;6224:42;11640:19;;;11668:4;11675:9;11640:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11640:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11640:45:0;;;;6135:42;11705:22;;;11736:4;11705:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11705:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11705:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11705:37:0;;;;;;;;;;;;;;;;11696:46;;11765:19;11776:7;11765:6;:10;;:19;;;;:::i;:::-;11753:31;;11802:9;11795:16;;;;;;11223:596;;;:::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;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;10100:217::-;6313:42;10144:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10144:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10144:21:0;;;;10176:7;6224:42;10186:22;;;10217:4;10186:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10186:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10186:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10186:37:0;;;;;;;;;;;;;;;;10176:47;;10243:1;10238:2;:6;10234:76;;;6224:42;10261:19;;;10289:4;10295:2;10261:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10261:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10261:37:0;;;;10234:76;10100:217;:::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;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;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://06adc9ae3c0fd5b8625ebc95303f26deef1f033813427ec3e63b1accfe8b55f4

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.