ETH Price: $3,589.76 (+4.32%)
 
Transaction Hash
Method
Block
From
To
Stake215491812025-01-04 5:59:353 hrs ago1735970375IN
0x5fe65B11...D4731ee8f
0 ETH0.000529184.3693876
Claim215483542025-01-04 3:13:116 hrs ago1735960391IN
0x5fe65B11...D4731ee8f
0 ETH0.000699785.45540123
Claim215482572025-01-04 2:53:356 hrs ago1735959215IN
0x5fe65B11...D4731ee8f
0 ETH0.000575665.17916914
Stake215482082025-01-04 2:43:237 hrs ago1735958603IN
0x5fe65B11...D4731ee8f
0 ETH0.000593065.02634367
Stake215415662025-01-03 4:28:2329 hrs ago1735878503IN
0x5fe65B11...D4731ee8f
0 ETH0.000967137.01644631
Claim215415572025-01-03 4:26:2329 hrs ago1735878383IN
0x5fe65B11...D4731ee8f
0 ETH0.000625066.42974204
Claim215409172025-01-03 2:17:4731 hrs ago1735870667IN
0x5fe65B11...D4731ee8f
0 ETH0.000642436.33731469
Claim215353242025-01-02 7:34:472 days ago1735803287IN
0x5fe65B11...D4731ee8f
0 ETH0.0011127811.44664602
Claim215350842025-01-02 6:46:352 days ago1735800395IN
0x5fe65B11...D4731ee8f
0 ETH0.001397614.37640531
Stake215288522025-01-01 9:54:472 days ago1735725287IN
0x5fe65B11...D4731ee8f
0 ETH0.000540674.00225239
Stake215284572025-01-01 8:35:353 days ago1735720535IN
0x5fe65B11...D4731ee8f
0 ETH0.00053514.43193559
Claim215284342025-01-01 8:30:593 days ago1735720259IN
0x5fe65B11...D4731ee8f
0 ETH0.00049155.05584543
Stake215278092025-01-01 6:25:113 days ago1735712711IN
0x5fe65B11...D4731ee8f
0 ETH0.000350092.76694481
Stake215264702025-01-01 1:56:233 days ago1735696583IN
0x5fe65B11...D4731ee8f
0 ETH0.000426213.52972167
Claim215264622025-01-01 1:54:473 days ago1735696487IN
0x5fe65B11...D4731ee8f
0 ETH0.000440913.65149637
Claim215264282025-01-01 1:47:473 days ago1735696067IN
0x5fe65B11...D4731ee8f
0 ETH0.000309463.183739
Claim215259762025-01-01 0:17:113 days ago1735690631IN
0x5fe65B11...D4731ee8f
0 ETH0.00039844.09868868
Claim215252352024-12-31 21:48:233 days ago1735681703IN
0x5fe65B11...D4731ee8f
0 ETH0.000506755.21269998
Claim215230692024-12-31 14:32:233 days ago1735655543IN
0x5fe65B11...D4731ee8f
0 ETH0.0012951913.3230394
Claim215229332024-12-31 14:04:593 days ago1735653899IN
0x5fe65B11...D4731ee8f
0 ETH0.0010439710.73877584
Stake215199622024-12-31 4:07:114 days ago1735618031IN
0x5fe65B11...D4731ee8f
0 ETH0.000362812.76316105
Claim215165682024-12-30 16:44:594 days ago1735577099IN
0x5fe65B11...D4731ee8f
0 ETH0.000845898.70131674
Claim215165622024-12-30 16:43:474 days ago1735577027IN
0x5fe65B11...D4731ee8f
0 ETH0.000851318.75812795
Claim215146172024-12-30 10:12:594 days ago1735553579IN
0x5fe65B11...D4731ee8f
0 ETH0.000546085.38686043
Claim215145922024-12-30 10:07:594 days ago1735553279IN
0x5fe65B11...D4731ee8f
0 ETH0.000451314.64306204
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
215491812025-01-04 5:59:353 hrs ago1735970375
0x5fe65B11...D4731ee8f
0 ETH
215483542025-01-04 3:13:116 hrs ago1735960391
0x5fe65B11...D4731ee8f
0 ETH
215483542025-01-04 3:13:116 hrs ago1735960391
0x5fe65B11...D4731ee8f
0 ETH
215483542025-01-04 3:13:116 hrs ago1735960391
0x5fe65B11...D4731ee8f
0 ETH
215482572025-01-04 2:53:356 hrs ago1735959215
0x5fe65B11...D4731ee8f
0 ETH
215482572025-01-04 2:53:356 hrs ago1735959215
0x5fe65B11...D4731ee8f
0 ETH
215482572025-01-04 2:53:356 hrs ago1735959215
0x5fe65B11...D4731ee8f
0 ETH
215482082025-01-04 2:43:237 hrs ago1735958603
0x5fe65B11...D4731ee8f
0 ETH
215415662025-01-03 4:28:2329 hrs ago1735878503
0x5fe65B11...D4731ee8f
0 ETH
215415662025-01-03 4:28:2329 hrs ago1735878503
0x5fe65B11...D4731ee8f
0 ETH
215415662025-01-03 4:28:2329 hrs ago1735878503
0x5fe65B11...D4731ee8f
0 ETH
215415572025-01-03 4:26:2329 hrs ago1735878383
0x5fe65B11...D4731ee8f
0 ETH
215415572025-01-03 4:26:2329 hrs ago1735878383
0x5fe65B11...D4731ee8f
0 ETH
215409172025-01-03 2:17:4731 hrs ago1735870667
0x5fe65B11...D4731ee8f
0 ETH
215409172025-01-03 2:17:4731 hrs ago1735870667
0x5fe65B11...D4731ee8f
0 ETH
215409172025-01-03 2:17:4731 hrs ago1735870667
0x5fe65B11...D4731ee8f
0 ETH
215353242025-01-02 7:34:472 days ago1735803287
0x5fe65B11...D4731ee8f
0 ETH
215353242025-01-02 7:34:472 days ago1735803287
0x5fe65B11...D4731ee8f
0 ETH
215350842025-01-02 6:46:352 days ago1735800395
0x5fe65B11...D4731ee8f
0 ETH
215350842025-01-02 6:46:352 days ago1735800395
0x5fe65B11...D4731ee8f
0 ETH
215288522025-01-01 9:54:472 days ago1735725287
0x5fe65B11...D4731ee8f
0 ETH
215284572025-01-01 8:35:353 days ago1735720535
0x5fe65B11...D4731ee8f
0 ETH
215284572025-01-01 8:35:353 days ago1735720535
0x5fe65B11...D4731ee8f
0 ETH
215284572025-01-01 8:35:353 days ago1735720535
0x5fe65B11...D4731ee8f
0 ETH
215284342025-01-01 8:30:593 days ago1735720259
0x5fe65B11...D4731ee8f
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TubeChiefV2

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: TubeChiefV2.sol
pragma solidity ^0.6.12;

import './TransferHelper.sol';
import './SafeMath.sol';

contract TubeChiefV2 {
    using SafeMath for uint;

    struct PoolInfo {
        address lpTokenAddress;  // the LP token pair address
        uint rewardPerBlock;     // number of TUBE will mint per block
        uint lastDevBlockNo;     // record token mint to development last block number
        uint lastLotBlockNo;     // record token mint to lottery last block number
        uint lastStakeBlockNo;   // record token mint to staking last block number
        uint lastJackpotBlockNo; // record token mint to jackpot last block number
        uint accLpStaked;        // accumulate number of LP token user staked
        uint accLastBlockNo;     // record last pass in block number
        uint multiplier;         // reward multiplier
        uint accTokenPerShare;   // accumulated token per share
        bool locked;             // pool is locked
        bool finished;           // pool is finished. Disable stake into pool
    }

    struct UserPoolInfo {
        uint lpStaked;       // user staked LP
        uint rewardDebt;     // user debt
        uint lastClaimBlock; // last block number user retrieve reward
    }

    mapping(uint => PoolInfo) public pools; // dynamic pool container (pool ID => pool related data)
    mapping(address => uint[]) poolIdByLp;  // pool ids recorder (LP token => pool ids)

    // user pool allocate (user addr => (<pool ID> => user pool data))
    mapping(address => mapping(uint => UserPoolInfo)) public users;
    
    // allow to manage defarm operation
    mapping(address => bool) public defarm_permission;

    // allow to manage functional operation
    mapping(address => bool) public access_permission;

    address public owner;         // owner of tube chief
    address public tube;          // the TUBE token
    address public devaddr;       // development address
    address public lotaddr;       // lottery address
    address public dfstakeaddr;   // sub staking address
    address public dfjackpotaddr; // sub jackpot address
    address public treasury;      // minting purpose. treasury or TUBE token
    
    uint public poolLength; // next pool id. current length is (poolLength - 1)

    uint public FARMER    = 500000000000000000;
    uint public DEV       = 100000000000000000;
    uint public LOTTERY   = 150000000000000000;
    uint public DFSTAKE   = 25000000000000000;
    uint public DFJACKPOT = 225000000000000000;
    
    uint constant DECIMAL = 18;

    event CreatePool(address lpTokenAddress, uint rewardPerBlock, uint poolId);
    event UpdatePool(uint poolId, uint rewardPerBlock, uint multiplier, bool locked);
    event UpdateDevAddr(address devaddr);
    event UpdateLotAddr(address lotaddr);
    event UpdateDefarmAddress(address dfstakeaddr, address dfjackpotaddr);
    event UpdateAllocation(uint farmer, uint dev, uint lot, uint staking, uint jackpot);
    event UpdateDefarmPermission(address _address, bool status);
    event UpdateAccessPermission(address _address, bool status);
    event UpdateTreasury(address _address);
    event UpdatePoolFinish(uint poolId, bool finished);
    event Stake(uint poolId, uint amount);
    event Claim(uint poolId, uint amount, uint claimable);
    event TransferCompany(address old_owner, address new_owner);
    event TransferDev(uint poolId, address receiver, uint amount);
    event TransferLottery(uint poolId, address receiver, uint amount);
    event TransferStaking(uint poolId, address receiver, uint amount);
    event TransferJackpotReward(address receiver, uint amount);

    modifier onlyOwner {
        require(msg.sender == owner, 'NOT OWNER');
        _;
    }
    
    modifier hasDefarmPermission() {
        require(defarm_permission[msg.sender], 'NO DEFARM PERMISSION');
        _;
    }

    modifier hasAccessPermission() {
        require(access_permission[msg.sender], 'NO ACCESS PERMISSION');
        _;
    }

    constructor (address _tube, address _devaddr, address _lotaddr) public {
        owner   = msg.sender;
        tube    = _tube;
        devaddr = _devaddr;
        lotaddr = _lotaddr;
        defarm_permission[msg.sender] = true;
        access_permission[msg.sender] = true;
    }

    // create new pool. only owner executable
    // XX do not create twice on same LP token. reward will mess up if you do
    function createPool(address _lpTokenAddress, uint _rewardPerBlock, uint _multiplier) public hasAccessPermission {
        require(_lpTokenAddress != address(0), 'CREATE_POOL_EMPTY_ADDRESS');

        emit CreatePool(_lpTokenAddress, _rewardPerBlock, poolLength);
        pools[poolLength].lpTokenAddress     = _lpTokenAddress;
        pools[poolLength].rewardPerBlock     = _rewardPerBlock;
        pools[poolLength].multiplier         = _multiplier;
        pools[poolLength].accLastBlockNo     = block.number;
        pools[poolLength].lastDevBlockNo     = block.number;
        pools[poolLength].lastLotBlockNo     = block.number;
        pools[poolLength].lastStakeBlockNo   = block.number;
        pools[poolLength].lastJackpotBlockNo = block.number;
        poolIdByLp[_lpTokenAddress].push(poolLength);
        poolLength = poolLength.add(1);
    }

    // update pool setting, edit wisely. only owner executable
    function updatePool(uint poolId, uint _rewardPerBlock, uint _multiplier, bool _locked) public hasAccessPermission {
        _updateAccTokenPerShare(poolId);
        pools[poolId].rewardPerBlock = _rewardPerBlock;
        pools[poolId].multiplier     = _multiplier;
        pools[poolId].locked         = _locked;
        emit UpdatePool(poolId, _rewardPerBlock, _multiplier, _locked);
    }
    
    // update pool is finish. user not allow to stake into pool. only owner executable
    function updatePoolFinish(uint poolId, bool _finished) public hasAccessPermission {
        pools[poolId].finished = _finished;
        emit UpdatePoolFinish(poolId, _finished);
    }

    // update development address. only owner executable
    function updateDevAddr(address _address) public hasAccessPermission {
        devaddr = _address;
        emit UpdateDevAddr(devaddr);
    }

    // update lottery address. only owner executable
    function updateLotAddr(address _address) public hasAccessPermission {
        lotaddr = _address;
        emit UpdateLotAddr(lotaddr);
    }
    
    // update defarm addresses. only owner executable
    function updateDefarmAddress(address _dfstakeaddr, address _dfjackpotaddr) public hasAccessPermission {
        dfstakeaddr   = _dfstakeaddr;
        dfjackpotaddr = _dfjackpotaddr;
        emit UpdateDefarmAddress(dfstakeaddr, dfjackpotaddr);
    }

    // update treasury allow chief mint TUBE token. only owner executable
    function updateTreasury(address _address) public hasAccessPermission {
        treasury = _address;
        emit UpdateTreasury(_address);
    }

    // update allocation for each sector. only owner executable
    function updateAllocation(uint _farmer, uint _dev, uint _lot, uint _dfstake, uint _dfjackpot) public hasAccessPermission {
        require(_farmer.add(_dev).add(_lot).add(_dfstake).add(_dfjackpot) == 1000000000000000000, "invalid allocation");
        FARMER    = _farmer;
        DEV       = _dev;
        LOTTERY   = _lot;
        DFSTAKE   = _dfstake;
        DFJACKPOT = _dfjackpot;
        emit UpdateAllocation(_farmer, _dev, _lot, _dfstake, _dfjackpot);
    }

    // update defarm permission. only owner executable
    function updateDefarmPermission(address _address, bool status) public onlyOwner {
        defarm_permission[_address] = status;
        emit UpdateDefarmPermission(_address, status);
    }

    // update access permission. only owner executable
    function updateAccessPermission(address _address, bool status) public onlyOwner {
        access_permission[_address] = status;
        emit UpdateAccessPermission(_address, status);
    }

    // stake LP token to earn TUBE
    function stake(uint poolId, uint amount) public {
        require(pools[poolId].lpTokenAddress != address(0), 'STAKE_POOL_NOT_EXIST');
        require(pools[poolId].locked == false, 'STAKE_POOL_LOCKED');
        require(pools[poolId].finished == false, 'STAKE_POOL_FINISHED');

        claim(poolId, 0);
        TransferHelper.safeTransferFrom(pools[poolId].lpTokenAddress, msg.sender, address(this), amount);
        pools[poolId].accLpStaked = pools[poolId].accLpStaked.add(amount);
        users[msg.sender][poolId].lpStaked       = users[msg.sender][poolId].lpStaked.add(amount);
        users[msg.sender][poolId].lastClaimBlock = block.number;
        users[msg.sender][poolId].rewardDebt     = pools[poolId].accTokenPerShare.mul(users[msg.sender][poolId].lpStaked, DECIMAL);

        emit Stake(poolId, amount);
    }

    // claim TUBE token. input LP token to exit pool
    function claim(uint poolId, uint amount) public {
        require(pools[poolId].lpTokenAddress != address(0), 'CLAIM_POOL_NOT_EXIST');
        require(pools[poolId].locked == false, 'CLAIM_POOL_LOCKED');
        
        _updateAccTokenPerShare(poolId);

        uint claimable = _getRewardAmount(poolId);
        if (claimable > 0) {
            IMint(treasury).farmMint(address(this), claimable);
            TransferHelper.safeTransfer(tube, msg.sender, claimable);
            users[msg.sender][poolId].lastClaimBlock = block.number;
        }

        if (amount > 0) {
            TransferHelper.safeTransfer(pools[poolId].lpTokenAddress, msg.sender, amount);
            users[msg.sender][poolId].lpStaked = users[msg.sender][poolId].lpStaked.sub(amount);
            pools[poolId].accLpStaked = pools[poolId].accLpStaked.sub(amount);
        }

        // emit if necessary. cost saving
        if (claimable > 0 || amount > 0) {
            emit Claim(poolId, amount, claimable);
        }

        // update the user reward debt at this moment
        users[msg.sender][poolId].rewardDebt = pools[poolId].accTokenPerShare.mul(users[msg.sender][poolId].lpStaked, DECIMAL);
    }

    // get token per share with current block number
    function getAccTokenInfo(uint poolId) public view returns (uint) {
        if (pools[poolId].accLpStaked <= 0) {
            return 0;
        }

        uint reward_block = pools[poolId].rewardPerBlock;
        uint multiplier   = pools[poolId].multiplier;
        uint total_staked = pools[poolId].accLpStaked;
        uint pending      = block.number.sub(pools[poolId].accLastBlockNo);
        pending           = pending * 10**DECIMAL; // cast to "wei" unit
        uint result       = reward_block.mul(multiplier, DECIMAL).mul(pending, DECIMAL).mul(FARMER, DECIMAL);

        return result.div(total_staked, DECIMAL);
    }

    // emergency collect token from the contract. only owner executable
    function emergencyCollectToken(address token, uint amount) public onlyOwner {
        TransferHelper.safeTransfer(token, owner, amount);
    }

    // emergency collect eth from the contract. only owner executable
    function emergencyCollectEth(uint amount) public onlyOwner {
        address payable owner_address = payable(owner);
        TransferHelper.safeTransferETH(owner_address, amount);
    }

    // transfer ownership. proceed wisely. only owner executable
    function transferCompany(address new_owner) public onlyOwner {
        emit TransferCompany(owner, new_owner);
        owner = new_owner;
    }

    // transfer mintable token to development address
    function transferDev(uint poolId) public hasAccessPermission {
        uint mintable = getExMintable(poolId, keccak256("DEV"));
        require(mintable > 0, 'TRANSFER_DEV_EMPTY');
        require(devaddr != address(0), 'EMPTY DEV ADDRESS');
        IMint(treasury).farmMint(address(this), mintable);
        TransferHelper.safeTransfer(tube, devaddr, mintable);
        pools[poolId].lastDevBlockNo = block.number;
        emit TransferDev(poolId, devaddr, mintable);
    }

    // transfer mintable token to lottery address
    function transferLottery(uint poolId) public hasAccessPermission {
        uint mintable = getExMintable(poolId, keccak256("LOTTERY"));
        require(mintable > 0, 'TRANSFER_LOT_EMPTY');
        require(lotaddr != address(0), 'EMPTY LOTTERY ADDRESS');
        IMint(treasury).farmMint(address(this), mintable);
        TransferHelper.safeTransfer(tube, lotaddr, mintable);
        pools[poolId].lastLotBlockNo = block.number;
        emit TransferLottery(poolId, lotaddr, mintable);
    }
    
    // transfer mintable token to sub staking
    function transferStaking(uint poolId) public hasDefarmPermission {
        uint mintable = getExMintable(poolId, keccak256("STAKING"));
        require(dfstakeaddr != address(0), 'EMPTY DFSTAKE ADDRESS');
        
        if (mintable > 0) {
            IMint(treasury).farmMint(address(this), mintable);
            TransferHelper.safeTransfer(tube, dfstakeaddr, mintable);
            pools[poolId].lastStakeBlockNo = block.number;
            emit TransferStaking(poolId, dfstakeaddr, mintable);
        }
    }
    
    // transfer mintable token to sub jackpot
    function transferJackpotReward() public hasDefarmPermission returns (uint) {
        require(dfjackpotaddr != address(0), 'EMPTY DFJACKPOT ADDRESS');
        
        uint mintable = getJackpotReward();

        if (mintable > 0) {
            IMint(treasury).farmMint(address(this), mintable);
            TransferHelper.safeTransfer(tube, dfjackpotaddr, mintable);
            emit TransferJackpotReward(dfjackpotaddr, mintable);
        }
        
        for (uint i = 0; i <= poolLength.sub(1); i++) {
            pools[i].lastJackpotBlockNo = block.number;
        }
        
        return mintable;
    }

    // retrieve the mintable amount
    function getExMintable(uint poolId, bytes32 category) public view returns (uint) {
        uint last_block   = 0;
        uint rate         = 0;

        if (category == keccak256("DEV")) {
            last_block = pools[poolId].lastDevBlockNo;
            rate       = DEV;
        } else if (category == keccak256("LOTTERY")) {
            last_block = pools[poolId].lastLotBlockNo;
            rate       = LOTTERY;
        } else if (category == keccak256("STAKING")) {
            last_block = pools[poolId].lastStakeBlockNo;
            rate       = DFSTAKE;
        } else if (category == keccak256("JACKPOT")) {
            last_block = pools[poolId].lastJackpotBlockNo;
            rate       = DFJACKPOT;
        } else {
            last_block = 0;
            rate       = 0;
        }
        
        uint block_diff = block.number.sub(last_block);
        block_diff      = block_diff * 10**DECIMAL;

        return block_diff.mul(pools[poolId].rewardPerBlock, DECIMAL).mul(pools[poolId].multiplier, DECIMAL).mul(rate, DECIMAL);
    }
    
    // retrieve jackpot reward allocation
    function getJackpotReward() public view returns (uint) {
        uint reward = 0;
        for (uint i = 0; i <= poolLength.sub(1); i++) {
            reward = reward.add(getExMintable(i, keccak256("JACKPOT")));
        }
        return reward;
    }

    // retrieve pool ids by LP token address
    function getPidByLpToken(address _lpTokenAddress) public view returns (uint[] memory) {
        return poolIdByLp[_lpTokenAddress];
    }

    // retrieve user reward info on the pool with current block number
    function getUserReward(uint poolId) public view returns (uint, uint, uint, uint, uint) {
        uint accTokenPerShare = getAccTokenInfo(poolId);
        accTokenPerShare      = accTokenPerShare.add(pools[poolId].accTokenPerShare);
        
        uint claimable = accTokenPerShare.mul(users[msg.sender][poolId].lpStaked, DECIMAL).sub(users[msg.sender][poolId].rewardDebt);
        return (block.number, claimable, accTokenPerShare, users[msg.sender][poolId].lpStaked, users[msg.sender][poolId].rewardDebt);
    }
    
    function _updateAccTokenPerShare(uint poolId) internal {
        uint result = getAccTokenInfo(poolId);
        pools[poolId].accTokenPerShare = pools[poolId].accTokenPerShare.add(result);
        pools[poolId].accLastBlockNo   = block.number;
    }

    function _getRewardAmount(uint poolId) view internal returns (uint) {
        if (pools[poolId].accLpStaked <= 0) {
            return (0);
        }

        uint user_staked = users[msg.sender][poolId].lpStaked;
        uint user_debt   = users[msg.sender][poolId].rewardDebt;
        uint claimable   = pools[poolId].accTokenPerShare.mul(user_staked, DECIMAL).sub(user_debt);

        return (claimable);
    }

    fallback() external payable {
    }
}

interface IMint {
    function farmMint(address _address, uint amount) external;
}

File 2 of 3: SafeMath.sol
pragma solidity ^0.6.12;

// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a, 'SafeMath:INVALID_ADD');
    }

    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a, 'SafeMath:OVERFLOW_SUB');
        c = a - b;
    }

    function mul(uint a, uint b, uint decimal) internal pure returns (uint) {
        uint dc = 10**decimal;
        uint c0 = a * b;
        require(a == 0 || c0 / a == b, "SafeMath: multiple overflow");
        uint c1 = c0 + (dc / 2);
        require(c1 >= c0, "SafeMath: multiple overflow");
        uint c2 = c1 / dc;
        return c2;
    }

    function div(uint256 a, uint256 b, uint decimal) internal pure returns (uint256) {
        require(b != 0, "SafeMath: division by zero");
        uint dc = 10**decimal;
        uint c0 = a * dc;
        require(a == 0 || c0 / a == dc, "SafeMath: division internal");
        uint c1 = c0 + (b / 2);
        require(c1 >= c0, "SafeMath: division internal");
        uint c2 = c1 / b;
        return c2;
    }
}

File 3 of 3: TransferHelper.sol
pragma solidity ^0.6.12;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tube","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"address","name":"_lotaddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimable","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"lpTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"CreatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"old_owner","type":"address"},{"indexed":false,"internalType":"address","name":"new_owner","type":"address"}],"name":"TransferCompany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferDev","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferJackpotReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferLottery","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdateAccessPermission","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"farmer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"staking","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"jackpot","type":"uint256"}],"name":"UpdateAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dfstakeaddr","type":"address"},{"indexed":false,"internalType":"address","name":"dfjackpotaddr","type":"address"}],"name":"UpdateDefarmAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdateDefarmPermission","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"devaddr","type":"address"}],"name":"UpdateDevAddr","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"lotaddr","type":"address"}],"name":"UpdateLotAddr","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplier","type":"uint256"},{"indexed":false,"internalType":"bool","name":"locked","type":"bool"}],"name":"UpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"finished","type":"bool"}],"name":"UpdatePoolFinish","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"UpdateTreasury","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DFJACKPOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DFSTAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FARMER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOTTERY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"access_permission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpTokenAddress","type":"address"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"createPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"defarm_permission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dfjackpotaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dfstakeaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyCollectEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyCollectToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"getAccTokenInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"bytes32","name":"category","type":"bytes32"}],"name":"getExMintable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getJackpotReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpTokenAddress","type":"address"}],"name":"getPidByLpToken","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"getUserReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"address","name":"lpTokenAddress","type":"address"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"lastDevBlockNo","type":"uint256"},{"internalType":"uint256","name":"lastLotBlockNo","type":"uint256"},{"internalType":"uint256","name":"lastStakeBlockNo","type":"uint256"},{"internalType":"uint256","name":"lastJackpotBlockNo","type":"uint256"},{"internalType":"uint256","name":"accLpStaked","type":"uint256"},{"internalType":"uint256","name":"accLastBlockNo","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"uint256","name":"accTokenPerShare","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"bool","name":"finished","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_owner","type":"address"}],"name":"transferCompany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"transferDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferJackpotReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"transferLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"transferStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tube","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateAccessPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_farmer","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_lot","type":"uint256"},{"internalType":"uint256","name":"_dfstake","type":"uint256"},{"internalType":"uint256","name":"_dfjackpot","type":"uint256"}],"name":"updateAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dfstakeaddr","type":"address"},{"internalType":"address","name":"_dfjackpotaddr","type":"address"}],"name":"updateDefarmAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateDefarmPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateDevAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateLotAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"_multiplier","type":"uint256"},{"internalType":"bool","name":"_locked","type":"bool"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"bool","name":"_finished","type":"bool"}],"name":"updatePoolFinish","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"users","outputs":[{"internalType":"uint256","name":"lpStaked","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"lastClaimBlock","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526706f05b59d3b20000600d5567016345785d8a0000600e55670214e8348c4f0000600f556658d15e1762800060105567031f5c4ed276800060115534801561004b57600080fd5b50604051612e64380380612e648339818101604052606081101561006e57600080fd5b50805160208083015160409384015160058054336001600160a01b031991821681179092556006805482166001600160a01b03978816179055600780548216948716949094179093556008805490931694909116939093179055600091825260038152828220805460ff19908116600190811790925560049092529282208054909116909217909155612d5d90819061010790396000f3fe6080604052600436106102465760003560e01c80638928d3d811610139578063c1eb5ddd116100b6578063d3b321d01161007a578063d3b321d014610949578063d49e77cd1461095e578063e749768414610973578063ea80360014610988578063f7431352146109b2578063faaee0a7146109e557610246565b8063c1eb5ddd1461081e578063c274b88714610833578063c349026314610866578063d1eeaf3f14610896578063d23bbf91146108c657610246565b80639c5eb68a116100fd5780639c5eb68a146106ac5780639fb08cb7146106de578063ac4afa3814610733578063b039ddf6146107ca578063b642b2481461080957610246565b80638928d3d8146106075780638bcd30161461063a5780638da5cb5b1461064f5780639291d5631461066457806398f9c31e1461069757610246565b806359701ec5116101c757806367c7c9451161018b57806367c7c9451461052a57806369e22ca91461055457806370b7e65e1461058f5780637b0472f0146105a45780637f51bb1f146105d457610246565b806359701ec51461043c5780635a80258414610477578063617ccf0b146104b957806361d027b3146104ce5780636408d20a146104e357610246565b8063376582f71161020e578063376582f71461033e5780633b4ac10b1461037c5780633f410d00146103a6578063494ac14c146103d057806354a02f9e146103e557610246565b8063081e3eda146102485780630ef7a93a1461026f578063202bbc41146102a057806323472bf0146102db57806325f11e8214610305575b005b34801561025457600080fd5b5061025d6109fa565b60408051918252519081900360200190f35b34801561027b57600080fd5b50610284610a00565b604080516001600160a01b039092168252519081900360200190f35b3480156102ac57600080fd5b50610246600480360360408110156102c357600080fd5b506001600160a01b0381351690602001351515610a0f565b3480156102e757600080fd5b50610246600480360360208110156102fe57600080fd5b5035610abe565b34801561031157600080fd5b506102466004803603604081101561032857600080fd5b506001600160a01b038135169060200135610cc8565b34801561034a57600080fd5b506102466004803603608081101561036157600080fd5b50803590602081013590604081013590606001351515610d2f565b34801561038857600080fd5b506102466004803603602081101561039f57600080fd5b5035610e03565b3480156103b257600080fd5b5061025d600480360360208110156103c957600080fd5b5035610fd7565b3480156103dc57600080fd5b5061025d611072565b3480156103f157600080fd5b5061041e6004803603604081101561040857600080fd5b506001600160a01b038135169060200135611078565b60408051938452602084019290925282820152519081900360600190f35b34801561044857600080fd5b506102466004803603604081101561045f57600080fd5b506001600160a01b03813581169160200135166110a0565b34801561048357600080fd5b50610246600480360360a081101561049a57600080fd5b5080359060208101359060408101359060608101359060800135611163565b3480156104c557600080fd5b5061025d61128b565b3480156104da57600080fd5b50610284611291565b3480156104ef57600080fd5b506105166004803603602081101561050657600080fd5b50356001600160a01b03166112a0565b604080519115158252519081900360200190f35b34801561053657600080fd5b506102466004803603602081101561054d57600080fd5b50356112b5565b34801561056057600080fd5b506102466004803603604081101561057757600080fd5b506001600160a01b0381351690602001351515611316565b34801561059b57600080fd5b5061025d6113c5565b3480156105b057600080fd5b50610246600480360360408110156105c757600080fd5b5080359060200135611422565b3480156105e057600080fd5b50610246600480360360208110156105f757600080fd5b50356001600160a01b0316611650565b34801561061357600080fd5b506102466004803603602081101561062a57600080fd5b50356001600160a01b03166116f6565b34801561064657600080fd5b5061025d6117a2565b34801561065b57600080fd5b506102846117a8565b34801561067057600080fd5b506102466004803603602081101561068757600080fd5b50356001600160a01b03166117b7565b3480156106a357600080fd5b5061025d611863565b3480156106b857600080fd5b50610246600480360360408110156106cf57600080fd5b50803590602001351515611a31565b3480156106ea57600080fd5b506107086004803603602081101561070157600080fd5b5035611ae7565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561073f57600080fd5b5061075d6004803603602081101561075657600080fd5b5035611b8c565b604080516001600160a01b03909d168d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501521515610140840152151561016083015251908190036101800190f35b3480156107d657600080fd5b50610246600480360360608110156107ed57600080fd5b506001600160a01b038135169060208101359060400135611bfb565b34801561081557600080fd5b50610284611db1565b34801561082a57600080fd5b5061025d611dc0565b34801561083f57600080fd5b506105166004803603602081101561085657600080fd5b50356001600160a01b0316611dc6565b34801561087257600080fd5b506102466004803603604081101561088957600080fd5b5080359060200135611ddb565b3480156108a257600080fd5b5061025d600480360360408110156108b957600080fd5b5080359060200135612093565b3480156108d257600080fd5b506108f9600480360360208110156108e957600080fd5b50356001600160a01b0316612207565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561093557818101518382015260200161091d565b505050509050019250505060405180910390f35b34801561095557600080fd5b50610284612273565b34801561096a57600080fd5b50610284612282565b34801561097f57600080fd5b5061025d612291565b34801561099457600080fd5b50610246600480360360208110156109ab57600080fd5b5035612297565b3480156109be57600080fd5b50610246600480360360208110156109d557600080fd5b50356001600160a01b03166124a5565b3480156109f157600080fd5b5061028461255a565b600c5481565b6009546001600160a01b031681565b6005546001600160a01b03163314610a5a576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015280517f7ebd2f3c8f6a6b9fb2e22ab293fa70e3399dc94c9fa71acfd3d2ec9899ecf1ed9281900390910190a15050565b3360009081526004602052604090205460ff16610b10576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6000610b3c827fb1e380c01db319c0153ea3bb4fbd0ab6639cc088e3bf8cd5319b128f33a2f9e8612093565b905060008111610b88576040805162461bcd60e51b81526020600482015260126024820152715452414e534645525f4445565f454d50545960701b604482015290519081900360640190fd5b6007546001600160a01b0316610bd9576040805162461bcd60e51b8152602060048201526011602482015270454d50545920444556204144445245535360781b604482015290519081900360640190fd5b600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b5050600654600754610c6193506001600160a01b0391821692501683612569565b600082815260208181526040918290204360029091015560075482518581526001600160a01b039091169181019190915280820183905290517f422da8464943a7cc5db4a515a35fbc4f536b2ee043055306c91a65dcd5f1733a9181900360600190a15050565b6005546001600160a01b03163314610d13576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b600554610d2b9083906001600160a01b031683612569565b5050565b3360009081526004602052604090205460ff16610d81576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b610d8a846126bd565b600084815260208181526040918290206001810186905560088101859055600a01805484151560ff1990911681179091558251878152918201869052818301859052606082015290517f47f18596722a27a7961a013d8c7af82482bb7051c3492fd45b4901d8964f75619181900360800190a150505050565b3360009081526003602052604090205460ff16610e5e576040805162461bcd60e51b81526020600482015260146024820152732727902222a320a926902822a926a4a9a9a4a7a760611b604482015290519081900360640190fd5b6000610e8a827f080909c18c958ce5a2d36481697824e477319323d03154ceba3b78f28a61887b612093565b6009549091506001600160a01b0316610ee2576040805162461bcd60e51b8152602060048201526015602482015274454d5054592044465354414b45204144445245535360581b604482015290519081900360640190fd5b8015610d2b57600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b5050600654600954610f7093506001600160a01b0391821692501683612569565b600082815260208181526040918290204360049091015560095482518581526001600160a01b039091169181019190915280820183905290517f33dd7763d76540919835c5df5e1e89e9891ff7ec5c51af0f94a3f2143269f8789181900360600190a15050565b600081815260208190526040812060060154610ff55750600061106d565b60008281526020819052604081206001810154600882015460068301546007909301549193909291611028904390612708565b600d54670de0b6b3a764000090910291506000906110579060126110508582828b8b8361275d565b919061275d565b905061106581846012612840565b955050505050505b919050565b600f5481565b6002602081815260009384526040808520909152918352912080546001820154919092015483565b3360009081526004602052604090205460ff166110f2576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600980546001600160a01b038085166001600160a01b03199283161792839055600a8054858316931692909217918290556040805193821684529116602083015280517f2c7c09ee51fb50eb21730f9e9dbfdf5d63f4be4ba69744e58f4c7d0d645714179281900390910190a15050565b3360009081526004602052604090205460ff166111b5576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6111cd816111c7848187818b8b612968565b90612968565b670de0b6b3a76400001461121d576040805162461bcd60e51b815260206004820152601260248201527134b73b30b634b21030b63637b1b0ba34b7b760711b604482015290519081900360640190fd5b600d859055600e849055600f839055601082905560118190556040805186815260208101869052808201859052606081018490526080810183905290517f420e39e9c2051269e178abf9f51a95f233bd4b2e85ef0ecd821865962a30a9429181900360a00190a15050505050565b600d5481565b600b546001600160a01b031681565b60046020526000908152604090205460ff1681565b6005546001600160a01b03163314611300576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6005546001600160a01b0316610d2b81836129b7565b6005546001600160a01b03163314611361576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915582519384529083015280517f309657c1babf43f318005b1edc59822e4c5713c3a9cf6bac9f85b07b360330cd9281900390910190a15050565b600080805b600c546113d8906001612708565b811161141c5761141261140b827ff45223fc822e0a02a042bb2eec36a76af2a028cc55539c3a40ab438d1089e1c0612093565b8390612968565b91506001016113ca565b50905090565b6000828152602081905260409020546001600160a01b0316611482576040805162461bcd60e51b815260206004820152601460248201527314d51052d157d413d3d317d393d517d1561254d560621b604482015290519081900360640190fd5b6000828152602081905260409020600a015460ff16156114dd576040805162461bcd60e51b815260206004820152601160248201527014d51052d157d413d3d317d313d0d2d151607a1b604482015290519081900360640190fd5b6000828152602081905260409020600a0154610100900460ff161561153f576040805162461bcd60e51b815260206004820152601360248201527214d51052d157d413d3d317d192539254d21151606a1b604482015290519081900360640190fd5b61154a826000611ddb565b60008281526020819052604090205461156e906001600160a01b0316333084612aaf565b60008281526020819052604090206006015461158a9082612968565b6000838152602081815260408083206006019390935533825260028152828220858352905220546115bb9082612968565b3360009081526002602081815260408084208785528252808420858155439301929092558290529020600901546115f391601261275d565b33600090815260026020908152604080832086845282529182902060010192909255805184815291820183905280517fc9ec05ea5037818736839e1365dc3d9a74a735c447af0697da66633b7a9d0fab9281900390910190a15050565b3360009081526004602052604090205460ff166116a2576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600b80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f54d231bb9d500b1923e4a1cb25e600f366a8368873d9af7c1c623814df19fc9181900360200190a150565b3360009081526004602052604090205460ff16611748576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f248a95ce438e13bf40987ec979f51269df3158547f00367969fde66034d7f6a0916020908290030190a150565b60115481565b6005546001600160a01b031681565b3360009081526004602052604090205460ff16611809576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f6b4941cf5d9e7b01c4e5c59a0cb86fae661180bdc0350a3df861cd15c796a2c5916020908290030190a150565b3360009081526003602052604081205460ff166118be576040805162461bcd60e51b81526020600482015260146024820152732727902222a320a926902822a926a4a9a9a4a7a760611b604482015290519081900360640190fd5b600a546001600160a01b031661191b576040805162461bcd60e51b815260206004820152601760248201527f454d5054592044464a41434b504f542041444452455353000000000000000000604482015290519081900360640190fd5b60006119256113c5565b905080156119fd57600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050600654600a546119b593506001600160a01b0391821692501683612569565b600a54604080516001600160a01b0390921682526020820183905280517fca0cf3424eaa5a1cbd74510cbf54bee9d0c263e572cad7cc0f775920c9d4a5d59281900390910190a15b60005b600c54611a0e906001612708565b811161141c57600081815260208190526040902043600590910155600101611a00565b3360009081526004602052604090205460ff16611a83576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b60008281526020818152604091829020600a01805461ff0019166101008515159081029190911790915582518581529182015281517fcd5c5d18479e24e3c787bcc4bc1ee478f42a441321c1def3449e3149bf4d0695929181900390910190a15050565b600080600080600080611af987610fd7565b600088815260208190526040902060090154909150611b19908290612968565b3360009081526002602090815260408083208b84529091528120600181015490549293509091611b579190611b51908590601261275d565b90612708565b3360009081526002602090815260408083209b83529a9052989098208054600190910154439a93985090965094509092505050565b600060208190529081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a01546001600160a01b0390991699979896979596949593949293919290919060ff808216916101009004168c565b3360009081526004602052604090205460ff16611c4d576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6001600160a01b038316611ca8576040805162461bcd60e51b815260206004820152601960248201527f4352454154455f504f4f4c5f454d5054595f4144445245535300000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b03861681526020810185905280820192909252517f77db383b85b26e0329a36642c94759c45a544a3b07ecdcb8a78b1407a8db23fb9181900360600190a1600c805460009081526020818152604080832080546001600160a01b0319166001600160a01b0389169081179091558454845281842060019081018890558554855282852060080187905585548552828520436007909101819055865486528386206002018190558654865283862060030181905586548652838620600401819055865486528386206005015590845280835290832084548154808401835591855292909320909201559054611da991612968565b600c55505050565b6008546001600160a01b031681565b600e5481565b60036020526000908152604090205460ff1681565b6000828152602081905260409020546001600160a01b0316611e3b576040805162461bcd60e51b815260206004820152601460248201527310d310525357d413d3d317d393d517d1561254d560621b604482015290519081900360640190fd5b6000828152602081905260409020600a015460ff1615611e96576040805162461bcd60e51b815260206004820152601160248201527010d310525357d413d3d317d313d0d2d151607a1b604482015290519081900360640190fd5b611e9f826126bd565b6000611eaa83612c0c565b90508015611f5557600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b5050600654611f3592506001600160a01b031690503383612569565b336000908152600260208181526040808420878552909152909120439101555b8115611fe657600083815260208190526040902054611f7e906001600160a01b03163384612569565b336000908152600260209081526040808320868452909152902054611fa39083612708565b3360009081526002602090815260408083208784528252808320939093558190522060060154611fd39083612708565b6000848152602081905260409020600601555b6000811180611ff55750600082115b1561203b57604080518481526020810184905280820183905290517fe630ca519fedafd2bd9bd35ad65e198e08398f47c88ca063c406740992bcd1a49181900360600190a15b336000908152600260209081526040808320868452825280832054918390529091206009015461206c91601261275d565b33600090815260026020908152604080832096835295905293909320600101929092555050565b600080807fb1e380c01db319c0153ea3bb4fbd0ab6639cc088e3bf8cd5319b128f33a2f9e88414156120db575050600083815260208190526040902060020154600e546121ae565b7f3a98da9f150131de466fba46b533a35c45bbffeed9f6c5943009e2888091b67c84141561211f575050600083815260208190526040902060030154600f546121ae565b7f080909c18c958ce5a2d36481697824e477319323d03154ceba3b78f28a61887b8414156121635750506000838152602081905260409020600401546010546121ae565b7ff45223fc822e0a02a042bb2eec36a76af2a028cc55539c3a40ab438d1089e1c08414156121a75750506000838152602081905260409020600501546011546121ae565b5060009050805b60006121ba4384612708565b60008781526020819052604090206008810154600190910154670de0b6b3a764000090920292506121fb91849160129161105091908390839088908361275d565b93505050505b92915050565b6001600160a01b03811660009081526001602090815260409182902080548351818402810184019094528084526060939283018282801561226757602002820191906000526020600020905b815481526020019060010190808311612253575b50505050509050919050565b600a546001600160a01b031681565b6007546001600160a01b031681565b60105481565b3360009081526004602052604090205460ff166122e9576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6000612315827f3a98da9f150131de466fba46b533a35c45bbffeed9f6c5943009e2888091b67c612093565b905060008111612361576040805162461bcd60e51b81526020600482015260126024820152715452414e534645525f4c4f545f454d50545960701b604482015290519081900360640190fd5b6008546001600160a01b03166123b6576040805162461bcd60e51b8152602060048201526015602482015274454d505459204c4f5454455259204144445245535360581b604482015290519081900360640190fd5b600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b15801561240957600080fd5b505af115801561241d573d6000803e3d6000fd5b505060065460085461243e93506001600160a01b0391821692501683612569565b600082815260208181526040918290204360039091015560085482518581526001600160a01b039091169181019190915280820183905290517f9b8d5730922bfb86721e679a872a7107684e4c847c2d640f423871318721daac9181900360600190a15050565b6005546001600160a01b031633146124f0576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b600554604080516001600160a01b039283168152918316602083015280517f1655804481e1842dc7a9487a44ff6373f0e8a83b9077a64c639d724d5ef038ff9281900390910190a1600580546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031681565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106125e65780518252601f1990920191602091820191016125c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612648576040519150601f19603f3d011682016040523d82523d6000602084013e61264d565b606091505b509150915081801561267b57508051158061267b575080806020019051602081101561267857600080fd5b50515b6126b65760405162461bcd60e51b815260040180806020018281038252602d815260200180612cdb602d913960400191505060405180910390fd5b5050505050565b60006126c882610fd7565b6000838152602081905260409020600901549091506126e79082612968565b60009283526020839052604090922060098101929092555043600790910155565b600082821115612757576040805162461bcd60e51b815260206004820152601560248201527429b0b332a6b0ba341d27ab22a9232627abafa9aaa160591b604482015290519081900360640190fd5b50900390565b6000600a82900a84840285158061277c57508486828161277957fe5b04145b6127cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206d756c7469706c65206f766572666c6f770000000000604482015290519081900360640190fd5b60028204810181811015612828576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206d756c7469706c65206f766572666c6f770000000000604482015290519081900360640190fd5b600083828161283357fe5b0498975050505050505050565b600082612894576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600a82900a8481028515806128b15750818682816128ae57fe5b04145b612902576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206469766973696f6e20696e7465726e616c0000000000604482015290519081900360640190fd5b6002850481018181101561295d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206469766973696f6e20696e7465726e616c0000000000604482015290519081900360640190fd5b600086828161283357fe5b81810182811015612201576040805162461bcd60e51b815260206004820152601460248201527314d8599953585d1a0e9253959053125117d0511160621b604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a035780518252601f1990920191602091820191016129e4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a65576040519150601f19603f3d011682016040523d82523d6000602084013e612a6a565b606091505b5050905080612aaa5760405162461bcd60e51b8152600401808060200182810382526034815260200180612ca76034913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310612b345780518252601f199092019160209182019101612b15565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b96576040519150601f19603f3d011682016040523d82523d6000602084013e612b9b565b606091505b5091509150818015612bc9575080511580612bc95750808060200190516020811015612bc657600080fd5b50515b612c045760405162461bcd60e51b8152600401808060200182810382526031815260200180612c766031913960400191505060405180910390fd5b505050505050565b600081815260208190526040812060060154612c2a5750600061106d565b336000908152600260209081526040808320858452825280832080546001909101549284905290832060090154909290612c6c908390611b519086601261275d565b9594505050505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644e4f20414343455353205045524d495353494f4e000000000000000000000000a264697066735822122009f214f8a36b86e890319c450c8a74264a7ec967eeb8dc67111e6c7abcf3328964736f6c634300060c0033000000000000000000000000da86006036540822e0cd2861dbd2fd7ff9caa0e8000000000000000000000000638187c88f341488e9edff83750ad3a34c7ca6360000000000000000000000006ca45993fd7271bc44030bafc4ff1a575a03e4f2

Deployed Bytecode

0x6080604052600436106102465760003560e01c80638928d3d811610139578063c1eb5ddd116100b6578063d3b321d01161007a578063d3b321d014610949578063d49e77cd1461095e578063e749768414610973578063ea80360014610988578063f7431352146109b2578063faaee0a7146109e557610246565b8063c1eb5ddd1461081e578063c274b88714610833578063c349026314610866578063d1eeaf3f14610896578063d23bbf91146108c657610246565b80639c5eb68a116100fd5780639c5eb68a146106ac5780639fb08cb7146106de578063ac4afa3814610733578063b039ddf6146107ca578063b642b2481461080957610246565b80638928d3d8146106075780638bcd30161461063a5780638da5cb5b1461064f5780639291d5631461066457806398f9c31e1461069757610246565b806359701ec5116101c757806367c7c9451161018b57806367c7c9451461052a57806369e22ca91461055457806370b7e65e1461058f5780637b0472f0146105a45780637f51bb1f146105d457610246565b806359701ec51461043c5780635a80258414610477578063617ccf0b146104b957806361d027b3146104ce5780636408d20a146104e357610246565b8063376582f71161020e578063376582f71461033e5780633b4ac10b1461037c5780633f410d00146103a6578063494ac14c146103d057806354a02f9e146103e557610246565b8063081e3eda146102485780630ef7a93a1461026f578063202bbc41146102a057806323472bf0146102db57806325f11e8214610305575b005b34801561025457600080fd5b5061025d6109fa565b60408051918252519081900360200190f35b34801561027b57600080fd5b50610284610a00565b604080516001600160a01b039092168252519081900360200190f35b3480156102ac57600080fd5b50610246600480360360408110156102c357600080fd5b506001600160a01b0381351690602001351515610a0f565b3480156102e757600080fd5b50610246600480360360208110156102fe57600080fd5b5035610abe565b34801561031157600080fd5b506102466004803603604081101561032857600080fd5b506001600160a01b038135169060200135610cc8565b34801561034a57600080fd5b506102466004803603608081101561036157600080fd5b50803590602081013590604081013590606001351515610d2f565b34801561038857600080fd5b506102466004803603602081101561039f57600080fd5b5035610e03565b3480156103b257600080fd5b5061025d600480360360208110156103c957600080fd5b5035610fd7565b3480156103dc57600080fd5b5061025d611072565b3480156103f157600080fd5b5061041e6004803603604081101561040857600080fd5b506001600160a01b038135169060200135611078565b60408051938452602084019290925282820152519081900360600190f35b34801561044857600080fd5b506102466004803603604081101561045f57600080fd5b506001600160a01b03813581169160200135166110a0565b34801561048357600080fd5b50610246600480360360a081101561049a57600080fd5b5080359060208101359060408101359060608101359060800135611163565b3480156104c557600080fd5b5061025d61128b565b3480156104da57600080fd5b50610284611291565b3480156104ef57600080fd5b506105166004803603602081101561050657600080fd5b50356001600160a01b03166112a0565b604080519115158252519081900360200190f35b34801561053657600080fd5b506102466004803603602081101561054d57600080fd5b50356112b5565b34801561056057600080fd5b506102466004803603604081101561057757600080fd5b506001600160a01b0381351690602001351515611316565b34801561059b57600080fd5b5061025d6113c5565b3480156105b057600080fd5b50610246600480360360408110156105c757600080fd5b5080359060200135611422565b3480156105e057600080fd5b50610246600480360360208110156105f757600080fd5b50356001600160a01b0316611650565b34801561061357600080fd5b506102466004803603602081101561062a57600080fd5b50356001600160a01b03166116f6565b34801561064657600080fd5b5061025d6117a2565b34801561065b57600080fd5b506102846117a8565b34801561067057600080fd5b506102466004803603602081101561068757600080fd5b50356001600160a01b03166117b7565b3480156106a357600080fd5b5061025d611863565b3480156106b857600080fd5b50610246600480360360408110156106cf57600080fd5b50803590602001351515611a31565b3480156106ea57600080fd5b506107086004803603602081101561070157600080fd5b5035611ae7565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561073f57600080fd5b5061075d6004803603602081101561075657600080fd5b5035611b8c565b604080516001600160a01b03909d168d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501521515610140840152151561016083015251908190036101800190f35b3480156107d657600080fd5b50610246600480360360608110156107ed57600080fd5b506001600160a01b038135169060208101359060400135611bfb565b34801561081557600080fd5b50610284611db1565b34801561082a57600080fd5b5061025d611dc0565b34801561083f57600080fd5b506105166004803603602081101561085657600080fd5b50356001600160a01b0316611dc6565b34801561087257600080fd5b506102466004803603604081101561088957600080fd5b5080359060200135611ddb565b3480156108a257600080fd5b5061025d600480360360408110156108b957600080fd5b5080359060200135612093565b3480156108d257600080fd5b506108f9600480360360208110156108e957600080fd5b50356001600160a01b0316612207565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561093557818101518382015260200161091d565b505050509050019250505060405180910390f35b34801561095557600080fd5b50610284612273565b34801561096a57600080fd5b50610284612282565b34801561097f57600080fd5b5061025d612291565b34801561099457600080fd5b50610246600480360360208110156109ab57600080fd5b5035612297565b3480156109be57600080fd5b50610246600480360360208110156109d557600080fd5b50356001600160a01b03166124a5565b3480156109f157600080fd5b5061028461255a565b600c5481565b6009546001600160a01b031681565b6005546001600160a01b03163314610a5a576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015280517f7ebd2f3c8f6a6b9fb2e22ab293fa70e3399dc94c9fa71acfd3d2ec9899ecf1ed9281900390910190a15050565b3360009081526004602052604090205460ff16610b10576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6000610b3c827fb1e380c01db319c0153ea3bb4fbd0ab6639cc088e3bf8cd5319b128f33a2f9e8612093565b905060008111610b88576040805162461bcd60e51b81526020600482015260126024820152715452414e534645525f4445565f454d50545960701b604482015290519081900360640190fd5b6007546001600160a01b0316610bd9576040805162461bcd60e51b8152602060048201526011602482015270454d50545920444556204144445245535360781b604482015290519081900360640190fd5b600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b5050600654600754610c6193506001600160a01b0391821692501683612569565b600082815260208181526040918290204360029091015560075482518581526001600160a01b039091169181019190915280820183905290517f422da8464943a7cc5db4a515a35fbc4f536b2ee043055306c91a65dcd5f1733a9181900360600190a15050565b6005546001600160a01b03163314610d13576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b600554610d2b9083906001600160a01b031683612569565b5050565b3360009081526004602052604090205460ff16610d81576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b610d8a846126bd565b600084815260208181526040918290206001810186905560088101859055600a01805484151560ff1990911681179091558251878152918201869052818301859052606082015290517f47f18596722a27a7961a013d8c7af82482bb7051c3492fd45b4901d8964f75619181900360800190a150505050565b3360009081526003602052604090205460ff16610e5e576040805162461bcd60e51b81526020600482015260146024820152732727902222a320a926902822a926a4a9a9a4a7a760611b604482015290519081900360640190fd5b6000610e8a827f080909c18c958ce5a2d36481697824e477319323d03154ceba3b78f28a61887b612093565b6009549091506001600160a01b0316610ee2576040805162461bcd60e51b8152602060048201526015602482015274454d5054592044465354414b45204144445245535360581b604482015290519081900360640190fd5b8015610d2b57600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b5050600654600954610f7093506001600160a01b0391821692501683612569565b600082815260208181526040918290204360049091015560095482518581526001600160a01b039091169181019190915280820183905290517f33dd7763d76540919835c5df5e1e89e9891ff7ec5c51af0f94a3f2143269f8789181900360600190a15050565b600081815260208190526040812060060154610ff55750600061106d565b60008281526020819052604081206001810154600882015460068301546007909301549193909291611028904390612708565b600d54670de0b6b3a764000090910291506000906110579060126110508582828b8b8361275d565b919061275d565b905061106581846012612840565b955050505050505b919050565b600f5481565b6002602081815260009384526040808520909152918352912080546001820154919092015483565b3360009081526004602052604090205460ff166110f2576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600980546001600160a01b038085166001600160a01b03199283161792839055600a8054858316931692909217918290556040805193821684529116602083015280517f2c7c09ee51fb50eb21730f9e9dbfdf5d63f4be4ba69744e58f4c7d0d645714179281900390910190a15050565b3360009081526004602052604090205460ff166111b5576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6111cd816111c7848187818b8b612968565b90612968565b670de0b6b3a76400001461121d576040805162461bcd60e51b815260206004820152601260248201527134b73b30b634b21030b63637b1b0ba34b7b760711b604482015290519081900360640190fd5b600d859055600e849055600f839055601082905560118190556040805186815260208101869052808201859052606081018490526080810183905290517f420e39e9c2051269e178abf9f51a95f233bd4b2e85ef0ecd821865962a30a9429181900360a00190a15050505050565b600d5481565b600b546001600160a01b031681565b60046020526000908152604090205460ff1681565b6005546001600160a01b03163314611300576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6005546001600160a01b0316610d2b81836129b7565b6005546001600160a01b03163314611361576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915582519384529083015280517f309657c1babf43f318005b1edc59822e4c5713c3a9cf6bac9f85b07b360330cd9281900390910190a15050565b600080805b600c546113d8906001612708565b811161141c5761141261140b827ff45223fc822e0a02a042bb2eec36a76af2a028cc55539c3a40ab438d1089e1c0612093565b8390612968565b91506001016113ca565b50905090565b6000828152602081905260409020546001600160a01b0316611482576040805162461bcd60e51b815260206004820152601460248201527314d51052d157d413d3d317d393d517d1561254d560621b604482015290519081900360640190fd5b6000828152602081905260409020600a015460ff16156114dd576040805162461bcd60e51b815260206004820152601160248201527014d51052d157d413d3d317d313d0d2d151607a1b604482015290519081900360640190fd5b6000828152602081905260409020600a0154610100900460ff161561153f576040805162461bcd60e51b815260206004820152601360248201527214d51052d157d413d3d317d192539254d21151606a1b604482015290519081900360640190fd5b61154a826000611ddb565b60008281526020819052604090205461156e906001600160a01b0316333084612aaf565b60008281526020819052604090206006015461158a9082612968565b6000838152602081815260408083206006019390935533825260028152828220858352905220546115bb9082612968565b3360009081526002602081815260408084208785528252808420858155439301929092558290529020600901546115f391601261275d565b33600090815260026020908152604080832086845282529182902060010192909255805184815291820183905280517fc9ec05ea5037818736839e1365dc3d9a74a735c447af0697da66633b7a9d0fab9281900390910190a15050565b3360009081526004602052604090205460ff166116a2576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600b80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f54d231bb9d500b1923e4a1cb25e600f366a8368873d9af7c1c623814df19fc9181900360200190a150565b3360009081526004602052604090205460ff16611748576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f248a95ce438e13bf40987ec979f51269df3158547f00367969fde66034d7f6a0916020908290030190a150565b60115481565b6005546001600160a01b031681565b3360009081526004602052604090205460ff16611809576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f6b4941cf5d9e7b01c4e5c59a0cb86fae661180bdc0350a3df861cd15c796a2c5916020908290030190a150565b3360009081526003602052604081205460ff166118be576040805162461bcd60e51b81526020600482015260146024820152732727902222a320a926902822a926a4a9a9a4a7a760611b604482015290519081900360640190fd5b600a546001600160a01b031661191b576040805162461bcd60e51b815260206004820152601760248201527f454d5054592044464a41434b504f542041444452455353000000000000000000604482015290519081900360640190fd5b60006119256113c5565b905080156119fd57600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b5050600654600a546119b593506001600160a01b0391821692501683612569565b600a54604080516001600160a01b0390921682526020820183905280517fca0cf3424eaa5a1cbd74510cbf54bee9d0c263e572cad7cc0f775920c9d4a5d59281900390910190a15b60005b600c54611a0e906001612708565b811161141c57600081815260208190526040902043600590910155600101611a00565b3360009081526004602052604090205460ff16611a83576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b60008281526020818152604091829020600a01805461ff0019166101008515159081029190911790915582518581529182015281517fcd5c5d18479e24e3c787bcc4bc1ee478f42a441321c1def3449e3149bf4d0695929181900390910190a15050565b600080600080600080611af987610fd7565b600088815260208190526040902060090154909150611b19908290612968565b3360009081526002602090815260408083208b84529091528120600181015490549293509091611b579190611b51908590601261275d565b90612708565b3360009081526002602090815260408083209b83529a9052989098208054600190910154439a93985090965094509092505050565b600060208190529081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a01546001600160a01b0390991699979896979596949593949293919290919060ff808216916101009004168c565b3360009081526004602052604090205460ff16611c4d576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6001600160a01b038316611ca8576040805162461bcd60e51b815260206004820152601960248201527f4352454154455f504f4f4c5f454d5054595f4144445245535300000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b03861681526020810185905280820192909252517f77db383b85b26e0329a36642c94759c45a544a3b07ecdcb8a78b1407a8db23fb9181900360600190a1600c805460009081526020818152604080832080546001600160a01b0319166001600160a01b0389169081179091558454845281842060019081018890558554855282852060080187905585548552828520436007909101819055865486528386206002018190558654865283862060030181905586548652838620600401819055865486528386206005015590845280835290832084548154808401835591855292909320909201559054611da991612968565b600c55505050565b6008546001600160a01b031681565b600e5481565b60036020526000908152604090205460ff1681565b6000828152602081905260409020546001600160a01b0316611e3b576040805162461bcd60e51b815260206004820152601460248201527310d310525357d413d3d317d393d517d1561254d560621b604482015290519081900360640190fd5b6000828152602081905260409020600a015460ff1615611e96576040805162461bcd60e51b815260206004820152601160248201527010d310525357d413d3d317d313d0d2d151607a1b604482015290519081900360640190fd5b611e9f826126bd565b6000611eaa83612c0c565b90508015611f5557600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b158015611f0557600080fd5b505af1158015611f19573d6000803e3d6000fd5b5050600654611f3592506001600160a01b031690503383612569565b336000908152600260208181526040808420878552909152909120439101555b8115611fe657600083815260208190526040902054611f7e906001600160a01b03163384612569565b336000908152600260209081526040808320868452909152902054611fa39083612708565b3360009081526002602090815260408083208784528252808320939093558190522060060154611fd39083612708565b6000848152602081905260409020600601555b6000811180611ff55750600082115b1561203b57604080518481526020810184905280820183905290517fe630ca519fedafd2bd9bd35ad65e198e08398f47c88ca063c406740992bcd1a49181900360600190a15b336000908152600260209081526040808320868452825280832054918390529091206009015461206c91601261275d565b33600090815260026020908152604080832096835295905293909320600101929092555050565b600080807fb1e380c01db319c0153ea3bb4fbd0ab6639cc088e3bf8cd5319b128f33a2f9e88414156120db575050600083815260208190526040902060020154600e546121ae565b7f3a98da9f150131de466fba46b533a35c45bbffeed9f6c5943009e2888091b67c84141561211f575050600083815260208190526040902060030154600f546121ae565b7f080909c18c958ce5a2d36481697824e477319323d03154ceba3b78f28a61887b8414156121635750506000838152602081905260409020600401546010546121ae565b7ff45223fc822e0a02a042bb2eec36a76af2a028cc55539c3a40ab438d1089e1c08414156121a75750506000838152602081905260409020600501546011546121ae565b5060009050805b60006121ba4384612708565b60008781526020819052604090206008810154600190910154670de0b6b3a764000090920292506121fb91849160129161105091908390839088908361275d565b93505050505b92915050565b6001600160a01b03811660009081526001602090815260409182902080548351818402810184019094528084526060939283018282801561226757602002820191906000526020600020905b815481526020019060010190808311612253575b50505050509050919050565b600a546001600160a01b031681565b6007546001600160a01b031681565b60105481565b3360009081526004602052604090205460ff166122e9576040805162461bcd60e51b81526020600482015260146024820152600080516020612d08833981519152604482015290519081900360640190fd5b6000612315827f3a98da9f150131de466fba46b533a35c45bbffeed9f6c5943009e2888091b67c612093565b905060008111612361576040805162461bcd60e51b81526020600482015260126024820152715452414e534645525f4c4f545f454d50545960701b604482015290519081900360640190fd5b6008546001600160a01b03166123b6576040805162461bcd60e51b8152602060048201526015602482015274454d505459204c4f5454455259204144445245535360581b604482015290519081900360640190fd5b600b54604080516355432fb760e01b81523060048201526024810184905290516001600160a01b03909216916355432fb79160448082019260009290919082900301818387803b15801561240957600080fd5b505af115801561241d573d6000803e3d6000fd5b505060065460085461243e93506001600160a01b0391821692501683612569565b600082815260208181526040918290204360039091015560085482518581526001600160a01b039091169181019190915280820183905290517f9b8d5730922bfb86721e679a872a7107684e4c847c2d640f423871318721daac9181900360600190a15050565b6005546001600160a01b031633146124f0576040805162461bcd60e51b81526020600482015260096024820152682727aa1027aba722a960b91b604482015290519081900360640190fd5b600554604080516001600160a01b039283168152918316602083015280517f1655804481e1842dc7a9487a44ff6373f0e8a83b9077a64c639d724d5ef038ff9281900390910190a1600580546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031681565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106125e65780518252601f1990920191602091820191016125c7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612648576040519150601f19603f3d011682016040523d82523d6000602084013e61264d565b606091505b509150915081801561267b57508051158061267b575080806020019051602081101561267857600080fd5b50515b6126b65760405162461bcd60e51b815260040180806020018281038252602d815260200180612cdb602d913960400191505060405180910390fd5b5050505050565b60006126c882610fd7565b6000838152602081905260409020600901549091506126e79082612968565b60009283526020839052604090922060098101929092555043600790910155565b600082821115612757576040805162461bcd60e51b815260206004820152601560248201527429b0b332a6b0ba341d27ab22a9232627abafa9aaa160591b604482015290519081900360640190fd5b50900390565b6000600a82900a84840285158061277c57508486828161277957fe5b04145b6127cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206d756c7469706c65206f766572666c6f770000000000604482015290519081900360640190fd5b60028204810181811015612828576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206d756c7469706c65206f766572666c6f770000000000604482015290519081900360640190fd5b600083828161283357fe5b0498975050505050505050565b600082612894576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600a82900a8481028515806128b15750818682816128ae57fe5b04145b612902576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206469766973696f6e20696e7465726e616c0000000000604482015290519081900360640190fd5b6002850481018181101561295d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206469766973696f6e20696e7465726e616c0000000000604482015290519081900360640190fd5b600086828161283357fe5b81810182811015612201576040805162461bcd60e51b815260206004820152601460248201527314d8599953585d1a0e9253959053125117d0511160621b604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a035780518252601f1990920191602091820191016129e4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a65576040519150601f19603f3d011682016040523d82523d6000602084013e612a6a565b606091505b5050905080612aaa5760405162461bcd60e51b8152600401808060200182810382526034815260200180612ca76034913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310612b345780518252601f199092019160209182019101612b15565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b96576040519150601f19603f3d011682016040523d82523d6000602084013e612b9b565b606091505b5091509150818015612bc9575080511580612bc95750808060200190516020811015612bc657600080fd5b50515b612c045760405162461bcd60e51b8152600401808060200182810382526031815260200180612c766031913960400191505060405180910390fd5b505050505050565b600081815260208190526040812060060154612c2a5750600061106d565b336000908152600260209081526040808320858452825280832080546001909101549284905290832060090154909290612c6c908390611b519086601261275d565b9594505050505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644e4f20414343455353205045524d495353494f4e000000000000000000000000a264697066735822122009f214f8a36b86e890319c450c8a74264a7ec967eeb8dc67111e6c7abcf3328964736f6c634300060c0033

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

000000000000000000000000da86006036540822e0cd2861dbd2fd7ff9caa0e8000000000000000000000000638187c88f341488e9edff83750ad3a34c7ca6360000000000000000000000006ca45993fd7271bc44030bafc4ff1a575a03e4f2

-----Decoded View---------------
Arg [0] : _tube (address): 0xdA86006036540822e0cd2861dBd2fD7FF9CAA0e8
Arg [1] : _devaddr (address): 0x638187c88F341488E9EdfF83750AD3a34C7ca636
Arg [2] : _lotaddr (address): 0x6Ca45993fD7271bc44030baFc4Ff1A575a03e4f2

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000da86006036540822e0cd2861dbd2fd7ff9caa0e8
Arg [1] : 000000000000000000000000638187c88f341488e9edff83750ad3a34c7ca636
Arg [2] : 0000000000000000000000006ca45993fd7271bc44030bafc4ff1a575a03e4f2


Deployed Bytecode Sourcemap

88:16942:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2019:26;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2019:26:2;;;;;;;;;;;;;;7932:191;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7932:191:2;;;;;;;;;;:::i;11756:482::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11756:482:2;;:::i;11062:144::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11062:144:2;;;;;;;;:::i;5420:396::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5420:396:2;;;;;;;;;;;;;;;;;;;:::i;12854:524::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12854:524:2;;:::i;10340:641::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10340:641:2;;:::i;2400:42::-;;;;;;;;;;;;;:::i;1519:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1519:62:2;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;6583:253;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6583:253:2;;;;;;;;;;:::i;7139:474::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7139:474:2;;;;;;;;;;;;;;;;;;;;;;:::i;2302:42::-;;;;;;;;;;;;;:::i;2135:23::-;;;;;;;;;;;;;:::i;1738:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1738:49:2;-1:-1:-1;;;;;1738:49:2;;:::i;:::-;;;;;;;;;;;;;;;;;;11285:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11285:188:2;;:::i;7677:191::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7677:191:2;;;;;;;;;;:::i;15239:255::-;;;;;;;;;;;;;:::i;8167:836::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8167:836:2;;;;;;;:::i;6919:147::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6919:147:2;-1:-1:-1;;;;;6919:147:2;;:::i;6373:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6373:143:2;-1:-1:-1;;;;;6373:143:2;;:::i;2497:42::-;;;;;;;;;;;;;:::i;1796:20::-;;;;;;;;;;;;;:::i;6168:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6168:143:2;-1:-1:-1;;;;;6168:143:2;;:::i;13437:628::-;;;;;;;;;;;;;:::i;5916:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5916:186:2;;;;;;;;;:::i;15767:520::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15767:520:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1254:38;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:38:2;;:::i;:::-;;;;-1:-1:-1;;;;;1254:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4479:869;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4479:869:2;;;;;;;;;;;;;:::i;1965:22::-;;;;;;;;;;;;;:::i;2351:42::-;;;;;;;;;;;;;:::i;1635:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1635:49:2;-1:-1:-1;;;;;1635:49:2;;:::i;9065:1213::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9065:1213:2;;;;;;;:::i;14110:1074::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14110:1074:2;;;;;;;:::i;15548:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15548:139:2;-1:-1:-1;;;;;15548:139:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:28;;;;;;;;;;;;;:::i;1907:22::-;;;;;;;;;;;;;:::i;2449:41::-;;;;;;;;;;;;;:::i;12297:498::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12297:498:2;;:::i;11547:146::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11547:146:2;-1:-1:-1;;;;;11547:146:2;;:::i;1854:19::-;;;;;;;;;;;;;:::i;2219:22::-;;;;:::o;2019:26::-;;;-1:-1:-1;;;;;2019:26:2;;:::o;7932:191::-;3742:5;;-1:-1:-1;;;;;3742:5:2;3728:10;:19;3720:41;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;8023:27:2;::::1;;::::0;;;:17:::1;:27;::::0;;;;;;;;:36;;-1:-1:-1;;8023:36:2::1;::::0;::::1;;::::0;;::::1;::::0;;;8075:40;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;7932:191:::0;;:::o;11756:482::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;11828:13:::1;11844:39;11858:6;11866:16;11844:13;:39::i;:::-;11828:55;;11913:1;11902:8;:12;11894:43;;;::::0;;-1:-1:-1;;;11894:43:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11894:43:2;;;;;;;;;;;;;::::1;;11956:7;::::0;-1:-1:-1;;;;;11956:7:2::1;11948:51;;;::::0;;-1:-1:-1;;;11948:51:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11948:51:2;;;;;;;;;;;;;::::1;;12016:8;::::0;12010:49:::1;::::0;;-1:-1:-1;;;12010:49:2;;12043:4:::1;12010:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;12016:8:2;;::::1;::::0;12010:24:::1;::::0;:49;;;;;12016:8:::1;::::0;12010:49;;;;;;;;12016:8;;12010:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12098:4:2::1;::::0;12104:7:::1;::::0;12070:52:::1;::::0;-1:-1:-1;;;;;;12098:4:2;;::::1;::::0;-1:-1:-1;12104:7:2::1;12113:8:::0;12070:27:::1;:52::i;:::-;12133:5;:13:::0;;;::::1;::::0;;;;;;;;12164:12:::1;12133:28;::::0;;::::1;:43:::0;12212:7:::1;::::0;12192:38;;;;;-1:-1:-1;;;;;12212:7:2;;::::1;12192:38:::0;;::::1;::::0;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;4040:1;11756:482:::0;:::o;11062:144::-;3742:5;;-1:-1:-1;;;;;3742:5:2;3728:10;:19;3720:41;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;;;;11184:5:::1;::::0;11149:49:::1;::::0;11177:5;;-1:-1:-1;;;;;11184:5:2::1;11191:6:::0;11149:27:::1;:49::i;:::-;11062:144:::0;;:::o;5420:396::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;5545:31:::1;5569:6;5545:23;:31::i;:::-;5587:5;:13:::0;;;::::1;::::0;;;;;;;;:28:::1;::::0;::::1;:46:::0;;;5644:24:::1;::::0;::::1;:42:::0;;;5697:20:::1;;:38:::0;;;::::1;;-1:-1:-1::0;;5697:38:2;;::::1;::::0;::::1;::::0;;;5751:57;;;;;;;::::1;::::0;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;5420:396:::0;;;;:::o;12854:524::-;3861:10;3843:29;;;;:17;:29;;;;;;;;3835:62;;;;;-1:-1:-1;;;3835:62:2;;;;;;;;;;;;-1:-1:-1;;;3835:62:2;;;;;;;;;;;;;;;12930:13:::1;12946:43;12960:6;12968:20;12946:13;:43::i;:::-;13008:11;::::0;12930:59;;-1:-1:-1;;;;;;13008:11:2::1;13000:59;;;::::0;;-1:-1:-1;;;13000:59:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13000:59:2;;;;;;;;;;;;;::::1;;13084:12:::0;;13080:291:::1;;13119:8;::::0;13113:49:::1;::::0;;-1:-1:-1;;;13113:49:2;;13146:4:::1;13113:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;13119:8:2;;::::1;::::0;13113:24:::1;::::0;:49;;;;;13119:8:::1;::::0;13113:49;;;;;;;;13119:8;;13113:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13205:4:2::1;::::0;13211:11:::1;::::0;13177:56:::1;::::0;-1:-1:-1;;;;;;13205:4:2;;::::1;::::0;-1:-1:-1;13211:11:2::1;13224:8:::0;13177:27:::1;:56::i;:::-;13248:5;:13:::0;;;::::1;::::0;;;;;;;;13281:12:::1;13248:30;::::0;;::::1;:45:::0;13337:11:::1;::::0;13313:46;;;;;-1:-1:-1;;;;;13337:11:2;;::::1;13313:46:::0;;::::1;::::0;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;3908:1;12854:524:::0;:::o;10340:641::-;10399:4;10420:13;;;;;;;;;;:25;;;10416:71;;-1:-1:-1;10474:1:2;10467:8;;10416:71;10499:17;10519:13;;;;;;;;;;:28;;;;10578:24;;;;10633:25;;;;10706:28;;;;;10519;;10578:24;;10633:25;10689:46;;:12;;:16;:46::i;:::-;10904:6;;10776:11;10766:21;;;;-1:-1:-1;10820:11:2;;10840:80;;2576:2;10840:59;10766:21;2576:2;10840:59;:12;10857:10;2576:2;10840:16;:37::i;:::-;:41;:59;:41;:59::i;:80::-;10820:100;-1:-1:-1;10940:33:2;10820:100;10951:12;2576:2;10940:10;:33::i;:::-;10933:40;;;;;;;10340:641;;;;:::o;2400:42::-;;;;:::o;1519:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6583:253::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;6696:11:::1;:28:::0;;-1:-1:-1;;;;;6696:28:2;;::::1;-1:-1:-1::0;;;;;;6696:28:2;;::::1;;::::0;;;;6735:13:::1;:30:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;6781:47:::1;::::0;;6801:11;;::::1;6781:47:::0;;6814:13;::::1;6781:47;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;6583:253:::0;;:::o;7139:474::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;7279:57:::1;7325:10:::0;7279:41:::1;7311:8:::0;7279:41;7301:4;7279:41;:7;7291:4;7279:11:::1;:17::i;:::-;:21:::0;::::1;:27::i;:57::-;7340:19;7279:80;7271:111;;;::::0;;-1:-1:-1;;;7271:111:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7271:111:2;;;;;;;;;;;;;::::1;;7393:6;:19:::0;;;7423:3:::1;:16:::0;;;7450:7:::1;:16:::0;;;7477:7:::1;:20:::0;;;7508:9:::1;:22:::0;;;7546:59:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;7139:474:::0;;;;;:::o;2302:42::-;;;;:::o;2135:23::-;;;-1:-1:-1;;;;;2135:23:2;;:::o;1738:49::-;;;;;;;;;;;;;;;:::o;11285:188::-;3742:5;;-1:-1:-1;;;;;3742:5:2;3728:10;:19;3720:41;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;;;;11395:5:::1;::::0;-1:-1:-1;;;;;11395:5:2::1;11412:53;11395:5:::0;11458:6;11412:30:::1;:53::i;7677:191::-:0;3742:5;;-1:-1:-1;;;;;3742:5:2;3728:10;:19;3720:41;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;7768:27:2;::::1;;::::0;;;:17:::1;:27;::::0;;;;;;;;:36;;-1:-1:-1;;7768:36:2::1;::::0;::::1;;::::0;;::::1;::::0;;;7820:40;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;7677:191:::0;;:::o;15239:255::-;15288:4;;;15331:132;15353:10;;:17;;15368:1;15353:14;:17::i;:::-;15348:1;:22;15331:132;;15401:50;15412:38;15426:1;15429:20;15412:13;:38::i;:::-;15401:6;;:10;:50::i;:::-;15392:59;-1:-1:-1;15372:3:2;;15331:132;;;-1:-1:-1;15480:6:2;-1:-1:-1;15239:255:2;:::o;8167:836::-;8274:1;8234:13;;;;;;;;;;:28;-1:-1:-1;;;;;8234:28:2;8226:75;;;;;-1:-1:-1;;;8226:75:2;;;;;;;;;;;;-1:-1:-1;;;8226:75:2;;;;;;;;;;;;;;;8320:5;:13;;;;;;;;;;:20;;;;;:29;8312:59;;;;;-1:-1:-1;;;8312:59:2;;;;;;;;;;;;-1:-1:-1;;;8312:59:2;;;;;;;;;;;;;;;8390:5;:13;;;;;;;;;;:22;;;;;;;;:31;8382:63;;;;;-1:-1:-1;;;8382:63:2;;;;;;;;;;;;-1:-1:-1;;;8382:63:2;;;;;;;;;;;;;;;8458:16;8464:6;8472:1;8458:5;:16::i;:::-;8517:5;:13;;;;;;;;;;:28;8485:96;;-1:-1:-1;;;;;8517:28:2;8547:10;8567:4;8574:6;8485:31;:96::i;:::-;8620:5;:13;;;;;;;;;;:25;;;:37;;8650:6;8620:29;:37::i;:::-;8592:5;:13;;;;;;;;;;;:25;;:65;;;;8717:10;8711:17;;:5;:17;;;;;:25;;;;;;:34;:46;;8750:6;8711:38;:46::i;:::-;8674:10;8668:17;;;;:5;:17;;;;;;;;:25;;;;;;;;:89;;;8811:12;8768:40;;:55;;;;8877:13;;;;;:30;;;:79;;2576:2;8877:34;:79::i;:::-;8840:10;8834:17;;;;:5;:17;;;;;;;;:25;;;;;;;;;:36;;:122;;;;8974:21;;;;;;;;;;;;;;;;;;;;;;;8167:836;;:::o;6919:147::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;6999:8:::1;:19:::0;;-1:-1:-1;;;;;6999:19:2;::::1;-1:-1:-1::0;;;;;;6999:19:2;;::::1;::::0;::::1;::::0;;;7034:24:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;6919:147:::0;:::o;6373:143::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;6452:7:::1;:18:::0;;-1:-1:-1;;;;;;6452:18:2::1;-1:-1:-1::0;;;;;6452:18:2;;::::1;::::0;;;::::1;::::0;;;;6486:22:::1;::::0;;6500:7;;;::::1;6486:22:::0;;;::::1;::::0;::::1;::::0;;;;;;::::1;6373:143:::0;:::o;2497:42::-;;;;:::o;1796:20::-;;;-1:-1:-1;;;;;1796:20:2;;:::o;6168:143::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;6247:7:::1;:18:::0;;-1:-1:-1;;;;;;6247:18:2::1;-1:-1:-1::0;;;;;6247:18:2;;::::1;::::0;;;::::1;::::0;;;;6281:22:::1;::::0;;6295:7;;;::::1;6281:22:::0;;;::::1;::::0;::::1;::::0;;;;;;::::1;6168:143:::0;:::o;13437:628::-;3861:10;13506:4;3843:29;;;:17;:29;;;;;;;;3835:62;;;;;-1:-1:-1;;;3835:62:2;;;;;;;;;;;;-1:-1:-1;;;3835:62:2;;;;;;;;;;;;;;;13531:13:::1;::::0;-1:-1:-1;;;;;13531:13:2::1;13523:63;;;::::0;;-1:-1:-1;;;13523:63:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13607:13;13623:18;:16;:18::i;:::-;13607:34:::0;-1:-1:-1;13658:12:2;;13654:233:::1;;13693:8;::::0;13687:49:::1;::::0;;-1:-1:-1;;;13687:49:2;;13720:4:::1;13687:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;13693:8:2;;::::1;::::0;13687:24:::1;::::0;:49;;;;;13693:8:::1;::::0;13687:49;;;;;;;;13693:8;;13687:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13779:4:2::1;::::0;13785:13:::1;::::0;13751:58:::1;::::0;-1:-1:-1;;;;;;13779:4:2;;::::1;::::0;-1:-1:-1;13785:13:2::1;13800:8:::0;13751:27:::1;:58::i;:::-;13851:13;::::0;13829:46:::1;::::0;;-1:-1:-1;;;;;13851:13:2;;::::1;13829:46:::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;13654:233;13912:6;13907:115;13929:10;::::0;:17:::1;::::0;13944:1:::1;13929:14;:17::i;:::-;13924:1;:22;13907:115;;13968:5;:8:::0;;;::::1;::::0;;;;;;13998:12:::1;13968:27;::::0;;::::1;:42:::0;13948:3:::1;;13907:115;;5916:186:::0;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;6009:5:::1;:13:::0;;;::::1;::::0;;;;;;;;:22:::1;;:34:::0;;-1:-1:-1;;6009:34:2::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;6059:35;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;5916:186:::0;;:::o;15767:520::-;15824:4;15830;15836;15842;15848;15865:21;15889:23;15905:6;15889:15;:23::i;:::-;15968:5;:13;;;;;;;;;;:30;;;15865:47;;-1:-1:-1;15947:52:2;;15865:47;;15947:20;:52::i;:::-;16113:10;16020:14;16107:17;;;:5;:17;;;;;;;;:25;;;;;;;;:36;;;;16058:34;;15923:76;;-1:-1:-1;16020:14:2;;16037:107;;16107:36;16037:65;;15923:76;;2576:2;16037:20;:65::i;:::-;:69;;:107::i;:::-;16212:10;16206:17;;;;:5;:17;;;;;;;;:25;;;;;;;;;;:34;;16242:36;;;;;16163:12;;16188:16;;-1:-1:-1;16206:34:2;;-1:-1:-1;16242:36:2;-1:-1:-1;15767:520:2;;-1:-1:-1;;;15767:520:2:o;1254:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1254:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4479:869::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;4610:29:2;::::1;4602:67;;;::::0;;-1:-1:-1;;;4602:67:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4732:10;::::0;4687:56:::1;::::0;;-1:-1:-1;;;;;4687:56:2;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;4760:10;::::0;;4754:5:::1;:17:::0;;;::::1;::::0;;;;;;;:54;;-1:-1:-1;;;;;;4754:54:2::1;-1:-1:-1::0;;;;;4754:54:2;::::1;::::0;;::::1;::::0;;;4825:10;;4819:17;;;;;-1:-1:-1;4819:32:2;;::::1;:54:::0;;;4890:10;;4884:17;;;;;:28:::1;;:50:::0;;;4951:10;;4945:17;;;;;4984:12:::1;4945:32;::::0;;::::1;:51:::0;;;5013:10;;5007:17;;;;;:32:::1;;:51:::0;;;5075:10;;5069:17;;;;;:32:::1;;:51:::0;;;5137:10;;5131:17;;;;;-1:-1:-1;5131:34:2::1;:51:::0;;;5199:10;;5193:17;;;;;-1:-1:-1;5193:36:2::1;:51:::0;5255:27;;;;;;;;;5288:10;;5255:44;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;5323:10;;:17:::1;::::0;:14:::1;:17::i;:::-;5310:10;:30:::0;-1:-1:-1;;;4479:869:2:o;1965:22::-;;;-1:-1:-1;;;;;1965:22:2;;:::o;2351:42::-;;;;:::o;1635:49::-;;;;;;;;;;;;;;;:::o;9065:1213::-;9172:1;9132:13;;;;;;;;;;:28;-1:-1:-1;;;;;9132:28:2;9124:75;;;;;-1:-1:-1;;;9124:75:2;;;;;;;;;;;;-1:-1:-1;;;9124:75:2;;;;;;;;;;;;;;;9218:5;:13;;;;;;;;;;:20;;;;;:29;9210:59;;;;;-1:-1:-1;;;9210:59:2;;;;;;;;;;;;-1:-1:-1;;;9210:59:2;;;;;;;;;;;;;;;9290:31;9314:6;9290:23;:31::i;:::-;9334:14;9351:24;9368:6;9351:16;:24::i;:::-;9334:41;-1:-1:-1;9390:13:2;;9386:237;;9426:8;;9420:50;;;-1:-1:-1;;;9420:50:2;;9453:4;9420:50;;;;;;;;;;;;-1:-1:-1;;;;;9426:8:2;;;;9420:24;;:50;;;;;9426:8;;9420:50;;;;;;;;9426:8;;9420:50;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9513:4:2;;9485:56;;-1:-1:-1;;;;;;9513:4:2;;-1:-1:-1;9519:10:2;9531:9;9485:27;:56::i;:::-;9562:10;9556:17;;;;:5;:17;;;;;;;;:25;;;;;;;;;9599:12;9556:40;;:55;9386:237;9639:10;;9635:298;;9694:5;:13;;;;;;;;;;:28;9666:77;;-1:-1:-1;;;;;9694:28:2;9724:10;9736:6;9666:27;:77::i;:::-;9801:10;9795:17;;;;:5;:17;;;;;;;;:25;;;;;;;;:34;:46;;9834:6;9795:38;:46::i;:::-;9764:10;9758:17;;;;:5;:17;;;;;;;;:25;;;;;;;;:83;;;;9884:13;;;;:25;;;:37;;9914:6;9884:29;:37::i;:::-;9856:5;:13;;;;;;;;;;:25;;:65;9635:298;10004:1;9992:9;:13;:27;;;;10018:1;10009:6;:10;9992:27;9988:97;;;10041:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9988:97;10232:10;10226:17;;;;:5;:17;;;;;;;;:25;;;;;;;;:34;10191:13;;;;;;;:30;;;:79;;2576:2;10191:34;:79::i;:::-;10158:10;10152:17;;;;:5;:17;;;;;;;;:25;;;;;;;;;;:36;;:118;;;;-1:-1:-1;;9065:1213:2:o;14110:1074::-;14185:4;;;14284:16;14272:28;;14268:658;;;-1:-1:-1;;14330:5:2;:13;;;;;;;;;;:28;;;14386:3;;14268:658;;;14423:20;14411:8;:32;14407:519;;;-1:-1:-1;;14473:5:2;:13;;;;;;;;;;:28;;;14529:7;;14407:519;;;14570:20;14558:8;:32;14554:372;;;-1:-1:-1;;14620:5:2;:13;;;;;;;;;;:30;;;14678:7;;14554:372;;;14719:20;14707:8;:32;14703:223;;;-1:-1:-1;;14769:5:2;:13;;;;;;;;;;:32;;;14829:9;;14703:223;;;-1:-1:-1;14884:1:2;;-1:-1:-1;14884:1:2;14703:223;14946:15;14964:28;:12;14981:10;14964:16;:28::i;:::-;15123:5;:13;;;;;;;;;;:24;;;;15080:28;;;;;15034:11;15021:24;;;;-1:-1:-1;15065:111:2;;15162:4;;2576:2;;15065:92;;15123:24;2576:2;;15065:92;;15021:24;;2576:2;15065:14;:53::i;:111::-;15058:118;;;;;14110:1074;;;;;:::o;15548:139::-;-1:-1:-1;;;;;15652:27:2;;;;;;:10;:27;;;;;;;;;15645:34;;;;;;;;;;;;;;;;;15619:13;;15645:34;;;15652:27;15645:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15548:139;;;:::o;2077:28::-;;;-1:-1:-1;;;;;2077:28:2;;:::o;1907:22::-;;;-1:-1:-1;;;;;1907:22:2;;:::o;2449:41::-;;;;:::o;12297:498::-;3993:10;3975:29;;;;:17;:29;;;;;;;;3967:62;;;;;-1:-1:-1;;;3967:62:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3967:62:2;;;;;;;;;;;;;;;12373:13:::1;12389:43;12403:6;12411:20;12389:13;:43::i;:::-;12373:59;;12462:1;12451:8;:12;12443:43;;;::::0;;-1:-1:-1;;;12443:43:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12443:43:2;;;;;;;;;;;;;::::1;;12505:7;::::0;-1:-1:-1;;;;;12505:7:2::1;12497:55;;;::::0;;-1:-1:-1;;;12497:55:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12497:55:2;;;;;;;;;;;;;::::1;;12569:8;::::0;12563:49:::1;::::0;;-1:-1:-1;;;12563:49:2;;12596:4:::1;12563:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;12569:8:2;;::::1;::::0;12563:24:::1;::::0;:49;;;;;12569:8:::1;::::0;12563:49;;;;;;;;12569:8;;12563:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12651:4:2::1;::::0;12657:7:::1;::::0;12623:52:::1;::::0;-1:-1:-1;;;;;;12651:4:2;;::::1;::::0;-1:-1:-1;12657:7:2::1;12666:8:::0;12623:27:::1;:52::i;:::-;12686:5;:13:::0;;;::::1;::::0;;;;;;;;12717:12:::1;12686:28;::::0;;::::1;:43:::0;12769:7:::1;::::0;12745:42;;;;;-1:-1:-1;;;;;12769:7:2;;::::1;12745:42:::0;;::::1;::::0;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;4040:1;12297:498:::0;:::o;11547:146::-;3742:5;;-1:-1:-1;;;;;3742:5:2;3728:10;:19;3720:41;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;-1:-1:-1;;;3720:41:2;;;;;;;;;;;;;;;11640:5:::1;::::0;11624:33:::1;::::0;;-1:-1:-1;;;;;11640:5:2;;::::1;11624:33:::0;;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;11668:5;:17:::0;;-1:-1:-1;;;;;;11668:17:2::1;-1:-1:-1::0;;;;;11668:17:2;;;::::1;::::0;;;::::1;::::0;;11547:146::o;1854:19::-;;;-1:-1:-1;;;;;1854:19:2;;:::o;623:449:1:-;855:45;;;-1:-1:-1;;;;;855:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;855:45:1;-1:-1:-1;;;855:45:1;;;844:57;;;;809:12;;823:17;;844:10;;;;855:45;844:57;;;855:45;844:57;;855:45;844:57;;;;;;;;;;-1:-1:-1;;844:57:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;808:93;;;;934:7;:57;;;;-1:-1:-1;946:11:1;;:16;;:44;;;977:4;966:24;;;;;;;;;;;;;;;-1:-1:-1;966:24:1;946:44;912:152;;;;-1:-1:-1;;;912:152:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;623:449;;;;;:::o;16299:253:2:-;16365:11;16379:23;16395:6;16379:15;:23::i;:::-;16446:5;:13;;;;;;;;;;:30;;;16365:37;;-1:-1:-1;16446:42:2;;16365:37;16446:34;:42::i;:::-;16413:5;:13;;;;;;;;;;;:30;;;:75;;;;-1:-1:-1;16532:12:2;16499:28;;;;:45;16299:253::o;375:139:0:-;427:6;459:1;454;:6;;446:40;;;;;-1:-1:-1;;;446:40:0;;;;;;;;;;;;-1:-1:-1;;;446:40:0;;;;;;;;;;;;;;;-1:-1:-1;501:5:0;;;375:139::o;522:351::-;588:4;615:2;:11;;;647:5;;;671:6;;;:21;;;691:1;686;681:2;:6;;;;;;:11;671:21;663:61;;;;;-1:-1:-1;;;663:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;756:1;751:6;;745:13;;777:8;;;;769:48;;;;;-1:-1:-1;;;769:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;828:7;843:2;838;:7;;;;;;;522:351;-1:-1:-1;;;;;;;;522:351:0:o;881:416::-;953:7;981:6;973:45;;;;;-1:-1:-1;;;973:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:2;:11;;;1071:6;;;1096;;;:22;;;1116:2;1111:1;1106:2;:6;;;;;;:12;1096:22;1088:62;;;;;-1:-1:-1;;;1088:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1181:1;1177:5;;1171:12;;1202:8;;;;1194:48;;;;;-1:-1:-1;;;1194:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:7;1268:1;1263:2;:6;;;;229:138;304:5;;;328:6;;;;320:39;;;;;-1:-1:-1;;;320:39:0;;;;;;;;;;;;-1:-1:-1;;;320:39:0;;;;;;;;;;;;;;1586:217:1;1699:12;;;1659;1699;;;;;;;;;-1:-1:-1;;;;;1677:7:1;;;1692:5;;1677:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1677:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1658:54;;;1731:7;1723:72;;;;-1:-1:-1;;;1723:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:217;;;:::o;1080:498::-;1351:51;;;-1:-1:-1;;;;;1351:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1351:51:1;-1:-1:-1;;;1351:51:1;;;1340:63;;;;1305:12;;1319:17;;1340:10;;;;1351:51;1340:63;;;1351:51;1340:63;;1351:51;1340:63;;;;;;;;;;-1:-1:-1;;1340:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1304:99;;;;1436:7;:57;;;;-1:-1:-1;1448:11:1;;:16;;:44;;;1479:4;1468:24;;;;;;;;;;;;;;;-1:-1:-1;1468:24:1;1448:44;1414:156;;;;-1:-1:-1;;;1414:156:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1080:498;;;;;;:::o;16560:423:2:-;16622:4;16643:13;;;;;;;;;;:25;;;16639:73;;-1:-1:-1;16698:1:2;16690:10;;16639:73;16749:10;16724:16;16743:17;;;:5;:17;;;;;;;;:25;;;;;;;;:34;;16807:36;;;;;16873:13;;;;;;;:30;;;16743:34;;16724:16;16873:71;;16807:36;;16873:56;;16743:34;2576:2;16873:34;:56::i;:71::-;16854:90;16560:423;-1:-1:-1;;;;;16560:423:2:o

Swarm Source

ipfs://09f214f8a36b86e890319c450c8a74264a7ec967eeb8dc67111e6c7abcf33289

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.