ETH Price: $3,139.28 (+0.97%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212923612024-11-29 9:08:5961 days ago1732871339IN
0x8392D678...56BFE99a0
0 ETH0.000354027.60819524
Approve212849982024-11-28 8:26:5962 days ago1732782419IN
0x8392D678...56BFE99a0
0 ETH0.000440769.47229811
Approve212816162024-11-27 20:57:2363 days ago1732741043IN
0x8392D678...56BFE99a0
0 ETH0.0004696419.37793551
Multi Airdrop212815122024-11-27 20:36:3563 days ago1732739795IN
0x8392D678...56BFE99a0
0 ETH0.0009475124.22741594
Multi Airdrop212815102024-11-27 20:36:1163 days ago1732739771IN
0x8392D678...56BFE99a0
0 ETH0.0009373723.968298
Multi Airdrop212815072024-11-27 20:35:3563 days ago1732739735IN
0x8392D678...56BFE99a0
0 ETH0.0008004923.33200408
Multi Airdrop212815062024-11-27 20:35:2363 days ago1732739723IN
0x8392D678...56BFE99a0
0 ETH0.0007459721.74297005
Multi Airdrop212815032024-11-27 20:34:4763 days ago1732739687IN
0x8392D678...56BFE99a0
0 ETH0.001126221.9067556
Approve210191672024-10-22 5:55:3599 days ago1729576535IN
0x8392D678...56BFE99a0
0 ETH0.000286546.20126972
Approve210168142024-10-21 22:02:35100 days ago1729548155IN
0x8392D678...56BFE99a0
0 ETH0.000366327.88264303
Multi Airdrop210159592024-10-21 19:10:35100 days ago1729537835IN
0x8392D678...56BFE99a0
0 ETH0.0003437410.01918442
Multi Airdrop210159492024-10-21 19:08:35100 days ago1729537715IN
0x8392D678...56BFE99a0
0 ETH0.0003834611.1768004
Multi Airdrop210159422024-10-21 19:07:11100 days ago1729537631IN
0x8392D678...56BFE99a0
0 ETH0.0003509510.22928698
Multi Airdrop210159312024-10-21 19:04:59100 days ago1729537499IN
0x8392D678...56BFE99a0
0 ETH0.000504959.82227229
Approve209389592024-10-11 1:00:23111 days ago1728608423IN
0x8392D678...56BFE99a0
0 ETH0.0004734410.17471582
Multi Airdrop208888812024-10-04 1:31:23118 days ago1728005483IN
0x8392D678...56BFE99a0
0 ETH0.000198835.79752367
Multi Airdrop208888802024-10-04 1:31:11118 days ago1728005471IN
0x8392D678...56BFE99a0
0 ETH0.000195685.70569105
Multi Airdrop208888792024-10-04 1:30:59118 days ago1728005459IN
0x8392D678...56BFE99a0
0 ETH0.000203745.94055608
Multi Airdrop208888762024-10-04 1:30:23118 days ago1728005423IN
0x8392D678...56BFE99a0
0 ETH0.000198965.7990794
Multi Airdrop208888742024-10-04 1:29:59118 days ago1728005399IN
0x8392D678...56BFE99a0
0 ETH0.000202135.89170629
Multi Airdrop208888712024-10-04 1:29:23118 days ago1728005363IN
0x8392D678...56BFE99a0
0 ETH0.00020255.90237164
Multi Airdrop208888682024-10-04 1:28:47118 days ago1728005327IN
0x8392D678...56BFE99a0
0 ETH0.000173035.04339436
Multi Airdrop208888642024-10-04 1:27:59118 days ago1728005279IN
0x8392D678...56BFE99a0
0 ETH0.000223525.71536601
Multi Airdrop208888622024-10-04 1:27:35118 days ago1728005255IN
0x8392D678...56BFE99a0
0 ETH0.000233595.9730436
Multi Airdrop208888612024-10-04 1:27:23118 days ago1728005243IN
0x8392D678...56BFE99a0
0 ETH0.00022665.79410244
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
202167092024-07-02 5:20:59211 days ago1719897659
0x8392D678...56BFE99a0
0.47077233 ETH
202158922024-07-02 2:36:35211 days ago1719887795
0x8392D678...56BFE99a0
0.02753781 ETH
202158922024-07-02 2:36:35211 days ago1719887795
0x8392D678...56BFE99a0
0.08261344 ETH
202158922024-07-02 2:36:35211 days ago1719887795
0x8392D678...56BFE99a0
0.13768907 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.02492304 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.07476912 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.1246152 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.01368547 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.04105641 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.06842736 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.01516637 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.04549912 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.07583186 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.01690154 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.05070464 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.08450773 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.01895276 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.05685828 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.0947638 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.02140175 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.06420525 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.10700875 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.02435851 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.07307553 ETH
202158772024-07-02 2:33:23211 days ago1719887603
0x8392D678...56BFE99a0
0.12179255 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHIKOKUKEN

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-02
*/

// https://shikokukeneth.vip
// https://t.me/ShikokuKenETH
// https://twitter.com/shikokukenETH




// SPDX-License-Identifier: UNLICENSED


pragma solidity 0.8.26;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}



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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}


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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract SHIKOKUKEN is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Shikoku Ken";
    string constant _symbol = "SHIKEN";
    uint8 constant _decimals = 4; 


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event setFeeExempt(address Wallet, bool Exempt);
    event setTXExempt(address Wallet, bool Exempt);
    event clearERC(uint256 amount);
    event removeToken(address TokenAddressCleared, uint256 Amount);
    event set_Wallets(address marketingFeeReceiver, address utilityFeeReceiver,address stakingfeeReceiver,address projectFeeReceiver);
    event set_MaxHolding(uint256 maxWallet);
    event set_TXLimit(uint256 maxTX);
    event set_ContractSells(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =  1000000000 * 10**_decimals; 

    uint256 public _maxTxAmount = _totalSupply.mul(15).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(15).div(1000);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isfeeexempt;
    mapping (address => bool) istxLimitExempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 3;
    uint256 private projectFee      = 0;
    uint256 private utilityFee      = 1; 
    uint256 private stakingfee      = 0;
    uint256 public totalFee         = utilityFee + marketingFee + liquidityFee + projectFee + stakingfee;
    uint256 private feeDenominator  = 100;

    uint256 sellmultiplier = 100;
    uint256 buymultiplier = 100;
    uint256 wallettowalletmultiplier = 100; 

    address private uniLPReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private utilityFeeReceiver;
    address private stakingfeeReceiver;

    uint256 setproportion = 30;
    uint256 setproportionDenominator = 100;
    
    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

   
    bool public contractSellEnabled = true;
    uint256 public contractsellthreshold = _totalSupply * 20 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isfeeexempt[msg.sender] = true;            
        istxLimitExempt[msg.sender] = true;
        istxLimitExempt[pair] = true;
        istxLimitExempt[marketingFeeReceiver] = true;
        istxLimitExempt[address(this)] = true;
        
        uniLPReceiver = msg.sender;
        marketingFeeReceiver = 0x5690Bdc79737824F22ef36868d967A05AF2Df8e6;
        projectFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender;
        stakingfeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function editMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxHolding(_maxWalletToken);
                
    }

      function removeLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
            
    }

    function setZeroTax () external onlyOwner {
            buymultiplier = 0;
            sellmultiplier = 0;
            wallettowalletmultiplier = 0;
            contractsellthreshold = _totalSupply * 1 / 100;
            
    }

      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != stakingfeeReceiver && recipient != marketingFeeReceiver && !istxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        checkTxLimit(sender, amount);  

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isfeeexempt[sender] || isfeeexempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || istxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isfeeexempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = wallettowalletmultiplier;
        if(recipient == pair) {
            percent = sellmultiplier;
        } else if(sender == pair) {
            percent = buymultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(stakingfee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[stakingfeeReceiver] = _balances[stakingfeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && contractSellEnabled
        && _balances[address(this)] >= contractsellthreshold;
    }

  
     function clearStuckEthereum() external { 
             payable(projectFeeReceiver).transfer(address(this).balance);
            
    }

   function removeForeignToken(address tokenAddress, uint256 tokens) external returns (bool success) {
            require(tokenAddress != address(this), "tokenAddress can not be the native token");
             if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit removeToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(uniLPReceiver, tokens);
    }

    function setPercentages(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellmultiplier = _percentonsell;
        buymultiplier = _percentonbuy;
        wallettowalletmultiplier = _wallettransfer;    
          
    }
       
    function openTrading() public onlyOwner {
        TradingOpen = true;
        buymultiplier = 500;
        sellmultiplier = 700;
        wallettowalletmultiplier = 1000;
                              
    }

               
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkproportion(setproportion, setproportionDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = contractsellthreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractsellthreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                uniLPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    
  
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buymultiplier).div(100)),
            uint8(totalFee.mul(sellmultiplier).div(100)),
            uint8(totalFee.mul(wallettowalletmultiplier).div(100))
            );
    }
    
    function setFees(uint256 _liquidityFee, uint256 _utilityFee, uint256 _marketingFee, uint256 _projectFee, uint256 _stakingfee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        utilityFee = _utilityFee;
        marketingFee = _marketingFee;
        projectFee = _projectFee;
        stakingfee = _stakingfee;
        totalFee = _liquidityFee.add(_utilityFee).add(_marketingFee).add(_projectFee).add(_stakingfee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 4, "Fees can not be more than 25%"); 
        set_fees();
    }

   
    function setFeeReceivers(address _uniLPReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _stakingfeeReceiver, address _utilityFeeReceiver) external onlyOwner {
        uniLPReceiver = _uniLPReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        stakingfeeReceiver = _stakingfeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;

        emit set_Wallets(marketingFeeReceiver, utilityFeeReceiver, stakingfeeReceiver, projectFeeReceiver);
    }


    function multiAirdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external {
    require(istxLimitExempt[msg.sender]);
    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 airdrop = 0;

    for(uint i=0; i < addresses.length; i++){
        airdrop = airdrop + tokens[i];
    }

    require(balanceOf(from) >= airdrop, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

    function setContractsellmultipliers(bool _enabled, uint256 _amount) external onlyOwner {
        contractSellEnabled = _enabled;
        contractsellthreshold = _amount;
        emit set_ContractSells(contractsellthreshold, contractSellEnabled);
    }

    function checkproportion(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showthreshold(accuracy) > ratio;
    }

    function showthreshold(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"clearERC","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"removeToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"setFeeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"setTXExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_ContractSells","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxHolding","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_TXLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"utilityFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"stakingfeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"projectFeeReceiver","type":"address"}],"name":"set_Wallets","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkproportion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEthereum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSellEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsellthreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"editMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeForeignToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setContractsellmultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniLPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_stakingfeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"},{"internalType":"uint256","name":"_stakingfee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setZeroTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showthreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100106004600a610612565b61001e90633b9aca00610620565b600381905561003c906103e89061003690600f610413565b9061049f565b600455600354610055906103e89061003690600f610413565b6005556001600a556003600b555f600c556001600d555f600e55600e54600c54600a54600b54600d546100889190610637565b6100929190610637565b61009c9190610637565b6100a69190610637565b600f5560646010819055601181905560128190556013819055601e601955601a55601d805461ffff60a01b1916600160a81b1790556003546103e8906100ed906014610620565b6100f7919061064a565b601e55348015610105575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156101c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e59190610669565b600280546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610241573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102659190610669565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156102b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d79190610669565b601d80546001600160a01b039283166001600160a01b031991821681178355601c805483169091179055305f818152600760209081526040808320601b548816845282528083205f1990553380845260088352818420805460ff1990811660019081179092556009855283862080548216831790559754891685528285208054891682179055601580549099168552828520805489168217905594845281842080549097169094179095556014805485168417905585548416735690bdc79737824f22ef36868d967a05af2df8e61790955560168054841683179055601780548416831790556018805490931661dead179092556003548183526006855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106c4565b5f825f0361042257505f610499565b5f61042d8385610620565b90508261043a858361064a565b146104965760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f61049683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506104e660201b60201c565b5f81836105065760405162461bcd60e51b815260040161048d919061068f565b505f610512848661064a565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561056a5780850481111561054e5761054e61051b565b600184161561055c57908102905b60019390931c928002610533565b935093915050565b5f8261058057506001610499565b8161058c57505f610499565b81600181146105a257600281146105ac576105c8565b6001915050610499565b60ff8411156105bd576105bd61051b565b50506001821b610499565b5060208310610133831016604e8410600b84101617156105eb575081810a610499565b6105f75f19848461052f565b805f190482111561060a5761060a61051b565b029392505050565b5f61049660ff841683610572565b80820281158282048414176104995761049961051b565b808201808211156104995761049961051b565b5f8261066457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610679575f80fd5b81516001600160a01b0381168114610496575f80fd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b61230a806106d15f395ff3fe608060405260043610610215575f3560e01c80637d1db4a51161011e578063b155a054116100a8578063cf4d094b1161006d578063cf4d094b146105fc578063d6aeedca1461061b578063dd62ed3e1461063a578063f2fde38b1461067e578063f887ea401461069d575f80fd5b8063b155a05414610578578063b2bdfa7b1461058c578063b78e7edb146105aa578063c862be31146105c9578063c9567bf9146105e8575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104d157806395d89b41146104ed578063a8aa1b311461051b578063a9059cbb1461053a578063a9d3ce9914610559575f80fd5b80637d1db4a5146104595780637fd4fc9c1461046e57806386f6c3c114610482578063893d20e8146104a1575f80fd5b8063313ce5671161019f578063571ac8b01161016f578063571ac8b0146103c957806370a08231146103e8578063715018a61461041c578063751039fc1461043057806378109e5414610444575f80fd5b8063313ce5671461035b57806337c73d3d1461037657806348b98ef51461039557806355265669146103b5575f80fd5b806318abb635116101e557806318abb635146102d25780631df4ccfc146102f357806323b872dd146103085780632e6ac10614610327578063308302d314610346575f80fd5b806306fdde031461022057806308fd3d0514610265578063095ea7b31461029557806318160ddd146102b4575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5060408051808201909152600b81526a29b434b5b7b5ba9025b2b760a91b60208201525b60405161025c9190611e41565b60405180910390f35b348015610270575f80fd5b50601d5461028590600160a01b900460ff1681565b604051901515815260200161025c565b3480156102a0575f80fd5b506102856102af366004611e91565b6106bc565b3480156102bf575f80fd5b506003545b60405190815260200161025c565b3480156102dd575f80fd5b506102f16102ec366004611eb9565b610728565b005b3480156102fe575f80fd5b506102c4600f5481565b348015610313575f80fd5b50610285610322366004611f1a565b610808565b348015610332575f80fd5b50610285610341366004611f54565b6108c6565b348015610351575f80fd5b506102c4601e5481565b348015610366575f80fd5b506040516004815260200161025c565b348015610381575f80fd5b506102f1610390366004611f81565b6108d9565b3480156103a0575f80fd5b50601d5461028590600160a81b900460ff1681565b3480156103c0575f80fd5b506102c461096b565b3480156103d4575f80fd5b506102856103e3366004611f9d565b6109db565b3480156103f3575f80fd5b506102c4610402366004611f9d565b6001600160a01b03165f9081526006602052604090205490565b348015610427575f80fd5b506102f16109e7565b34801561043b575f80fd5b506102f1610a58565b34801561044f575f80fd5b506102c460055481565b348015610464575f80fd5b506102c460045481565b348015610479575f80fd5b506102f1610a8e565b34801561048d575f80fd5b506102f161049c366004611fb6565b610ac7565b3480156104ac575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161025c565b3480156104dc575f80fd5b505f546001600160a01b03166104b9565b3480156104f8575f80fd5b5060408051808201909152600681526529a424a5a2a760d11b602082015261024f565b348015610526575f80fd5b50601d546104b9906001600160a01b031681565b348015610545575f80fd5b50610285610554366004611e91565b610b94565b348015610564575f80fd5b506102f1610573366004611ff5565b610ba0565b348015610583575f80fd5b506102f1610bda565b348015610597575f80fd5b505f546104b9906001600160a01b031681565b3480156105b5575f80fd5b506102f16105c4366004612066565b610c31565b3480156105d4575f80fd5b506102f16105e33660046120e6565b610e1e565b3480156105f3575f80fd5b506102f1610eaa565b348015610607575f80fd5b506102c46106163660046120e6565b610efa565b348015610626575f80fd5b50610285610635366004611e91565b610f3f565b348015610645575f80fd5b506102c46106543660046120fd565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610689575f80fd5b506102f1610698366004611f9d565b6110cf565b3480156106a8575f80fd5b50601b546104b9906001600160a01b031681565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107169086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b0316331461075a5760405162461bcd60e51b81526004016107519061212e565b60405180910390fd5b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527fd57a6cc80e12ea4e450dcae918d555702c8ad353993d8e23acc138382c6c7f649060800160405180910390a15050505050565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f19146108b1576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260078252838120338252909152919091205461088d9184906111b6565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6108bc8484846111ee565b90505b9392505050565b5f826108d183610efa565b119392505050565b5f546001600160a01b031633146109025760405162461bcd60e51b81526004016107519061212e565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f392f1d6148f51babec2021798dc4b53898c421ad141fcd1babe8ac1bff909f79910160405180910390a15050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109d69290916109d09190611545565b90611545565b905090565b5f610722825f196106bc565b5f546001600160a01b03163314610a105760405162461bcd60e51b81526004016107519061212e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a815760405162461bcd60e51b81526004016107519061212e565b6003546004819055600555565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610ac4573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610af05760405162461bcd60e51b81526004016107519061212e565b600a869055600d859055600b849055600c839055600e829055610b2182610b1b858188818c8c611586565b90611586565b600f556010819055610b34600482612177565b600f5410610b845760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203235250000006044820152606401610751565b610b8c6115e4565b505050505050565b5f6108bf3384846111ee565b5f546001600160a01b03163314610bc95760405162461bcd60e51b81526004016107519061212e565b601191909155601291909155601355565b5f546001600160a01b03163314610c035760405162461bcd60e51b81526004016107519061212e565b5f60128190556011819055601355600354606490610c22906001612196565b610c2c9190612177565b601e55565b335f9081526009602052604090205460ff16610c4b575f80fd5b6101f58310610cb25760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610751565b828114610d125760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610751565b5f805b84811015610d4b57838382818110610d2f57610d2f6121ad565b9050602002013582610d4191906121c1565b9150600101610d15565b5080610d6b876001600160a01b03165f9081526006602052604090205490565b1015610db95760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610751565b5f5b84811015610e1557610e0c87878784818110610dd957610dd96121ad565b9050602002016020810190610dee9190611f9d565b868685818110610e0057610e006121ad565b9050602002013561167f565b50600101610dbb565b50505050505050565b5f546001600160a01b03163314610e475760405162461bcd60e51b81526004016107519061212e565b6001811015610e54575f80fd5b6103e881600354610e659190612196565b610e6f9190612177565b60058190556040519081527f494fd99b13a8a3670e91a40af1b1ffec73968d010de2a178aa17556d7d353f339060200160405180910390a150565b5f546001600160a01b03163314610ed35760405162461bcd60e51b81526004016107519061212e565b601d805460ff60a01b1916600160a01b1790556101f46012556102bc6011556103e8601355565b5f610722610f0661096b565b601d546001600160a01b03165f90815260066020526040902054610f3990610f32906002905b9061174f565b859061174f565b906117cd565b5f306001600160a01b03841603610fa95760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610751565b815f03611019576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101691906121d4565b91505b604080516001600160a01b0385168152602081018490527f13baf1e647d68ca9451d9fc896ee1c75b4337b7804451971e549ca6d1e24287d910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af11580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906121eb565b5f546001600160a01b031633146110f85760405162461bcd60e51b81526004016107519061212e565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610751565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f81848411156111d95760405162461bcd60e51b81526004016107519190611e41565b505f6111e58486612206565b95945050505050565b601f545f9060ff161561120d5761120684848461167f565b90506108bf565b6001600160a01b0384165f9081526001602052604090205460ff1615801561124d57506001600160a01b0383165f9081526001602052604090205460ff16155b156112a257601d54600160a01b900460ff166112a25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610751565b6001600160a01b0384165f9081526001602052604090205460ff161580156112d357506001600160a01b0383163014155b80156112ea57506001600160a01b03831661dead14155b80156113045750601d546001600160a01b03848116911614155b801561131e57506018546001600160a01b03848116911614155b801561133857506015546001600160a01b03848116911614155b801561135c57506001600160a01b0383165f9081526009602052604090205460ff16155b156113fc576001600160a01b0383165f9081526006602052604090205460055461138684836121c1565b11156113fa5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610751565b505b611406848361180e565b61140e61187a565b1561141b5761141b6118ce565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461146c9184906111b6565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806114b757506001600160a01b0384165f9081526008602052604090205460ff165b6114cb576114c6858486611c96565b6114cd565b825b6001600160a01b0385165f908152600660205260409020549091506114f29082611586565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f805160206122b5833981519152906115329085815260200190565b60405180910390a3506001949350505050565b5f6108bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b6565b5f8061159283856121c1565b9050838110156108bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610751565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006116216064610f39601254600f5461174f90919063ffffffff16565b61163d6064610f39601154600f5461174f90919063ffffffff16565b6116596064610f39601354600f5461174f90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546116cf9184906111b6565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546116fd9083611586565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f805160206122b58339815191529061173d9086815260200190565b60405180910390a35060019392505050565b5f825f0361175e57505f610722565b5f6117698385612196565b9050826117768583612177565b146108bf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610751565b5f6108bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e15565b6004548111158061183657506001600160a01b0382165f9081526009602052604090205460ff165b6118765760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610751565b5050565b601d545f906001600160a01b0316331480159061189a5750601f5460ff16155b80156118af5750601d54600160a81b900460ff165b80156109d6575050601e54305f90815260066020526040902054101590565b601f805460ff19166001179055601954601a545f916118ec916108c6565b6118f857600a546118fa565b5f5b90505f61191d6002610f39600f54610f3986601e5461174f90919063ffffffff16565b90505f61193582601e5461154590919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061196d5761196d6121ad565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061199e5761199e6121ad565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac947906119e79086905f90879030904290600401612219565b5f604051808303815f87803b1580156119fe575f80fd5b505af1158015611a10573d5f803e3d5ffd5b505050505f611a28824761154590919063ffffffff16565b90505f611a42611a398860026117cd565b600f5490611545565b90505f611a566002610f398481878d61174f565b90505f611a7283610f39600b548761174f90919063ffffffff16565b90505f611a8e84610f39600d548861174f90919063ffffffff16565b90505f611aaa85610f39600c548961174f90919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611af9576040519150601f19603f3d011682016040523d82523d5f602084013e611afe565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b4b576040519150601f19603f3d011682016040523d82523d5f602084013e611b50565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611b9d576040519150601f19603f3d011682016040523d82523d5f602084013e611ba2565b606091505b505f9250508b159050611c7e57601b5460145460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c1c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c419190612289565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d545f91906001600160a01b0390811690841603611cbb5750601154611cd6565b601d546001600160a01b0390811690861603611cd657506012545b5f611d026010546064611ce99190612196565b610f3984610f2c600f548a61174f90919063ffffffff16565b90505f611d20600f54610f39600e548561174f90919063ffffffff16565b90505f611d2d8383611545565b305f90815260066020526040902054909150611d499082611586565b305f90815260066020526040808220929092556018546001600160a01b031681522054611d769083611586565b6018546001600160a01b039081165f9081526006602090815260409182902093909355518381523092918b16915f805160206122b5833981519152910160405180910390a38115611dff57600354611dce9083611545565b6003556040518281525f906001600160a01b038a16905f805160206122b58339815191529060200160405180910390a35b611e098784611545565b98975050505050505050565b5f8183611e355760405162461bcd60e51b81526004016107519190611e41565b505f6111e58486612177565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611e8c575f80fd5b919050565b5f8060408385031215611ea2575f80fd5b611eab83611e76565b946020939093013593505050565b5f805f805f60a08688031215611ecd575f80fd5b611ed686611e76565b9450611ee460208701611e76565b9350611ef260408701611e76565b9250611f0060608701611e76565b9150611f0e60808701611e76565b90509295509295909350565b5f805f60608486031215611f2c575f80fd5b611f3584611e76565b9250611f4360208501611e76565b929592945050506040919091013590565b5f8060408385031215611f65575f80fd5b50508035926020909101359150565b8015158114610ac4575f80fd5b5f8060408385031215611f92575f80fd5b8235611eab81611f74565b5f60208284031215611fad575f80fd5b6108bf82611e76565b5f805f805f8060c08789031215611fcb575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60608486031215612007575f80fd5b505081359360208301359350604090920135919050565b5f8083601f84011261202e575f80fd5b50813567ffffffffffffffff811115612045575f80fd5b6020830191508360208260051b850101111561205f575f80fd5b9250929050565b5f805f805f6060868803121561207a575f80fd5b61208386611e76565b9450602086013567ffffffffffffffff81111561209e575f80fd5b6120aa8882890161201e565b909550935050604086013567ffffffffffffffff8111156120c9575f80fd5b6120d58882890161201e565b969995985093965092949392505050565b5f602082840312156120f6575f80fd5b5035919050565b5f806040838503121561210e575f80fd5b61211783611e76565b915061212560208401611e76565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261219157634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072257610722612163565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072257610722612163565b5f602082840312156121e4575f80fd5b5051919050565b5f602082840312156121fb575f80fd5b81516108bf81611f74565b8181038181111561072257610722612163565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122695783516001600160a01b0316835260209384019390920191600101612242565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f6060848603121561229b575f80fd5b505081516020830151604090930151909492935091905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205d3c1e2ade1b8bea72c32e359bd9fca7b3dffb4dd72c58a12419a959d2fd21b064736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610215575f3560e01c80637d1db4a51161011e578063b155a054116100a8578063cf4d094b1161006d578063cf4d094b146105fc578063d6aeedca1461061b578063dd62ed3e1461063a578063f2fde38b1461067e578063f887ea401461069d575f80fd5b8063b155a05414610578578063b2bdfa7b1461058c578063b78e7edb146105aa578063c862be31146105c9578063c9567bf9146105e8575f80fd5b80638da5cb5b116100ee5780638da5cb5b146104d157806395d89b41146104ed578063a8aa1b311461051b578063a9059cbb1461053a578063a9d3ce9914610559575f80fd5b80637d1db4a5146104595780637fd4fc9c1461046e57806386f6c3c114610482578063893d20e8146104a1575f80fd5b8063313ce5671161019f578063571ac8b01161016f578063571ac8b0146103c957806370a08231146103e8578063715018a61461041c578063751039fc1461043057806378109e5414610444575f80fd5b8063313ce5671461035b57806337c73d3d1461037657806348b98ef51461039557806355265669146103b5575f80fd5b806318abb635116101e557806318abb635146102d25780631df4ccfc146102f357806323b872dd146103085780632e6ac10614610327578063308302d314610346575f80fd5b806306fdde031461022057806308fd3d0514610265578063095ea7b31461029557806318160ddd146102b4575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5060408051808201909152600b81526a29b434b5b7b5ba9025b2b760a91b60208201525b60405161025c9190611e41565b60405180910390f35b348015610270575f80fd5b50601d5461028590600160a01b900460ff1681565b604051901515815260200161025c565b3480156102a0575f80fd5b506102856102af366004611e91565b6106bc565b3480156102bf575f80fd5b506003545b60405190815260200161025c565b3480156102dd575f80fd5b506102f16102ec366004611eb9565b610728565b005b3480156102fe575f80fd5b506102c4600f5481565b348015610313575f80fd5b50610285610322366004611f1a565b610808565b348015610332575f80fd5b50610285610341366004611f54565b6108c6565b348015610351575f80fd5b506102c4601e5481565b348015610366575f80fd5b506040516004815260200161025c565b348015610381575f80fd5b506102f1610390366004611f81565b6108d9565b3480156103a0575f80fd5b50601d5461028590600160a81b900460ff1681565b3480156103c0575f80fd5b506102c461096b565b3480156103d4575f80fd5b506102856103e3366004611f9d565b6109db565b3480156103f3575f80fd5b506102c4610402366004611f9d565b6001600160a01b03165f9081526006602052604090205490565b348015610427575f80fd5b506102f16109e7565b34801561043b575f80fd5b506102f1610a58565b34801561044f575f80fd5b506102c460055481565b348015610464575f80fd5b506102c460045481565b348015610479575f80fd5b506102f1610a8e565b34801561048d575f80fd5b506102f161049c366004611fb6565b610ac7565b3480156104ac575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161025c565b3480156104dc575f80fd5b505f546001600160a01b03166104b9565b3480156104f8575f80fd5b5060408051808201909152600681526529a424a5a2a760d11b602082015261024f565b348015610526575f80fd5b50601d546104b9906001600160a01b031681565b348015610545575f80fd5b50610285610554366004611e91565b610b94565b348015610564575f80fd5b506102f1610573366004611ff5565b610ba0565b348015610583575f80fd5b506102f1610bda565b348015610597575f80fd5b505f546104b9906001600160a01b031681565b3480156105b5575f80fd5b506102f16105c4366004612066565b610c31565b3480156105d4575f80fd5b506102f16105e33660046120e6565b610e1e565b3480156105f3575f80fd5b506102f1610eaa565b348015610607575f80fd5b506102c46106163660046120e6565b610efa565b348015610626575f80fd5b50610285610635366004611e91565b610f3f565b348015610645575f80fd5b506102c46106543660046120fd565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610689575f80fd5b506102f1610698366004611f9d565b6110cf565b3480156106a8575f80fd5b50601b546104b9906001600160a01b031681565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107169086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b0316331461075a5760405162461bcd60e51b81526004016107519061212e565b60405180910390fd5b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527fd57a6cc80e12ea4e450dcae918d555702c8ad353993d8e23acc138382c6c7f649060800160405180910390a15050505050565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f19146108b1576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260078252838120338252909152919091205461088d9184906111b6565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6108bc8484846111ee565b90505b9392505050565b5f826108d183610efa565b119392505050565b5f546001600160a01b031633146109025760405162461bcd60e51b81526004016107519061212e565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f392f1d6148f51babec2021798dc4b53898c421ad141fcd1babe8ac1bff909f79910160405180910390a15050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460035491926109d69290916109d09190611545565b90611545565b905090565b5f610722825f196106bc565b5f546001600160a01b03163314610a105760405162461bcd60e51b81526004016107519061212e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a815760405162461bcd60e51b81526004016107519061212e565b6003546004819055600555565b6016546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610ac4573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610af05760405162461bcd60e51b81526004016107519061212e565b600a869055600d859055600b849055600c839055600e829055610b2182610b1b858188818c8c611586565b90611586565b600f556010819055610b34600482612177565b600f5410610b845760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203235250000006044820152606401610751565b610b8c6115e4565b505050505050565b5f6108bf3384846111ee565b5f546001600160a01b03163314610bc95760405162461bcd60e51b81526004016107519061212e565b601191909155601291909155601355565b5f546001600160a01b03163314610c035760405162461bcd60e51b81526004016107519061212e565b5f60128190556011819055601355600354606490610c22906001612196565b610c2c9190612177565b601e55565b335f9081526009602052604090205460ff16610c4b575f80fd5b6101f58310610cb25760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610751565b828114610d125760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610751565b5f805b84811015610d4b57838382818110610d2f57610d2f6121ad565b9050602002013582610d4191906121c1565b9150600101610d15565b5080610d6b876001600160a01b03165f9081526006602052604090205490565b1015610db95760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610751565b5f5b84811015610e1557610e0c87878784818110610dd957610dd96121ad565b9050602002016020810190610dee9190611f9d565b868685818110610e0057610e006121ad565b9050602002013561167f565b50600101610dbb565b50505050505050565b5f546001600160a01b03163314610e475760405162461bcd60e51b81526004016107519061212e565b6001811015610e54575f80fd5b6103e881600354610e659190612196565b610e6f9190612177565b60058190556040519081527f494fd99b13a8a3670e91a40af1b1ffec73968d010de2a178aa17556d7d353f339060200160405180910390a150565b5f546001600160a01b03163314610ed35760405162461bcd60e51b81526004016107519061212e565b601d805460ff60a01b1916600160a01b1790556101f46012556102bc6011556103e8601355565b5f610722610f0661096b565b601d546001600160a01b03165f90815260066020526040902054610f3990610f32906002905b9061174f565b859061174f565b906117cd565b5f306001600160a01b03841603610fa95760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610751565b815f03611019576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101691906121d4565b91505b604080516001600160a01b0385168152602081018490527f13baf1e647d68ca9451d9fc896ee1c75b4337b7804451971e549ca6d1e24287d910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af11580156110ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906121eb565b5f546001600160a01b031633146110f85760405162461bcd60e51b81526004016107519061212e565b6001600160a01b03811661115d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610751565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f81848411156111d95760405162461bcd60e51b81526004016107519190611e41565b505f6111e58486612206565b95945050505050565b601f545f9060ff161561120d5761120684848461167f565b90506108bf565b6001600160a01b0384165f9081526001602052604090205460ff1615801561124d57506001600160a01b0383165f9081526001602052604090205460ff16155b156112a257601d54600160a01b900460ff166112a25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610751565b6001600160a01b0384165f9081526001602052604090205460ff161580156112d357506001600160a01b0383163014155b80156112ea57506001600160a01b03831661dead14155b80156113045750601d546001600160a01b03848116911614155b801561131e57506018546001600160a01b03848116911614155b801561133857506015546001600160a01b03848116911614155b801561135c57506001600160a01b0383165f9081526009602052604090205460ff16155b156113fc576001600160a01b0383165f9081526006602052604090205460055461138684836121c1565b11156113fa5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610751565b505b611406848361180e565b61140e61187a565b1561141b5761141b6118ce565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461146c9184906111b6565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806114b757506001600160a01b0384165f9081526008602052604090205460ff165b6114cb576114c6858486611c96565b6114cd565b825b6001600160a01b0385165f908152600660205260409020549091506114f29082611586565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f805160206122b5833981519152906115329085815260200190565b60405180910390a3506001949350505050565b5f6108bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b6565b5f8061159283856121c1565b9050838110156108bf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610751565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006116216064610f39601254600f5461174f90919063ffffffff16565b61163d6064610f39601154600f5461174f90919063ffffffff16565b6116596064610f39601354600f5461174f90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526006909152918220546116cf9184906111b6565b6001600160a01b038086165f9081526006602052604080822093909355908516815220546116fd9083611586565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f805160206122b58339815191529061173d9086815260200190565b60405180910390a35060019392505050565b5f825f0361175e57505f610722565b5f6117698385612196565b9050826117768583612177565b146108bf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610751565b5f6108bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e15565b6004548111158061183657506001600160a01b0382165f9081526009602052604090205460ff165b6118765760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610751565b5050565b601d545f906001600160a01b0316331480159061189a5750601f5460ff16155b80156118af5750601d54600160a81b900460ff165b80156109d6575050601e54305f90815260066020526040902054101590565b601f805460ff19166001179055601954601a545f916118ec916108c6565b6118f857600a546118fa565b5f5b90505f61191d6002610f39600f54610f3986601e5461174f90919063ffffffff16565b90505f61193582601e5461154590919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061196d5761196d6121ad565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061199e5761199e6121ad565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac947906119e79086905f90879030904290600401612219565b5f604051808303815f87803b1580156119fe575f80fd5b505af1158015611a10573d5f803e3d5ffd5b505050505f611a28824761154590919063ffffffff16565b90505f611a42611a398860026117cd565b600f5490611545565b90505f611a566002610f398481878d61174f565b90505f611a7283610f39600b548761174f90919063ffffffff16565b90505f611a8e84610f39600d548861174f90919063ffffffff16565b90505f611aaa85610f39600c548961174f90919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611af9576040519150601f19603f3d011682016040523d82523d5f602084013e611afe565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611b4b576040519150601f19603f3d011682016040523d82523d5f602084013e611b50565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611b9d576040519150601f19603f3d011682016040523d82523d5f602084013e611ba2565b606091505b505f9250508b159050611c7e57601b5460145460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611c1c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c419190612289565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d545f91906001600160a01b0390811690841603611cbb5750601154611cd6565b601d546001600160a01b0390811690861603611cd657506012545b5f611d026010546064611ce99190612196565b610f3984610f2c600f548a61174f90919063ffffffff16565b90505f611d20600f54610f39600e548561174f90919063ffffffff16565b90505f611d2d8383611545565b305f90815260066020526040902054909150611d499082611586565b305f90815260066020526040808220929092556018546001600160a01b031681522054611d769083611586565b6018546001600160a01b039081165f9081526006602090815260409182902093909355518381523092918b16915f805160206122b5833981519152910160405180910390a38115611dff57600354611dce9083611545565b6003556040518281525f906001600160a01b038a16905f805160206122b58339815191529060200160405180910390a35b611e098784611545565b98975050505050505050565b5f8183611e355760405162461bcd60e51b81526004016107519190611e41565b505f6111e58486612177565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611e8c575f80fd5b919050565b5f8060408385031215611ea2575f80fd5b611eab83611e76565b946020939093013593505050565b5f805f805f60a08688031215611ecd575f80fd5b611ed686611e76565b9450611ee460208701611e76565b9350611ef260408701611e76565b9250611f0060608701611e76565b9150611f0e60808701611e76565b90509295509295909350565b5f805f60608486031215611f2c575f80fd5b611f3584611e76565b9250611f4360208501611e76565b929592945050506040919091013590565b5f8060408385031215611f65575f80fd5b50508035926020909101359150565b8015158114610ac4575f80fd5b5f8060408385031215611f92575f80fd5b8235611eab81611f74565b5f60208284031215611fad575f80fd5b6108bf82611e76565b5f805f805f8060c08789031215611fcb575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60608486031215612007575f80fd5b505081359360208301359350604090920135919050565b5f8083601f84011261202e575f80fd5b50813567ffffffffffffffff811115612045575f80fd5b6020830191508360208260051b850101111561205f575f80fd5b9250929050565b5f805f805f6060868803121561207a575f80fd5b61208386611e76565b9450602086013567ffffffffffffffff81111561209e575f80fd5b6120aa8882890161201e565b909550935050604086013567ffffffffffffffff8111156120c9575f80fd5b6120d58882890161201e565b969995985093965092949392505050565b5f602082840312156120f6575f80fd5b5035919050565b5f806040838503121561210e575f80fd5b61211783611e76565b915061212560208401611e76565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261219157634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761072257610722612163565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561072257610722612163565b5f602082840312156121e4575f80fd5b5051919050565b5f602082840312156121fb575f80fd5b81516108bf81611f74565b8181038181111561072257610722612163565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156122695783516001600160a01b0316835260209384019390920191600101612242565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f6060848603121561229b575f80fd5b505081516020830151604090930151909492935091905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205d3c1e2ade1b8bea72c32e359bd9fca7b3dffb4dd72c58a12419a959d2fd21b064736f6c634300081a0033

Deployed Bytecode Sourcemap

5093:14715:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8879:80;;;;;;;;;;-1:-1:-1;8951:5:0;;;;;;;;;;;;-1:-1:-1;;;8951:5:0;;;;8879:80;;;;;;;:::i;:::-;;;;;;;;7372:31;;;;;;;;;;-1:-1:-1;7372:31:0;;;;-1:-1:-1;;;7372:31:0;;;;;;;;;602:14:1;;595:22;577:41;;565:2;550:18;7372:31:0;437:187:1;9301:216:0;;;;;;;;;;-1:-1:-1;9301:216:0;;;;;:::i;:::-;;:::i;8609:88::-;;;;;;;;;;-1:-1:-1;8682:12:0;;8609:88;;;1258:25:1;;;1246:2;1231:18;8609:88:0;1112:177:1;17885:554:0;;;;;;;;;;-1:-1:-1;17885:554:0;;;;;:::i;:::-;;:::i;:::-;;6712:100;;;;;;;;;;;;;;;;9819:370;;;;;;;;;;-1:-1:-1;9819:370:0;;;;;:::i;:::-;;:::i;19356:142::-;;;;;;;;;;-1:-1:-1;19356:142:0;;;;;:::i;:::-;;:::i;7463:63::-;;;;;;;;;;;;;;;;8703:80;;;;;;;;;;-1:-1:-1;8703:80:0;;5458:1;2655:36:1;;2643:2;2628:18;8703:80:0;2513:184:1;19093:255:0;;;;;;;;;;-1:-1:-1;19093:255:0;;;;;:::i;:::-;;:::i;7418:38::-;;;;;;;;;;-1:-1:-1;7418:38:0;;;;-1:-1:-1;;;7418:38:0;;;;;;19669:132;;;;;;;;;;;;;:::i;9525:122::-;;;;;;;;;;-1:-1:-1;9525:122:0;;;;;:::i;:::-;;:::i;9049:105::-;;;;;;;;;;-1:-1:-1;9049:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9133:18:0;9115:7;9133:18;;;:9;:18;;;;;;;9049:105;2007:148;;;;;;;;;;;;;:::i;10459:153::-;;;;;;;;;;;;;:::i;6220:63::-;;;;;;;;;;;;;;;;6153:60;;;;;;;;;;;;;;;;13981:137;;;;;;;;;;;;;:::i;17259:613::-;;;;;;;;;;-1:-1:-1;17259:613:0;;;;;:::i;:::-;;:::i;8965:78::-;;;;;;;;;;-1:-1:-1;9017:7:0;1858:6;-1:-1:-1;;;;;1858:6:0;8965:78;;;-1:-1:-1;;;;;4380:32:1;;;4362:51;;4350:2;4335:18;8965:78:0;4216:203:1;1793:79:0;;;;;;;;;;-1:-1:-1;1831:7:0;1858:6;-1:-1:-1;;;;;1858:6:0;1793:79;;8789:84;;;;;;;;;;-1:-1:-1;8863:7:0;;;;;;;;;;;;-1:-1:-1;;;8863:7:0;;;;8789:84;;7340:19;;;;;;;;;;-1:-1:-1;7340:19:0;;;;-1:-1:-1;;;;;7340:19:0;;;9655:156;;;;;;;;;;-1:-1:-1;9655:156:0;;;;;:::i;:::-;;:::i;14564:274::-;;;;;;;;;;-1:-1:-1;14564:274:0;;;;;:::i;:::-;;:::i;10620:233::-;;;;;;;;;;;;;:::i;1413:21::-;;;;;;;;;;-1:-1:-1;1413:21:0;;;;-1:-1:-1;;;;;1413:21:0;;;18449:636;;;;;;;;;;-1:-1:-1;18449:636:0;;;;;:::i;:::-;;:::i;10201:248::-;;;;;;;;;;-1:-1:-1;10201:248:0;;;;;:::i;:::-;;:::i;14853:212::-;;;;;;;;;;;;;:::i;19506:151::-;;;;;;;;;;-1:-1:-1;19506:151:0;;;;;:::i;:::-;;:::i;14125:431::-;;;;;;;;;;-1:-1:-1;14125:431:0;;;;;:::i;:::-;;:::i;9160:133::-;;;;;;;;;;-1:-1:-1;9160:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9262:19:0;;;9244:7;9262:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9160:133;2163:244;;;;;;;;;;-1:-1:-1;2163:244:0;;;;;:::i;:::-;;:::i;7270:24::-;;;;;;;;;;-1:-1:-1;7270:24:0;;;;-1:-1:-1;;;;;7270:24:0;;;9301:216;9405:10;9376:4;9393:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9393:32:0;;;;;;;;;;:41;;;9450:37;9376:4;;9393:32;;9450:37;;;;9428:6;1258:25:1;;1246:2;1231:18;;1112:177;9450:37:0;;;;;;;;-1:-1:-1;9505:4:0;9301:216;;;;;:::o;17885:554::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;;;;;;;;;18082:13:::1;:30:::0;;-1:-1:-1;;;;;18082:30:0;;::::1;-1:-1:-1::0;;;;;;18082:30:0;;::::1;;::::0;;;18123:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18178:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18229:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18280:18:::1;:40:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18338:93:::1;::::0;;7428:51:1;;;7510:2;7495:18;;7488:60;;;;7564:18;;;7557:60;;;;7648:2;7633:18;;7626:60;;;;18338:93:0::1;::::0;7415:3:1;7400:19;18338:93:0::1;;;;;;;17885:554:::0;;;;;:::o;9819:370::-;-1:-1:-1;;;;;9939:19:0;;9919:4;9939:19;;;:11;:19;;;;;;;;9959:10;9939:31;;;;;;;;-1:-1:-1;;9939:52:0;9936:186;;10041:69;;;;;;;;;;;-1:-1:-1;;;10041:69:0;;;;;;;;-1:-1:-1;;;;;10041:19:0;;-1:-1:-1;10041:19:0;;;:11;:19;;;;;10061:10;10041:31;;;;;;;;;;:69;;10077:6;;10041:35;:69::i;:::-;-1:-1:-1;;;;;10007:19:0;;;;;;:11;:19;;;;;;;;10027:10;10007:31;;;;;;;:103;9936:186;10141:40;10155:6;10163:9;10174:6;10141:13;:40::i;:::-;10134:47;;9819:370;;;;;;:::o;19356:142::-;19435:4;19485:5;19459:23;19473:8;19459:13;:23::i;:::-;:31;;19356:142;-1:-1:-1;;;19356:142:0:o;19093:255::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;19191:19:::1;:30:::0;;-1:-1:-1;;;;19191:30:0::1;-1:-1:-1::0;;;19191:30:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;19232:21:::1;:31:::0;;;19279:61:::1;::::0;;7865:25:1;;;19191:30:0::1;19320:19:::0;;;::::1;::::0;;;::::1;7933:14:1::0;7926:22;7921:2;7906:18;;7899:50;19279:61:0::1;::::0;7838:18:1;19279:61:0::1;;;;;;;19093:255:::0;;:::o;19669:132::-;9133:9;:18;;;;5216:42;19712:7;9133:18;;;;;19739:12;;19712:7;;19739:54;;9133:18;;19739:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;19732:61;;19669:132;:::o;9525:122::-;9580:4;9604:35;9612:7;-1:-1:-1;;9604:7:0;:35::i;2007:148::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;2114:1:::1;2098:6:::0;;2077:40:::1;::::0;-1:-1:-1;;;;;2098:6:0;;::::1;::::0;2077:40:::1;::::0;2114:1;;2077:40:::1;2145:1;2128:19:::0;;-1:-1:-1;;;;;;2128:19:0::1;::::0;;2007:148::o;10459:153::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;10533:12:::1;::::0;10518::::1;:27:::0;;;10560:15:::1;:30:::0;10459:153::o;13981:137::-;14045:18;;14037:59;;-1:-1:-1;;;;;14045:18:0;;;;14074:21;14037:59;;;;;14045:18;14037:59;14045:18;14037:59;14074:21;14045:18;14037:59;;;;;;;;;;;;;;;;;;;;;13981:137::o;17259:613::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;17440:12:::1;:28:::0;;;17479:10:::1;:24:::0;;;17514:12:::1;:28:::0;;;17553:10:::1;:24:::0;;;17588:10:::1;:24:::0;;;17634:83:::1;17601:11:::0;17634:66:::1;17566:11:::0;17634:66;17529:13;17634:66;17455:13;17492:11;17634:17:::1;:30::i;:::-;:34:::0;::::1;:49::i;:83::-;17623:8;:94:::0;17728:14:::1;:32:::0;;;17790:18:::1;17807:1;17745:15:::0;17790:18:::1;:::i;:::-;17779:8;;:29;17771:71;;;::::0;-1:-1:-1;;;17771:71:0;;8516:2:1;17771:71:0::1;::::0;::::1;8498:21:1::0;8555:2;8535:18;;;8528:30;8594:31;8574:18;;;8567:59;8643:18;;17771:71:0::1;8314:353:1::0;17771:71:0::1;17854:10;:8;:10::i;:::-;17259:613:::0;;;;;;:::o;9655:156::-;9735:4;9759:44;9773:10;9785:9;9796:6;9759:13;:44::i;14564:274::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;14690:14:::1;:31:::0;;;;14732:13:::1;:29:::0;;;;14772:24:::1;:42:::0;14564:274::o;10620:233::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;10693:1:::1;10677:13;:17:::0;;;10709:14:::1;:18:::0;;;10742:24:::1;:28:::0;10809:12:::1;::::0;10828:3:::1;::::0;10809:16:::1;::::0;-1:-1:-1;10809:16:0::1;:::i;:::-;:22;;;;:::i;:::-;10785:21;:46:::0;10620:233::o;18449:636::-;18582:10;18566:27;;;;:15;:27;;;;;;;;18558:36;;;;;;18628:3;18609:22;;18601:79;;;;-1:-1:-1;;;18601:79:0;;9047:2:1;18601:79:0;;;9029:21:1;9086:2;9066:18;;;9059:30;9125:34;9105:18;;;9098:62;-1:-1:-1;;;9176:18:1;;;9169:43;9229:19;;18601:79:0;8845:409:1;18601:79:0;18695:33;;;18687:85;;;;-1:-1:-1;;;18687:85:0;;9461:2:1;18687:85:0;;;9443:21:1;9500:2;9480:18;;;9473:30;9539:34;9519:18;;;9512:62;-1:-1:-1;;;9590:18:1;;;9583:38;9638:19;;18687:85:0;9259:404:1;18687:85:0;18781:15;18813:6;18809:88;18823:20;;;18809:88;;;18880:6;;18887:1;18880:9;;;;;;;:::i;:::-;;;;;;;18870:7;:19;;;;:::i;:::-;18860:29;-1:-1:-1;18845:3:0;;18809:88;;;;18932:7;18913:15;18923:4;-1:-1:-1;;;;;9133:18:0;9115:7;9133:18;;;:9;:18;;;;;;;9049:105;18913:15;:26;;18905:66;;;;-1:-1:-1;;;18905:66:0;;10132:2:1;18905:66:0;;;10114:21:1;10171:2;10151:18;;;10144:30;10210:29;10190:18;;;10183:57;10257:18;;18905:66:0;9930:351:1;18905:66:0;18984:6;18980:102;18994:20;;;18980:102;;;19031:43;19046:4;19051:9;;19061:1;19051:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19064:6;;19071:1;19064:9;;;;;;;:::i;:::-;;;;;;;19031:14;:43::i;:::-;-1:-1:-1;19016:3:0;;18980:102;;;;18551:534;18449:636;;;;;:::o;10201:248::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;10305:1:::1;10287:14;:19;;10279:28;;;::::0;::::1;;10372:4;10353:14;10338:12;;:29;;;;:::i;:::-;10337:39;;;;:::i;:::-;10319:15;:57:::0;;;10392:31:::1;::::0;1258:25:1;;;10392:31:0::1;::::0;1246:2:1;1231:18;10392:31:0::1;;;;;;;10201:248:::0;:::o;14853:212::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;14904:11:::1;:18:::0;;-1:-1:-1;;;;14904:18:0::1;-1:-1:-1::0;;;14904:18:0::1;::::0;;14949:3:::1;14933:13;:19:::0;14980:3:::1;14963:14;:20:::0;15021:4:::1;14994:24;:31:::0;14853:212::o;19506:151::-;19568:7;19595:54;19636:12;:10;:12::i;:::-;19618:4;;-1:-1:-1;;;;;19618:4:0;9115:7;9133:18;;;:9;:18;;;;;;19595:36;;19608:22;;19628:1;;19608:15;:19;;:22::i;:::-;19595:8;;:12;:36::i;:::-;:40;;:54::i;14125:431::-;14209:12;14270:4;-1:-1:-1;;;;;14246:29:0;;;14238:82;;;;-1:-1:-1;;;14238:82:0;;10488:2:1;14238:82:0;;;10470:21:1;10527:2;10507:18;;;10500:30;10566:34;10546:18;;;10539:62;-1:-1:-1;;;10617:18:1;;;10610:38;10665:19;;14238:82:0;10286:404:1;14238:82:0;14339:6;14349:1;14339:11;14336:95;;14375:44;;-1:-1:-1;;;14375:44:0;;14413:4;14375:44;;;4362:51:1;-1:-1:-1;;;;;14375:29:0;;;;;4335:18:1;;14375:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14366:53;;14336:95;14446:33;;;-1:-1:-1;;;;;11122:32:1;;11104:51;;11186:2;11171:18;;11164:34;;;14446:33:0;;11077:18:1;14446:33:0;;;;;;;14526:13;;14497:51;;-1:-1:-1;;;14497:51:0;;-1:-1:-1;;;;;14526:13:0;;;14497:51;;;11104::1;11171:18;;;11164:34;;;14497:28:0;;;;;;11077:18:1;;14497:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2163:244::-;1920:6;;-1:-1:-1;;;;;1920:6:0;1230:10;1920:22;1912:67;;;;-1:-1:-1;;;1912:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2252:22:0;::::1;2244:73;;;::::0;-1:-1:-1;;;2244:73:0;;11661:2:1;2244:73:0::1;::::0;::::1;11643:21:1::0;11700:2;11680:18;;;11673:30;11739:34;11719:18;;;11712:62;-1:-1:-1;;;11790:18:1;;;11783:36;11836:19;;2244:73:0::1;11459:402:1::0;2244:73:0::1;2354:6;::::0;;2333:38:::1;::::0;-1:-1:-1;;;;;2333:38:0;;::::1;::::0;2354:6;::::1;::::0;2333:38:::1;::::0;::::1;2382:6;:17:::0;;-1:-1:-1;;;;;;2382:17:0::1;-1:-1:-1::0;;;;;2382:17:0;;;::::1;::::0;;;::::1;::::0;;2163:244::o;4305:192::-;4391:7;4427:12;4419:6;;;;4411:29;;;;-1:-1:-1;;;4411:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4451:9:0;4463:5;4467:1;4463;:5;:::i;:::-;4451:17;4305:192;-1:-1:-1;;;;;4305:192:0:o;10869:1229::-;10981:6;;10961:4;;10981:6;;10978:63;;;10997:41;11012:6;11020:9;11031:6;10997:14;:41::i;:::-;10990:48;;;;10978:63;-1:-1:-1;;;;;11057:22:0;;;;;;:14;:22;;;;;;;;11056:23;:53;;;;-1:-1:-1;;;;;;11084:25:0;;;;;;:14;:25;;;;;;;;11083:26;11056:53;11053:139;;;11133:11;;-1:-1:-1;;;11133:11:0;;;;11125:43;;;;-1:-1:-1;;;11125:43:0;;12201:2:1;11125:43:0;;;12183:21:1;12240:2;12220:18;;;12213:30;-1:-1:-1;;;12259:18:1;;;12252:50;12319:18;;11125:43:0;11999:344:1;11125:43:0;-1:-1:-1;;;;;11234:22:0;;;;;;:14;:22;;;;;;;;11233:23;:53;;;;-1:-1:-1;;;;;;11260:26:0;;11281:4;11260:26;;11233:53;:84;;;;-1:-1:-1;;;;;;11291:26:0;;5216:42;11291:26;;11233:84;:105;;;;-1:-1:-1;11334:4:0;;-1:-1:-1;;;;;11321:17:0;;;11334:4;;11321:17;;11233:105;:140;;;;-1:-1:-1;11355:18:0;;-1:-1:-1;;;;;11342:31:0;;;11355:18;;11342:31;;11233:140;:177;;;;-1:-1:-1;11390:20:0;;-1:-1:-1;;;;;11377:33:0;;;11390:20;;11377:33;;11233:177;:208;;;;-1:-1:-1;;;;;;11415:26:0;;;;;;:15;:26;;;;;;;;11414:27;11233:208;11229:400;;;-1:-1:-1;;;;;9133:18:0;;11457;9133;;;:9;:18;;;;;;11546:15;;11522:19;11535:6;9133:18;11522:19;:::i;:::-;11521:40;;11513:114;;;;-1:-1:-1;;;11513:114:0;;12550:2:1;11513:114:0;;;12532:21:1;12589:2;12569:18;;;12562:30;12628:34;12608:18;;;12601:62;12699:32;12679:18;;;12672:60;12749:19;;11513:114:0;12348:426:1;11513:114:0;11442:187;11229:400;11641:28;11654:6;11662;11641:12;:28::i;:::-;11687:16;:14;:16::i;:::-;11684:35;;;11706:10;:8;:10::i;:::-;11749:53;;;;;;;;;;;-1:-1:-1;;;11749:53:0;;;;;;;;-1:-1:-1;;;;;11749:17:0;;-1:-1:-1;11749:17:0;;;:9;:17;;;;;;;;:53;;11771:6;;11749:21;:53::i;:::-;-1:-1:-1;;;;;11729:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11841:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11864:22:0;;;;;;:11;:22;;;;;;;;11841:45;11840:93;;11899:34;11907:6;11915;11923:9;11899:7;:34::i;:::-;11840:93;;;11890:6;11840:93;-1:-1:-1;;;;;11967:20:0;;;;;;:9;:20;;;;;;11815:118;;-1:-1:-1;11967:40:0;;11815:118;11967:24;:40::i;:::-;-1:-1:-1;;;;;11944:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12025:43;;;;;;-1:-1:-1;;;;;;;;;;;12025:43:0;;;12053:14;1258:25:1;;1246:2;1231:18;;1112:177;12025:43:0;;;;;;;;-1:-1:-1;12086:4:0;;10869:1229;-1:-1:-1;;;;10869:1229:0:o;4163:136::-;4221:7;4248:43;4252:1;4255;4248:43;;;;;;;;;;;;;;;;;:3;:43::i;3976:181::-;4034:7;;4066:5;4070:1;4066;:5;:::i;:::-;4054:17;;4095:1;4090;:6;;4082:46;;;;-1:-1:-1;;;4082:46:0;;12981:2:1;4082:46:0;;;12963:21:1;13020:2;13000:18;;;12993:30;13059:29;13039:18;;;13032:57;13106:18;;4082:46:0;12779:351:1;16991:256:0;17044:195;17059:36;17091:3;17059:27;17072:13;;17059:8;;:12;;:27;;;;:::i;:36::-;17117:37;17150:3;17117:28;17130:14;;17117:8;;:12;;:28;;;;:::i;:37::-;17176:47;17219:3;17176:38;17189:24;;17176:8;;:12;;:38;;;;:::i;:47::-;17044:195;;;13355:4:1;13343:17;;;13325:36;;13397:17;;;13392:2;13377:18;;13370:45;13451:17;;13431:18;;;13424:45;17044:195:0;;;;;;13313:2:1;17044:195:0;;;16991:256::o;12107:330::-;12237:53;;;;;;;;;;;-1:-1:-1;;;12237:53:0;;;;;;;;-1:-1:-1;;;;;12237:17:0;;12200:4;12237:17;;;:9;:17;;;;;;;:53;;12259:6;;12237:21;:53::i;:::-;-1:-1:-1;;;;;12217:17:0;;;;;;;:9;:17;;;;;;:73;;;;12324:20;;;;;;;:32;;12349:6;12324:24;:32::i;:::-;-1:-1:-1;;;;;12301:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12372:35;;;;;;-1:-1:-1;;;;;;;;;;;12372:35:0;;;12400:6;1258:25:1;;1246:2;1231:18;;1112:177;12372:35:0;;;;;;;;-1:-1:-1;12425:4:0;12107:330;;;;;:::o;4503:250::-;4561:7;4585:1;4590;4585:6;4581:47;;-1:-1:-1;4615:1:0;4608:8;;4581:47;4640:9;4652:5;4656:1;4652;:5;:::i;:::-;4640:17;-1:-1:-1;4685:1:0;4676:5;4680:1;4640:17;4676:5;:::i;:::-;:10;4668:56;;;;-1:-1:-1;;;4668:56:0;;13682:2:1;4668:56:0;;;13664:21:1;13721:2;13701:18;;;13694:30;13760:34;13740:18;;;13733:62;-1:-1:-1;;;13811:18:1;;;13804:31;13852:19;;4668:56:0;13480:397:1;4759:132:0;4817:7;4844:39;4848:1;4851;4844:39;;;;;;;;;;;;;;;;;:3;:39::i;12445:166::-;12542:12;;12532:6;:22;;:49;;;-1:-1:-1;;;;;;12558:23:0;;;;;;:15;:23;;;;;;;;12532:49;12524:79;;;;-1:-1:-1;;;12524:79:0;;14084:2:1;12524:79:0;;;14066:21:1;14123:2;14103:18;;;14096:30;-1:-1:-1;;;14142:18:1;;;14135:47;14199:18;;12524:79:0;13882:341:1;12524:79:0;12445:166;;:::o;13755:213::-;13842:4;;13804;;-1:-1:-1;;;;;13842:4:0;13828:10;:18;;;;:38;;-1:-1:-1;13860:6:0;;;;13859:7;13828:38;:70;;;;-1:-1:-1;13879:19:0;;-1:-1:-1;;;13879:19:0;;;;13828:70;:132;;;;-1:-1:-1;;13939:21:0;;13929:4;13911:24;;;;:9;:24;;;;;;:49;;;13755:213::o;15090:1885::-;7574:6;:13;;-1:-1:-1;;7574:13:0;7583:4;7574:13;;;15185::::1;::::0;15200:24:::1;::::0;7574:6;;15169:56:::1;::::0;:15:::1;:56::i;:::-;:75;;15232:12;;15169:75;;;15228:1;15169:75;15139:105;;15255:23;15281:67;15346:1;15281:60;15332:8;;15281:46;15307:19;15281:21;;:25;;:46;;;;:::i;:67::-;15255:93;;15359:20;15382:42;15408:15;15382:21;;:25;;:42;;;;:::i;:::-;15461:16;::::0;;15475:1:::1;15461:16:::0;;;;;::::1;::::0;;15359:65;;-1:-1:-1;15437:21:0::1;::::0;15461:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15461:16:0::1;15437:40;;15506:4;15488;15493:1;15488:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15488:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15532:4:::1;::::0;15522:7;;15532:4;::::1;::::0;15522;;15532;;15522:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15522:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15607:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15607:188:0;;15573:21:::1;::::0;15607:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15679:12;;15549:21:::1;::::0;15722:4;;15749::::1;::::0;15769:15:::1;::::0;15607:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15808:17;15828:40;15854:13;15828:21;:25;;:40;;;;:::i;:::-;15808:60:::0;-1:-1:-1;15881:19:0::1;15903:40;15916:26;:19:::0;15940:1:::1;15916:23;:26::i;:::-;15903:8;::::0;;:12:::1;:40::i;:::-;15881:62:::0;-1:-1:-1;15964:26:0::1;15993:58;16049:1;15993:51;15881:62:::0;15993:51;:9;16007:19;15993:13:::1;:34::i;:58::-;15964:87;;16062:26;16091:44;16123:11;16091:27;16105:12;;16091:9;:13;;:27;;;;:::i;:44::-;16062:73;;16146:24;16173:42;16203:11;16173:25;16187:10;;16173:9;:13;;:25;;;;:::i;:42::-;16146:69;;16226:20;16249:42;16279:11;16249:25;16263:10;;16249:9;:13;;:25;;;;:::i;:42::-;16333:20;::::0;16325:65:::1;::::0;16226;;-1:-1:-1;16305:15:0::1;::::0;-1:-1:-1;;;;;16333:20:0;;::::1;::::0;16367:18;;16305:15;16325:65;16305:15;16325:65;16367:18;16333:20;16325:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16425:18:0::1;::::0;16417:57:::1;::::0;16304:86;;-1:-1:-1;;;;;;16425:18:0::1;::::0;16457:12;;16417:57:::1;::::0;;;16457:12;16425:18;16417:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16509:18:0::1;::::0;16501:61:::1;::::0;16401:73;;-1:-1:-1;;;;;;16509:18:0::1;::::0;16541:16;;16501:61:::1;::::0;;;16541:16;16509:18;16501:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16596:5:0::1;::::0;-1:-1:-1;;16617:19:0;;;-1:-1:-1;16614:354:0::1;;16652:6;::::0;16826:13:::1;::::0;16652:236:::1;::::0;-1:-1:-1;;;16652:236:0;;16728:4:::1;16652:236;::::0;::::1;15837:51:1::0;15904:18;;;15897:34;;;16652:6:0::1;15947:18:1::0;;;15940:34;;;15990:18;;;15983:34;-1:-1:-1;;;;;16826:13:0;;::::1;16033:19:1::0;;;16026:61;16858:15:0::1;16103:19:1::0;;;16096:35;16652:6:0;::::1;::::0;:22:::1;::::0;16682:18;;15809:19:1;;16652:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16908:48:0::1;::::0;;16777:25:1;;;16833:2;16818:18;;16811:34;;;16908:48:0::1;::::0;-1:-1:-1;16750:18:1;16908:48:0::1;;;;;;;16614:354;-1:-1:-1::0;;7592:6:0;:14;;-1:-1:-1;;7592:14:0;;;-1:-1:-1;;;;;;;;;;15090:1885:0:o;12741:1006::-;12875:24;;12926:4;;12827:7;;12875:24;-1:-1:-1;;;;;12926:4:0;;;12913:17;;;;12910:148;;-1:-1:-1;12957:14:0;;12910:148;;;13002:4;;-1:-1:-1;;;;;13002:4:0;;;12992:14;;;;12989:69;;-1:-1:-1;13033:13:0;;12989:69;13070:17;13090:59;13128:14;;13145:3;13128:20;;;;:::i;:::-;13090:33;13115:7;13090:20;13101:8;;13090:6;:10;;:20;;;;:::i;:59::-;13070:79;;13160:18;13181:39;13211:8;;13181:25;13195:10;;13181:9;:13;;:25;;;;:::i;:39::-;13160:60;-1:-1:-1;13231:22:0;13256:25;:9;13160:60;13256:13;:25::i;:::-;13337:4;13319:24;;;;:9;:24;;;;;;13231:50;;-1:-1:-1;13319:44:0;;13231:50;13319:28;:44::i;:::-;13310:4;13292:24;;;;:9;:24;;;;;;:71;;;;13416:18;;-1:-1:-1;;;;;13416:18:0;13406:29;;;;:45;;13440:10;13406:33;:45::i;:::-;13384:18;;-1:-1:-1;;;;;13384:18:0;;;13374:29;;;;:9;:29;;;;;;;;;:77;;;;13467:47;1258:25:1;;;13492:4:0;;13467:47;;;;-1:-1:-1;;;;;;;;;;;13467:47:0;1231:18:1;13467:47:0;;;;;;;13548:14;;13545:154;;13593:12;;:28;;13610:10;13593:16;:28::i;:::-;13578:12;:43;13641:34;;1258:25:1;;;5289:42:0;;-1:-1:-1;;;;;13641:34:0;;;-1:-1:-1;;;;;;;;;;;13641:34:0;1246:2:1;1231:18;13641:34:0;;;;;;;13545:154;13718:21;:6;13729:9;13718:10;:21::i;:::-;13711:28;12741:1006;-1:-1:-1;;;;;;;;12741:1006:0:o;4897:189::-;4983:7;5018:12;5011:5;5003:28;;;;-1:-1:-1;;;5003:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5042:9:0;5054:5;5058:1;5054;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;629:173::-;697:20;;-1:-1:-1;;;;;746:31:1;;736:42;;726:70;;792:1;789;782:12;726:70;629:173;;;:::o;807:300::-;875:6;883;936:2;924:9;915:7;911:23;907:32;904:52;;;952:1;949;942:12;904:52;975:29;994:9;975:29;:::i;:::-;965:39;1073:2;1058:18;;;;1045:32;;-1:-1:-1;;;807:300:1:o;1294:484::-;1389:6;1397;1405;1413;1421;1474:3;1462:9;1453:7;1449:23;1445:33;1442:53;;;1491:1;1488;1481:12;1442:53;1514:29;1533:9;1514:29;:::i;:::-;1504:39;;1562:38;1596:2;1585:9;1581:18;1562:38;:::i;:::-;1552:48;;1619:38;1653:2;1642:9;1638:18;1619:38;:::i;:::-;1609:48;;1676:38;1710:2;1699:9;1695:18;1676:38;:::i;:::-;1666:48;;1733:39;1767:3;1756:9;1752:19;1733:39;:::i;:::-;1723:49;;1294:484;;;;;;;;:::o;1783:374::-;1860:6;1868;1876;1929:2;1917:9;1908:7;1904:23;1900:32;1897:52;;;1945:1;1942;1935:12;1897:52;1968:29;1987:9;1968:29;:::i;:::-;1958:39;;2016:38;2050:2;2039:9;2035:18;2016:38;:::i;:::-;1783:374;;2006:48;;-1:-1:-1;;;2123:2:1;2108:18;;;;2095:32;;1783:374::o;2162:346::-;2230:6;2238;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;-1:-1:-1;;2352:23:1;;;2472:2;2457:18;;;2444:32;;-1:-1:-1;2162:346:1:o;2702:118::-;2788:5;2781:13;2774:21;2767:5;2764:32;2754:60;;2810:1;2807;2800:12;2825:361;2890:6;2898;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;3006:9;2993:23;3025:28;3047:5;3025:28;:::i;3191:186::-;3250:6;3303:2;3291:9;3282:7;3278:23;3274:32;3271:52;;;3319:1;3316;3309:12;3271:52;3342:29;3361:9;3342:29;:::i;3382:829::-;3486:6;3494;3502;3510;3518;3526;3579:3;3567:9;3558:7;3554:23;3550:33;3547:53;;;3596:1;3593;3586:12;3547:53;-1:-1:-1;;3641:23:1;;;3761:2;3746:18;;3733:32;;-1:-1:-1;3864:2:1;3849:18;;3836:32;;3967:2;3952:18;;3939:32;;-1:-1:-1;4070:3:1;4055:19;;4042:33;;-1:-1:-1;4174:3:1;4159:19;4146:33;;-1:-1:-1;3382:829:1;-1:-1:-1;3382:829:1:o;4424:466::-;4501:6;4509;4517;4570:2;4558:9;4549:7;4545:23;4541:32;4538:52;;;4586:1;4583;4576:12;4538:52;-1:-1:-1;;4631:23:1;;;4751:2;4736:18;;4723:32;;-1:-1:-1;4854:2:1;4839:18;;;4826:32;;4424:466;-1:-1:-1;4424:466:1:o;4895:367::-;4958:8;4968:6;5022:3;5015:4;5007:6;5003:17;4999:27;4989:55;;5040:1;5037;5030:12;4989:55;-1:-1:-1;5063:20:1;;5106:18;5095:30;;5092:50;;;5138:1;5135;5128:12;5092:50;5175:4;5167:6;5163:17;5151:29;;5235:3;5228:4;5218:6;5215:1;5211:14;5203:6;5199:27;5195:38;5192:47;5189:67;;;5252:1;5249;5242:12;5189:67;4895:367;;;;;:::o;5267:842::-;5398:6;5406;5414;5422;5430;5483:2;5471:9;5462:7;5458:23;5454:32;5451:52;;;5499:1;5496;5489:12;5451:52;5522:29;5541:9;5522:29;:::i;:::-;5512:39;;5602:2;5591:9;5587:18;5574:32;5629:18;5621:6;5618:30;5615:50;;;5661:1;5658;5651:12;5615:50;5700:70;5762:7;5753:6;5742:9;5738:22;5700:70;:::i;:::-;5789:8;;-1:-1:-1;5674:96:1;-1:-1:-1;;5877:2:1;5862:18;;5849:32;5906:18;5893:32;;5890:52;;;5938:1;5935;5928:12;5890:52;5977:72;6041:7;6030:8;6019:9;6015:24;5977:72;:::i;:::-;5267:842;;;;-1:-1:-1;5267:842:1;;-1:-1:-1;6068:8:1;;5951:98;5267:842;-1:-1:-1;;;5267:842:1:o;6114:226::-;6173:6;6226:2;6214:9;6205:7;6201:23;6197:32;6194:52;;;6242:1;6239;6232:12;6194:52;-1:-1:-1;6287:23:1;;6114:226;-1:-1:-1;6114:226:1:o;6345:260::-;6413:6;6421;6474:2;6462:9;6453:7;6449:23;6445:32;6442:52;;;6490:1;6487;6480:12;6442:52;6513:29;6532:9;6513:29;:::i;:::-;6503:39;;6561:38;6595:2;6584:9;6580:18;6561:38;:::i;:::-;6551:48;;6345:260;;;;;:::o;6836:356::-;7038:2;7020:21;;;7057:18;;;7050:30;7116:34;7111:2;7096:18;;7089:62;7183:2;7168:18;;6836:356::o;7960:127::-;8021:10;8016:3;8012:20;8009:1;8002:31;8052:4;8049:1;8042:15;8076:4;8073:1;8066:15;8092:217;8132:1;8158;8148:132;;8202:10;8197:3;8193:20;8190:1;8183:31;8237:4;8234:1;8227:15;8265:4;8262:1;8255:15;8148:132;-1:-1:-1;8294:9:1;;8092:217::o;8672:168::-;8745:9;;;8776;;8793:15;;;8787:22;;8773:37;8763:71;;8814:18;;:::i;9668:127::-;9729:10;9724:3;9720:20;9717:1;9710:31;9760:4;9757:1;9750:15;9784:4;9781:1;9774:15;9800:125;9865:9;;;9886:10;;;9883:36;;;9899:18;;:::i;10695:230::-;10765:6;10818:2;10806:9;10797:7;10793:23;10789:32;10786:52;;;10834:1;10831;10824:12;10786:52;-1:-1:-1;10879:16:1;;10695:230;-1:-1:-1;10695:230:1:o;11209:245::-;11276:6;11329:2;11317:9;11308:7;11304:23;11300:32;11297:52;;;11345:1;11342;11335:12;11297:52;11377:9;11371:16;11396:28;11418:5;11396:28;:::i;11866:128::-;11933:9;;;11954:11;;;11951:37;;;11968:18;;:::i;14360:959::-;14622:4;14670:3;14659:9;14655:19;14701:6;14690:9;14683:25;14744:6;14739:2;14728:9;14724:18;14717:34;14787:3;14782:2;14771:9;14767:18;14760:31;14811:6;14846;14840:13;14877:6;14869;14862:22;14915:3;14904:9;14900:19;14893:26;;14954:2;14946:6;14942:15;14928:29;;14975:1;14985:195;14999:6;14996:1;14993:13;14985:195;;;15064:13;;-1:-1:-1;;;;;15060:39:1;15048:52;;15129:2;15155:15;;;;15120:12;;;;15096:1;15014:9;14985:195;;;-1:-1:-1;;;;;;;15236:32:1;;;;15231:2;15216:18;;15209:60;-1:-1:-1;;15300:3:1;15285:19;15278:35;15197:3;14360:959;-1:-1:-1;;;14360:959:1:o;16142:456::-;16230:6;16238;16246;16299:2;16287:9;16278:7;16274:23;16270:32;16267:52;;;16315:1;16312;16305:12;16267:52;-1:-1:-1;;16360:16:1;;16466:2;16451:18;;16445:25;16562:2;16547:18;;;16541:25;16360:16;;16445:25;;-1:-1:-1;16541:25:1;16142:456;-1:-1:-1;16142:456:1:o

Swarm Source

ipfs://5d3c1e2ade1b8bea72c32e359bd9fca7b3dffb4dd72c58a12419a959d2fd21b0

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  ]
[ 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.