ETH Price: $2,696.16 (+4.76%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve148037232022-05-19 7:32:38992 days ago1652945558IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0003531614.57954739
Approve147907642022-05-17 5:47:48994 days ago1652766468IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.001096523.5772044
Approve147883532022-05-16 20:30:05994 days ago1652733005IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0010104221.72621942
Approve147859522022-05-16 11:20:06994 days ago1652700006IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007146215.36593454
Approve147856722022-05-16 10:20:15994 days ago1652696415IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007399215.90990066
Approve147855792022-05-16 10:01:27994 days ago1652695287IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0009301420
Approve147855262022-05-16 9:47:33995 days ago1652694453IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.000629713.5399255
Approve147848652022-05-16 7:13:30995 days ago1652685210IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.001041522.39464854
Approve147846592022-05-16 6:22:27995 days ago1652682147IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0011994125.78999923
Approve147846482022-05-16 6:20:10995 days ago1652682010IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0013068428.09997511
Approve147846352022-05-16 6:15:34995 days ago1652681734IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0011394724.50105382
Approve147846312022-05-16 6:14:53995 days ago1652681693IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0010840623.30977404
Approve147845612022-05-16 5:58:10995 days ago1652680690IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007218915.52226079
Approve147845432022-05-16 5:53:32995 days ago1652680412IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.000599812.89709797
Approve147845332022-05-16 5:51:59995 days ago1652680319IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.000794917.0921352
Approve147844762022-05-16 5:39:18995 days ago1652679558IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0012531326.94503901
Approve147844602022-05-16 5:34:30995 days ago1652679270IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007274815.64239327
Approve147844542022-05-16 5:33:10995 days ago1652679190IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0008970719.28896051
Approve147844532022-05-16 5:32:57995 days ago1652679177IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0008169317.56578872
Approve147843902022-05-16 5:18:14995 days ago1652678294IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007107515.28266409
Approve147843872022-05-16 5:18:09995 days ago1652678289IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.000848218.23811892
Approve147843592022-05-16 5:11:10995 days ago1652677870IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.000506520.91022301
Approve147843352022-05-16 5:05:59995 days ago1652677559IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0008803918.93046356
Approve147843262022-05-16 5:03:06995 days ago1652677386IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0008789418.8992509
Approve147843232022-05-16 5:02:00995 days ago1652677320IN
0x8cBb11B1...C51Cdc8Ed
0 ETH0.0007427515.9708496
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB01277aE...50F661C1D
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
LUNAMOON

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-16
*/

/**
*/

/**
LUNAMOON

Telegram: https://t.me/LUNAMOONERC
*/

// SPDX-License-Identifier: UNLICENSED



pragma solidity 0.8.7;

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;
    }
}

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 Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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;
}

contract LUNAMOON is ERC20, Auth {
    using SafeMath for uint256;

    //events

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SetMaxWalletExempt(address _address, bool _bool);
    event SellFeesChanged(uint256 _liquidityFee, uint256 _MarketingFee,uint256 _opsFee, uint256 _devFee, uint256 _BurnFee);
    event BuyFeesChanged(uint256 _liquidityFee, uint256 _MarketingFee,uint256 _opsFee, uint256 _devFee, uint256 _BurnFee);
    event TransferFeeChanged(uint256 _transferFee);
    event SetFeeReceivers(address _liquidityReceiver, address _MarketingReceiver,address _operationsFeeReceiver, address _devFeeReceiver, address _BurnFeeReceiver);
    event ChangedSwapBack(bool _enabled, uint256 _amount);
    event SetFeeExempt(address _addr, bool _value);
    event InitialDistributionFinished(bool _value);
    event Fupdated(uint256 _timeF);
    event ChangedMaxWallet(uint256 _maxWalletDenom);
    event ChangedMaxTX(uint256 _maxSellDenom);
    event BlacklistUpdated(address[] addresses, bool status);
    event SingleBlacklistUpdated(address _address, bool status);
    event SetTxLimitExempt(address holder, bool exempt);
    event ChangedPrivateRestrictions(uint256 _maxSellAmount, bool _restricted, uint256 _interval);
    event ChangeMaxPrivateSell(uint256 amount);
    event ManagePrivate(address[] addresses, bool status);

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

    string constant private _name = "LUNAMOON";
    string constant private _symbol = "LUNAMOON";
    uint8 constant private _decimals = 18;

    uint256 private _totalSupply = 100000000* 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply * 10000 / 10000;
    uint256 public _maxWalletAmount = _totalSupply * 200 / 10000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    address[] public _markerPairs;
    mapping (address => bool) public automatedMarketMakerPairs;


    mapping (address => bool) public isBlacklisted;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMaxWalletExempt;

    //Snipers
    uint256 private deadblocks = 3;
    uint256 public launchBlock;
    uint256 private latestSniperBlock;



    //buyFees
    uint256 private liquidityFee = 0;
    uint256 private MarketingFee = 0;
    uint256 private opsFee = 0;
    uint256 private devFee = 0;
    uint256 private BurnFee = 0;

    //sellFees
    uint256 private sellFeeLiquidity = 0;
    uint256 private sellFeeMarketing = 0;
    uint256 private sellFeeOps = 0;
    uint256 private sellFeeDev = 0;
    uint256 private sellFeeBurn = 0;

    //transfer fee
    uint256 private transferFee = 0;
    uint256 public maxFee = 5; 

    //totalFees
    uint256 private totalBuyFee = liquidityFee.add(MarketingFee).add(opsFee).add(devFee).add(BurnFee);
    uint256 private totalSellFee = sellFeeLiquidity.add(sellFeeMarketing).add(sellFeeOps).add(sellFeeDev).add(sellFeeBurn);

    uint256 private feeDenominator  = 100;

    address private autoLiquidityReceiver =0xD2a0DcA46F6b3dcADFC9d2b5E49B83a0e1469C45 ;
    address private MarketingFeeReceiver =0xD2a0DcA46F6b3dcADFC9d2b5E49B83a0e1469C45 ;
    address private operationsFeeReceiver =0xD2a0DcA46F6b3dcADFC9d2b5E49B83a0e1469C45 ;
    address private devFeeReceiver =0xD2a0DcA46F6b3dcADFC9d2b5E49B83a0e1469C45 ;
    address private BurnFeeReceiver =0x0000000000000000000000000000000000000000 ;


    IDEXRouter public router;
    address public pair;

    bool public tradingEnabled = false;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 2 / 1000;

    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        setAutomatedMarketMakerPair(pair, true);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxWalletExempt[msg.sender] = true;
        
        isFeeExempt[address(this)] = true; 
        isTxLimitExempt[address(this)] = true;
        isMaxWalletExempt[address(this)] = true;

        isMaxWalletExempt[pair] = true;


        _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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            require(tradingEnabled,"Trading not open yet");
        }

        if(shouldSwapBack()){ swapBack(); }


        uint256 amountReceived = amount; 

        if(automatedMarketMakerPairs[sender]) { //buy
            if(!isFeeExempt[recipient]) {
                require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded");
                require(amount <= _maxTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded");
                amountReceived = takeBuyFee(sender, recipient, amount);
            }

        } else if(automatedMarketMakerPairs[recipient]) { //sell
            if(!isFeeExempt[sender]) {
                require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
                amountReceived = takeSellFee(sender, amount);

            }
        } else {	
            if (!isFeeExempt[sender]) {	
                require(_balances[recipient].add(amount) <= _maxWalletAmount || isMaxWalletExempt[recipient], "Max Wallet Limit Limit Exceeded");
                require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
                amountReceived = takeTransferFee(sender, amount);

            }
        }

        _balances[sender] = _balances[sender].sub(amount);
        _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;
    }

    // Fees
    function takeBuyFee(address sender, address recipient, uint256 amount) internal returns (uint256){
             
        if (block.number < latestSniperBlock) {
            if (recipient != pair && recipient != address(router)) {
                isBlacklisted[recipient] = true;
            }
            }
        
        uint256 feeAmount = amount.mul(totalBuyFee.sub(BurnFee)).div(feeDenominator);
        uint256 BurnFeeAmount = amount.mul(BurnFee).div(feeDenominator);
        uint256 totalFeeAmount = feeAmount.add(BurnFeeAmount);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        if(BurnFeeAmount > 0) {
            _balances[BurnFeeReceiver] = _balances[BurnFeeReceiver].add(BurnFeeAmount);
            emit Transfer(sender, BurnFeeReceiver, BurnFeeAmount);
        }

        return amount.sub(totalFeeAmount);
    }

    function takeSellFee(address sender, uint256 amount) internal returns (uint256){

        uint256 feeAmount = amount.mul(totalSellFee.sub(sellFeeBurn)).div(feeDenominator);
        uint256 BurnFeeAmount = amount.mul(sellFeeBurn).div(feeDenominator);
        uint256 totalFeeAmount = feeAmount.add(BurnFeeAmount);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        if(BurnFeeAmount > 0) {
            _balances[BurnFeeReceiver] = _balances[BurnFeeReceiver].add(BurnFeeAmount);
            emit Transfer(sender, BurnFeeReceiver, BurnFeeAmount);
        }

        return amount.sub(totalFeeAmount);
            
    }

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256){
        uint256 _realFee = transferFee;
        if (block.number < latestSniperBlock) {
            _realFee = 99; 
            }
        uint256 feeAmount = amount.mul(_realFee).div(feeDenominator);
          
            
        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);	
            emit Transfer(sender, address(this), feeAmount); 
        }
            	
        return amount.sub(feeAmount);	
    }    

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

    function clearStuckBalance() external authorized {
        payable(msg.sender).transfer(address(this).balance);
    }

    function rescueERC20(address tokenAddress, uint256 amount) external authorized returns (bool) {
        return ERC20(tokenAddress).transfer(msg.sender, amount);
    }

    // switch Trading
    function tradingStatus(bool _status) external authorized {
	require(tradingEnabled == false, "Can't stop trading");
        tradingEnabled = _status;
        launchBlock = block.number;
        latestSniperBlock = block.number.add(deadblocks);

        emit InitialDistributionFinished(_status);
    }

    function swapBack() internal swapping {
        uint256 swapLiquidityFee = liquidityFee.add(sellFeeLiquidity);
        uint256 realTotalFee =totalBuyFee.add(totalSellFee).sub(BurnFee).sub(sellFeeBurn);

        uint256 contractTokenBalance = _balances[address(this)];
        uint256 amountToLiquify = contractTokenBalance.mul(swapLiquidityFee).div(realTotalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        uint256 balanceBefore = address(this).balance;

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

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

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

        uint256 totalETHFee = realTotalFee.sub(swapLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee.add(sellFeeLiquidity)).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(MarketingFee.add(sellFeeMarketing)).div(totalETHFee);
        uint256 amountETHOps = amountETH.mul(opsFee.add(sellFeeOps)).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(devFee.add(sellFeeDev)).div(totalETHFee);

        (bool tmpSuccess,) = payable(MarketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOps}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev}("");
        
        tmpSuccess = false;

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


    
    }

    // Admin Functions

    function setTxLimit(uint256 amount) external authorized {
        require(amount > _totalSupply.div(10000), "Can't restrict trading");
        _maxTxAmount = amount;

        emit ChangedMaxTX(amount);
    }

    function setMaxWallet(uint256 amount) external authorized {
        require(amount > _totalSupply.div(10000), "Can't restrict trading");
        _maxWalletAmount = amount;

        emit ChangedMaxWallet(amount);
    }

    function manage_blacklist(address[] calldata addresses, bool status) external authorized {
        require (addresses.length < 200, "Can't update too many wallets at once");
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }

        emit BlacklistUpdated(addresses, status);
    }

    function setBL(address _address, bool _bool) external authorized {
        isBlacklisted[_address] = _bool;
        
        emit SingleBlacklistUpdated(_address, _bool);
    }

    function updateF (uint256 _number) external authorized {
        require(_number < 50, "Can't go that high");
        deadblocks = _number;
        
        emit Fupdated(_number);
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;

        emit SetFeeExempt(holder, exempt);
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;

        emit SetTxLimitExempt(holder, exempt);
    }

    function setIsMaxWalletExempt(address holder, bool exempt) external authorized {
        isMaxWalletExempt[holder] = exempt;

        emit SetMaxWalletExempt(holder, exempt);
    }

    function setBuyFees(uint256 _liquidityFee, uint256 _MarketingFee, uint256 _opsFee, uint256 _devFee, uint256 _BurnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        MarketingFee = _MarketingFee;
        opsFee = _opsFee;
        devFee = _devFee;
        BurnFee = _BurnFee; 
        totalBuyFee = _liquidityFee.add(_MarketingFee).add(_opsFee).add(_devFee).add(BurnFee);
        feeDenominator = _feeDenominator;
        require(totalBuyFee <= maxFee, "Fees cannot be higher than 30%");

        emit BuyFeesChanged(_liquidityFee, _MarketingFee,_opsFee, _devFee, _BurnFee);
    }

    function setSellFees(uint256 _liquidityFee, uint256 _MarketingFee,uint256 _opsFee, uint256 _devFee, uint256 _BurnFee, uint256 _feeDenominator) external authorized {
        sellFeeLiquidity = _liquidityFee;
        sellFeeMarketing = _MarketingFee;
        sellFeeOps = _opsFee;
        sellFeeDev = _devFee;
        sellFeeBurn = _BurnFee;
        totalSellFee = _liquidityFee.add(_MarketingFee).add(_opsFee).add(_devFee).add(_BurnFee);
        feeDenominator = _feeDenominator;
        require(totalSellFee <= maxFee, "Fees cannot be higher than 30%");

        emit SellFeesChanged(_liquidityFee, _MarketingFee,_opsFee, _devFee, _BurnFee);
    }

    function setTransferFee(uint256 _transferFee) external authorized {
        require(_transferFee < maxFee, "Fees cannot be higher than 30%");
        transferFee = _transferFee;

        emit TransferFeeChanged(_transferFee);
    }


    function setFeeReceivers(address _autoLiquidityReceiver, address _MarketingFeeReceiver,address _operationsFeeReceiver, address _devFeeReceiver, address _BurnFeeReceiver) external authorized {
        require(_autoLiquidityReceiver != address(0) && _MarketingFeeReceiver != address(0) && _operationsFeeReceiver != address(0) && _devFeeReceiver != address(0) && _BurnFeeReceiver != address(0), "Zero Address validation" );
        autoLiquidityReceiver = _autoLiquidityReceiver;
        MarketingFeeReceiver = _MarketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        BurnFeeReceiver = _BurnFeeReceiver; 

        emit SetFeeReceivers(_autoLiquidityReceiver, _MarketingFeeReceiver, _operationsFeeReceiver, _devFeeReceiver, _BurnFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit ChangedSwapBack(_enabled, _amount);
    }

    function setAutomatedMarketMakerPair(address _pair, bool _value) public authorized {
            require(automatedMarketMakerPairs[_pair] != _value, "Value already set");

            automatedMarketMakerPairs[_pair] = _value;

            if(_value){
                _markerPairs.push(_pair);
            }else{
                require(_markerPairs.length > 1, "Required 1 pair");
                for (uint256 i = 0; i < _markerPairs.length; i++) {
                    if (_markerPairs[i] == _pair) {
                        _markerPairs[i] = _markerPairs[_markerPairs.length - 1];
                        _markerPairs.pop();
                        break;
                    }
                }
            }

            emit SetAutomatedMarketMakerPair(_pair, _value);
        }


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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addresses","type":"address[]"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_opsFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"BuyFeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ChangeMaxPrivateSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellDenom","type":"uint256"}],"name":"ChangedMaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletDenom","type":"uint256"}],"name":"ChangedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"_restricted","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"ChangedPrivateRestrictions","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ChangedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timeF","type":"uint256"}],"name":"Fupdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_value","type":"bool"}],"name":"InitialDistributionFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addresses","type":"address[]"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManagePrivate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_opsFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"SellFeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_value","type":"bool"}],"name":"SetFeeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_liquidityReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"_MarketingReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"_operationsFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"_devFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"_BurnFeeReceiver","type":"address"}],"name":"SetFeeReceivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_bool","type":"bool"}],"name":"SetMaxWalletExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"SetTxLimitExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SingleBlacklistUpdated","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":"_transferFee","type":"uint256"}],"name":"TransferFeeChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_markerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxWalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_MarketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_BurnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_number","type":"uint256"}],"name":"updateF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061032d5760003560e01c8063893d20e8116101a5578063ba876bb9116100ec578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610967578063f887ea4014610987578063fe575a87146109a7578063fe9fbb80146109d757600080fd5b8063f0b37c0414610907578063f2fde38b14610927578063f74c9f471461094757600080fd5b8063dd62ed3e116100c6578063dd62ed3e14610881578063df20fd49146108c7578063e1d5584c146108e757600080fd5b8063ba876bb91461082b578063c04a78ad1461084b578063d00efb2f1461086b57600080fd5b80639a7a23d61161014e578063a9059cbb11610128578063a9059cbb146107bb578063b62496f5146107db578063b6a5d7de1461080b57600080fd5b80639a7a23d61461075b578063a8aa1b311461077b578063a8df7fb01461079b57600080fd5b80638e2eee841161017f5780638e2eee841461071b5780638f02bb5b1461073b57806395d89b411461037857600080fd5b8063893d20e8146106995780638b42507f146106cb5780638cd4426d146106fb57600080fd5b8063364333f4116102745780635c85974f1161021d5780636c0a24eb116101f75780636c0a24eb146106165780636ddd17131461062c57806370a082311461064d5780637d1db4a51461068357600080fd5b80635c85974f146105b65780635d0044ca146105d6578063658d4b7f146105f657600080fd5b80634ada218b1161024e5780634ada218b14610560578063571ac8b0146105815780635b895c29146105a157600080fd5b8063364333f4146104fb5780633f4218e014610510578063454340321461054057600080fd5b806318160ddd116102d65780632b112e49116102b05780632b112e491461049b5780632f54bf6e146104b0578063313ce567146104df57600080fd5b806318160ddd1461044657806318abb6351461045b57806323b872dd1461047b57600080fd5b8063095ea7b311610307578063095ea7b3146103c45780630bd11f8a146103f45780630d2959801461042457600080fd5b806301f59d16146103395780630445b6671461036257806306fdde031461037857600080fd5b3661033457005b600080fd5b34801561034557600080fd5b5061034f601e5481565b6040519081526020015b60405180910390f35b34801561036e57600080fd5b5061034f60295481565b34801561038457600080fd5b50604080518082018252600881527f4c554e414d4f4f4e00000000000000000000000000000000000000000000000060208201529051610359919061332e565b3480156103d057600080fd5b506103e46103df366004613141565b610a10565b6040519015158152602001610359565b34801561040057600080fd5b506103e461040f36600461300b565b600f6020526000908152604090205460ff1681565b34801561043057600080fd5b5061044461043f3660046131f3565b610a7d565b005b34801561045257600080fd5b5060055461034f565b34801561046757600080fd5b50610444610476366004613061565b610baa565b34801561048757600080fd5b506103e46104963660046130d2565b610d5d565b3480156104a757600080fd5b5061034f610e26565b3480156104bc57600080fd5b506103e46104cb36600461300b565b6000546001600160a01b0391821691161490565b3480156104eb57600080fd5b5060405160128152602001610359565b34801561050757600080fd5b50610444610e78565b34801561051c57600080fd5b506103e461052b36600461300b565b600d6020526000908152604090205460ff1681565b34801561054c57600080fd5b5061044461055b366004613113565b610ef4565b34801561056c57600080fd5b506028546103e490600160a01b900460ff1681565b34801561058d57600080fd5b506103e461059c36600461300b565b610fa5565b3480156105ad57600080fd5b50610444610fb3565b3480156105c257600080fd5b506104446105d136600461324b565b61100a565b3480156105e257600080fd5b506104446105f136600461324b565b6110e9565b34801561060257600080fd5b50610444610611366004613113565b6111c8565b34801561062257600080fd5b5061034f60075481565b34801561063857600080fd5b506028546103e490600160a81b900460ff1681565b34801561065957600080fd5b5061034f61066836600461300b565b6001600160a01b031660009081526008602052604090205490565b34801561068f57600080fd5b5061034f60065481565b3480156106a557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610359565b3480156106d757600080fd5b506103e46106e636600461300b565b600e6020526000908152604090205460ff1681565b34801561070757600080fd5b506103e4610716366004613141565b611271565b34801561072757600080fd5b5061044461073636600461316d565b611357565b34801561074757600080fd5b5061044461075636600461324b565b6114ca565b34801561076757600080fd5b50610444610776366004613113565b61159d565b34801561078757600080fd5b506028546106b3906001600160a01b031681565b3480156107a757600080fd5b506104446107b636600461324b565b611889565b3480156107c757600080fd5b506103e46107d6366004613141565b61195b565b3480156107e757600080fd5b506103e46107f636600461300b565b600b6020526000908152604090205460ff1681565b34801561081757600080fd5b5061044461082636600461300b565b611968565b34801561083757600080fd5b50610444610846366004613292565b6119d2565b34801561085757600080fd5b50610444610866366004613113565b611b03565b34801561087757600080fd5b5061034f60115481565b34801561088d57600080fd5b5061034f61089c366004613028565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156108d357600080fd5b506104446108e236600461322d565b611bac565b3480156108f357600080fd5b506106b361090236600461324b565b611c6c565b34801561091357600080fd5b5061044461092236600461300b565b611c96565b34801561093357600080fd5b5061044461094236600461300b565b611cfa565b34801561095357600080fd5b50610444610962366004613292565b611db0565b34801561097357600080fd5b50610444610982366004613113565b611ecf565b34801561099357600080fd5b506027546106b3906001600160a01b031681565b3480156109b357600080fd5b506103e46109c236600461300b565b600c6020526000908152604090205460ff1681565b3480156109e357600080fd5b506103e46109f236600461300b565b6001600160a01b031660009081526001602052604090205460ff1690565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a6b9086815260200190565b60405180910390a35060015b92915050565b3360009081526001602052604090205460ff16610acf5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b602854600160a01b900460ff1615610b295760405162461bcd60e51b815260206004820152601260248201527f43616e27742073746f702074726164696e6700000000000000000000000000006044820152606401610ac6565b602880547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b83151502179055436011819055601054610b6e9190611f78565b60125560405181151581527f316709d79ee7f0c74ca101f383d03c0651393c02be15433064ce7707ee82c9df906020015b60405180910390a150565b3360009081526001602052604090205460ff16610bf75760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b03851615801590610c1757506001600160a01b03841615155b8015610c2b57506001600160a01b03831615155b8015610c3f57506001600160a01b03821615155b8015610c5357506001600160a01b03811615155b610c9f5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e0000000000000000006044820152606401610ac6565b602280546001600160a01b0387811673ffffffffffffffffffffffffffffffffffffffff1992831681179093556023805488831690841681179091556024805488841690851681179091556025805488851690861681179091556026805494881694909516841790945560408051958652602086019290925290840152606083019190915260808201527fcbc6e694f9cedabb09aeff1b1031513e7c8738cedf6395c1cd6d08760e28bc6e9060a00160405180910390a15050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610e1157604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610dec918490611fd7565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610e1c848484612011565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610e73906003546001600160a01b0316600090815260086020526040902054610e6d9060055490612561565b90612561565b905090565b3360009081526001602052604090205460ff16610ec55760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b60405133904780156108fc02916000818181858888f19350505050158015610ef1573d6000803e3d6000fd5b50565b3360009081526001602052604090205460ff16610f415760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b0382166000818152600c6020908152604091829020805460ff19168515159081179091558251938452908301527ffa491a64c37cae03f614a1a2cac67ee30dd227958ca171908cf843cf9692fdda91015b60405180910390a15050565b6000610a7782600019610a10565b3360009081526001602052604090205460ff166110005760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6110086125a3565b565b3360009081526001602052604090205460ff166110575760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b600554611066906127106129d8565b81116110b45760405162461bcd60e51b815260206004820152601660248201527f43616e27742072657374726963742074726164696e67000000000000000000006044820152606401610ac6565b60068190556040518181527f510e4637d257d903a794aca1c3cac80d12bf71d2409f8f975ff245c61845732e90602001610b9f565b3360009081526001602052604090205460ff166111365760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b600554611145906127106129d8565b81116111935760405162461bcd60e51b815260206004820152601660248201527f43616e27742072657374726963742074726164696e67000000000000000000006044820152606401610ac6565b60078190556040518181527fd3028a4dc8f3e7c2bbc9b4259751380fe21f44274195bcf63ebaaac4c17cbc8b90602001610b9f565b3360009081526001602052604090205460ff166112155760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610f99565b3360009081526001602052604081205460ff166112be5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561131f57600080fd5b505af1158015611333573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1f9190613210565b3360009081526001602052604090205460ff166113a45760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b60c8821061141a5760405162461bcd60e51b815260206004820152602560248201527f43616e27742075706461746520746f6f206d616e792077616c6c65747320617460448201527f206f6e63650000000000000000000000000000000000000000000000000000006064820152608401610ac6565b60005b828110156114895781600c600086868581811061143c5761143c6134ab565b9050602002016020810190611451919061300b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561148281613464565b905061141d565b507f11d4d128e8f89ae2e8815168b9eba079dd6668b75f1e3a9dd96ac6192a7c4dcb8383836040516114bd939291906132d5565b60405180910390a1505050565b3360009081526001602052604090205460ff166115175760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b601e5481106115685760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e6e6f7420626520686967686572207468616e2033302500006044820152606401610ac6565b601d8190556040518181527f0496ed1e61eb69727f9659a8e859288db4758ffb1f744d1c1424634f90a257f490602001610b9f565b3360009081526001602052604090205460ff166115ea5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156116595760405162461bcd60e51b815260206004820152601160248201527f56616c756520616c7265616479207365740000000000000000000000000000006044820152606401610ac6565b6001600160a01b0382166000908152600b60205260409020805460ff191682158015919091179091556116e357600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841617905561184d565b600a546001106117355760405162461bcd60e51b815260206004820152600f60248201527f52657175697265642031207061697200000000000000000000000000000000006044820152606401610ac6565b60005b600a5481101561184b57826001600160a01b0316600a828154811061175f5761175f6134ab565b6000918252602090912001546001600160a01b0316141561183957600a805461178a9060019061344d565b8154811061179a5761179a6134ab565b600091825260209091200154600a80546001600160a01b0390921691839081106117c6576117c66134ab565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a80548061180557611805613495565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff1916905501905561184b565b8061184381613464565b915050611738565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602052604090205460ff166118d65760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b603281106119265760405162461bcd60e51b815260206004820152601260248201527f43616e277420676f2074686174206869676800000000000000000000000000006044820152606401610ac6565b60108190556040518181527f80838eb3341767dec8bc142ca41047631270a18952c3b835d5ca0d1c3608a2cb90602001610b9f565b6000610e1f338484612011565b6000546001600160a01b031633146119ab5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610ac6565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff16611a1f5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b60188690556019859055601a849055601b839055601c829055611a5082611a4a858188818c8c611f78565b90611f78565b60208190556021829055601e541015611aab5760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e6e6f7420626520686967686572207468616e2033302500006044820152606401610ac6565b604080518781526020810187905290810185905260608101849052608081018390527ffdd7c66a68b70fa92b44bc177e5154fe4ae8a19e8fc2920396a5ea2db9a783329060a0015b60405180910390a1505050505050565b3360009081526001602052604090205460ff16611b505760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f6ed6ea20fcc829cc51f14b3190919b5563b8ffaec1eb69b4070c7a539f42f35b9101610f99565b3360009081526001602052604090205460ff16611bf95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b602880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b84151590810291909117909155602982905560408051918252602082018390527fbb6a036f87bc4903f9d59c9f83a8733a8e8004a0a17b29bf1a817b4fe6bcf6bd9101610f99565b600a8181548110611c7c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314611cd95760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610ac6565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611d3d5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610ac6565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610b9f565b3360009081526001602052604090205460ff16611dfd5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b60138690556014859055601584905560168390556017829055611e2882611a4a858188818c8c611f78565b601f8190556021829055601e541015611e835760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e6e6f7420626520686967686572207468616e2033302500006044820152606401610ac6565b604080518781526020810187905290810185905260608101849052608081018390527f0ebc4c8adc990f93864d49e46d4543ac8e892fd73ba3ebe0b1794d0f6929f8169060a001611af3565b3360009081526001602052604090205460ff16611f1c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610ac6565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f62ff8320fc089e815ec009a710ef61f8c650c1666630c8fc091aee0f66474f669101610f99565b600080611f8583856133f4565b905083811015610e1f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ac6565b60008184841115611ffb5760405162461bcd60e51b8152600401610ac6919061332e565b506000612008848661344d565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff1615801561205357506001600160a01b0383166000908152600c602052604090205460ff16155b61209f5760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c69737465640000000000000000000000000000000000000000006044820152606401610ac6565b602a5460ff16156120bc576120b5848484612a1a565b9050610e1f565b6001600160a01b0384166000908152600d602052604090205460ff161580156120fe57506001600160a01b0383166000908152600d602052604090205460ff16155b1561215c57602854600160a01b900460ff1661215c5760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610ac6565b612164612b09565b15612171576121716125a3565b6001600160a01b0384166000908152600b6020526040902054829060ff16156122c7576001600160a01b0384166000908152600d602052604090205460ff166122c2576007546001600160a01b0385166000908152600860205260409020546121da9085611f78565b1115806121ff57506001600160a01b0384166000908152600f602052604090205460ff165b61224b5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610ac6565b6006548311158061227457506001600160a01b0384166000908152600e602052604090205460ff165b6122b45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ac6565b6122bf858585612b61565b90505b6124a8565b6001600160a01b0384166000908152600b602052604090205460ff161561237b576001600160a01b0385166000908152600d602052604090205460ff166122c2576006548311158061233157506001600160a01b0385166000908152600e602052604090205460ff165b6123715760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ac6565b6122bf8584612d2e565b6001600160a01b0385166000908152600d602052604090205460ff166124a8576007546001600160a01b0385166000908152600860205260409020546123c19085611f78565b1115806123e657506001600160a01b0384166000908152600f602052604090205460ff165b6124325760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610ac6565b6006548311158061245b57506001600160a01b0385166000908152600e602052604090205460ff165b61249b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ac6565b6124a58584612e93565b90505b6001600160a01b0385166000908152600860205260409020546124cb9084612561565b6001600160a01b0380871660009081526008602052604080822093909355908616815220546124fa9082611f78565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061254e9085815260200190565b60405180910390a3506001949350505050565b6000610e1f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fd7565b602a805460ff191660011790556018546013546000916125c39190611f78565b905060006125ea601c54610e6d601754610e6d602054601f54611f7890919063ffffffff16565b30600090815260086020526040812054919250612614600261260e85818689612f42565b906129d8565b905060006126228383612561565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061265c5761265c6134ab565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061268d5761268d6134ab565b6001600160a01b0392831660209182029290920101526027546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906126ec908690600090869030904290600401613383565b600060405180830381600087803b15801561270657600080fd5b505af115801561271a573d6000803e3d6000fd5b505050506000612733834761256190919063ffffffff16565b9050600061274c6127458a60026129d8565b8990612561565b9050600061277a600261260e8461260e612773601854601354611f7890919063ffffffff16565b8890612f42565b905060006127a38361260e61279c601954601454611f7890919063ffffffff16565b8790612f42565b905060006127c58461260e612773601a54601554611f7890919063ffffffff16565b905060006127ee8561260e6127e7601b54601654611f7890919063ffffffff16565b8990612f42565b6023546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612840576040519150601f19603f3d011682016040523d82523d6000602084013e612845565b606091505b50506024546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612895576040519150601f19603f3d011682016040523d82523d6000602084013e61289a565b606091505b50506025546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146128ea576040519150601f19603f3d011682016040523d82523d6000602084013e6128ef565b606091505b5060009250508b1590506129be576027546022546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561298157600080fd5b505af1158015612995573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129ba9190613264565b5050505b5050602a805460ff19169055505050505050505050505050565b6000610e1f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fdd565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600890915291822054612a74918490611fd7565b6001600160a01b038086166000908152600860205260408082209390935590851681522054612aa39083611f78565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612af79086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff16158015612b2c5750602a5460ff16155b8015612b415750602854600160a81b900460ff165b8015610e7357505060295430600090815260086020526040902054101590565b6000601254431015612bc2576028546001600160a01b03848116911614801590612b9957506027546001600160a01b03848116911614155b15612bc2576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b6000612beb60215461260e612be4601754601f5461256190919063ffffffff16565b8690612f42565b90506000612c0a60215461260e60175487612f4290919063ffffffff16565b90506000612c188383611f78565b30600090815260086020526040902054909150612c359084611f78565b30600081815260086020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612c869087815260200190565b60405180910390a38115612d19576026546001600160a01b0316600090815260086020526040902054612cb99083611f78565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b612d238582612561565b979650505050505050565b600080612d5160215461260e612be4601c5460205461256190919063ffffffff16565b90506000612d7060215461260e601c5487612f4290919063ffffffff16565b90506000612d7e8383611f78565b30600090815260086020526040902054909150612d9b9084611f78565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612dec9087815260200190565b60405180910390a38115612e7f576026546001600160a01b0316600090815260086020526040902054612e1f9083611f78565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b612e898582612561565b9695505050505050565b601d5460125460009190431015612ea8575060635b602154600090612ebc9061260e8685612f42565b90508015612f385730600090815260086020526040902054612ede9082611f78565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f2f9085815260200190565b60405180910390a35b6120088482612561565b600082612f5157506000610a77565b6000612f5d838561342e565b905082612f6a858361340c565b14610e1f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610ac6565b60008183612ffe5760405162461bcd60e51b8152600401610ac6919061332e565b506000612008848661340c565b60006020828403121561301d57600080fd5b8135610e1f816134c1565b6000806040838503121561303b57600080fd5b8235613046816134c1565b91506020830135613056816134c1565b809150509250929050565b600080600080600060a0868803121561307957600080fd5b8535613084816134c1565b94506020860135613094816134c1565b935060408601356130a4816134c1565b925060608601356130b4816134c1565b915060808601356130c4816134c1565b809150509295509295909350565b6000806000606084860312156130e757600080fd5b83356130f2816134c1565b92506020840135613102816134c1565b929592945050506040919091013590565b6000806040838503121561312657600080fd5b8235613131816134c1565b91506020830135613056816134d6565b6000806040838503121561315457600080fd5b823561315f816134c1565b946020939093013593505050565b60008060006040848603121561318257600080fd5b833567ffffffffffffffff8082111561319a57600080fd5b818601915086601f8301126131ae57600080fd5b8135818111156131bd57600080fd5b8760208260051b85010111156131d257600080fd5b602092830195509350508401356131e8816134d6565b809150509250925092565b60006020828403121561320557600080fd5b8135610e1f816134d6565b60006020828403121561322257600080fd5b8151610e1f816134d6565b6000806040838503121561324057600080fd5b823561315f816134d6565b60006020828403121561325d57600080fd5b5035919050565b60008060006060848603121561327957600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156132ab57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6040808252810183905260008460608301825b868110156133185782356132fb816134c1565b6001600160a01b03168252602092830192909101906001016132e8565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b8181101561335b5785810183015185820160400152820161333f565b8181111561336d576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133d35784516001600160a01b0316835293830193918301916001016133ae565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156134075761340761347f565b500190565b60008261342957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156134485761344861347f565b500290565b60008282101561345f5761345f61347f565b500390565b60006000198214156134785761347861347f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610ef157600080fd5b8015158114610ef157600080fdfea2646970667358221220bee9637f3393b8a31011f777052850e4bf6e7c718e82fd0a5c696bd3a9e3b99064736f6c63430008070033

Deployed Bytecode Sourcemap

4810:19238:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7788:25;;;;;;;;;;;;;;;;;;;15950::1;;;15938:2;15923:18;7788:25:0;;;;;;;;8689:54;;;;;;;;;;;;;;;;9955:80;;;;;;;;;;-1:-1:-1;10027:5:0;;;;;;;;;;;;;;;;9955:80;;;;10027:5;9955:80;:::i;10377:216::-;;;;;;;;;;-1:-1:-1;10377:216:0;;;;;:::i;:::-;;:::i;:::-;;;8984:14:1;;8977:22;8959:41;;8947:2;8932:18;10377:216:0;8819:187:1;7129:50:0;;;;;;;;;;-1:-1:-1;7129:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16296:308;;;;;;;;;;-1:-1:-1;16296:308:0;;;;;:::i;:::-;;:::i;:::-;;9685:88;;;;;;;;;;-1:-1:-1;9758:12:0;;9685:88;;21953:825;;;;;;;;;;-1:-1:-1;21953:825:0;;;;;:::i;:::-;;:::i;10895:370::-;;;;;;;;;;-1:-1:-1;10895:370:0;;;;;:::i;:::-;;:::i;23901:142::-;;;;;;;;;;;;;:::i;2818:103::-;;;;;;;;;;-1:-1:-1;2818:103:0;;;;;:::i;:::-;2873:4;2908:5;-1:-1:-1;;;;;2897:16:0;;;2908:5;;2897:16;;2818:103;9779:80;;;;;;;;;;-1:-1:-1;9779:80:0;;6523:2;17627:36:1;;17615:2;17600:18;9779:80:0;17485:184:1;15970:119:0;;;;;;;;;;;;;:::i;7023:44::-;;;;;;;;;;-1:-1:-1;7023:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19457:180;;;;;;;;;;-1:-1:-1;19457:180:0;;;;;:::i;:::-;;:::i;8611:34::-;;;;;;;;;;-1:-1:-1;8611:34:0;;;;-1:-1:-1;;;8611:34:0;;;;;;10601:122;;;;;;;;;;-1:-1:-1;10601:122:0;;;;;:::i;:::-;;:::i;23814:75::-;;;;;;;;;;;;;:::i;18649:212::-;;;;;;;;;;-1:-1:-1;18649:212:0;;;;;:::i;:::-;;:::i;18869:222::-;;;;;;;;;;-1:-1:-1;18869:222:0;;;;;:::i;:::-;;:::i;19844:166::-;;;;;;;;;;-1:-1:-1;19844:166:0;;;;;:::i;:::-;;:::i;6663:60::-;;;;;;;;;;;;;;;;8652:30;;;;;;;;;;-1:-1:-1;8652:30:0;;;;-1:-1:-1;;;8652:30:0;;;;;;10125:105;;;;;;;;;;-1:-1:-1;10125:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10209:18:0;10191:7;10209:18;;;:9;:18;;;;;;;10125:105;6598:58;;;;;;;;;;;;;;;;10041:78;;;;;;;;;;-1:-1:-1;10093:7:0;10111:5;-1:-1:-1;;;;;10111:5:0;10041:78;;;-1:-1:-1;;;;;5868:55:1;;;5850:74;;5838:2;5823:18;10041:78:0;5704:226:1;7074:48:0;;;;;;;;;;-1:-1:-1;7074:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16097:168;;;;;;;;;;-1:-1:-1;16097:168:0;;;;;:::i;:::-;;:::i;19099:350::-;;;;;;;;;;-1:-1:-1;19099:350:0;;;;;:::i;:::-;;:::i;21707:236::-;;;;;;;;;;-1:-1:-1;21707:236:0;;;;;:::i;:::-;;:::i;23002:802::-;;;;;;;;;;-1:-1:-1;23002:802:0;;;;;:::i;:::-;;:::i;8583:19::-;;;;;;;;;;-1:-1:-1;8583:19:0;;;;-1:-1:-1;;;;;8583:19:0;;;19645:191;;;;;;;;;;-1:-1:-1;19645:191:0;;;;;:::i;:::-;;:::i;10731:156::-;;;;;;;;;;-1:-1:-1;10731:156:0;;;;;:::i;:::-;;:::i;6899:58::-;;;;;;;;;;-1:-1:-1;6899:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2611:94;;;;;;;;;;-1:-1:-1;2611:94:0;;;;;:::i;:::-;;:::i;21040:659::-;;;;;;;;;;-1:-1:-1;21040:659:0;;;;;:::i;:::-;;:::i;20204:184::-;;;;;;;;;;-1:-1:-1;20204:184:0;;;;;:::i;:::-;;:::i;7240:26::-;;;;;;;;;;;;;;;;10236:133;;;;;;;;;;-1:-1:-1;10236:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10338:19:0;;;10320:7;10338:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10236:133;22786:208;;;;;;;;;;-1:-1:-1;22786:208:0;;;;;:::i;:::-;;:::i;6863:29::-;;;;;;;;;;-1:-1:-1;6863:29:0;;;;;:::i;:::-;;:::i;2713:97::-;;;;;;;;;;-1:-1:-1;2713:97:0;;;;;:::i;:::-;;:::i;3044:173::-;;;;;;;;;;-1:-1:-1;3044:173:0;;;;;:::i;:::-;;:::i;20396:636::-;;;;;;;;;;-1:-1:-1;20396:636:0;;;;;:::i;:::-;;:::i;20018:178::-;;;;;;;;;;-1:-1:-1;20018:178:0;;;;;:::i;:::-;;:::i;8552:24::-;;;;;;;;;;-1:-1:-1;8552:24:0;;;;-1:-1:-1;;;;;8552:24:0;;;6968:46;;;;;;;;;;-1:-1:-1;6968:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2929:107;;;;;;;;;;-1:-1:-1;2929:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;3009:19:0;2985:4;3009:19;;;:14;:19;;;;;;;;;2929:107;10377:216;10481:10;10452:4;10469:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10469:32:0;;;;;;;;;;:41;;;10526:37;10452:4;;10469:32;;10526:37;;;;10504:6;15950:25:1;;15938:2;15923:18;;15804:177;10526:37:0;;;;;;;;-1:-1:-1;10581:4:0;10377:216;;;;;:::o;16296:308::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;;;;;;;;;16365:14:::1;::::0;-1:-1:-1;;;16365:14:0;::::1;;;:23;16357:54;;;::::0;-1:-1:-1;;;16357:54:0;;12777:2:1;16357:54:0::1;::::0;::::1;12759:21:1::0;12816:2;12796:18;;;12789:30;12855:20;12835:18;;;12828:48;12893:18;;16357:54:0::1;12575:342:1::0;16357:54:0::1;16422:14;:24:::0;;;::::1;-1:-1:-1::0;;;16422:24:0;::::1;;;;::::0;;16471:12:::1;16457:11;:26:::0;;;16531:10:::1;::::0;16514:28:::1;::::0;16471:12;16514:16:::1;:28::i;:::-;16494:17;:48:::0;16560:36:::1;::::0;8984:14:1;;8977:22;8959:41;;16560:36:0::1;::::0;8947:2:1;8932:18;16560:36:0::1;;;;;;;;16296:308:::0;:::o;21953:825::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;22162:36:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;;;;;;22202:35:0;::::1;::::0;::::1;22162:75;:115;;;;-1:-1:-1::0;;;;;;22241:36:0;::::1;::::0;::::1;22162:115;:148;;;;-1:-1:-1::0;;;;;;22281:29:0;::::1;::::0;::::1;22162:148;:182;;;;-1:-1:-1::0;;;;;;22314:30:0;::::1;::::0;::::1;22162:182;22154:219;;;::::0;-1:-1:-1;;;22154:219:0;;13124:2:1;22154:219:0::1;::::0;::::1;13106:21:1::0;13163:2;13143:18;;;13136:30;13202:25;13182:18;;;13175:53;13245:18;;22154:219:0::1;12922:347:1::0;22154:219:0::1;22384:21;:46:::0;;-1:-1:-1;;;;;22384:46:0;;::::1;-1:-1:-1::0;;22384:46:0;;::::1;::::0;::::1;::::0;;;22441:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;22496:21:::1;:46:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;22553:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;22596:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;22649:121:::1;::::0;;6494:34:1;;;6559:2;6544:18;;6537:43;;;;6596:18;;;6589:43;6663:2;6648:18;;6641:43;;;;6715:3;6700:19;;6693:44;22649:121:0::1;::::0;6420:3:1;6405:19;22649:121:0::1;;;;;;;21953:825:::0;;;;;:::o;10895:370::-;-1:-1:-1;;;;;11015:19:0;;10995:4;11015:19;;;:11;:19;;;;;;;;11035:10;11015:31;;;;;;;;-1:-1:-1;;11015:52:0;11012:186;;11117:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11117:19:0;;-1:-1:-1;11117:19:0;;;:11;:19;;;;;11137:10;11117:31;;;;;;;;;;:69;;11153:6;;11117:35;:69::i;:::-;-1:-1:-1;;;;;11083:19:0;;;;;;:11;:19;;;;;;;;11103:10;11083:31;;;;;;;:103;11012:186;11217:40;11231:6;11239:9;11250:6;11217:13;:40::i;:::-;11210:47;;10895:370;;;;;;:::o;23901:142::-;24029:4;;-1:-1:-1;;;;;24029:4:0;23954:7;10209:18;;;:9;:18;;;;;;23981:54;;24008:4;;-1:-1:-1;;;;;24008:4:0;10191:7;10209:18;;;:9;:18;;;;;;23981:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;23974:61;;23901:142;:::o;15970:119::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;16030:51:::1;::::0;16038:10:::1;::::0;16059:21:::1;16030:51:::0;::::1;;;::::0;::::1;::::0;;;16059:21;16038:10;16030:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15970:119::o:0;19457:180::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;19533:23:0;::::1;;::::0;;;:13:::1;:23;::::0;;;;;;;;:31;;-1:-1:-1;;19533:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19590:39;;6916:74:1;;;7006:18;;;6999:50;19590:39:0::1;::::0;6889:18:1;19590:39:0::1;;;;;;;;19457:180:::0;;:::o;10601:122::-;10656:4;10680:35;10688:7;-1:-1:-1;;10680:7:0;:35::i;23814:75::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;23871:10:::1;:8;:10::i;:::-;23814:75::o:0;18649:212::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;18733:12:::1;::::0;:23:::1;::::0;18750:5:::1;18733:16;:23::i;:::-;18724:6;:32;18716:67;;;::::0;-1:-1:-1;;;18716:67:0;;10327:2:1;18716:67:0::1;::::0;::::1;10309:21:1::0;10366:2;10346:18;;;10339:30;10405:24;10385:18;;;10378:52;10447:18;;18716:67:0::1;10125:346:1::0;18716:67:0::1;18794:12;:21:::0;;;18833:20:::1;::::0;15950:25:1;;;18833:20:0::1;::::0;15938:2:1;15923:18;18833:20:0::1;15804:177:1::0;18869:222:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;18955:12:::1;::::0;:23:::1;::::0;18972:5:::1;18955:16;:23::i;:::-;18946:6;:32;18938:67;;;::::0;-1:-1:-1;;;18938:67:0;;10327:2:1;18938:67:0::1;::::0;::::1;10309:21:1::0;10366:2;10346:18;;;10339:30;10405:24;10385:18;;;10378:52;10447:18;;18938:67:0::1;10125:346:1::0;18938:67:0::1;19016:16;:25:::0;;;19059:24:::1;::::0;15950:25:1;;;19059:24:0::1;::::0;15938:2:1;15923:18;19059:24:0::1;15804:177:1::0;19844:166:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;19928:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;19928:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19974;;6916:74:1;;;7006:18;;;6999:50;19974:28:0::1;::::0;6889:18:1;19974:28:0::1;6748:307:1::0;16097:168:0;2565:10;16185:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;16209::::1;::::0;;;;16238:10:::1;16209:48;::::0;::::1;7234:74:1::0;7324:18;;;7317:34;;;-1:-1:-1;;;;;16209:28:0;::::1;::::0;::::1;::::0;7207:18:1;;16209:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19099:350::-:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;19227:3:::1;19208:22:::0;::::1;19199:73;;;::::0;-1:-1:-1;;;19199:73:0;;14920:2:1;19199:73:0::1;::::0;::::1;14902:21:1::0;14959:2;14939:18;;;14932:30;14998:34;14978:18;;;14971:62;15069:7;15049:18;;;15042:35;15094:19;;19199:73:0::1;14718:401:1::0;19199:73:0::1;19288:9;19283:106;19299:20:::0;;::::1;19283:106;;;19371:6;19341:13;:27;19355:9;;19365:1;19355:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19341:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19341:27:0;:36;;-1:-1:-1;;19341:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19321:3:::1;::::0;::::1;:::i;:::-;;;19283:106;;;;19406:35;19423:9;;19434:6;19406:35;;;;;;;;:::i;:::-;;;;;;;;19099:350:::0;;;:::o;21707:236::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;21807:6:::1;;21792:12;:21;21784:64;;;::::0;-1:-1:-1;;;21784:64:0;;13476:2:1;21784:64:0::1;::::0;::::1;13458:21:1::0;13515:2;13495:18;;;13488:30;13554:32;13534:18;;;13527:60;13604:18;;21784:64:0::1;13274:354:1::0;21784:64:0::1;21859:11;:26:::0;;;21903:32:::1;::::0;15950:25:1;;;21903:32:0::1;::::0;15938:2:1;15923:18;21903:32:0::1;15804:177:1::0;23002:802:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;23108:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;;::::1;;:42;;::::0;::::1;;;;23100:72;;;::::0;-1:-1:-1;;;23100:72:0;;11731:2:1;23100:72:0::1;::::0;::::1;11713:21:1::0;11770:2;11750:18;;;11743:30;11809:19;11789:18;;;11782:47;11846:18;;23100:72:0::1;11529:341:1::0;23100:72:0::1;-1:-1:-1::0;;;;;23189:32:0;::::1;;::::0;;;:25:::1;:32;::::0;;;;:41;;-1:-1:-1;;23189:41:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23247:482:::1;;23276:12;:24:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23276:24:0;;;;;::::1;::::0;;-1:-1:-1;;23276:24:0::1;-1:-1:-1::0;;;;;23276:24:0;::::1;;::::0;;23247:482:::1;;;23347:12;:19:::0;23369:1:::1;-1:-1:-1::0;23339:51:0::1;;;::::0;-1:-1:-1;;;23339:51:0;;12433:2:1;23339:51:0::1;::::0;::::1;12415:21:1::0;12472:2;12452:18;;;12445:30;12511:17;12491:18;;;12484:45;12546:18;;23339:51:0::1;12231:339:1::0;23339:51:0::1;23414:9;23409:305;23433:12;:19:::0;23429:23;::::1;23409:305;;;23505:5;-1:-1:-1::0;;;;;23486:24:0::1;:12;23499:1;23486:15;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23486:15:0::1;:24;23482:213;;;23557:12;23570:19:::0;;:23:::1;::::0;23592:1:::1;::::0;23570:23:::1;:::i;:::-;23557:37;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23539:12:::1;:15:::0;;-1:-1:-1;;;;;23557:37:0;;::::1;::::0;23552:1;;23539:15;::::1;;;;;:::i;:::-;;;;;;;;;:55;;;;;-1:-1:-1::0;;;;;23539:55:0::1;;;;;-1:-1:-1::0;;;;;23539:55:0::1;;;;;;23621:12;:18;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23621:18:0;;;;;-1:-1:-1;;23621:18:0::1;::::0;;;;;23666:5:::1;;23482:213;23454:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23409:305;;;;23247:482;23750:42;::::0;;::::1;;::::0;-1:-1:-1;;;;;23750:42:0;::::1;::::0;::::1;::::0;;;::::1;23002:802:::0;;:::o;19645:191::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;19729:2:::1;19719:7;:12;19711:43;;;::::0;-1:-1:-1;;;19711:43:0;;10678:2:1;19711:43:0::1;::::0;::::1;10660:21:1::0;10717:2;10697:18;;;10690:30;10756:20;10736:18;;;10729:48;10794:18;;19711:43:0::1;10476:342:1::0;19711:43:0::1;19765:10;:20:::0;;;19811:17:::1;::::0;15950:25:1;;;19811:17:0::1;::::0;15938:2:1;15923:18;19811:17:0::1;15804:177:1::0;10731:156:0;10811:4;10835:44;10849:10;10861:9;10872:6;10835:13;:44::i;2611:94::-;2873:4;2908:5;-1:-1:-1;;;;;2908:5:0;2470:10;2897:16;2454:38;;;;-1:-1:-1;;;2454:38:0;;14586:2:1;2454:38:0;;;14568:21:1;14625:1;14605:18;;;14598:29;-1:-1:-1;;;14643:18:1;;;14636:36;14689:18;;2454:38:0;14384:329:1;2454:38:0;-1:-1:-1;;;;;2671:19:0::1;;::::0;;;2693:4:::1;2671:19;::::0;;;;;;;:26;;-1:-1:-1;;2671:26:0::1;::::0;;::::1;::::0;;2611:94::o;21040:659::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;21214:16:::1;:32:::0;;;21257:16:::1;:32:::0;;;21300:10:::1;:20:::0;;;21331:10:::1;:20:::0;;;21362:11:::1;:22:::0;;;21410:72:::1;21376:8:::0;21410:58:::1;21344:7:::0;21410:58;21313:7;21410:58;21233:13;21276;21410:17:::1;:32::i;:::-;:36:::0;::::1;:45::i;:72::-;21395:12;:87:::0;;;21493:14:::1;:32:::0;;;21560:6:::1;::::0;-1:-1:-1;21544:22:0::1;21536:65;;;::::0;-1:-1:-1;;;21536:65:0;;13476:2:1;21536:65:0::1;::::0;::::1;13458:21:1::0;13515:2;13495:18;;;13488:30;13554:32;13534:18;;;13527:60;13604:18;;21536:65:0::1;13274:354:1::0;21536:65:0::1;21619:72;::::0;;17276:25:1;;;17332:2;17317:18;;17310:34;;;17360:18;;;17353:34;;;17418:2;17403:18;;17396:34;;;17461:3;17446:19;;17439:35;;;21619:72:0::1;::::0;17263:3:1;17248:19;21619:72:0::1;;;;;;;;21040:659:::0;;;;;;:::o;20204:184::-;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;20294:25:0;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;;:34;;-1:-1:-1;;20294:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20346;;6916:74:1;;;7006:18;;;6999:50;20346:34:0::1;::::0;6889:18:1;20346:34:0::1;6748:307:1::0;22786:208:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;22878:11:::1;:22:::0;;;::::1;-1:-1:-1::0;;;22878:22:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;22911:13:::1;:23:::0;;;22952:34:::1;::::0;;9179:41:1;;;9251:2;9236:18;;9229:34;;;22952::0::1;::::0;9152:18:1;22952:34:0::1;9011:258:1::0;6863:29:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6863:29:0;;-1:-1:-1;6863:29:0;:::o;2713:97::-;2873:4;2908:5;-1:-1:-1;;;;;2908:5:0;2470:10;2897:16;2454:38;;;;-1:-1:-1;;;2454:38:0;;14586:2:1;2454:38:0;;;14568:21:1;14625:1;14605:18;;;14598:29;-1:-1:-1;;;14643:18:1;;;14636:36;14689:18;;2454:38:0;14384:329:1;2454:38:0;-1:-1:-1;;;;;2775:19:0::1;2797:5;2775:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2775:27:0::1;::::0;;2713:97::o;3044:173::-;2873:4;2908:5;-1:-1:-1;;;;;2908:5:0;2470:10;2897:16;2454:38;;;;-1:-1:-1;;;2454:38:0;;14586:2:1;2454:38:0;;;14568:21:1;14625:1;14605:18;;;14598:29;-1:-1:-1;;;14643:18:1;;;14636:36;14689:18;;2454:38:0;14384:329:1;2454:38:0;3120:5:::1;:11:::0;;-1:-1:-1;;3120:11:0::1;-1:-1:-1::0;;;;;3120:11:0;::::1;::::0;;::::1;::::0;;3142:19;;;-1:-1:-1;3142:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3142:26:0::1;::::0;;::::1;::::0;;;3184:25;;5850:74:1;;;3184:25:0::1;::::0;5823:18:1;3184:25:0::1;5704:226:1::0;20396:636:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;20570:12:::1;:28:::0;;;20609:12:::1;:28:::0;;;20648:6:::1;:16:::0;;;20675:6:::1;:16:::0;;;20702:7:::1;:18:::0;;;20746:71:::1;20712:8:::0;20746:58:::1;20684:7:::0;20746:58;20657:7;20746:58;20585:13;20624;20746:17:::1;:32::i;:71::-;20732:11;:85:::0;;;20828:14:::1;:32:::0;;;20894:6:::1;::::0;-1:-1:-1;20879:21:0::1;20871:64;;;::::0;-1:-1:-1;;;20871:64:0;;13476:2:1;20871:64:0::1;::::0;::::1;13458:21:1::0;13515:2;13495:18;;;13488:30;13554:32;13534:18;;;13527:60;13604:18;;20871:64:0::1;13274:354:1::0;20871:64:0::1;20953:71;::::0;;17276:25:1;;;17332:2;17317:18;;17310:34;;;17360:18;;;17353:34;;;17418:2;17403:18;;17396:34;;;17461:3;17446:19;;17439:35;;;20953:71:0::1;::::0;17263:3:1;17248:19;20953:71:0::1;17017:463:1::0;20018:178:0;2565:10;2985:4;3009:19;;;:14;:19;;;;;;;;2544:48;;;;-1:-1:-1;;;2544:48:0;;15326:2:1;2544:48:0;;;15308:21:1;15365:2;15345:18;;;15338:30;-1:-1:-1;;;15384:18:1;;;15377:41;15435:18;;2544:48:0;15124:335:1;2544:48:0;-1:-1:-1;;;;;20106:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;;;;:32;;-1:-1:-1;;20106:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20156;;6916:74:1;;;7006:18;;;6999:50;20156:32:0::1;::::0;6889:18:1;20156:32:0::1;6748:307:1::0;166:181:0;224:7;;256:5;260:1;256;:5;:::i;:::-;244:17;;285:1;280;:6;;272:46;;;;-1:-1:-1;;;272:46:0;;12077:2:1;272:46:0;;;12059:21:1;12116:2;12096:18;;;12089:30;12155:29;12135:18;;;12128:57;12202:18;;272:46:0;11875:351:1;495:192:0;581:7;617:12;609:6;;;;601:29;;;;-1:-1:-1;;;601:29:0;;;;;;;;:::i;:::-;-1:-1:-1;641:9:0;653:5;657:1;653;:5;:::i;:::-;641:17;495:192;-1:-1:-1;;;;;495:192:0:o;11273:1846::-;-1:-1:-1;;;;;11391:21:0;;11365:4;11391:21;;;:13;:21;;;;;;;;11390:22;:51;;;;-1:-1:-1;;;;;;11417:24:0;;;;;;:13;:24;;;;;;;;11416:25;11390:51;11382:74;;;;-1:-1:-1;;;11382:74:0;;15666:2:1;11382:74:0;;;15648:21:1;15705:2;15685:18;;;15678:30;15744:13;15724:18;;;15717:41;15775:18;;11382:74:0;15464:335:1;11382:74:0;11470:6;;;;11467:63;;;11486:41;11501:6;11509:9;11520:6;11486:14;:41::i;:::-;11479:48;;;;11467:63;-1:-1:-1;;;;;11546:19:0;;;;;;:11;:19;;;;;;;;11545:20;:47;;;;-1:-1:-1;;;;;;11570:22:0;;;;;;:11;:22;;;;;;;;11569:23;11545:47;11542:124;;;11616:14;;-1:-1:-1;;;11616:14:0;;;;11608:46;;;;-1:-1:-1;;;11608:46:0;;13835:2:1;11608:46:0;;;13817:21:1;13874:2;13854:18;;;13847:30;13913:22;13893:18;;;13886:50;13953:18;;11608:46:0;13633:344:1;11608:46:0;11681:16;:14;:16::i;:::-;11678:35;;;11700:10;:8;:10::i;:::-;-1:-1:-1;;;;;11775:33:0;;11727:22;11775:33;;;:25;:33;;;;;;11752:6;;11775:33;;11772:1111;;;-1:-1:-1;;;;;11835:22:0;;;;;;:11;:22;;;;;;;;11831:365;;11922:16;;-1:-1:-1;;;;;11886:20:0;;;;;;:9;:20;;;;;;:32;;11911:6;11886:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;11942:28:0;;;;;;:17;:28;;;;;;;;11886:84;11878:128;;;;-1:-1:-1;;;11878:128:0;;11371:2:1;11878:128:0;;;11353:21:1;11410:2;11390:18;;;11383:30;11449:33;11429:18;;;11422:61;11500:18;;11878:128:0;11169:355:1;11878:128:0;12043:12;;12033:6;:22;;:52;;;-1:-1:-1;;;;;;12059:26:0;;;;;;:15;:26;;;;;;;;12033:52;12025:82;;;;-1:-1:-1;;;12025:82:0;;11025:2:1;12025:82:0;;;11007:21:1;11064:2;11044:18;;;11037:30;-1:-1:-1;;;11083:18:1;;;11076:47;11140:18;;12025:82:0;10823:341:1;12025:82:0;12143:37;12154:6;12162:9;12173:6;12143:10;:37::i;:::-;12126:54;;11831:365;11772:1111;;;-1:-1:-1;;;;;12218:36:0;;;;;;:25;:36;;;;;;;;12215:668;;;-1:-1:-1;;;;;12282:19:0;;;;;;:11;:19;;;;;;;;12278:204;;12340:12;;12330:6;:22;;:49;;;-1:-1:-1;;;;;;12356:23:0;;;;;;:15;:23;;;;;;;;12330:49;12322:79;;;;-1:-1:-1;;;12322:79:0;;11025:2:1;12322:79:0;;;11007:21:1;11064:2;11044:18;;;11037:30;-1:-1:-1;;;11083:18:1;;;11076:47;11140:18;;12322:79:0;10823:341:1;12322:79:0;12437:27;12449:6;12457;12437:11;:27::i;12215:668::-;-1:-1:-1;;;;;12520:19:0;;;;;;:11;:19;;;;;;;;12515:357;;12605:16;;-1:-1:-1;;;;;12569:20:0;;;;;;:9;:20;;;;;;:32;;12594:6;12569:24;:32::i;:::-;:52;;:84;;;-1:-1:-1;;;;;;12625:28:0;;;;;;:17;:28;;;;;;;;12569:84;12561:128;;;;-1:-1:-1;;;12561:128:0;;11371:2:1;12561:128:0;;;11353:21:1;11410:2;11390:18;;;11383:30;11449:33;11429:18;;;11422:61;11500:18;;12561:128:0;11169:355:1;12561:128:0;12726:12;;12716:6;:22;;:49;;;-1:-1:-1;;;;;;12742:23:0;;;;;;:15;:23;;;;;;;;12716:49;12708:79;;;;-1:-1:-1;;;12708:79:0;;11025:2:1;12708:79:0;;;11007:21:1;11064:2;11044:18;;;11037:30;-1:-1:-1;;;11083:18:1;;;11076:47;11140:18;;12708:79:0;10823:341:1;12708:79:0;12823:31;12839:6;12847;12823:15;:31::i;:::-;12806:48;;12515:357;-1:-1:-1;;;;;12915:17:0;;;;;;:9;:17;;;;;;:29;;12937:6;12915:21;:29::i;:::-;-1:-1:-1;;;;;12895:17:0;;;;;;;:9;:17;;;;;;:49;;;;12978:20;;;;;;;:40;;13003:14;12978:24;:40::i;:::-;-1:-1:-1;;;;;12955:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13046:43;;;;;;;;;;13074:14;15950:25:1;;15938:2;15923:18;;15804:177;13046:43:0;;;;;;;;-1:-1:-1;13107:4:0;;11273:1846;-1:-1:-1;;;;11273:1846:0:o;353:136::-;411:7;438:43;442:1;445;438:43;;;;;;;;;;;;;;;;;:3;:43::i;16612:2003::-;8800:6;:13;;-1:-1:-1;;8800:13:0;8809:4;8800:13;;;16705:16:::1;::::0;16688:12:::1;::::0;8800:6;;16688:34:::1;::::0;:12;:16:::1;:34::i;:::-;16661:61;;16733:20;16755:59;16802:11;;16755:42;16789:7;;16755:29;16771:12;;16755:11;;:15;;:29;;;;:::i;:59::-;16876:4;16827:28;16858:24:::0;;;:9:::1;:24;::::0;;;;;16733:81;;-1:-1:-1;16919:67:0::1;16984:1;16919:60;16733:81:::0;16919:60;16858:24;16944:16;16919:24:::1;:42::i;:::-;:46:::0;::::1;:60::i;:67::-;16893:93:::0;-1:-1:-1;16997:20:0::1;17020:41;:20:::0;16893:93;17020:24:::1;:41::i;:::-;17156:16;::::0;;17170:1:::1;17156:16:::0;;;;;::::1;::::0;;16997:64;;-1:-1:-1;17098:21:0::1;::::0;17074::::1;::::0;17156:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17156:16:0::1;17132:40;;17201:4;17183;17188:1;17183:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17183:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17227:4:::1;::::0;17217:7;;17227:4;::::1;::::0;17217;;17227;;17217:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;17217:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17244:6:::1;::::0;:188:::1;::::0;;;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17316:12;;17244:6:::1;::::0;17359:4;;17386::::1;::::0;17406:15:::1;::::0;17244:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17445:17;17465:40;17491:13;17465:21;:25;;:40;;;;:::i;:::-;17445:60:::0;-1:-1:-1;17518:19:0::1;17540:41;17557:23;:16:::0;17578:1:::1;17557:20;:23::i;:::-;17540:12:::0;;:16:::1;:41::i;:::-;17518:63;;17602:26;17631:73;17702:1;17631:66;17685:11;17631:49;17645:34;17662:16;;17645:12;;:16;;:34;;;;:::i;:::-;17631:9:::0;;:13:::1;:49::i;:73::-;17602:102;;17715:26;17744:66;17798:11;17744:49;17758:34;17775:16;;17758:12;;:16;;:34;;;;:::i;:::-;17744:9:::0;;:13:::1;:49::i;:66::-;17715:95;;17821:20;17844:54;17886:11;17844:37;17858:22;17869:10;;17858:6;;:10;;:22;;;;:::i;17844:54::-;17821:77;;17909:20;17932:54;17974:11;17932:37;17946:22;17957:10;;17946:6;;:10;;:22;;;;:::i;:::-;17932:9:::0;;:13:::1;:37::i;:54::-;18028:20;::::0;18020:65:::1;::::0;17909:77;;-1:-1:-1;18000:15:0::1;::::0;-1:-1:-1;;;;;18028:20:0;;::::1;::::0;18062:18;;18000:15;18020:65;18000:15;18020:65;18062:18;18028:20;18020:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18120:21:0::1;::::0;18112:60:::1;::::0;17999:86;;-1:-1:-1;;;;;;18120:21:0::1;::::0;18155:12;;18112:60:::1;::::0;;;18155:12;18120:21;18112:60:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18207:14:0::1;::::0;18199:53:::1;::::0;18096:76;;-1:-1:-1;;;;;;18207:14:0::1;::::0;18235:12;;18199:53:::1;::::0;;;18235:12;18207:14;18199:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;18286:5:0::1;::::0;-1:-1:-1;;18307:19:0;;;-1:-1:-1;18304:294:0::1;;18342:6;::::0;18516:21:::1;::::0;18342:244:::1;::::0;;;;18418:4:::1;18342:244;::::0;::::1;7726:34:1::0;7776:18;;;7769:34;;;18342:6:0::1;7819:18:1::0;;;7812:34;;;7862:18;;;7855:34;-1:-1:-1;;;;;18516:21:0;;::::1;7905:19:1::0;;;7898:44;18556:15:0::1;7958:19:1::0;;;7951:35;18342:6:0;::::1;::::0;:22:::1;::::0;18372:18;;7637:19:1;;18342:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18304:294;-1:-1:-1::0;;8818:6:0;:14;;-1:-1:-1;;8818:14:0;;;-1:-1:-1;;;;;;;;;;;;16612:2003:0:o;949:132::-;1007:7;1034:39;1038:1;1041;1034:39;;;;;;;;;;;;;;;;;:3;:39::i;13131:330::-;13261:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13261:17:0;;13224:4;13261:17;;;:9;:17;;;;;;;:53;;13283:6;;13261:21;:53::i;:::-;-1:-1:-1;;;;;13241:17:0;;;;;;;:9;:17;;;;;;:73;;;;13348:20;;;;;;;:32;;13373:6;13348:24;:32::i;:::-;-1:-1:-1;;;;;13325:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13396:35;;;;;;;;;;13424:6;15950:25:1;;15938:2;15923:18;;15804:177;13396:35:0;;;;;;;;-1:-1:-1;13449:4:0;13131:330;;;;;:::o;15736:226::-;15845:10;15785:4;15819:37;;;:25;:37;;;;;;;;15818:38;:58;;;;-1:-1:-1;15870:6:0;;;;15869:7;15818:58;:82;;;;-1:-1:-1;15889:11:0;;-1:-1:-1;;;15889:11:0;;;;15818:82;:136;;;;-1:-1:-1;;15941:13:0;;15931:4;15913:24;;;;:9;:24;;;;;;:41;;;15736:226::o;13482:940::-;13571:7;13624:17;;13609:12;:32;13605:189;;;13675:4;;-1:-1:-1;;;;;13662:17:0;;;13675:4;;13662:17;;;;:49;;-1:-1:-1;13704:6:0;;-1:-1:-1;;;;;13683:28:0;;;13704:6;;13683:28;;13662:49;13658:121;;;-1:-1:-1;;;;;13732:24:0;;;;;;:13;:24;;;;;:31;;-1:-1:-1;;13732:31:0;13759:4;13732:31;;;13658:121;13814:17;13834:56;13875:14;;13834:36;13845:24;13861:7;;13845:11;;:15;;:24;;;;:::i;:::-;13834:6;;:10;:36::i;:56::-;13814:76;;13901:21;13925:39;13949:14;;13925:19;13936:7;;13925:6;:10;;:19;;;;:::i;:39::-;13901:63;-1:-1:-1;13975:22:0;14000:28;:9;13901:63;14000:13;:28::i;:::-;14086:4;14068:24;;;;:9;:24;;;;;;13975:53;;-1:-1:-1;14068:39:0;;14097:9;14068:28;:39::i;:::-;14059:4;14041:24;;;;:9;:24;;;;;;;:66;;;;14123:42;;-1:-1:-1;;;;;14123:42:0;;;;;;;14155:9;15950:25:1;;15938:2;15923:18;;15804:177;14123:42:0;;;;;;;;14181:17;;14178:191;;14254:15;;-1:-1:-1;;;;;14254:15:0;14244:26;;;;:9;:26;;;;;;:45;;14275:13;14244:30;:45::i;:::-;14225:15;;;-1:-1:-1;;;;;14225:15:0;;;14215:26;;;;:9;:26;;;;;;;;;:74;;;;14326:15;;14309:48;;15950:25:1;;;14326:15:0;;;;14309:48;;;;;;15923:18:1;14309:48:0;;;;;;;14178:191;14388:26;:6;14399:14;14388:10;:26::i;:::-;14381:33;13482:940;-1:-1:-1;;;;;;;13482:940:0:o;14430:723::-;14501:7;14522:17;14542:61;14588:14;;14542:41;14553:29;14570:11;;14553:12;;:16;;:29;;;;:::i;14542:61::-;14522:81;;14614:21;14638:43;14666:14;;14638:23;14649:11;;14638:6;:10;;:23;;;;:::i;:43::-;14614:67;-1:-1:-1;14692:22:0;14717:28;:9;14614:67;14717:13;:28::i;:::-;14803:4;14785:24;;;;:9;:24;;;;;;14692:53;;-1:-1:-1;14785:39:0;;14814:9;14785:28;:39::i;:::-;14776:4;14758:24;;;;:9;:24;;;;;;;:66;;;;14840:42;;-1:-1:-1;;;;;14840:42:0;;;;;;;14872:9;15950:25:1;;15938:2;15923:18;;15804:177;14840:42:0;;;;;;;;14898:17;;14895:191;;14971:15;;-1:-1:-1;;;;;14971:15:0;14961:26;;;;:9;:26;;;;;;:45;;14992:13;14961:30;:45::i;:::-;14942:15;;;-1:-1:-1;;;;;14942:15:0;;;14932:26;;;;:9;:26;;;;;;;;;:74;;;;15043:15;;15026:48;;15950:25:1;;;15043:15:0;;;;15026:48;;;;;;15923:18:1;15026:48:0;;;;;;;14895:191;15105:26;:6;15116:14;15105:10;:26::i;:::-;15098:33;14430:723;-1:-1:-1;;;;;;14430:723:0:o;15161:563::-;15274:11;;15315:17;;15236:7;;15274:11;15300:12;:32;15296:83;;;-1:-1:-1;15360:2:0;15296:83;15434:14;;15389:17;;15409:40;;:20;:6;15420:8;15409:10;:20::i;:40::-;15389:60;-1:-1:-1;15490:13:0;;15486:176;;15565:4;15547:24;;;;:9;:24;;;;;;:39;;15576:9;15547:28;:39::i;:::-;15538:4;15520:24;;;;:9;:24;;;;;;;:66;;;;15607:42;;-1:-1:-1;;;;;15607:42:0;;;;;;;15639:9;15950:25:1;;15938:2;15923:18;;15804:177;15607:42:0;;;;;;;;15486:176;15694:21;:6;15705:9;15694:10;:21::i;693:250::-;751:7;775:6;771:47;;-1:-1:-1;805:1:0;798:8;;771:47;830:9;842:5;846:1;842;:5;:::i;:::-;830:17;-1:-1:-1;875:1:0;866:5;870:1;830:17;866:5;:::i;:::-;:10;858:56;;;;-1:-1:-1;;;858:56:0;;14184:2:1;858:56:0;;;14166:21:1;14223:2;14203:18;;;14196:30;14262:34;14242:18;;;14235:62;14333:3;14313:18;;;14306:31;14354:19;;858:56:0;13982:397:1;1087:189:0;1173:7;1208:12;1201:5;1193:28;;;;-1:-1:-1;;;1193:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1232:9:0;1244:5;1248:1;1244;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;526:388::-;594:6;602;655:2;643:9;634:7;630:23;626:32;623:52;;;671:1;668;661:12;623:52;710:9;697:23;729:31;754:5;729:31;:::i;:::-;779:5;-1:-1:-1;836:2:1;821:18;;808:32;849:33;808:32;849:33;:::i;:::-;901:7;891:17;;;526:388;;;;;:::o;919:813::-;1014:6;1022;1030;1038;1046;1099:3;1087:9;1078:7;1074:23;1070:33;1067:53;;;1116:1;1113;1106:12;1067:53;1155:9;1142:23;1174:31;1199:5;1174:31;:::i;:::-;1224:5;-1:-1:-1;1281:2:1;1266:18;;1253:32;1294:33;1253:32;1294:33;:::i;:::-;1346:7;-1:-1:-1;1405:2:1;1390:18;;1377:32;1418:33;1377:32;1418:33;:::i;:::-;1470:7;-1:-1:-1;1529:2:1;1514:18;;1501:32;1542:33;1501:32;1542:33;:::i;:::-;1594:7;-1:-1:-1;1653:3:1;1638:19;;1625:33;1667;1625;1667;:::i;:::-;1719:7;1709:17;;;919:813;;;;;;;;:::o;1737:456::-;1814:6;1822;1830;1883:2;1871:9;1862:7;1858:23;1854:32;1851:52;;;1899:1;1896;1889:12;1851:52;1938:9;1925:23;1957:31;1982:5;1957:31;:::i;:::-;2007:5;-1:-1:-1;2064:2:1;2049:18;;2036:32;2077:33;2036:32;2077:33;:::i;:::-;1737:456;;2129:7;;-1:-1:-1;;;2183:2:1;2168:18;;;;2155:32;;1737:456::o;2198:382::-;2263:6;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2379:9;2366:23;2398:31;2423:5;2398:31;:::i;:::-;2448:5;-1:-1:-1;2505:2:1;2490:18;;2477:32;2518:30;2477:32;2518:30;:::i;2585:315::-;2653:6;2661;2714:2;2702:9;2693:7;2689:23;2685:32;2682:52;;;2730:1;2727;2720:12;2682:52;2769:9;2756:23;2788:31;2813:5;2788:31;:::i;:::-;2838:5;2890:2;2875:18;;;;2862:32;;-1:-1:-1;;;2585:315:1:o;2905:750::-;2997:6;3005;3013;3066:2;3054:9;3045:7;3041:23;3037:32;3034:52;;;3082:1;3079;3072:12;3034:52;3122:9;3109:23;3151:18;3192:2;3184:6;3181:14;3178:34;;;3208:1;3205;3198:12;3178:34;3246:6;3235:9;3231:22;3221:32;;3291:7;3284:4;3280:2;3276:13;3272:27;3262:55;;3313:1;3310;3303:12;3262:55;3353:2;3340:16;3379:2;3371:6;3368:14;3365:34;;;3395:1;3392;3385:12;3365:34;3450:7;3443:4;3433:6;3430:1;3426:14;3422:2;3418:23;3414:34;3411:47;3408:67;;;3471:1;3468;3461:12;3408:67;3502:4;3494:13;;;;-1:-1:-1;3526:6:1;-1:-1:-1;;3567:20:1;;3554:34;3597:28;3554:34;3597:28;:::i;:::-;3644:5;3634:15;;;2905:750;;;;;:::o;3660:241::-;3716:6;3769:2;3757:9;3748:7;3744:23;3740:32;3737:52;;;3785:1;3782;3775:12;3737:52;3824:9;3811:23;3843:28;3865:5;3843:28;:::i;3906:245::-;3973:6;4026:2;4014:9;4005:7;4001:23;3997:32;3994:52;;;4042:1;4039;4032:12;3994:52;4074:9;4068:16;4093:28;4115:5;4093:28;:::i;4156:309::-;4221:6;4229;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4337:9;4324:23;4356:28;4378:5;4356:28;:::i;4470:180::-;4529:6;4582:2;4570:9;4561:7;4557:23;4553:32;4550:52;;;4598:1;4595;4588:12;4550:52;-1:-1:-1;4621:23:1;;4470:180;-1:-1:-1;4470:180:1:o;4655:306::-;4743:6;4751;4759;4812:2;4800:9;4791:7;4787:23;4783:32;4780:52;;;4828:1;4825;4818:12;4780:52;4857:9;4851:16;4841:26;;4907:2;4896:9;4892:18;4886:25;4876:35;;4951:2;4940:9;4936:18;4930:25;4920:35;;4655:306;;;;;:::o;4966:523::-;5070:6;5078;5086;5094;5102;5110;5163:3;5151:9;5142:7;5138:23;5134:33;5131:53;;;5180:1;5177;5170:12;5131:53;-1:-1:-1;;5203:23:1;;;5273:2;5258:18;;5245:32;;-1:-1:-1;5324:2:1;5309:18;;5296:32;;5375:2;5360:18;;5347:32;;-1:-1:-1;5426:3:1;5411:19;;5398:33;;-1:-1:-1;5478:3:1;5463:19;5450:33;;-1:-1:-1;4966:523:1;-1:-1:-1;4966:523:1:o;7997:817::-;8219:2;8231:21;;;8204:18;;8287:22;;;8171:4;8366:6;8340:2;8325:18;;8171:4;8400:327;8414:6;8411:1;8408:13;8400:327;;;8489:6;8476:20;8509:31;8534:5;8509:31;:::i;:::-;-1:-1:-1;;;;;8565:54:1;8553:67;;8643:4;8702:15;;;;8667:12;;;;8436:1;8429:9;8400:327;;;8404:3;8744;8736:11;;;;8799:6;8792:14;8785:22;8778:4;8767:9;8763:20;8756:52;7997:817;;;;;;:::o;9523:597::-;9635:4;9664:2;9693;9682:9;9675:21;9725:6;9719:13;9768:6;9763:2;9752:9;9748:18;9741:34;9793:1;9803:140;9817:6;9814:1;9811:13;9803:140;;;9912:14;;;9908:23;;9902:30;9878:17;;;9897:2;9874:26;9867:66;9832:10;;9803:140;;;9961:6;9958:1;9955:13;9952:91;;;10031:1;10026:2;10017:6;10006:9;10002:22;9998:31;9991:42;9952:91;-1:-1:-1;10104:2:1;10083:15;-1:-1:-1;;10079:29:1;10064:45;;;;10111:2;10060:54;;9523:597;-1:-1:-1;;;9523:597:1:o;15986:1026::-;16248:4;16296:3;16285:9;16281:19;16327:6;16316:9;16309:25;16353:2;16391:6;16386:2;16375:9;16371:18;16364:34;16434:3;16429:2;16418:9;16414:18;16407:31;16458:6;16493;16487:13;16524:6;16516;16509:22;16562:3;16551:9;16547:19;16540:26;;16601:2;16593:6;16589:15;16575:29;;16622:1;16632:218;16646:6;16643:1;16640:13;16632:218;;;16711:13;;-1:-1:-1;;;;;16707:62:1;16695:75;;16825:15;;;;16790:12;;;;16668:1;16661:9;16632:218;;;-1:-1:-1;;;;;;;16906:55:1;;;;16901:2;16886:18;;16879:83;-1:-1:-1;;;16993:3:1;16978:19;16971:35;16867:3;15986:1026;-1:-1:-1;;;15986:1026:1:o;17674:128::-;17714:3;17745:1;17741:6;17738:1;17735:13;17732:39;;;17751:18;;:::i;:::-;-1:-1:-1;17787:9:1;;17674:128::o;17807:274::-;17847:1;17873;17863:189;;-1:-1:-1;;;17905:1:1;17898:88;18009:4;18006:1;17999:15;18037:4;18034:1;18027:15;17863:189;-1:-1:-1;18066:9:1;;17807:274::o;18086:168::-;18126:7;18192:1;18188;18184:6;18180:14;18177:1;18174:21;18169:1;18162:9;18155:17;18151:45;18148:71;;;18199:18;;:::i;:::-;-1:-1:-1;18239:9:1;;18086:168::o;18259:125::-;18299:4;18327:1;18324;18321:8;18318:34;;;18332:18;;:::i;:::-;-1:-1:-1;18369:9:1;;18259:125::o;18389:135::-;18428:3;-1:-1:-1;;18449:17:1;;18446:43;;;18469:18;;:::i;:::-;-1:-1:-1;18516:1:1;18505:13;;18389:135::o;18529:184::-;-1:-1:-1;;;18578:1:1;18571:88;18678:4;18675:1;18668:15;18702:4;18699:1;18692:15;18718:184;-1:-1:-1;;;18767:1:1;18760:88;18867:4;18864:1;18857:15;18891:4;18888:1;18881:15;18907:184;-1:-1:-1;;;18956:1:1;18949:88;19056:4;19053:1;19046:15;19080:4;19077:1;19070:15;19285:154;-1:-1:-1;;;;;19364:5:1;19360:54;19353:5;19350:65;19340:93;;19429:1;19426;19419:12;19444:118;19530:5;19523:13;19516:21;19509:5;19506:32;19496:60;;19552:1;19549;19542:12

Swarm Source

ipfs://bee9637f3393b8a31011f777052850e4bf6e7c718e82fd0a5c696bd3a9e3b990

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.