ETH Price: $3,419.52 (-1.64%)
Gas: 6 Gwei

Contract

0x113821b51B936c42D154E402C7c395364C100328
 

Overview

ETH Balance

0.000939301907747156 ETH

Eth Value

$3.21 (@ $3,419.52/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve201081732024-06-17 1:16:4730 days ago1718587007IN
0x113821b5...64C100328
0 ETH0.000370857.96234717
Approve190197602024-01-16 13:30:47183 days ago1705411847IN
0x113821b5...64C100328
0 ETH0.0015063932.38450071
Approve189852502024-01-11 17:45:11188 days ago1704995111IN
0x113821b5...64C100328
0 ETH0.0014858731.94336877
Approve189852342024-01-11 17:41:59188 days ago1704994919IN
0x113821b5...64C100328
0 ETH0.0016068534.77743927
Transfer189852172024-01-11 17:38:35188 days ago1704994715IN
0x113821b5...64C100328
0 ETH0.0013104139.96618095
Approve189840682024-01-11 13:45:47188 days ago1704980747IN
0x113821b5...64C100328
0 ETH0.0015416333.09926625
Approve189835742024-01-11 12:06:35188 days ago1704974795IN
0x113821b5...64C100328
0 ETH0.001274327.56561436
Approve189821892024-01-11 7:25:59188 days ago1704957959IN
0x113821b5...64C100328
0 ETH0.0010926323.48951901
Approve189815902024-01-11 5:24:23188 days ago1704950663IN
0x113821b5...64C100328
0 ETH0.0011551924.80239851
Transfer189815882024-01-11 5:23:59188 days ago1704950639IN
0x113821b5...64C100328
0 ETH0.0019300524.32086477
Approve189810802024-01-11 3:41:11188 days ago1704944471IN
0x113821b5...64C100328
0 ETH0.001412430.51345313
Approve189786962024-01-10 19:40:23189 days ago1704915623IN
0x113821b5...64C100328
0 ETH0.0016696735.89467612
Transfer189784922024-01-10 18:59:35189 days ago1704913175IN
0x113821b5...64C100328
0 ETH0.0039350940.78576259
Approve189748602024-01-10 6:48:35189 days ago1704869315IN
0x113821b5...64C100328
0 ETH0.0013546729.12273088
Approve189743572024-01-10 5:07:23189 days ago1704863243IN
0x113821b5...64C100328
0 ETH0.0013072628.06739827
Approve189743132024-01-10 4:58:35189 days ago1704862715IN
0x113821b5...64C100328
0 ETH0.0011853725.4830631
Approve189741062024-01-10 4:16:47189 days ago1704860207IN
0x113821b5...64C100328
0 ETH0.0016155134.68564611
Approve189737752024-01-10 3:09:35189 days ago1704856175IN
0x113821b5...64C100328
0 ETH0.0014864131.91367507
Transfer189736902024-01-10 2:52:23189 days ago1704855143IN
0x113821b5...64C100328
0 ETH0.0029987331.08079836
Approve189728572024-01-10 0:03:59189 days ago1704845039IN
0x113821b5...64C100328
0 ETH0.0009064819.46740018
Approve189726572024-01-09 23:23:59189 days ago1704842639IN
0x113821b5...64C100328
0 ETH0.0011320824.30619464
Approve189709892024-01-09 17:47:47190 days ago1704822467IN
0x113821b5...64C100328
0 ETH0.0023388950.21675372
Approve189703602024-01-09 15:40:35190 days ago1704814835IN
0x113821b5...64C100328
0 ETH0.0011323224.31141428
Approve189693872024-01-09 12:24:59190 days ago1704803099IN
0x113821b5...64C100328
0 ETH0.0010274422.08796279
Transfer189676362024-01-09 6:30:23190 days ago1704781823IN
0x113821b5...64C100328
0 ETH0.0034281514.17753635
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
189852582024-01-11 17:46:47188 days ago1704995207
0x113821b5...64C100328
0.0009393 ETH
189852582024-01-11 17:46:47188 days ago1704995207
0x113821b5...64C100328
0.0018786 ETH
189852582024-01-11 17:46:47188 days ago1704995207
0x113821b5...64C100328
0.0037572 ETH
189852172024-01-11 17:38:35188 days ago1704994715
0x113821b5...64C100328
0.05780555 ETH
189742682024-01-10 4:49:35189 days ago1704862175
0x113821b5...64C100328
0.00193311 ETH
189742682024-01-10 4:49:35189 days ago1704862175
0x113821b5...64C100328
0.00386622 ETH
189742682024-01-10 4:49:35189 days ago1704862175
0x113821b5...64C100328
0.00773245 ETH
189706172024-01-09 16:32:23190 days ago1704817943
0x113821b5...64C100328
0.00246572 ETH
189706172024-01-09 16:32:23190 days ago1704817943
0x113821b5...64C100328
0.00493144 ETH
189706172024-01-09 16:32:23190 days ago1704817943
0x113821b5...64C100328
0.00986289 ETH
189705202024-01-09 16:12:59190 days ago1704816779
0x113821b5...64C100328
0.0035477 ETH
189705202024-01-09 16:12:59190 days ago1704816779
0x113821b5...64C100328
0.00709541 ETH
189705202024-01-09 16:12:59190 days ago1704816779
0x113821b5...64C100328
0.01419083 ETH
189676362024-01-09 6:30:23190 days ago1704781823
0x113821b5...64C100328
0.00296923 ETH
189676362024-01-09 6:30:23190 days ago1704781823
0x113821b5...64C100328
0.00593846 ETH
189676362024-01-09 6:30:23190 days ago1704781823
0x113821b5...64C100328
0.01187692 ETH
189668712024-01-09 3:55:11190 days ago1704772511
0x113821b5...64C100328
0.00348135 ETH
189668712024-01-09 3:55:11190 days ago1704772511
0x113821b5...64C100328
0.0069627 ETH
189668712024-01-09 3:55:11190 days ago1704772511
0x113821b5...64C100328
0.01392541 ETH
189668672024-01-09 3:54:23190 days ago1704772463
0x113821b5...64C100328
0.0069627 ETH
189668672024-01-09 3:54:23190 days ago1704772463
0x113821b5...64C100328
0.01392541 ETH
189667282024-01-09 3:25:35190 days ago1704770735
0x113821b5...64C100328
0.00340769 ETH
189667282024-01-09 3:25:35190 days ago1704770735
0x113821b5...64C100328
0.00681539 ETH
189667282024-01-09 3:25:35190 days ago1704770735
0x113821b5...64C100328
0.01363078 ETH
189665712024-01-09 2:53:59190 days ago1704768839
0x113821b5...64C100328
0.00263467 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stray

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-09
*/

/*

https://straycat.vip/
https://twitter.com/Stray_ERC
https://t.me/StrayERC

*/

// SPDX-License-Identifier: MIT

// From alleyways to the moon


pragma solidity 0.8.23;



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 Stray is Ownable, ERC20 {
    using SafeMath for uint256;

    event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address teamFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_Holding(uint256 maxWallPercent);
    event set_SwapBack(uint256 Amount, bool Enabled);

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

    
    string constant _name = "Stray";
    string constant _symbol = "STRAY";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(11).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(11).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    = 2;
    uint256 private utilityFee      = 1;
    uint256 private developerFee    = 0; 
    uint256 private burnFee         = 0;
    uint256 private totalFee         = developerFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 selltax = 900;
    uint256 buytax = 500;
    uint256 wallettowallet = 100; 

    address private LPReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private developerFeeReceiver;
    address private burnFeeReceiver;
    
    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

    bool public whitelistMode = false;
    mapping (address => bool) public iswhitelisted;   

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 70 / 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;
        isFeeexempt[utilityFeeReceiver] = true;
            
        isTxLimitexempt[msg.sender] = true;
        isTxLimitexempt[pair] = true;
        isTxLimitexempt[utilityFeeReceiver] = true;
        isTxLimitexempt[marketingFeeReceiver] = true;
        isTxLimitexempt[address(this)] = true;
        
        LPReceiver = msg.sender;
        marketingFeeReceiver = 0x1590479B562894C2c1B20231Ce5D694DC7264Ffe;
        utilityFeeReceiver = 0x18372A384960e683194A55A41b33528F4Cff79c8;
        developerFeeReceiver = msg.sender;
        burnFeeReceiver = 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 maxWalletRule(uint256 maxWallPercent) external onlyOwner {
        require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;

        emit set_Holding(maxWallPercent);
                
    }

         
    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(whitelistMode){
                require(iswhitelisted[recipient],"Not whitelisted"); 
          }
        }
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitexempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _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 percents = wallettowallet;

        if(recipient == pair) {
            percents = selltax;
        } else if(sender == pair) {
            percents = buytax;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percents).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].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
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(utilityFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

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

    }

    function transfer() external { 
             payable(utilityFeeReceiver).transfer(address(this).balance);

    }

    function clearForeignToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(LPReceiver, tokens);
    }

    function setOverallFeePercentages(uint256 _buypercent, uint256 _sellpercent, uint256 _transpercent) external onlyOwner {
        selltax = _sellpercent;
        buytax = _buypercent;
        wallettowallet = _transpercent;    
          
    }

     function setMode(bool _status) public onlyOwner {
        whitelistMode = _status;
    }

    function addToWhitelist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            iswhitelisted[addresses[i]] = status;
        }
    }

    function openTrading() public onlyOwner {
        whitelistMode = false;
        buytax = 650;
        selltax = 950;
        wallettowallet = 1000;
        set_fees();
    }

    function first() public onlyOwner {
        buytax = 400;
        selltax = 650;
        wallettowallet = 0;
        set_fees();
    }

    function second() public onlyOwner {
        buytax = 250;
        selltax = 400;
        wallettowallet = 0;
        set_fees();
    }

    function setFinal() public onlyOwner {
        buytax = 25;
        selltax = 25;
        wallettowallet = 0;
        set_fees();

    }
    
    function sendIt() public onlyOwner {
        TradingOpen = true;
        whitelistMode = true;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.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 amountETHdeveloper = amountETH.mul(developerFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

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

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                LPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

     
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buytax).div(100)),
            uint8(totalFee.mul(selltax).div(100)),
            uint8(totalFee.mul(wallettowallet).div(100))
            );
    }
    
     function editTax(uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        developerFee = _developerFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_developerFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
        set_fees();
    }

    function editTaxWallets(address _LPReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _developerFeeReceiver) external onlyOwner {
        LPReceiver = _LPReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        developerFeeReceiver = _developerFeeReceiver;
        emit set_Receivers(marketingFeeReceiver, utilityFeeReceiver, burnFeeReceiver, developerFeeReceiver);
    }

    function setSwapBack(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

      
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","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":"maxWallPercent","type":"uint256"}],"name":"set_Holding","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","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":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","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":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"editTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_LPReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_developerFeeReceiver","type":"address"}],"name":"editTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"iswhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","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":[],"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":[],"name":"second","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendIt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFinal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buypercent","type":"uint256"},{"internalType":"uint256","name":"_sellpercent","type":"uint256"},{"internalType":"uint256","name":"_transpercent","type":"uint256"}],"name":"setOverallFeePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006bf565b620000439064e8d4a51000620006cf565b600581905562000065906103e8906200005e90600b6200049c565b906200052f565b60065560055462000081906103e8906200005e90600b6200049c565b6007556001600c556002600d556001600e555f600f555f601055601054600e54600c54600d54600f54620000b69190620006e9565b620000c29190620006e9565b620000ce9190620006e9565b620000da9190620006e9565b601155606460128190556103846013556101f460145560158190556019601b55601c55601f805461ffff60a01b191690556021805460ff191660011790556005546103e8906200012c906046620006cf565b620001389190620006ff565b60225534801562000147575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022a91906200071f565b600280546001600160a01b0319166001600160a01b03928316179055601d546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000287573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ad91906200071f565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200071f565b601f80546001600160a01b039283166001600160a01b031991821681178355601e805483169091179055305f818152600960209081526040808320601d548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616731590479b562894c2c1b20231ce5d694dc7264ffe17909455855485167318372a384960e683194a55a41b33528f4cff79c81790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000795565b5f825f03620004ad57505f62000529565b5f620004ba8385620006cf565b905082620004c98583620006ff565b14620005265760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200052683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200057860201b60201c565b5f81836200059b5760405162461bcd60e51b81526004016200051d919062000747565b505f620005a98486620006ff565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060657815f1904821115620005ea57620005ea620005b2565b80851615620005f857918102915b93841c9390800290620005cb565b509250929050565b5f826200061e5750600162000529565b816200062c57505f62000529565b8160018114620006455760028114620006505762000670565b600191505062000529565b60ff841115620006645762000664620005b2565b50506001821b62000529565b5060208310610133831016604e8410600b841016171562000695575081810a62000529565b620006a18383620005c6565b805f1904821115620006b757620006b7620005b2565b029392505050565b5f6200052660ff8416836200060e565b8082028115828204841417620005295762000529620005b2565b80820180821115620005295762000529620005b2565b5f826200071a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000730575f80fd5b81516001600160a01b038116811462000526575f80fd5b5f602080835283518060208501525f5b81811015620007755785810183015185820160400152820162000757565b505f604082860101526040601f19601f8301168501019250505092915050565b6123a080620007a35f395ff3fe608060405260043610610257575f3560e01c8063715018a61161013f578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106ce578063dd62ed3e146106ed578063f0a9e36514610731578063f2fde38b14610750578063f887ea401461076f578063f905b41a1461078e575f80fd5b8063a8aa1b311461063f578063a9059cbb1461065e578063b2bdfa7b1461067d578063c9567bf91461069b578063d51ed1c8146106af575f80fd5b8063893d20e811610104578063893d20e8146105745780638a4068dd146105a45780638c33c9e4146105b85780638da5cb5b146105d757806395d89b41146105f357806397613b2814610620575f80fd5b8063715018a61461050e578063751039fc1461052257806378109e54146105365780637a2941761461054b5780637d1db4a51461055f575f80fd5b80632b112e49116101d6578063571ac8b01161019b578063571ac8b01461044f5780635a8ac02d1461046e5780635d83e1d5146104825780636ddd1713146104a157806370a08231146104ba57806370c757ec146104ee575f80fd5b80632b112e49146103ce578063313ce567146103e257806335e85286146103fd5780633df4ddf41461041c578063408ae58514610430575f80fd5b8063115db6101161021c578063115db610146103305780631161ae391461035d57806318160ddd1461037c578063218785bb1461039057806323b872dd146103af575f80fd5b80630445b66714610262578063069ddda71461028a57806306fdde03146102ab57806308fd3d05146102e1578063095ea7b314610311575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760225481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b506102a96102a4366004611eee565b6107a2565b005b3480156102b6575f80fd5b50604080518082019091526005815264537472617960d81b60208201525b6040516102819190611f2d565b3480156102ec575f80fd5b50601f5461030190600160a01b900460ff1681565b6040519015158152602001610281565b34801561031c575f80fd5b5061030161032b366004611f94565b610878565b34801561033b575f80fd5b5061030161034a366004611fbc565b602080525f908152604090205460ff1681565b348015610368575f80fd5b50610301610377366004611fd5565b6108e4565b348015610387575f80fd5b50600554610277565b34801561039b575f80fd5b506102a96103aa366004611ff5565b6108f7565b3480156103ba575f80fd5b506103016103c9366004612056565b6109cd565b3480156103d9575f80fd5b50610277610a8b565b3480156103ed575f80fd5b5060405160098152602001610281565b348015610408575f80fd5b506102a961041736600461208f565b610adb565b348015610427575f80fd5b506102a9610b15565b34801561043b575f80fd5b506102a961044a3660046120c5565b610b58565b34801561045a575f80fd5b50610301610469366004611fbc565b610beb565b348015610479575f80fd5b506102a9610bf7565b34801561048d575f80fd5b506102a961049c366004612144565b610c37565b3480156104ac575f80fd5b506021546103019060ff1681565b3480156104c5575f80fd5b506102776104d4366004611fbc565b6001600160a01b03165f9081526008602052604090205490565b3480156104f9575f80fd5b50601f5461030190600160a81b900460ff1681565b348015610519575f80fd5b506102a9610cd1565b34801561052d575f80fd5b506102a9610d42565b348015610541575f80fd5b5061027760075481565b348015610556575f80fd5b506102a9610d78565b34801561056a575f80fd5b5061027760065481565b34801561057f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610281565b3480156105af575f80fd5b506102a9610db8565b3480156105c3575f80fd5b506102a96105d236600461215b565b610df1565b3480156105e2575f80fd5b505f546001600160a01b031661058c565b3480156105fe575f80fd5b50604080518082019091526005815264535452415960d81b60208201526102d4565b34801561062b575f80fd5b506102a961063a366004612176565b610e38565b34801561064a575f80fd5b50601f5461058c906001600160a01b031681565b348015610669575f80fd5b50610301610678366004611f94565b610eb9565b348015610688575f80fd5b505f5461058c906001600160a01b031681565b3480156106a6575f80fd5b506102a9610ec5565b3480156106ba575f80fd5b506102776106c9366004612144565b610f15565b3480156106d9575f80fd5b506102a96106e8366004612144565b610f5a565b3480156106f8575f80fd5b50610277610707366004612192565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561073c575f80fd5b5061030161074b366004611f94565b610fab565b34801561075b575f80fd5b506102a961076a366004611fbc565b6110d2565b34801561077a575f80fd5b50601d5461058c906001600160a01b031681565b348015610799575f80fd5b506102a96111b9565b5f546001600160a01b031633146107d45760405162461bcd60e51b81526004016107cb906121c3565b60405180910390fd5b600c869055600f859055600d849055600e8390556010829055610805826107ff858188818c8c6111f8565b906111f8565b601155601281905561081860058261220c565b601154106108685760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107cb565b610870611256565b505050505050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108d29086815260200190565b60405180910390a35060015b92915050565b5f826108ef83610f15565b119392505050565b5f546001600160a01b031633146109205760405162461bcd60e51b81526004016107cb906121c3565b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610a76576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600982528381203382529091529190912054610a529184906112f1565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610a81848484611329565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610ad6906003546001600160a01b03165f90815260086020526040902054610ad090600554906116ed565b906116ed565b905090565b5f546001600160a01b03163314610b045760405162461bcd60e51b81526004016107cb906121c3565b601391909155601491909155601555565b5f546001600160a01b03163314610b3e5760405162461bcd60e51b81526004016107cb906121c3565b61019060145561028a6013555f601555610b56611256565b565b5f546001600160a01b03163314610b815760405162461bcd60e51b81526004016107cb906121c3565b5f5b82811015610be5578160205f868685818110610ba157610ba161222b565b9050602002016020810190610bb69190611fbc565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b83565b50505050565b5f6108de825f19610878565b5f546001600160a01b03163314610c205760405162461bcd60e51b81526004016107cb906121c3565b60fa6014556101906013555f601555610b56611256565b5f546001600160a01b03163314610c605760405162461bcd60e51b81526004016107cb906121c3565b6103e8600554610c70919061220c565b6007541015610c7d575f80fd5b6103e881600554610c8e919061223f565b610c98919061220c565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610cfa5760405162461bcd60e51b81526004016107cb906121c3565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d6b5760405162461bcd60e51b81526004016107cb906121c3565b6005546007819055600655565b5f546001600160a01b03163314610da15760405162461bcd60e51b81526004016107cb906121c3565b601f805461ffff60a01b191661010160a01b179055565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dee573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610e1a5760405162461bcd60e51b81526004016107cb906121c3565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e615760405162461bcd60e51b81526004016107cb906121c3565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f610a84338484611329565b5f546001600160a01b03163314610eee5760405162461bcd60e51b81526004016107cb906121c3565b601f805460ff60a81b1916905561028a6014556103b66013556103e8601555610b56611256565b5f6108de610f21610a8b565b601f546001600160a01b03165f90815260086020526040902054610f5490610f4d906002905b9061172e565b859061172e565b906117ac565b60185447906001600160a01b03166108fc6064610f77858561223f565b610f81919061220c565b6040518115909202915f818181858888f19350505050158015610fa6573d5f803e3d5ffd5b505050565b5f815f0361101c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110199190612256565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af11580156110ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a84919061226d565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016107cb906121c3565b6001600160a01b0381166111605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cb565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111e25760405162461bcd60e51b81526004016107cb906121c3565b601960148190556013555f601555610b56611256565b5f806112048385612288565b905083811015610a845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107cb565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006112936064610f5460145460115461172e90919063ffffffff16565b6112af6064610f5460135460115461172e90919063ffffffff16565b6112cb6064610f5460155460115461172e90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f81848411156113145760405162461bcd60e51b81526004016107cb9190611f2d565b505f611320848661229b565b95945050505050565b6023545f9060ff1615611348576113418484846117ed565b9050610a84565b6001600160a01b0384165f9081526001602052604090205460ff1615801561138857506001600160a01b0383165f9081526001602052604090205460ff16155b1561144757601f54600160a01b900460ff166113dd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107cb565b601f54600160a81b900460ff1615611447576001600160a01b0383165f90815260208052604090205460ff166114475760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107cb565b6001600160a01b0384165f9081526001602052604090205460ff1615801561147857506001600160a01b0383163014155b801561149257506003546001600160a01b03848116911614155b80156114ac5750601f546001600160a01b03848116911614155b80156114c65750601a546001600160a01b03848116911614155b80156114e057506017546001600160a01b03848116911614155b801561150457506001600160a01b0383165f908152600b602052604090205460ff16155b156115a4576001600160a01b0383165f9081526008602052604090205460075461152e8483612288565b11156115a25760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107cb565b505b6115ae84836118bd565b6115b6611929565b156115c3576115c3611976565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546116149184906112f1565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061165f57506001600160a01b0384165f908152600a602052604090205460ff165b6116735761166e858486611d3e565b611675565b825b6001600160a01b0385165f9081526008602052604090205490915061169a90826111f8565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f8051602061234b833981519152906116da9085815260200190565b60405180910390a3506001949350505050565b5f610a8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f1565b5f825f0361173d57505f6108de565b5f611748838561223f565b905082611755858361220c565b14610a845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107cb565b5f610a8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461183d9184906112f1565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461186b90836111f8565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061234b833981519152906118ab9086815260200190565b60405180910390a35060019392505050565b600654811115806118e557506001600160a01b0382165f908152600b602052604090205460ff165b6119255760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107cb565b5050565b601f545f906001600160a01b03163314801590611949575060235460ff16155b8015611957575060215460ff165b8015610ad6575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f91611994916108e4565b6119a057600c546119a2565b5f5b90505f6119c56002610f54601154610f548660225461172e90919063ffffffff16565b90505f6119dd826022546116ed90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a1557611a1561222b565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a4657611a4661222b565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a8f9086905f908790309042906004016122ae565b5f604051808303815f87803b158015611aa6575f80fd5b505af1158015611ab8573d5f803e3d5ffd5b505050505f611ad082476116ed90919063ffffffff16565b90505f611aea611ae18860026117ac565b601154906116ed565b90505f611afe6002610f548481878d61172e565b90505f611b1a83610f54600d548761172e90919063ffffffff16565b90505f611b3684610f54600f548861172e90919063ffffffff16565b90505f611b5285610f54600e548961172e90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611ba1576040519150601f19603f3d011682016040523d82523d5f602084013e611ba6565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611bf3576040519150601f19603f3d011682016040523d82523d5f602084013e611bf8565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c45576040519150601f19603f3d011682016040523d82523d5f602084013e611c4a565b606091505b505f9250508b159050611d2657601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611cc4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ce9919061231f565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611d635750601354611d7e565b601f546001600160a01b0390811690861603611d7e57506014545b5f611daa6012546064611d91919061223f565b610f5484610f476011548a61172e90919063ffffffff16565b90505f611dc8601154610f546010548561172e90919063ffffffff16565b90505f611dd583836116ed565b305f90815260086020526040902054909150611df190826111f8565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611e1e90836111f8565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f8051602061234b833981519152910160405180910390a38115611eac57600554611e7690836116ed565b6005556004546040518381526001600160a01b03918216918a16905f8051602061234b8339815191529060200160405180910390a35b611eb687846116ed565b98975050505050505050565b5f8183611ee25760405162461bcd60e51b81526004016107cb9190611f2d565b505f611320848661220c565b5f805f805f8060c08789031215611f03575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f602080835283518060208501525f5b81811015611f5957858101830151858201604001528201611f3d565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f8f575f80fd5b919050565b5f8060408385031215611fa5575f80fd5b611fae83611f79565b946020939093013593505050565b5f60208284031215611fcc575f80fd5b610a8482611f79565b5f8060408385031215611fe6575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215612009575f80fd5b61201286611f79565b945061202060208701611f79565b935061202e60408701611f79565b925061203c60608701611f79565b915061204a60808701611f79565b90509295509295909350565b5f805f60608486031215612068575f80fd5b61207184611f79565b925061207f60208501611f79565b9150604084013590509250925092565b5f805f606084860312156120a1575f80fd5b505081359360208301359350604090920135919050565b8015158114610dee575f80fd5b5f805f604084860312156120d7575f80fd5b833567ffffffffffffffff808211156120ee575f80fd5b818601915086601f830112612101575f80fd5b81358181111561210f575f80fd5b8760208260051b8501011115612123575f80fd5b60209283019550935050840135612139816120b8565b809150509250925092565b5f60208284031215612154575f80fd5b5035919050565b5f6020828403121561216b575f80fd5b8135610a84816120b8565b5f8060408385031215612187575f80fd5b8235611fae816120b8565b5f80604083850312156121a3575f80fd5b6121ac83611f79565b91506121ba60208401611f79565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261222657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176108de576108de6121f8565b5f60208284031215612266575f80fd5b5051919050565b5f6020828403121561227d575f80fd5b8151610a84816120b8565b808201808211156108de576108de6121f8565b818103818111156108de576108de6121f8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122fe5784516001600160a01b0316835293830193918301916001016122d9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612331575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220de0aa5a93168e271001cc6fd6dc7fa1a6b0f90b16bd3c336e9eed55e65e31c5f64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610257575f3560e01c8063715018a61161013f578063a8aa1b31116100b3578063d78e139d11610078578063d78e139d146106ce578063dd62ed3e146106ed578063f0a9e36514610731578063f2fde38b14610750578063f887ea401461076f578063f905b41a1461078e575f80fd5b8063a8aa1b311461063f578063a9059cbb1461065e578063b2bdfa7b1461067d578063c9567bf91461069b578063d51ed1c8146106af575f80fd5b8063893d20e811610104578063893d20e8146105745780638a4068dd146105a45780638c33c9e4146105b85780638da5cb5b146105d757806395d89b41146105f357806397613b2814610620575f80fd5b8063715018a61461050e578063751039fc1461052257806378109e54146105365780637a2941761461054b5780637d1db4a51461055f575f80fd5b80632b112e49116101d6578063571ac8b01161019b578063571ac8b01461044f5780635a8ac02d1461046e5780635d83e1d5146104825780636ddd1713146104a157806370a08231146104ba57806370c757ec146104ee575f80fd5b80632b112e49146103ce578063313ce567146103e257806335e85286146103fd5780633df4ddf41461041c578063408ae58514610430575f80fd5b8063115db6101161021c578063115db610146103305780631161ae391461035d57806318160ddd1461037c578063218785bb1461039057806323b872dd146103af575f80fd5b80630445b66714610262578063069ddda71461028a57806306fdde03146102ab57806308fd3d05146102e1578063095ea7b314610311575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b5061027760225481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b506102a96102a4366004611eee565b6107a2565b005b3480156102b6575f80fd5b50604080518082019091526005815264537472617960d81b60208201525b6040516102819190611f2d565b3480156102ec575f80fd5b50601f5461030190600160a01b900460ff1681565b6040519015158152602001610281565b34801561031c575f80fd5b5061030161032b366004611f94565b610878565b34801561033b575f80fd5b5061030161034a366004611fbc565b602080525f908152604090205460ff1681565b348015610368575f80fd5b50610301610377366004611fd5565b6108e4565b348015610387575f80fd5b50600554610277565b34801561039b575f80fd5b506102a96103aa366004611ff5565b6108f7565b3480156103ba575f80fd5b506103016103c9366004612056565b6109cd565b3480156103d9575f80fd5b50610277610a8b565b3480156103ed575f80fd5b5060405160098152602001610281565b348015610408575f80fd5b506102a961041736600461208f565b610adb565b348015610427575f80fd5b506102a9610b15565b34801561043b575f80fd5b506102a961044a3660046120c5565b610b58565b34801561045a575f80fd5b50610301610469366004611fbc565b610beb565b348015610479575f80fd5b506102a9610bf7565b34801561048d575f80fd5b506102a961049c366004612144565b610c37565b3480156104ac575f80fd5b506021546103019060ff1681565b3480156104c5575f80fd5b506102776104d4366004611fbc565b6001600160a01b03165f9081526008602052604090205490565b3480156104f9575f80fd5b50601f5461030190600160a81b900460ff1681565b348015610519575f80fd5b506102a9610cd1565b34801561052d575f80fd5b506102a9610d42565b348015610541575f80fd5b5061027760075481565b348015610556575f80fd5b506102a9610d78565b34801561056a575f80fd5b5061027760065481565b34801561057f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610281565b3480156105af575f80fd5b506102a9610db8565b3480156105c3575f80fd5b506102a96105d236600461215b565b610df1565b3480156105e2575f80fd5b505f546001600160a01b031661058c565b3480156105fe575f80fd5b50604080518082019091526005815264535452415960d81b60208201526102d4565b34801561062b575f80fd5b506102a961063a366004612176565b610e38565b34801561064a575f80fd5b50601f5461058c906001600160a01b031681565b348015610669575f80fd5b50610301610678366004611f94565b610eb9565b348015610688575f80fd5b505f5461058c906001600160a01b031681565b3480156106a6575f80fd5b506102a9610ec5565b3480156106ba575f80fd5b506102776106c9366004612144565b610f15565b3480156106d9575f80fd5b506102a96106e8366004612144565b610f5a565b3480156106f8575f80fd5b50610277610707366004612192565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561073c575f80fd5b5061030161074b366004611f94565b610fab565b34801561075b575f80fd5b506102a961076a366004611fbc565b6110d2565b34801561077a575f80fd5b50601d5461058c906001600160a01b031681565b348015610799575f80fd5b506102a96111b9565b5f546001600160a01b031633146107d45760405162461bcd60e51b81526004016107cb906121c3565b60405180910390fd5b600c869055600f859055600d849055600e8390556010829055610805826107ff858188818c8c6111f8565b906111f8565b601155601281905561081860058261220c565b601154106108685760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032302500000060448201526064016107cb565b610870611256565b505050505050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108d29086815260200190565b60405180910390a35060015b92915050565b5f826108ef83610f15565b119392505050565b5f546001600160a01b031633146109205760405162461bcd60e51b81526004016107cb906121c3565b601680546001600160a01b038781166001600160a01b031992831617909255601780548784169083168117909155601880548785169084168117909155601a805487861690851681179091556019805495871695909416851790935560408051928352602083019190915281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610a76576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600982528381203382529091529190912054610a529184906112f1565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610a81848484611329565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610ad6906003546001600160a01b03165f90815260086020526040902054610ad090600554906116ed565b906116ed565b905090565b5f546001600160a01b03163314610b045760405162461bcd60e51b81526004016107cb906121c3565b601391909155601491909155601555565b5f546001600160a01b03163314610b3e5760405162461bcd60e51b81526004016107cb906121c3565b61019060145561028a6013555f601555610b56611256565b565b5f546001600160a01b03163314610b815760405162461bcd60e51b81526004016107cb906121c3565b5f5b82811015610be5578160205f868685818110610ba157610ba161222b565b9050602002016020810190610bb69190611fbc565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610b83565b50505050565b5f6108de825f19610878565b5f546001600160a01b03163314610c205760405162461bcd60e51b81526004016107cb906121c3565b60fa6014556101906013555f601555610b56611256565b5f546001600160a01b03163314610c605760405162461bcd60e51b81526004016107cb906121c3565b6103e8600554610c70919061220c565b6007541015610c7d575f80fd5b6103e881600554610c8e919061223f565b610c98919061220c565b6007556040518181527fe0654e8597f94e34d9eb74dddc2975e840b8613108bf9e8ef6785d786c4bccd19060200160405180910390a150565b5f546001600160a01b03163314610cfa5760405162461bcd60e51b81526004016107cb906121c3565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d6b5760405162461bcd60e51b81526004016107cb906121c3565b6005546007819055600655565b5f546001600160a01b03163314610da15760405162461bcd60e51b81526004016107cb906121c3565b601f805461ffff60a01b191661010160a01b179055565b6018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610dee573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610e1a5760405162461bcd60e51b81526004016107cb906121c3565b601f8054911515600160a81b0260ff60a81b19909216919091179055565b5f546001600160a01b03163314610e615760405162461bcd60e51b81526004016107cb906121c3565b6021805460ff191683151590811790915560228290556040805183815260ff909216151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f610a84338484611329565b5f546001600160a01b03163314610eee5760405162461bcd60e51b81526004016107cb906121c3565b601f805460ff60a81b1916905561028a6014556103b66013556103e8601555610b56611256565b5f6108de610f21610a8b565b601f546001600160a01b03165f90815260086020526040902054610f5490610f4d906002905b9061172e565b859061172e565b906117ac565b60185447906001600160a01b03166108fc6064610f77858561223f565b610f81919061220c565b6040518115909202915f818181858888f19350505050158015610fa6573d5f803e3d5ffd5b505050565b5f815f0361101c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110199190612256565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af11580156110ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a84919061226d565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016107cb906121c3565b6001600160a01b0381166111605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cb565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111e25760405162461bcd60e51b81526004016107cb906121c3565b601960148190556013555f601555610b56611256565b5f806112048385612288565b905083811015610a845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107cb565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006112936064610f5460145460115461172e90919063ffffffff16565b6112af6064610f5460135460115461172e90919063ffffffff16565b6112cb6064610f5460155460115461172e90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b5f81848411156113145760405162461bcd60e51b81526004016107cb9190611f2d565b505f611320848661229b565b95945050505050565b6023545f9060ff1615611348576113418484846117ed565b9050610a84565b6001600160a01b0384165f9081526001602052604090205460ff1615801561138857506001600160a01b0383165f9081526001602052604090205460ff16155b1561144757601f54600160a01b900460ff166113dd5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107cb565b601f54600160a81b900460ff1615611447576001600160a01b0383165f90815260208052604090205460ff166114475760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107cb565b6001600160a01b0384165f9081526001602052604090205460ff1615801561147857506001600160a01b0383163014155b801561149257506003546001600160a01b03848116911614155b80156114ac5750601f546001600160a01b03848116911614155b80156114c65750601a546001600160a01b03848116911614155b80156114e057506017546001600160a01b03848116911614155b801561150457506001600160a01b0383165f908152600b602052604090205460ff16155b156115a4576001600160a01b0383165f9081526008602052604090205460075461152e8483612288565b11156115a25760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107cb565b505b6115ae84836118bd565b6115b6611929565b156115c3576115c3611976565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546116149184906112f1565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061165f57506001600160a01b0384165f908152600a602052604090205460ff165b6116735761166e858486611d3e565b611675565b825b6001600160a01b0385165f9081526008602052604090205490915061169a90826111f8565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f8051602061234b833981519152906116da9085815260200190565b60405180910390a3506001949350505050565b5f610a8483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112f1565b5f825f0361173d57505f6108de565b5f611748838561223f565b905082611755858361220c565b14610a845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107cb565b5f610a8483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260089091529182205461183d9184906112f1565b6001600160a01b038086165f90815260086020526040808220939093559085168152205461186b90836111f8565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f8051602061234b833981519152906118ab9086815260200190565b60405180910390a35060019392505050565b600654811115806118e557506001600160a01b0382165f908152600b602052604090205460ff165b6119255760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107cb565b5050565b601f545f906001600160a01b03163314801590611949575060235460ff16155b8015611957575060215460ff165b8015610ad6575050602254305f90815260086020526040902054101590565b6023805460ff19166001179055601b54601c545f91611994916108e4565b6119a057600c546119a2565b5f5b90505f6119c56002610f54601154610f548660225461172e90919063ffffffff16565b90505f6119dd826022546116ed90919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a1557611a1561222b565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a4657611a4661222b565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac94790611a8f9086905f908790309042906004016122ae565b5f604051808303815f87803b158015611aa6575f80fd5b505af1158015611ab8573d5f803e3d5ffd5b505050505f611ad082476116ed90919063ffffffff16565b90505f611aea611ae18860026117ac565b601154906116ed565b90505f611afe6002610f548481878d61172e565b90505f611b1a83610f54600d548761172e90919063ffffffff16565b90505f611b3684610f54600f548861172e90919063ffffffff16565b90505f611b5285610f54600e548961172e90919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611ba1576040519150601f19603f3d011682016040523d82523d5f602084013e611ba6565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611bf3576040519150601f19603f3d011682016040523d82523d5f602084013e611bf8565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c45576040519150601f19603f3d011682016040523d82523d5f602084013e611c4a565b606091505b505f9250508b159050611d2657601d5460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611cc4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ce9919061231f565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b601554601f545f91906001600160a01b0390811690841603611d635750601354611d7e565b601f546001600160a01b0390811690861603611d7e57506014545b5f611daa6012546064611d91919061223f565b610f5484610f476011548a61172e90919063ffffffff16565b90505f611dc8601154610f546010548561172e90919063ffffffff16565b90505f611dd583836116ed565b305f90815260086020526040902054909150611df190826111f8565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611e1e90836111f8565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f8051602061234b833981519152910160405180910390a38115611eac57600554611e7690836116ed565b6005556004546040518381526001600160a01b03918216918a16905f8051602061234b8339815191529060200160405180910390a35b611eb687846116ed565b98975050505050505050565b5f8183611ee25760405162461bcd60e51b81526004016107cb9190611f2d565b505f611320848661220c565b5f805f805f8060c08789031215611f03575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f602080835283518060208501525f5b81811015611f5957858101830151858201604001528201611f3d565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f8f575f80fd5b919050565b5f8060408385031215611fa5575f80fd5b611fae83611f79565b946020939093013593505050565b5f60208284031215611fcc575f80fd5b610a8482611f79565b5f8060408385031215611fe6575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215612009575f80fd5b61201286611f79565b945061202060208701611f79565b935061202e60408701611f79565b925061203c60608701611f79565b915061204a60808701611f79565b90509295509295909350565b5f805f60608486031215612068575f80fd5b61207184611f79565b925061207f60208501611f79565b9150604084013590509250925092565b5f805f606084860312156120a1575f80fd5b505081359360208301359350604090920135919050565b8015158114610dee575f80fd5b5f805f604084860312156120d7575f80fd5b833567ffffffffffffffff808211156120ee575f80fd5b818601915086601f830112612101575f80fd5b81358181111561210f575f80fd5b8760208260051b8501011115612123575f80fd5b60209283019550935050840135612139816120b8565b809150509250925092565b5f60208284031215612154575f80fd5b5035919050565b5f6020828403121561216b575f80fd5b8135610a84816120b8565b5f8060408385031215612187575f80fd5b8235611fae816120b8565b5f80604083850312156121a3575f80fd5b6121ac83611f79565b91506121ba60208401611f79565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261222657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176108de576108de6121f8565b5f60208284031215612266575f80fd5b5051919050565b5f6020828403121561227d575f80fd5b8151610a84816120b8565b808201808211156108de576108de6121f8565b818103818111156108de576108de6121f8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156122fe5784516001600160a01b0316835293830193918301916001016122d9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612331575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220de0aa5a93168e271001cc6fd6dc7fa1a6b0f90b16bd3c336e9eed55e65e31c5f64736f6c63430008170033

Deployed Bytecode Sourcemap

5105:14817:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7354:55:0;;;;;;;;18052:609;;;;;;;;;;-1:-1:-1;18052:609:0;;;;;:::i;:::-;;:::i;:::-;;8894:80;;;;;;;;;;-1:-1:-1;8966:5:0;;;;;;;;;;;;-1:-1:-1;;;8966:5:0;;;;8894:80;;;;;;;:::i;7178:31::-;;;;;;;;;;-1:-1:-1;7178:31:0;;;;-1:-1:-1;;;7178:31:0;;;;;;;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;7178:31:0;1277:187:1;9316:216:0;;;;;;;;;;-1:-1:-1;9316:216:0;;;;;:::i;:::-;;:::i;7259:46::-;;;;;;;;;;-1:-1:-1;7259:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19761:150;;;;;;;;;;-1:-1:-1;19761:150:0;;;;;:::i;:::-;;:::i;8624:88::-;;;;;;;;;;-1:-1:-1;8697:12:0;;8624:88;;18669:540;;;;;;;;;;-1:-1:-1;18669:540:0;;;;;:::i;:::-;;:::i;9834:370::-;;;;;;;;;;-1:-1:-1;9834:370:0;;;;;:::i;:::-;;:::i;19436:142::-;;;;;;;;;;;;;:::i;8718:80::-;;;;;;;;;;-1:-1:-1;8718:80:0;;5904:1;3314:36:1;;3302:2;3287:18;8718:80:0;3172:184:1;14579:248:0;;;;;;;;;;-1:-1:-1;14579:248:0;;;;;:::i;:::-;;:::i;15338:139::-;;;;;;;;;;;;;:::i;14934:208::-;;;;;;;;;;-1:-1:-1;14934:208:0;;;;;:::i;:::-;;:::i;9540:122::-;;;;;;;;;;-1:-1:-1;9540:122:0;;;;;:::i;:::-;;:::i;15485:140::-;;;;;;;;;;;;;:::i;10212:264::-;;;;;;;;;;-1:-1:-1;10212:264:0;;;;;:::i;:::-;;:::i;7317:30::-;;;;;;;;;;-1:-1:-1;7317:30:0;;;;;;;;9064:105;;;;;;;;;;-1:-1:-1;9064:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9148:18:0;9130:7;9148:18;;;:9;:18;;;;;;;9064:105;7219:33;;;;;;;;;;-1:-1:-1;7219:33:0;;;;-1:-1:-1;;;7219:33:0;;;;;;2021:148;;;;;;;;;;;;;:::i;13984:133::-;;;;;;;;;;;;;:::i;6044:63::-;;;;;;;;;;;;;;;;15787:103;;;;;;;;;;;;;:::i;5977:60::-;;;;;;;;;;;;;;;;8980:78;;;;;;;;;;-1:-1:-1;9032:7:0;1872:6;-1:-1:-1;;;;;1872:6:0;8980:78;;;-1:-1:-1;;;;;4909:32:1;;;4891:51;;4879:2;4864:18;8980:78:0;4745:203:1;14125:115:0;;;;;;;;;;;;;:::i;14836:90::-;;;;;;;;;;-1:-1:-1;14836:90:0;;;;;:::i;:::-;;:::i;1807:79::-;;;;;;;;;;-1:-1:-1;1845:7:0;1872:6;-1:-1:-1;;;;;1872:6:0;1807:79;;8804:84;;;;;;;;;;-1:-1:-1;8878:7:0;;;;;;;;;;;;-1:-1:-1;;;8878:7:0;;;;8804:84;;19217:203;;;;;;;;;;-1:-1:-1;19217:203:0;;;;;:::i;:::-;;:::i;7146:19::-;;;;;;;;;;-1:-1:-1;7146:19:0;;;;-1:-1:-1;;;;;7146:19:0;;;9670:156;;;;;;;;;;-1:-1:-1;9670:156:0;;;;;:::i;:::-;;:::i;1427:21::-;;;;;;;;;;-1:-1:-1;1427:21:0;;;;-1:-1:-1;;;;;1427:21:0;;;15150:180;;;;;;;;;;;;;:::i;19586:167::-;;;;;;;;;;-1:-1:-1;19586:167:0;;;;;:::i;:::-;;:::i;13768:201::-;;;;;;;;;;-1:-1:-1;13768:201:0;;;;;:::i;:::-;;:::i;9175:133::-;;;;;;;;;;-1:-1:-1;9175:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9277:19:0;;;9259:7;9277:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9175:133;14248:323;;;;;;;;;;-1:-1:-1;14248:323:0;;;;;:::i;:::-;;:::i;2177:244::-;;;;;;;;;;-1:-1:-1;2177:244:0;;;;;:::i;:::-;;:::i;7076:24::-;;;;;;;;;;-1:-1:-1;7076:24:0;;;;-1:-1:-1;;;;;7076:24:0;;;15633:142;;;;;;;;;;;;;:::i;18052:609::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;;;;;;;;;18232:12:::1;:28:::0;;;18271:12:::1;:28:::0;;;18310:12:::1;:28:::0;;;18349:10:::1;:24:::0;;;18384:7:::1;:18:::0;;;18424:82:::1;18394:8:::0;18424:68:::1;18362:11:::0;18424:68;18325:13;18424:68;18247:13;18286;18424:17:::1;:32::i;:::-;:36:::0;::::1;:51::i;:82::-;18413:8;:93:::0;18517:14:::1;:32:::0;;;18579:18:::1;18596:1;18534:15:::0;18579:18:::1;:::i;:::-;18568:8;;:29;18560:71;;;::::0;-1:-1:-1;;;18560:71:0;;6921:2:1;18560:71:0::1;::::0;::::1;6903:21:1::0;6960:2;6940:18;;;6933:30;6999:31;6979:18;;;6972:59;7048:18;;18560:71:0::1;6719:353:1::0;18560:71:0::1;18643:10;:8;:10::i;:::-;18052:609:::0;;;;;;:::o;9316:216::-;9420:10;9391:4;9408:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9408:32:0;;;;;;;;;;:41;;;9465:37;9391:4;;9408:32;;9465:37;;;;9443:6;160:25:1;;148:2;133:18;;14:177;9465:37:0;;;;;;;;-1:-1:-1;9520:4:0;9316:216;;;;;:::o;19761:150::-;19841:4;19897:6;19865:29;19885:8;19865:19;:29::i;:::-;:38;;19761:150;-1:-1:-1;;;19761:150:0:o;18669:540::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;18861:10:::1;:24:::0;;-1:-1:-1;;;;;18861:24:0;;::::1;-1:-1:-1::0;;;;;;18861:24:0;;::::1;;::::0;;;18896:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18951:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19002:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19047:20:::1;:44:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;19107:94:::1;::::0;;7346:34:1;;;7411:2;7396:18;;7389:43;;;;7448:18;;7441:43;;;;7515:2;7500:18;;7493:43;;;;19107:94:0::1;::::0;7295:3:1;7280:19;19107:94:0::1;;;;;;;18669:540:::0;;;;;:::o;9834:370::-;-1:-1:-1;;;;;9954:19:0;;9934:4;9954:19;;;:11;:19;;;;;;;;9974:10;9954:31;;;;;;;;-1:-1:-1;;9954:52:0;9951:186;;10056:69;;;;;;;;;;;-1:-1:-1;;;10056:69:0;;;;;;;;-1:-1:-1;;;;;10056:19:0;;-1:-1:-1;10056:19:0;;;:11;:19;;;;;10076:10;10056:31;;;;;;;;;;:69;;10092:6;;10056:35;:69::i;:::-;-1:-1:-1;;;;;10022:19:0;;;;;;:11;:19;;;;;;;;10042:10;10022:31;;;;;;;:103;9951:186;10156:40;10170:6;10178:9;10189:6;10156:13;:40::i;:::-;10149:47;;9834:370;;;;;;:::o;19436:142::-;19564:4;;-1:-1:-1;;;;;19564:4:0;19489:7;9148:18;;;:9;:18;;;;;;19516:54;;19543:4;;-1:-1:-1;;;;;19543:4:0;9130:7;9148:18;;;:9;:18;;;;;;19516:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19509:61;;19436:142;:::o;14579:248::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;14709:7:::1;:22:::0;;;;14742:6:::1;:20:::0;;;;14773:14:::1;:30:::0;14579:248::o;15338:139::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15392:3:::1;15383:6;:12:::0;15416:3:::1;15406:7;:13:::0;-1:-1:-1;15430:14:0::1;:18:::0;15459:10:::1;:8;:10::i;:::-;15338:139::o:0;14934:208::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15034:9:::1;15029:106;15045:20:::0;;::::1;15029:106;;;15117:6;15087:13;:27;15101:9;;15111:1;15101:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15087:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15087:27:0;:36;;-1:-1:-1;;15087:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;15067:3:0::1;15029:106;;;;14934:208:::0;;;:::o;9540:122::-;9595:4;9619:35;9627:7;-1:-1:-1;;9619:7:0;:35::i;15485:140::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15540:3:::1;15531:6;:12:::0;15564:3:::1;15554:7;:13:::0;-1:-1:-1;15578:14:0::1;:18:::0;15607:10:::1;:8;:10::i;10212:264::-:0;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;10331:4:::1;10316:12;;:19;;;;:::i;:::-;10297:15;;:38;;10289:47;;;::::0;::::1;;10401:4;10382:14;10367:12;;:29;;;;:::i;:::-;10366:39;;;;:::i;:::-;10348:15;:57:::0;10423:27:::1;::::0;160:25:1;;;10423:27:0::1;::::0;148:2:1;133:18;10423:27:0::1;;;;;;;10212:264:::0;:::o;2021:148::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;2128:1:::1;2112:6:::0;;2091:40:::1;::::0;-1:-1:-1;;;;;2112:6:0;;::::1;::::0;2091:40:::1;::::0;2128:1;;2091:40:::1;2159:1;2142:19:::0;;-1:-1:-1;;;;;;2142:19:0::1;::::0;;2021:148::o;13984:133::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;14057:12:::1;::::0;14039:15:::1;:30:::0;;;14080:12:::1;:27:::0;13984:133::o;15787:103::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15833:11:::1;:18:::0;;-1:-1:-1;;;;15862:20:0;-1:-1:-1;;;15862:20:0;;;15787:103::o;14125:115::-;14179:18;;14171:59;;-1:-1:-1;;;;;14179:18:0;;;;14208:21;14171:59;;;;;14179:18;14171:59;14179:18;14171:59;14208:21;14179:18;14171:59;;;;;;;;;;;;;;;;;;;;;14125:115::o;14836:90::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;14895:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14895:23:0::1;-1:-1:-1::0;;;;14895:23:0;;::::1;::::0;;;::::1;::::0;;14836:90::o;19217:203::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;19300:11:::1;:22:::0;;-1:-1:-1;;19300:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19333:13:::1;:23:::0;;;19372:40:::1;::::0;;8020:25:1;;;19300:22:0::1;19400:11:::0;;;8088:14:1;8081:22;8076:2;8061:18;;8054:50;19372:40:0::1;::::0;7993:18:1;19372:40:0::1;;;;;;;19217:203:::0;;:::o;9670:156::-;9750:4;9774:44;9788:10;9800:9;9811:6;9774:13;:44::i;15150:180::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15201:13:::1;:21:::0;;-1:-1:-1;;;;15201:21:0::1;::::0;;15242:3:::1;15233:6;:12:::0;15266:3:::1;15256:7;:13:::0;15297:4:::1;15201:13;15280:21:::0;15312:10:::1;:8;:10::i;19586:167::-:0;19654:7;19681:64;19722:22;:20;:22::i;:::-;19704:4;;-1:-1:-1;;;;;19704:4:0;9130:7;9148:18;;;:9;:18;;;;;;19681:36;;19694:22;;19714:1;;19694:15;:19;;:22::i;:::-;19681:8;;:12;:36::i;:::-;:40;;:64::i;13768:201::-;13897:18;;13857:21;;-1:-1:-1;;;;;13897:18:0;13889:72;13957:3;13926:28;13938:16;13857:21;13926:28;:::i;:::-;:34;;;;:::i;:::-;13889:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13826:143;13768:201;:::o;14248:323::-;14329:4;14356:6;14366:1;14356:11;14353:95;;14392:44;;-1:-1:-1;;;14392:44:0;;14430:4;14392:44;;;4891:51:1;-1:-1:-1;;;;;14392:29:0;;;;;4864:18:1;;14392:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14383:53;;14353:95;14465:32;;;-1:-1:-1;;;;;8496:32:1;;8478:51;;8560:2;8545:18;;8538:34;;;14465:32:0;;8451:18:1;14465:32:0;;;;;;;14544:10;;14515:48;;-1:-1:-1;;;14515:48:0;;-1:-1:-1;;;;;14544:10:0;;;14515:48;;;8478:51:1;8545:18;;;8538:34;;;14515:28:0;;;;;;8451:18:1;;14515:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2177:244::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2266:22:0;::::1;2258:73;;;::::0;-1:-1:-1;;;2258:73:0;;9035:2:1;2258:73:0::1;::::0;::::1;9017:21:1::0;9074:2;9054:18;;;9047:30;9113:34;9093:18;;;9086:62;-1:-1:-1;;;9164:18:1;;;9157:36;9210:19;;2258:73:0::1;8833:402:1::0;2258:73:0::1;2368:6;::::0;;2347:38:::1;::::0;-1:-1:-1;;;;;2347:38:0;;::::1;::::0;2368:6;::::1;::::0;2347:38:::1;::::0;::::1;2396:6;:17:::0;;-1:-1:-1;;;;;;2396:17:0::1;-1:-1:-1::0;;;;;2396:17:0;;;::::1;::::0;;;::::1;::::0;;2177:244::o;15633:142::-;1934:6;;-1:-1:-1;;;;;1934:6:0;1240:10;1934:22;1926:67;;;;-1:-1:-1;;;1926:67:0;;;;;;;:::i;:::-;15690:2:::1;15681:6;:11:::0;;;15703:7:::1;:12:::0;-1:-1:-1;15726:14:0::1;:18:::0;15755:10:::1;:8;:10::i;3988:181::-:0;4046:7;;4078:5;4082:1;4078;:5;:::i;:::-;4066:17;;4107:1;4102;:6;;4094:46;;;;-1:-1:-1;;;4094:46:0;;9572:2:1;4094:46:0;;;9554:21:1;9611:2;9591:18;;;9584:30;9650:29;9630:18;;;9623:57;9697:18;;4094:46:0;9370:351:1;17807:232:0;17860:171;17875:29;17900:3;17875:20;17888:6;;17875:8;;:12;;:20;;;;:::i;:29::-;17926:30;17952:3;17926:21;17939:7;;17926:8;;:12;;:21;;;;:::i;:30::-;17978:37;18011:3;17978:28;17991:14;;17978:8;;:12;;:28;;;;:::i;:37::-;17860:171;;;9946:4:1;9934:17;;;9916:36;;9988:17;;;9983:2;9968:18;;9961:45;10042:17;;10022:18;;;10015:45;17860:171:0;;;;;;9904:2:1;17860:171:0;;;17807:232::o;4317:192::-;4403:7;4439:12;4431:6;;;;4423:29;;;;-1:-1:-1;;;4423:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4463:9:0;4475:5;4479:1;4475;:5;:::i;:::-;4463:17;4317:192;-1:-1:-1;;;;;4317:192:0:o;10495:1433::-;10607:6;;10587:4;;10607:6;;10604:63;;;10623:41;10638:6;10646:9;10657:6;10623:14;:41::i;:::-;10616:48;;;;10604:63;-1:-1:-1;;;;;10683:22:0;;;;;;:14;:22;;;;;;;;10682:23;:53;;;;-1:-1:-1;;;;;;10710:25:0;;;;;;:14;:25;;;;;;;;10709:26;10682:53;10679:254;;;10759:11;;-1:-1:-1;;;10759:11:0;;;;10751:43;;;;-1:-1:-1;;;10751:43:0;;10406:2:1;10751:43:0;;;10388:21:1;10445:2;10425:18;;;10418:30;-1:-1:-1;;;10464:18:1;;;10457:50;10524:18;;10751:43:0;10204:344:1;10751:43:0;10823:13;;-1:-1:-1;;;10823:13:0;;;;10820:102;;;-1:-1:-1;;;;;10864:24:0;;;;;;:13;:24;;;;;;;;10856:51;;;;-1:-1:-1;;;10856:51:0;;10755:2:1;10856:51:0;;;10737:21:1;10794:2;10774:18;;;10767:30;-1:-1:-1;;;10813:18:1;;;10806:45;10868:18;;10856:51:0;10553:339:1;10856:51:0;-1:-1:-1;;;;;10965:22:0;;;;;;:14;:22;;;;;;;;10964:23;:53;;;;-1:-1:-1;;;;;;10991:26:0;;11012:4;10991:26;;10964:53;:84;;;;-1:-1:-1;11043:4:0;;-1:-1:-1;;;;;11022:26:0;;;11043:4;;11022:26;;10964:84;:105;;;;-1:-1:-1;11065:4:0;;-1:-1:-1;;;;;11052:17:0;;;11065:4;;11052:17;;10964:105;:137;;;;-1:-1:-1;11086:15:0;;-1:-1:-1;;;;;11073:28:0;;;11086:15;;11073:28;;10964:137;:174;;;;-1:-1:-1;11118:20:0;;-1:-1:-1;;;;;11105:33:0;;;11118:20;;11105:33;;10964:174;:205;;;;-1:-1:-1;;;;;;11143:26:0;;;;;;:15;:26;;;;;;;;11142:27;10964:205;10960:397;;;-1:-1:-1;;;;;9148:18:0;;11185;9148;;;:9;:18;;;;;;11274:15;;11250:19;11263:6;9148:18;11250:19;:::i;:::-;11249:40;;11241:114;;;;-1:-1:-1;;;11241:114:0;;11099:2:1;11241:114:0;;;11081:21:1;11138:2;11118:18;;;11111:30;11177:34;11157:18;;;11150:62;11248:32;11228:18;;;11221:60;11298:19;;11241:114:0;10897:426:1;11241:114:0;11170:187;10960:397;11422:28;11435:6;11443;11422:12;:28::i;:::-;11467:16;:14;:16::i;:::-;11464:35;;;11486:10;:8;:10::i;:::-;11579:53;;;;;;;;;;;-1:-1:-1;;;11579:53:0;;;;;;;;-1:-1:-1;;;;;11579:17:0;;-1:-1:-1;11579:17:0;;;:9;:17;;;;;;;;:53;;11601:6;;11579:21;:53::i;:::-;-1:-1:-1;;;;;11559:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11671:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11694:22:0;;;;;;:11;:22;;;;;;;;11671:45;11670:93;;11729:34;11737:6;11745;11753:9;11729:7;:34::i;:::-;11670:93;;;11720:6;11670:93;-1:-1:-1;;;;;11797:20:0;;;;;;:9;:20;;;;;;11645:118;;-1:-1:-1;11797:40:0;;11645:118;11797:24;:40::i;:::-;-1:-1:-1;;;;;11774:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11855:43;;;;;;-1:-1:-1;;;;;;;;;;;11855:43:0;;;11883:14;160:25:1;;148:2;133:18;;14:177;11855:43:0;;;;;;;;-1:-1:-1;11916:4:0;;10495:1433;-1:-1:-1;;;;10495:1433:0:o;4175:136::-;4233:7;4260:43;4264:1;4267;4260:43;;;;;;;;;;;;;;;;;:3;:43::i;4515:250::-;4573:7;4597:1;4602;4597:6;4593:47;;-1:-1:-1;4627:1:0;4620:8;;4593:47;4652:9;4664:5;4668:1;4664;:5;:::i;:::-;4652:17;-1:-1:-1;4697:1:0;4688:5;4692:1;4652:17;4688:5;:::i;:::-;:10;4680:56;;;;-1:-1:-1;;;4680:56:0;;11530:2:1;4680:56:0;;;11512:21:1;11569:2;11549:18;;;11542:30;11608:34;11588:18;;;11581:62;-1:-1:-1;;;11659:18:1;;;11652:31;11700:19;;4680:56:0;11328:397:1;4771:132:0;4829:7;4856:39;4860:1;4863;4856:39;;;;;;;;;;;;;;;;;:3;:39::i;11940:330::-;12070:53;;;;;;;;;;;-1:-1:-1;;;12070:53:0;;;;;;;;-1:-1:-1;;;;;12070:17:0;;12033:4;12070:17;;;:9;:17;;;;;;;:53;;12092:6;;12070:21;:53::i;:::-;-1:-1:-1;;;;;12050:17:0;;;;;;;:9;:17;;;;;;:73;;;;12157:20;;;;;;;:32;;12182:6;12157:24;:32::i;:::-;-1:-1:-1;;;;;12134:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12205:35;;;;;;-1:-1:-1;;;;;;;;;;;12205:35:0;;;12233:6;160:25:1;;148:2;133:18;;14:177;12205:35:0;;;;;;;;-1:-1:-1;12258:4:0;11940:330;;;;;:::o;12278:166::-;12375:12;;12365:6;:22;;:49;;;-1:-1:-1;;;;;;12391:23:0;;;;;;:15;:23;;;;;;;;12365:49;12357:79;;;;-1:-1:-1;;;12357:79:0;;11932:2:1;12357:79:0;;;11914:21:1;11971:2;11951:18;;;11944:30;-1:-1:-1;;;11990:18:1;;;11983:47;12047:18;;12357:79:0;11730:341:1;12357:79:0;12278:166;;:::o;13563:197::-;13650:4;;13612;;-1:-1:-1;;;;;13650:4:0;13636:10;:18;;;;:38;;-1:-1:-1;13668:6:0;;;;13667:7;13636:38;:62;;;;-1:-1:-1;13687:11:0;;;;13636:62;:116;;;;-1:-1:-1;;13739:13:0;;13729:4;13711:24;;;;:9;:24;;;;;;:41;;;13563:197::o;15906:1886::-;7457:6;:13;;-1:-1:-1;;7457:13:0;7466:4;7457:13;;;16001:15:::1;::::0;16018:26:::1;::::0;7457:6;;15985:60:::1;::::0;:15:::1;:60::i;:::-;:79;;16052:12;;15985:79;;;16048:1;15985:79;15955:109;;16075:23;16101:59;16158:1;16101:52;16144:8;;16101:38;16119:19;16101:13;;:17;;:38;;;;:::i;:59::-;16075:85;;16171:20;16194:34;16212:15;16194:13;;:17;;:34;;;;:::i;:::-;16265:16;::::0;;16279:1:::1;16265:16:::0;;;;;::::1;::::0;;16171:57;;-1:-1:-1;16241:21:0::1;::::0;16265:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16265:16:0::1;16241:40;;16310:4;16292;16297:1;16292:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16292:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16336:4:::1;::::0;16326:7;;16336:4;::::1;::::0;16326;;16336;;16326:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16326:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16411:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16411:188:0;;16377:21:::1;::::0;16411:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16483:12;;16353:21:::1;::::0;16526:4;;16553::::1;::::0;16573:15:::1;::::0;16411:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16612:17;16632:40;16658:13;16632:21;:25;;:40;;;;:::i;:::-;16612:60:::0;-1:-1:-1;16685:19:0::1;16707:40;16720:26;:19:::0;16744:1:::1;16720:23;:26::i;:::-;16707:8;::::0;;:12:::1;:40::i;:::-;16685:62:::0;-1:-1:-1;16768:26:0::1;16797:58;16853:1;16797:51;16685:62:::0;16797:51;:9;16811:19;16797:13:::1;:34::i;:58::-;16768:87;;16866:26;16895:44;16927:11;16895:27;16909:12;;16895:9;:13;;:27;;;;:::i;:44::-;16866:73;;16950:26;16979:44;17011:11;16979:27;16993:12;;16979:9;:13;;:27;;;;:::i;:44::-;16950:73;;17034:24;17061:42;17091:11;17061:25;17075:10;;17061:9;:13;;:25;;;;:::i;:42::-;17145:20;::::0;17137:65:::1;::::0;17034:69;;-1:-1:-1;17117:15:0::1;::::0;-1:-1:-1;;;;;17145:20:0;;::::1;::::0;17179:18;;17117:15;17137:65;17117:15;17137:65;17179:18;17145:20;17137:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17237:18:0::1;::::0;17229:61:::1;::::0;17116:86;;-1:-1:-1;;;;;;17237:18:0::1;::::0;17269:16;;17229:61:::1;::::0;;;17269:16;17237:18;17229:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17325:20:0::1;::::0;17317:65:::1;::::0;17213:77;;-1:-1:-1;;;;;;17325:20:0::1;::::0;17359:18;;17317:65:::1;::::0;;;17359:18;17325:20;17317:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17416:5:0::1;::::0;-1:-1:-1;;17437:19:0;;;-1:-1:-1;17434:351:0::1;;17472:6;::::0;17646:10:::1;::::0;17472:233:::1;::::0;-1:-1:-1;;;17472:233:0;;17548:4:::1;17472:233;::::0;::::1;13744:34:1::0;13794:18;;;13787:34;;;17472:6:0::1;13837:18:1::0;;;13830:34;;;13880:18;;;13873:34;-1:-1:-1;;;;;17646:10:0;;::::1;13923:19:1::0;;;13916:44;17675:15:0::1;13976:19:1::0;;;13969:35;17472:6:0;::::1;::::0;:22:::1;::::0;17502:18;;13678:19:1;;17472:233:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17725:48:0::1;::::0;;14500:25:1;;;14556:2;14541:18;;14534:34;;;17725:48:0::1;::::0;-1:-1:-1;14473:18:1;17725:48:0::1;;;;;;;17434:351;-1:-1:-1::0;;7475:6:0;:14;;-1:-1:-1;;7475:14:0;;;-1:-1:-1;;;;;;;;;;15906:1886:0:o;12574:981::-;12709:14;;12752:4;;12660:7;;12709:14;-1:-1:-1;;;;;12752:4:0;;;12739:17;;;;12736:136;;-1:-1:-1;12784:7:0;;12736:136;;;12822:4;;-1:-1:-1;;;;;12822:4:0;;;12812:14;;;;12809:63;;-1:-1:-1;12854:6:0;;12809:63;12884:17;12904:60;12943:14;;12960:3;12943:20;;;;:::i;:::-;12904:34;12929:8;12904:20;12915:8;;12904:6;:10;;:20;;;;:::i;:60::-;12884:80;;12975:18;12996:36;13023:8;;12996:22;13010:7;;12996:9;:13;;:22;;;;:::i;:36::-;12975:57;-1:-1:-1;13043:22:0;13068:25;:9;12975:57;13068:13;:25::i;:::-;13151:4;13133:24;;;;:9;:24;;;;;;13043:50;;-1:-1:-1;13133:44:0;;13043:50;13133:28;:44::i;:::-;13124:4;13106:24;;;;:9;:24;;;;;;:71;;;;13227:15;;-1:-1:-1;;;;;13227:15:0;13217:26;;;;:42;;13248:10;13217:30;:42::i;:::-;13198:15;;-1:-1:-1;;;;;13198:15:0;;;13188:26;;;;:9;:26;;;;;;;;;:71;;;;13275:47;160:25:1;;;13300:4:0;;13275:47;;;;-1:-1:-1;;;;;;;;;;;13275:47:0;133:18:1;13275:47:0;;;;;;;13356:14;;13353:154;;13401:12;;:28;;13418:10;13401:16;:28::i;:::-;13386:12;:43;13466:4;;13449:34;;160:25:1;;;-1:-1:-1;;;;;13466:4:0;;;;13449:34;;;-1:-1:-1;;;;;;;;;;;13449:34:0;148:2:1;133:18;13449:34:0;;;;;;;13353:154;13526:21;:6;13537:9;13526:10;:21::i;:::-;13519:28;12574:981;-1:-1:-1;;;;;;;;12574:981:0:o;4909:189::-;4995:7;5030:12;5023:5;5015:28;;;;-1:-1:-1;;;5015:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5054:9:0;5066:5;5070:1;5066;:5;:::i;196:523:1:-;300:6;308;316;324;332;340;393:3;381:9;372:7;368:23;364:33;361:53;;;410:1;407;400:12;361:53;-1:-1:-1;;433:23:1;;;503:2;488:18;;475:32;;-1:-1:-1;554:2:1;539:18;;526:32;;605:2;590:18;;577:32;;-1:-1:-1;656:3:1;641:19;;628:33;;-1:-1:-1;708:3:1;693:19;680:33;;-1:-1:-1;196:523:1;-1:-1:-1;196:523:1:o;724:548::-;836:4;865:2;894;883:9;876:21;926:6;920:13;969:6;964:2;953:9;949:18;942:34;994:1;1004:140;1018:6;1015:1;1012:13;1004:140;;;1113:14;;;1109:23;;1103:30;1079:17;;;1098:2;1075:26;1068:66;1033:10;;1004:140;;;1008:3;1193:1;1188:2;1179:6;1168:9;1164:22;1160:31;1153:42;1263:2;1256;1252:7;1247:2;1239:6;1235:15;1231:29;1220:9;1216:45;1212:54;1204:62;;;;724:548;;;;:::o;1469:173::-;1537:20;;-1:-1:-1;;;;;1586:31:1;;1576:42;;1566:70;;1632:1;1629;1622:12;1566:70;1469:173;;;:::o;1647:254::-;1715:6;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1815:29;1834:9;1815:29;:::i;:::-;1805:39;1891:2;1876:18;;;;1863:32;;-1:-1:-1;;;1647:254:1:o;1906:186::-;1965:6;2018:2;2006:9;1997:7;1993:23;1989:32;1986:52;;;2034:1;2031;2024:12;1986:52;2057:29;2076:9;2057:29;:::i;2097:248::-;2165:6;2173;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;-1:-1:-1;;2265:23:1;;;2335:2;2320:18;;;2307:32;;-1:-1:-1;2097:248:1:o;2350:484::-;2445:6;2453;2461;2469;2477;2530:3;2518:9;2509:7;2505:23;2501:33;2498:53;;;2547:1;2544;2537:12;2498:53;2570:29;2589:9;2570:29;:::i;:::-;2560:39;;2618:38;2652:2;2641:9;2637:18;2618:38;:::i;:::-;2608:48;;2675:38;2709:2;2698:9;2694:18;2675:38;:::i;:::-;2665:48;;2732:38;2766:2;2755:9;2751:18;2732:38;:::i;:::-;2722:48;;2789:39;2823:3;2812:9;2808:19;2789:39;:::i;:::-;2779:49;;2350:484;;;;;;;;:::o;2839:328::-;2916:6;2924;2932;2985:2;2973:9;2964:7;2960:23;2956:32;2953:52;;;3001:1;2998;2991:12;2953:52;3024:29;3043:9;3024:29;:::i;:::-;3014:39;;3072:38;3106:2;3095:9;3091:18;3072:38;:::i;:::-;3062:48;;3157:2;3146:9;3142:18;3129:32;3119:42;;2839:328;;;;;:::o;3361:316::-;3438:6;3446;3454;3507:2;3495:9;3486:7;3482:23;3478:32;3475:52;;;3523:1;3520;3513:12;3475:52;-1:-1:-1;;3546:23:1;;;3616:2;3601:18;;3588:32;;-1:-1:-1;3667:2:1;3652:18;;;3639:32;;3361:316;-1:-1:-1;3361:316:1:o;3682:118::-;3768:5;3761:13;3754:21;3747:5;3744:32;3734:60;;3790:1;3787;3780:12;3805:750;3897:6;3905;3913;3966:2;3954:9;3945:7;3941:23;3937:32;3934:52;;;3982:1;3979;3972:12;3934:52;4022:9;4009:23;4051:18;4092:2;4084:6;4081:14;4078:34;;;4108:1;4105;4098:12;4078:34;4146:6;4135:9;4131:22;4121:32;;4191:7;4184:4;4180:2;4176:13;4172:27;4162:55;;4213:1;4210;4203:12;4162:55;4253:2;4240:16;4279:2;4271:6;4268:14;4265:34;;;4295:1;4292;4285:12;4265:34;4350:7;4343:4;4333:6;4330:1;4326:14;4322:2;4318:23;4314:34;4311:47;4308:67;;;4371:1;4368;4361:12;4308:67;4402:4;4394:13;;;;-1:-1:-1;4426:6:1;-1:-1:-1;;4467:20:1;;4454:34;4497:28;4454:34;4497:28;:::i;:::-;4544:5;4534:15;;;3805:750;;;;;:::o;4560:180::-;4619:6;4672:2;4660:9;4651:7;4647:23;4643:32;4640:52;;;4688:1;4685;4678:12;4640:52;-1:-1:-1;4711:23:1;;4560:180;-1:-1:-1;4560:180:1:o;4953:241::-;5009:6;5062:2;5050:9;5041:7;5037:23;5033:32;5030:52;;;5078:1;5075;5068:12;5030:52;5117:9;5104:23;5136:28;5158:5;5136:28;:::i;5199:309::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5380:9;5367:23;5399:28;5421:5;5399:28;:::i;5513:260::-;5581:6;5589;5642:2;5630:9;5621:7;5617:23;5613:32;5610:52;;;5658:1;5655;5648:12;5610:52;5681:29;5700:9;5681:29;:::i;:::-;5671:39;;5729:38;5763:2;5752:9;5748:18;5729:38;:::i;:::-;5719:48;;5513:260;;;;;:::o;6004:356::-;6206:2;6188:21;;;6225:18;;;6218:30;6284:34;6279:2;6264:18;;6257:62;6351:2;6336:18;;6004:356::o;6365:127::-;6426:10;6421:3;6417:20;6414:1;6407:31;6457:4;6454:1;6447:15;6481:4;6478:1;6471:15;6497:217;6537:1;6563;6553:132;;6607:10;6602:3;6598:20;6595:1;6588:31;6642:4;6639:1;6632:15;6670:4;6667:1;6660:15;6553:132;-1:-1:-1;6699:9:1;;6497:217::o;7547:127::-;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:168;7752:9;;;7783;;7800:15;;;7794:22;;7780:37;7770:71;;7821:18;;:::i;8115:184::-;8185:6;8238:2;8226:9;8217:7;8213:23;8209:32;8206:52;;;8254:1;8251;8244:12;8206:52;-1:-1:-1;8277:16:1;;8115:184;-1:-1:-1;8115:184:1:o;8583:245::-;8650:6;8703:2;8691:9;8682:7;8678:23;8674:32;8671:52;;;8719:1;8716;8709:12;8671:52;8751:9;8745:16;8770:28;8792:5;8770:28;:::i;9240:125::-;9305:9;;;9326:10;;;9323:36;;;9339:18;;:::i;10071:128::-;10138:9;;;10159:11;;;10156:37;;;10173:18;;:::i;12208:980::-;12470:4;12518:3;12507:9;12503:19;12549:6;12538:9;12531:25;12575:2;12613:6;12608:2;12597:9;12593:18;12586:34;12656:3;12651:2;12640:9;12636:18;12629:31;12680:6;12715;12709:13;12746:6;12738;12731:22;12784:3;12773:9;12769:19;12762:26;;12823:2;12815:6;12811:15;12797:29;;12844:1;12854:195;12868:6;12865:1;12862:13;12854:195;;;12933:13;;-1:-1:-1;;;;;12929:39:1;12917:52;;13024:15;;;;12989:12;;;;12965:1;12883:9;12854:195;;;-1:-1:-1;;;;;;;13105:32:1;;;;13100:2;13085:18;;13078:60;-1:-1:-1;;;13169:3:1;13154:19;13147:35;13066:3;12208:980;-1:-1:-1;;;12208:980:1:o;14015:306::-;14103:6;14111;14119;14172:2;14160:9;14151:7;14147:23;14143:32;14140:52;;;14188:1;14185;14178:12;14140:52;14217:9;14211:16;14201:26;;14267:2;14256:9;14252:18;14246:25;14236:35;;14311:2;14300:9;14296:18;14290:25;14280:35;;14015:306;;;;;:::o

Swarm Source

ipfs://de0aa5a93168e271001cc6fd6dc7fa1a6b0f90b16bd3c336e9eed55e65e31c5f

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.