Token SCRO Holdings

 

Overview [ERC-20]

Max Total Supply:
1,500,000,000 SCROH

Holders:
1,759

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SCROHoldings

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-28
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    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);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    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 swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
}

contract SCROHoldings is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;

    uint256 constant private startingSupply = 1_500_000_000;
    string constant private _name = "SCRO Holdings";
    string constant private _symbol = "SCROH";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 maintenence;
        uint16 development;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 1000,
        transferFee: 1000
    });

    Ratios public _ratios = Ratios({
        liquidity: 100,
        marketing: 500,
        maintenence: 300,
        development: 100,
        totalSwap: 1000
    });

    uint256 constant public maxBuyTaxes = 1900;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 3000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable maintenence;
        address payable development;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xB66139C2471092740DCB7A17e2edB64263886939),
        maintenence: payable(0x56AA41DDa5400859Ed9f1bd578F1CCdE05E3F86B),
        development: payable(0x47de77bc10c2D424A090d0835Be622ee46688970)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent;
    
    uint256 private _maxTxAmount = (_tTotal * 3) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 3) / 1000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

    bool lpInitialized = false;

    function initializeLP(uint256 amountTokens) public onlyOwner {
        require(!lpInitialized, "Already initialized");
        require(address(this).balance > 0 , "Contract must have ETH.");
        require(balanceOf(msg.sender) >= amountTokens * 10**_decimals, "You do not have enough tokens.");

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        lpInitialized = true;

        amountTokens *= 10**_decimals;
        finalizeTransfer(msg.sender, address(this), amountTokens, false, false, true);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );
        enableTrading();
    }


//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        antiSnipe.removeBlacklisted(account);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock);
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 liquidity, uint16 marketing, uint16 maintenence, uint16 development) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.maintenence = maintenence;
        _ratios.development = development;
        _ratios.totalSwap = liquidity + marketing + maintenence + development;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable maintenence, address payable development) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.maintenence = payable(maintenence);
        _taxWallets.development = payable(development);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }
    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 200, "Cannot set above 2%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(lpInitialized, "LP must first be intialized.");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if(contractSwapEnabled
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if(piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if(contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        } 
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(liquidityBalance, toLiquify);
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 maintenenceBalance = (amtBalance * ratios.maintenence) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (maintenenceBalance + developmentBalance);
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}("");
        }
        if (ratios.maintenence > 0) {
            (success,) = _taxWallets.maintenence.call{value: maintenenceBalance, gas: 35000}("");
        }
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"maintenence","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"maintenence","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"maintenence","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"maintenence","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556103e8608081905260a081905260c08190526009805465ffffffffffff19166503e803e803e8179055606460e08190526101f46101005261012c6101205261014052610160819052600a80546001600160501b0319166903e80064012c01f400641781556101e060405273b66139c2471092740dcb7a17e2edb642638869396101808190527356aa41dda5400859ed9f1bd578f1ccde05e3f86b6101a08190527347de77bc10c2d424a090d0835be622ee466889706101c0819052600d80546001600160a01b03199081169094179055600e80548416909217909155600f80549092161790556010805461ff00191690556200010390601290620004d0565b62000113906359682f00620004e8565b62000120906003620004e8565b6200012c91906200050a565b6015556103e8620001406012600a620004d0565b62000150906359682f00620004e8565b6200015d906003620004e8565b6200016991906200050a565b6016556017805461ffff60ff60b01b01191690556200018b6012600a620004d0565b6200019b906359682f00620004e8565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001de6012600a620004d0565b620001ee906359682f00620004e8565b60405190815260200160405180910390a3600080546001600160a01b03191633179055466038036200024657600b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000339565b466061036200027b57600b80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000339565b46600114806200028b5750466004145b80620002975750466003145b15620002c957600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000339565b4661a86a03620002ff57600b80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000339565b4660fa036200033457600b80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000339565b600080fd5b600080546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054821683179055855490941685526005909252909220805490911690911790556200052d565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000412578160001904821115620003f657620003f6620003bb565b808516156200040457918102915b93841c9390800290620003d6565b509250929050565b6000826200042b57506001620004ca565b816200043a57506000620004ca565b81600181146200045357600281146200045e576200047e565b6001915050620004ca565b60ff841115620004725762000472620003bb565b50506001821b620004ca565b5060208310610133831016604e8410600b8410161715620004a3575081810a620004ca565b620004af8383620003d1565b8060001904821115620004c657620004c6620003bb565b0290505b92915050565b6000620004e160ff8416836200041a565b9392505050565b6000816000190483118215151615620005055762000505620003bb565b500290565b6000826200052857634e487b7160e01b600052601260045260246000fd5b500490565b6146e2806200053d6000396000f3fe60806040526004361061037a5760003560e01c80634fbee193116101d1578063a9059cbb11610102578063dd62ed3e116100a0578063fb78680d1161006f578063fb78680d14610b48578063fdb78c0e14610b68578063fe575a8714610b87578063feadde9c14610ba757600080fd5b8063dd62ed3e14610a76578063eafb5a3c14610abc578063ee5d9c2d14610adc578063f94aa1b414610af157600080fd5b8063b7df8b36116100dc578063b7df8b361461099a578063bfc2fc35146109b4578063c6a276c2146109d4578063cf847706146109f457600080fd5b8063a9059cbb14610964578063b1b08f7114610984578063b3d514fb1461098457600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d65780638a63bd9b146108f45780638a8c523c1461090957806395d89b411461091e57600080fd5b8063715018a61461088157806375cb1bd11461089657806380c581d1146108b657600080fd5b80635c24b074116101ab5780635c24b074146107dd5780635cce86cd146107fd5780636ebd00781461083657806370a082311461084b57600080fd5b80634fbee1931461076557806350a8e0161461079e578063590ffdce146107bd57600080fd5b80632610eaca116102ab57806336fddb041161024957806346ea7ac81161022357806346ea7ac8146106f55780634ada218b1461070b5780634e718e48146107255780634fb2e45d1461074557600080fd5b806336fddb04146106955780633f3cf56c146106b5578063452ed4f1146106d557600080fd5b80632e8fa821116102855780632e8fa82114610623578063313ce5671461063957806332cde6641461065557806333251a0b1461067557600080fd5b80632610eaca146105d757806328577751146105f75780632b28fc7a1461060d57600080fd5b8063095ea7b3116103185780630fa604e4116102f25780630fa604e41461056d57806318160ddd1461058257806323b872dd1461059757806326003957146105b757600080fd5b8063095ea7b3146104e4578063098f8b02146105145780630dcbcf1c1461053457600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630712d165146104a45780630758d924146104c457600080fd5b806303fd2a45146103865780630445b667146103b9578063044df726146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60115481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f8366004613f01565b610bc7565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152600d81527f5343524f20486f6c64696e67730000000000000000000000000000000000000060208201525b6040516103b09190613f3a565b3480156104b057600080fd5b506103fd6104bf366004613fa6565b610ca4565b3480156104d057600080fd5b50600b5461039c906001600160a01b031681565b3480156104f057600080fd5b506105046104ff36600461400f565b610e95565b60405190151581526020016103b0565b34801561052057600080fd5b506103fd61052f36600461403b565b610eac565b34801561054057600080fd5b5061050461054f366004614054565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561057957600080fd5b506103cf611379565b34801561058e57600080fd5b506103cf611399565b3480156105a357600080fd5b506105046105b2366004614071565b6113b5565b3480156105c357600080fd5b506103fd6105d23660046140b2565b61142d565b3480156105e357600080fd5b506103fd6105f23660046141c3565b61157c565b34801561060357600080fd5b506103cf60145481565b34801561061957600080fd5b506103cf61076c81565b34801561062f57600080fd5b506103cf60125481565b34801561064557600080fd5b50604051601281526020016103b0565b34801561066157600080fd5b506103fd610670366004614285565b6116e9565b34801561068157600080fd5b506103fd610690366004614054565b611883565b3480156106a157600080fd5b506103fd6106b03660046142c8565b61194d565b3480156106c157600080fd5b506103fd6106d03660046140b2565b6119c6565b3480156106e157600080fd5b50600c5461039c906001600160a01b031681565b34801561070157600080fd5b506103cf610bb881565b34801561071757600080fd5b506017546105049060ff1681565b34801561073157600080fd5b506103fd61074036600461403b565b611b16565b34801561075157600080fd5b506103fd610760366004614054565b611bba565b34801561077157600080fd5b50610504610780366004614054565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107aa57600080fd5b5060175461050490610100900460ff1681565b3480156107c957600080fd5b506103fd6107d83660046142c8565b611dea565b3480156107e957600080fd5b506103fd6107f8366004614054565b611e63565b34801561080957600080fd5b50610504610818366004614054565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561084257600080fd5b506103cf611f59565b34801561085757600080fd5b506103cf610866366004614054565b6001600160a01b031660009081526001602052604090205490565b34801561088d57600080fd5b506103fd611f74565b3480156108a257600080fd5b506103fd6108b13660046142e6565b612033565b3480156108c257600080fd5b506103fd6108d13660046142c8565b6120cd565b3480156108e257600080fd5b506000546001600160a01b031661039c565b34801561090057600080fd5b50610504612277565b34801561091557600080fd5b506103fd6122e6565b34801561092a57600080fd5b5060408051808201909152600581527f5343524f480000000000000000000000000000000000000000000000000000006020820152610497565b34801561097057600080fd5b5061050461097f36600461400f565b61254e565b34801561099057600080fd5b506103cf6107d081565b3480156109a657600080fd5b506013546105049060ff1681565b3480156109c057600080fd5b506103fd6109cf366004613f01565b612565565b3480156109e057600080fd5b506103fd6109ef366004614054565b612612565b348015610a0057600080fd5b50600a54610a419061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103b0565b348015610a8257600080fd5b506103cf610a91366004614331565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103fd610ad7366004614054565b6126b2565b348015610ae857600080fd5b506103fd612a61565b348015610afd57600080fd5b50600d54600e54600f54610b1e926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b5457600080fd5b506103fd610b6336600461435f565b612b41565b348015610b7457600080fd5b5060105461050490610100900460ff1681565b348015610b9357600080fd5b50610504610ba2366004614054565b612c74565b348015610bb357600080fd5b506103fd610bc23660046142c8565b612d02565b6000546001600160a01b03163314610c1a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c8857600080fd5b505af1158015610c9c573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cf25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600a805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610d9a85876143c0565b610da491906143c0565b610dae91906143c0565b600a80547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff166801000000000000000061ffff93841602179055600954600091610e0191620100008104821691166143c0565b600a5461ffff918216925068010000000000000000900416811015610e8e5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c11565b5050505050565b6000610ea2338484612d7b565b5060015b92915050565b6000546001600160a01b03163314610efa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754760100000000000000000000000000000000000000000000900460ff1615610f675760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610c11565b60004711610fb75760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e0000000000000000006044820152606401610c11565b610fc36012600a6144ca565b610fcd90826144d9565b33600090815260016020526040902054101561102b5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610c11565b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906144f8565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801561118b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111af91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54611209929182169116600019612d7b565b600b546112239030906001600160a01b0316600019612d7b565b601780547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112706012600a6144ca565b61127a90826144d9565b905061128c3330836000806001612e88565b50600b546001600160a01b031663f305d71947306112bf816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015611346573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061136b9190614515565b5050506113766122e6565b50565b60006113876012600a6144ca565b6016546113949190614543565b905090565b60006113a76012600a6144ca565b611394906359682f006144d9565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461141a576001600160a01b03841660009081526004602090815260408083203384529091528120805484929061141490849061457e565b90915550505b611425848484613167565b949350505050565b6000546001600160a01b0316331461147b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60646114896012600a6144ca565b611497906359682f006144d9565b6114a19190614543565b81836114af6012600a6144ca565b6114bd906359682f006144d9565b6114c791906144d9565b6114d19190614543565b10156115455760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c11565b80826115536012600a6144ca565b611561906359682f006144d9565b61156b91906144d9565b6115759190614543565b6016555050565b6000546001600160a01b031633146115ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b805182511461161b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c11565b60005b82518160ff1610156116e457818160ff168151811061163f5761163f614595565b6020026020010151611666336001600160a01b031660009081526001602052604090205490565b101561167157600080fd5b6116d133848360ff168151811061168a5761168a614595565b60200260200101516012600a6116a091906144ca565b858560ff16815181106116b5576116b5614595565b60200260200101516116c791906144d9565b6000806001612e88565b50806116dc816145c4565b91505061161e565b505050565b6000546001600160a01b031633146117375760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b61076c8361ffff161115801561175357506107d08261ffff1611155b801561176557506107d08161ffff1611155b6117b15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c11565b610bb86117be83856143c0565b61ffff1611156118105760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c11565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146118d15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561193957600080fd5b505af1158015610e8e573d6000803e3d6000fd5b6000546001600160a01b0316331461199b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6103e8611a236012600a6144ca565b611a31906359682f006144d9565b611a3b9190614543565b8183611a496012600a6144ca565b611a57906359682f006144d9565b611a6191906144d9565b611a6b9190614543565b1015611adf5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c11565b8082611aed6012600a6144ca565b611afb906359682f006144d9565b611b0591906144d9565b611b0f9190614543565b6015555050565b6000546001600160a01b03163314611b645760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60c8811115611bb55760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652032252e0000000000000000000000006044820152606401610c11565b601455565b6000546001600160a01b03163314611c085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b038116611c845760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611d225760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c11565b60008054611d3b916001600160a01b0390911690611dea565b611d46816001611dea565b600080546001600160a01b031681526001602052604090205415611d8d57600080546001600160a01b03168082526001602052604090912054611d8b919083906116c7565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611e385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611eb15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff1615611ec157600080fd5b306001600160a01b03821603611f195760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c11565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f676012600a6144ca565b6015546113949190614543565b6000546001600160a01b03163314611fc25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008054611fdb916001600160a01b0390911690611dea565b6000805473ffffffffffffffffffffffffffffffffffffffff19811682556040516001600160a01b03909116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b031633146120815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600d80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600e805493851693821693909317909255600f8054919093169116179055565b6000546001600160a01b0316331461211b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b80612192576001600160a01b03828116600081815260026020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c6e565b600354156121f9576203f480600354426121ac919061457e565b116121f95760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610c11565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560175491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c6e565b5050565b600080546001600160a01b031633146122c65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b600b546122e09030906001600160a01b0316600019612d7b565b50600190565b6000546001600160a01b031633146123345760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60175460ff16156123875760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c11565b601754610100900460ff166123de5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c11565b6017546201000090046001600160a01b031661242457601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156124af57600080fd5b505af19250505080156124c0575060015b506017805460ff19166001179055600c54612710906124fd906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61250890600a6144d9565b6125129190614543565b601155600c546001600160a01b03166000908152600160205260409020546127109061253f90601e6144d9565b6125499190614543565b601255565b600061255b338484613167565b5060019392505050565b6000546001600160a01b031633146125b35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b031633146126605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6017546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c29060240161191f565b6000546001600160a01b031633146127005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612745573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276991906144f8565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127da91906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561283d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286191906144f8565b90506001600160a01b0381166129ff57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906144f8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294491906144f8565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906144f8565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612a28565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556116e4903090600019612d7b565b6000546001600160a01b03163314612aaf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b601754610100900460ff1615612b075760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c11565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611376573d6000803e3d6000fd5b6000546001600160a01b03163314612b8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b8284612b9d6012600a6144ca565b612bab906359682f006144d9565b612bb591906144d9565b612bbf9190614543565b6011558082612bd06012600a6144ca565b612bde906359682f006144d9565b612be891906144d9565b612bf29190614543565b60128190556011541115612c6e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b50505050565b6017546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea691906145e3565b6000546001600160a01b03163314612d505760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c11565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316612dd15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b038216612e275760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c11565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601754600090610100900460ff16612f8857612ea4878761365f565b601754610100900460ff16158015612ec15750612ec187876137cf565b8015612ee657506001600160a01b03871660009081526006602052604090205460ff16155b8015612f0b57506001600160a01b03861660009081526006602052604090205460ff16155b8015612f15575081155b15612f885760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c11565b612f9287876137cf565b15613045576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561302e575060408051601f3d908101601f1916820190925261302b918101906145e3565b60015b61303757600080fd5b90508061304357600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061308757506001600160a01b03871660009081526007602052604090205460ff165b15613090575060005b6001600160a01b038816600090815260016020526040812080548892906130b890849061457e565b9091555060009050816130cb57866130d7565b6130d78987878a6138a4565b6001600160a01b038916600090815260016020526040812080549293508392909190613104908490614600565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161315091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166131e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c11565b6001600160a01b0383166132615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c11565b600082116132d75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c11565b601754760100000000000000000000000000000000000000000000900460ff166133435760405162461bcd60e51b815260206004820152601c60248201527f4c50206d75737420666972737420626520696e7469616c697a65642e000000006044820152606401610c11565b6001600160a01b0384166000908152600260205260408120548190819060ff1615613371576001925061339f565b6001600160a01b03861660009081526002602052604090205460ff161561339b576001915061339f565b5060015b6133a987876137cf565b156135af5760175460ff166134005760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c11565b82806134095750815b156134cd576001600160a01b03871660009081526008602052604090205460ff1615801561345057506001600160a01b03861660009081526008602052604090205460ff16155b156134cd576015548511156134cd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c11565b600b546001600160a01b038781169116148015906134e9575081155b156135af576001600160a01b03861660009081526008602052604090205460ff166135af5760165485613531886001600160a01b031660009081526001602052604090205490565b61353b9190614600565b11156135af5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c11565b81156136465760105460ff1661364657601054610100900460ff1615613646573060009081526001602052604090205460115481106136445760125460135460ff161561362e57601454600c546001600160a01b031660009081526001602052604090205461271091613621916144d9565b61362b9190614543565b90505b808210613639578091505b61364282613970565b505b505b613654878787868686612e88565b979650505050505050565b601754610100900460ff16156136dd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c11565b6136e782826137cf565b1580156137015750600c546001600160a01b038281169116145b15612273576001600160a01b038083166000908152600560209081526040808320805460ff19908116600190811790925560079093529220805490911690911790556017805461ff00191661010017908190556201000090041661378f57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612606565b600080546001600160a01b038481169116148015906137fc57506000546001600160a01b03838116911614155b801561381357506000546001600160a01b03163214155b801561383857506001600160a01b03821660009081526005602052604090205460ff16155b801561385d57506001600160a01b03831660009081526005602052604090205460ff16155b801561387457506001600160a01b03821661dead14155b801561388857506001600160a01b03821615155b801561389d57506001600160a01b0383163014155b9392505050565b60008084156138ba575060095461ffff166138e4565b83156138d3575060095462010000900461ffff166138e4565b50600954640100000000900461ffff165b60006127106138f383866144d9565b6138fd9190614543565b30600090815260016020526040812080549293508392909190613921908490614600565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613654818561457e565b6010805460ff191660011790556040805160a081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000009004909116608082018190526000036139e45750613ee6565b306000908152600460209081526040808320600b546001600160a01b0316845290915290205460001914613a3d57306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826080015161ffff16836000015161ffff1685613a5e91906144d9565b613a689190614543565b613a729190614543565b90506000613a80828561457e565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613aba57613aba614595565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5091906144f8565b81600181518110613b6357613b63614595565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613bc2908590600090869030904290600401614618565b600060405180830381600087803b158015613bdc57600080fd5b505af1158015613bf0573d6000803e3d6000fd5b5047925060009150849050613c0586846144d9565b613c0f9190614543565b90508415613d0057600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613c9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613cc39190614515565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613d0a818361457e565b9150856000015186608001818151613d229190614689565b61ffff9081169091526080880151604089015160009350839291821691613d4a9116866144d9565b613d549190614543565b90506000886080015161ffff16896060015161ffff1686613d7591906144d9565b613d7f9190614543565b90506000613d8d8284614600565b613d97908761457e565b60608b015190915061ffff1615613e0557600f546040516001600160a01b03909116906188b89084906000818181858888f193505050503d8060008114613dfa576040519150601f19603f3d011682016040523d82523d6000602084013e613dff565b606091505b50909450505b60408a015161ffff1615613e7057600e546040516001600160a01b03909116906188b89085906000818181858888f193505050503d8060008114613e65576040519150601f19603f3d011682016040523d82523d6000602084013e613e6a565b606091505b50909450505b60208a015161ffff1615613edb57600d546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114613ed0576040519150601f19603f3d011682016040523d82523d6000602084013e613ed5565b606091505b50909450505b505050505050505050505b506010805460ff19169055565b801515811461137657600080fd5b60008060408385031215613f1457600080fd5b8235613f1f81613ef3565b91506020830135613f2f81613ef3565b809150509250929050565b600060208083528351808285015260005b81811015613f6757858101830151858201604001528201613f4b565b81811115613f79576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff81168114613fa157600080fd5b919050565b60008060008060808587031215613fbc57600080fd5b613fc585613f8f565b9350613fd360208601613f8f565b9250613fe160408601613f8f565b9150613fef60608601613f8f565b905092959194509250565b6001600160a01b038116811461137657600080fd5b6000806040838503121561402257600080fd5b823561402d81613ffa565b946020939093013593505050565b60006020828403121561404d57600080fd5b5035919050565b60006020828403121561406657600080fd5b813561389d81613ffa565b60008060006060848603121561408657600080fd5b833561409181613ffa565b925060208401356140a181613ffa565b929592945050506040919091013590565b600080604083850312156140c557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561412c5761412c6140d4565b604052919050565b600067ffffffffffffffff82111561414e5761414e6140d4565b5060051b60200190565b600082601f83011261416957600080fd5b8135602061417e61417983614134565b614103565b82815260059290921b8401810191818101908684111561419d57600080fd5b8286015b848110156141b857803583529183019183016141a1565b509695505050505050565b600080604083850312156141d657600080fd5b823567ffffffffffffffff808211156141ee57600080fd5b818501915085601f83011261420257600080fd5b8135602061421261417983614134565b82815260059290921b8401810191818101908984111561423157600080fd5b948201945b8386101561425857853561424981613ffa565b82529482019490820190614236565b9650508601359250508082111561426e57600080fd5b5061427b85828601614158565b9150509250929050565b60008060006060848603121561429a57600080fd5b6142a384613f8f565b92506142b160208501613f8f565b91506142bf60408501613f8f565b90509250925092565b600080604083850312156142db57600080fd5b8235613f1f81613ffa565b6000806000606084860312156142fb57600080fd5b833561430681613ffa565b9250602084013561431681613ffa565b9150604084013561432681613ffa565b809150509250925092565b6000806040838503121561434457600080fd5b823561434f81613ffa565b91506020830135613f2f81613ffa565b6000806000806080858703121561437557600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168185168083038211156143dd576143dd614391565b01949350505050565b600181815b8085111561442157816000190482111561440757614407614391565b8085161561441457918102915b93841c93908002906143eb565b509250929050565b60008261443857506001610ea6565b8161444557506000610ea6565b816001811461445b576002811461446557614481565b6001915050610ea6565b60ff84111561447657614476614391565b50506001821b610ea6565b5060208310610133831016604e8410600b84101617156144a4575081810a610ea6565b6144ae83836143e6565b80600019048211156144c2576144c2614391565b029392505050565b600061389d60ff841683614429565b60008160001904831182151516156144f3576144f3614391565b500290565b60006020828403121561450a57600080fd5b815161389d81613ffa565b60008060006060848603121561452a57600080fd5b8351925060208401519150604084015190509250925092565b600082614579577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561459057614590614391565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036145da576145da614391565b60010192915050565b6000602082840312156145f557600080fd5b815161389d81613ef3565b6000821982111561461357614613614391565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146685784516001600160a01b031683529383019391830191600101614643565b50506001600160a01b03969096166060850152505050608001529392505050565b600061ffff838116908316818110156146a4576146a4614391565b03939250505056fea2646970667358221220b3bc8dde47830b063a6f6d7c0ca7df9b73537fceaf10e75a9a0f26710b62827f64736f6c634300080f0033

Deployed ByteCode Sourcemap

4083:22850:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5849:73;;;;;;;;;;;;5880:42;5849:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5849:73:0;;;;;;;;6428:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6428:28:0;245:177:1;15773:151:0;;;;;;;;;;-1:-1:-1;15773:151:0;;;;;:::i;:::-;;:::i;:::-;;5233:112;;;;;;;;;;-1:-1:-1;5233:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5233:112:0;931:365:1;11575:80:0;;;;;;;;;;-1:-1:-1;11647:5:0;;;;;;;;;;;;;;;;;11575:80;;;;;;;:::i;16428:522::-;;;;;;;;;;-1:-1:-1;16428:522:0;;;;;:::i;:::-;;:::i;5788:26::-;;;;;;;;;;-1:-1:-1;5788:26:0;;;;-1:-1:-1;;;;;5788:26:0;;;12185:161;;;;;;;;;;-1:-1:-1;12185:161:0;;;;;:::i;:::-;;:::i;:::-;;;3424:14:1;;3417:22;3399:41;;3387:2;3372:18;12185:161:0;3259:187:1;8468:1049:0;;;;;;;;;;-1:-1:-1;8468:1049:0;;;;;:::i;:::-;;:::i;14720:140::-;;;;;;;;;;-1:-1:-1;14720:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14818:34:0;14794:4;14818:34;;;:25;:34;;;;;;;;;14720:140;17928:114;;;;;;;;;;;;;:::i;11310:83::-;;;;;;;;;;;;;:::i;12855:306::-;;;;;;;;;;-1:-1:-1;12855:306:0;;;;;:::i;:::-;;:::i;17542:264::-;;;;;;;;;;-1:-1:-1;17542:264:0;;;;;:::i;:::-;;:::i;24794:410::-;;;;;;;;;;-1:-1:-1;24794:410:0;;;;;:::i;:::-;;:::i;6536:28::-;;;;;;;;;;;;;;;;5532:42;;;;;;;;;;;;5570:4;5532:42;;6463:25;;;;;;;;;;;;;;;;11399:80;;;;;;;;;;-1:-1:-1;11399:80:0;;4873:2;7347:36:1;;7335:2;7320:18;11399:80:0;7205:184:1;15932:488:0;;;;;;;;;;-1:-1:-1;15932:488:0;;;;;:::i;:::-;;:::i;15657:108::-;;;;;;;;;;-1:-1:-1;15657:108:0;;;;;:::i;:::-;;:::i;14868:140::-;;;;;;;;;;-1:-1:-1;14868:140:0;;;;;:::i;:::-;;:::i;17265:269::-;;;;;;;;;;-1:-1:-1;17265:269:0;;;;;:::i;:::-;;:::i;5821:21::-;;;;;;;;;;-1:-1:-1;5821:21:0;;;;-1:-1:-1;;;;;5821:21:0;;;5685:46;;;;;;;;;;;;5727:4;5685:46;;6697:34;;;;;;;;;;-1:-1:-1;6697:34:0;;;;;;;;18431:215;;;;;;;;;;-1:-1:-1;18431:215:0;;;;;:::i;:::-;;:::i;10071:653::-;;;;;;;;;;-1:-1:-1;10071:653:0;;;;;:::i;:::-;;:::i;14585:127::-;;;;;;;;;;-1:-1:-1;14585:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14676:28:0;14652:4;14676:28;;;:19;:28;;;;;;;;;14585:127;6738:36;;;;;;;;;;-1:-1:-1;6738:36:0;;;;;;;;;;;15016:134;;;;;;;;;;-1:-1:-1;15016:134:0;;;;;:::i;:::-;;:::i;14219:218::-;;;;;;;;;;-1:-1:-1;14219:218:0;;;;;:::i;:::-;;:::i;14445:132::-;;;;;;;;;;-1:-1:-1;14445:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14539:30:0;14515:4;14539:30;;;:21;:30;;;;;;;;;14445:132;17812:108;;;;;;;;;;;;;:::i;11887:117::-;;;;;;;;;;-1:-1:-1;11887:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11980:16:0;11953:7;11980:16;;;:7;:16;;;;;;;11887:117;10732:225;;;;;;;;;;;;;:::i;16958:299::-;;;;;;;;;;-1:-1:-1;16958:299:0;;;;;:::i;:::-;;:::i;13719:492::-;;;;;;;;;;-1:-1:-1;13719:492:0;;;;;:::i;:::-;;:::i;11661:79::-;;;;;;;;;;-1:-1:-1;11713:7:0;11731:6;-1:-1:-1;;;;;11731:6:0;11661:79;;12672:175;;;;;;;;;;;;;:::i;24052:544::-;;;;;;;;;;;;;:::i;11485:84::-;;;;;;;;;;-1:-1:-1;11559:7:0;;;;;;;;;;;;;;;;;11485:84;;12012:165;;;;;;;;;;-1:-1:-1;12012:165:0;;;;;:::i;:::-;;:::i;5631:47::-;;;;;;;;;;;;5674:4;5631:47;;6495:34;;;;;;;;;;-1:-1:-1;6495:34:0;;;;;;;;18654:263;;;;;;;;;;-1:-1:-1;18654:263:0;;;;;:::i;:::-;;:::i;15314:200::-;;;;;;;;;;-1:-1:-1;15314:200:0;;;;;:::i;:::-;;:::i;5354:169::-;;;;;;;;;;-1:-1:-1;5354:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8931:6:1;8964:15;;;8946:34;;9016:15;;;9011:2;8996:18;;8989:43;9068:15;;;9048:18;;;9041:43;;;;9120:15;;9115:2;9100:18;;9093:43;9173:15;;;9167:3;9152:19;;9145:44;8908:3;8893:19;5354:169:0;8672:523:1;11746:133:0;;;;;;;;;;-1:-1:-1;11746:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11848:19:0;;;11830:7;11848:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11746:133;13169:542;;;;;;;;;;-1:-1:-1;13169:542:0;;;;;:::i;:::-;;:::i;24604:182::-;;;;;;;;;;;;;:::i;6077:274::-;;;;;;;;;;-1:-1:-1;6077:274:0;;;;;;;;-1:-1:-1;;;;;6077:274:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9922:15:1;;;9904:34;;9974:15;;;9969:2;9954:18;;9947:43;10026:15;;10006:18;;;9999:43;;;;9831:2;9816:18;6077:274:0;9593:455:1;18050:373:0;;;;;;;;;;-1:-1:-1;18050:373:0;;;;;:::i;:::-;;:::i;6382:39::-;;;;;;;;;;-1:-1:-1;6382:39:0;;;;;;;;;;;15522:127;;;;;;;;;;-1:-1:-1;15522:127:0;;;;;:::i;:::-;;:::i;15158:148::-;;;;;;;;;;-1:-1:-1;15158:148:0;;;;;:::i;:::-;;:::i;15773:151::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;;;;;;;;;15868:9:::1;::::0;:48:::1;::::0;;;;10976:14:1;;10969:22;15868:48:0::1;::::0;::::1;10951:41:1::0;11035:14;;11028:22;11008:18;;;11001:50;15868:9:0;;;::::1;-1:-1:-1::0;;;;;15868:9:0::1;::::0;:24:::1;::::0;10924:18:1;;15868:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15773:151:::0;;:::o;16428:522::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;16553:7:::1;:29:::0;;::::1;::::0;;::::1;16593::::0;;;;;;;;;;;::::1;;;16677:33:::0;;16633;;;::::1;;16677::::0;;;;;;::::1;::::0;;;::::1;;::::0;;;16633;16741:21:::1;16593:29:::0;16553;16741:21:::1;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;16721:7;:69:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;16836:9:::1;:17:::0;-1:-1:-1;;16817:36:0::1;::::0;16836:17;;::::1;::::0;::::1;::::0;16817:16:::1;:36;:::i;:::-;16872:7;:17:::0;16801:52:::1;::::0;;::::1;::::0;-1:-1:-1;16872:17:0;;::::1;;:26:::0;-1:-1:-1;16872:26:0::1;16864:78;;;::::0;-1:-1:-1;;;16864:78:0;;11682:2:1;16864:78:0::1;::::0;::::1;11664:21:1::0;11721:2;11701:18;;;11694:30;11760:34;11740:18;;;11733:62;11831:9;11811:18;;;11804:37;11858:19;;16864:78:0::1;11480:403:1::0;16864:78:0::1;16542:408;16428:522:::0;;;;:::o;12185:161::-;12262:4;12279:37;12288:10;12300:7;12309:6;12279:8;:37::i;:::-;-1:-1:-1;12334:4:0;12185:161;;;;;:::o;8468:1049::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;8549:13:::1;::::0;;;::::1;;;8548:14;8540:46;;;::::0;-1:-1:-1;;;8540:46:0;;12090:2:1;8540:46:0::1;::::0;::::1;12072:21:1::0;12129:2;12109:18;;;12102:30;12168:21;12148:18;;;12141:49;12207:18;;8540:46:0::1;11888:343:1::0;8540:46:0::1;8629:1;8605:21;:25;8597:62;;;::::0;-1:-1:-1;;;8597:62:0;;12438:2:1;8597:62:0::1;::::0;::::1;12420:21:1::0;12477:2;12457:18;;;12450:30;12516:25;12496:18;;;12489:53;12559:18;;8597:62:0::1;12236:347:1::0;8597:62:0::1;8718:13;4873:2;8718;:13;:::i;:::-;8703:28;::::0;:12;:28:::1;:::i;:::-;8688:10;11953:7:::0;11980:16;;;:7;:16;;;;;;8678:53:::1;;8670:96;;;::::0;-1:-1:-1;;;8670:96:0;;14526:2:1;8670:96:0::1;::::0;::::1;14508:21:1::0;14565:2;14545:18;;;14538:30;14604:32;14584:18;;;14577:60;14654:18;;8670:96:0::1;14324:354:1::0;8670:96:0::1;8799:9;;;;;;;;;-1:-1:-1::0;;;;;8799:9:0::1;-1:-1:-1::0;;;;;8799:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8788:42:0::1;;8831:9;;;;;;;;;-1:-1:-1::0;;;;;8831:9:0::1;-1:-1:-1::0;;;;;8831:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8788:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;15192:15:1;;;8788:75:0::1;::::0;::::1;15174:34:1::0;8857:4:0::1;15224:18:1::0;;;15217:43;15086:18;;8788:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8779:6;:84:::0;;-1:-1:-1;;8779:84:0::1;-1:-1:-1::0;;;;;8779:84:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8874:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;8874:22:0::1;-1:-1:-1::0;8874:22:0::1;::::0;;8918:6;8934:9:::1;::::0;8909:55:::1;::::0;8918:6;;::::1;::::0;8934:9:::1;-1:-1:-1::0;;8909:8:0::1;:55::i;:::-;9007:9;::::0;8975:62:::1;::::0;8992:4:::1;::::0;-1:-1:-1;;;;;9007:9:0::1;-1:-1:-1::0;;8975:8:0::1;:62::i;:::-;9050:13;:20:::0;;;::::1;::::0;::::1;::::0;;9099:13:::1;4873:2;9099;:13;:::i;:::-;9083:29;::::0;;::::1;:::i;:::-;;;9123:77;9140:10;9160:4;9167:12;9181:5;9188::::0;9195:4:::1;9123:16;:77::i;:::-;-1:-1:-1::0;9213:9:0::1;::::0;-1:-1:-1;;;;;9213:9:0::1;:25;9246:21;9291:4;9311:24;9291:4:::0;-1:-1:-1;;;;;11980:16:0;11953:7;11980:16;;;:7;:16;;;;;;;11887:117;9311:24:::1;9350:1;9436:6:::0;;9213:270:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;15653:15:1;;;9213:270:0::1;::::0;::::1;15635:34:1::0;15685:18;;;15678:34;;;;15728:18;;;15721:34;;;15771:18;;;15764:34;;;;9436:6:0;;;::::1;15814:19:1::0;;;15807:44;9457:15:0::1;15867:19:1::0;;;15860:35;15546:19;;9213:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9494:15;:13;:15::i;:::-;8468:1049:::0;:::o;17928:114::-;17975:7;18020:13;4873:2;18020;:13;:::i;:::-;18002:14;;:32;;;;:::i;:::-;17995:39;;17928:114;:::o;11310:83::-;11365:7;4936:13;4873:2;4936;:13;:::i;:::-;4919:30;;4716:13;4919:30;:::i;12855:306::-;-1:-1:-1;;;;;12976:19:0;;12955:4;12976:19;;;:11;:19;;;;;;;;12996:10;12976:31;;;;;;;;-1:-1:-1;;12976:52:0;12972:126;;-1:-1:-1;;;;;13045:19:0;;;;;;:11;:19;;;;;;;;13065:10;13045:31;;;;;;;:41;;13080:6;;13045:19;:41;;13080:6;;13045:41;:::i;:::-;;;;-1:-1:-1;;12972:126:0;13117:36;13127:6;13135:9;13146:6;13117:9;:36::i;:::-;13110:43;12855:306;-1:-1:-1;;;;12855:306:0:o;17542:264::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;17684:3:::1;4936:13;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17674:13;;;;:::i;:::-;17662:7:::0;17651;4936:13:::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17641:17;;;;:::i;:::-;17640:29;;;;:::i;:::-;:48;;17632:109;;;::::0;-1:-1:-1;;;17632:109:0;;16828:2:1;17632:109:0::1;::::0;::::1;16810:21:1::0;16867:2;16847:18;;;16840:30;16906:34;16886:18;;;16879:62;16977:18;16957;;;16950:46;17013:19;;17632:109:0::1;16626:412:1::0;17632:109:0::1;17791:7:::0;17780;4936:13:::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17770:17;;;;:::i;:::-;17769:29;;;;:::i;:::-;17752:14;:46:::0;-1:-1:-1;;17542:264:0:o;24794:410::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;24929:7:::1;:14;24910:8;:15;:33;24902:67;;;::::0;-1:-1:-1;;;24902:67:0;;17245:2:1;24902:67:0::1;::::0;::::1;17227:21:1::0;17284:2;17264:18;;;17257:30;17323:23;17303:18;;;17296:51;17364:18;;24902:67:0::1;17043:345:1::0;24902:67:0::1;24985:7;24980:217;25002:8;:15;24998:1;:19;;;24980:217;;;25072:7;25080:1;25072:10;;;;;;;;;;:::i;:::-;;;;;;;25047:21;25057:10;-1:-1:-1::0;;;;;11980:16:0;11953:7;11980:16;;;:7;:16;;;;;;;11887:117;25047:21:::1;:35;;25039:44;;;::::0;::::1;;25098:87;25115:10;25127:8;25136:1;25127:11;;;;;;;;;;:::i;:::-;;;;;;;4873:2;25151;:13;;;;:::i;:::-;25140:7;25148:1;25140:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25166:5;25173::::0;25180:4:::1;25098:16;:87::i;:::-;-1:-1:-1::0;25019:3:0;::::1;::::0;::::1;:::i;:::-;;;;24980:217;;;;24794:410:::0;;:::o;15932:488::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;5570:4:::1;16039:6;:21;;;;:65;;;;;5620:4;16081:7;:23;;;;16039:65;:117;;;;;5674:4;16125:11;:31;;;;16039:117;16031:170;;;::::0;-1:-1:-1;;;16031:170:0;;17964:2:1;16031:170:0::1;::::0;::::1;17946:21:1::0;18003:2;17983:18;;;17976:30;18042:25;18022:18;;;18015:53;18085:18;;16031:170:0::1;17762:347:1::0;16031:170:0::1;5727:4;16220:16;16229:7:::0;16220:6;:16:::1;:::i;:::-;:35;;;;16212:80;;;::::0;-1:-1:-1;;;16212:80:0;;18316:2:1;16212:80:0::1;::::0;::::1;18298:21:1::0;;;18335:18;;;18328:30;18394:34;18374:18;;;18367:62;18446:18;;16212:80:0::1;18114:356:1::0;16212:80:0::1;16303:9;:25:::0;;::::1;::::0;;::::1;16339:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16377:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15932:488::o;15657:108::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;15726:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15726:31:0::1;::::0;::::1;160:74:1::0;15726:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;15726:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14868:140:::0;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;-1:-1:-1;;;;;14960:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14960:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14868:140::o;17265:269::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;17406:4:::1;4936:13;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17396:14;;;;:::i;:::-;17384:7:::0;17373;4936:13:::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17363:17;;;;:::i;:::-;17362:29;;;;:::i;:::-;:49;;17354:117;;;::::0;-1:-1:-1;;;17354:117:0;;18677:2:1;17354:117:0::1;::::0;::::1;18659:21:1::0;18716:2;18696:18;;;18689:30;18755:34;18735:18;;;18728:62;18826:25;18806:18;;;18799:53;18869:19;;17354:117:0::1;18475:419:1::0;17354:117:0::1;17519:7:::0;17508;4936:13:::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;17498:17;;;;:::i;:::-;17497:29;;;;:::i;:::-;17482:12;:44:::0;-1:-1:-1;;17265:269:0:o;18431:215::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;18561:3:::1;18535:22;:29;;18527:62;;;::::0;-1:-1:-1;;;18527:62:0;;19101:2:1;18527:62:0::1;::::0;::::1;19083:21:1::0;19140:2;19120:18;;;19113:30;19179:22;19159:18;;;19152:50;19219:18;;18527:62:0::1;18899:344:1::0;18527:62:0::1;18600:13;:38:::0;18431:215::o;10071:653::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;-1:-1:-1;;;;;10150:22:0;::::1;10142:96;;;::::0;-1:-1:-1;;;10142:96:0;;19450:2:1;10142:96:0::1;::::0;::::1;19432:21:1::0;19489:2;19469:18;;;19462:30;19528:34;19508:18;;;19501:62;19599:31;19579:18;;;19572:59;19648:19;;10142:96:0::1;19248:425:1::0;10142:96:0::1;10257:16:::0;-1:-1:-1;;;;;10257:16:0;::::1;::::0;10249:90:::1;;;::::0;-1:-1:-1;;;10249:90:0;;19450:2:1;10249:90:0::1;::::0;::::1;19432:21:1::0;19489:2;19469:18;;;19462:30;19528:34;19508:18;;;19501:62;19599:31;19579:18;;;19572:59;19648:19;;10249:90:0::1;19248:425:1::0;10249:90:0::1;10370:6;::::0;;10350:34:::1;::::0;-1:-1:-1;;;;;10370:6:0;;::::1;::::0;10350:19:::1;:34::i;:::-;10395:35;10415:8;10425:4;10395:19;:35::i;:::-;10474:1;10464:6:::0;;-1:-1:-1;;;;;10464:6:0::1;11980:16:::0;;:7;:16;;;;;;10454:21;10451:126:::1;;10509:6;::::0;;-1:-1:-1;;;;;10509:6:0::1;11980:16:::0;;;:7;:16;;;;;;;10492:73:::1;::::0;10509:6;10517:8;;10527:17:::1;11887:117:::0;10492:73:::1;;10451:126;10597:16;10616:6:::0;;-1:-1:-1;;;;;10633:17:0;;::::1;-1:-1:-1::0;;10633:17:0;::::1;::::0;::::1;::::0;;10666:40:::1;::::0;10616:6;;;::::1;::::0;;;10666:40:::1;::::0;10597:16;10666:40:::1;10131:593;10071:653:::0;:::o;15016:134::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;-1:-1:-1;;;;;15104:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15104:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15016:134::o;14219:218::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;14303:14:::1;::::0;::::1;;14302:15;14294:24;;;::::0;::::1;;14360:4;-1:-1:-1::0;;;;;14337:28:0;::::1;::::0;14329:55:::1;;;::::0;-1:-1:-1;;;14329:55:0;;19880:2:1;14329:55:0::1;::::0;::::1;19862:21:1::0;19919:2;19899:18;;;19892:30;19958:16;19938:18;;;19931:44;19992:18;;14329:55:0::1;19678:338:1::0;14329:55:0::1;14395:9;:34:::0;;-1:-1:-1;;;;;14395:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;14219:218::o;17812:108::-;17855:7;17898:13;4873:2;17898;:13;:::i;:::-;17882:12;;:30;;;;:::i;10732:225::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;10811:6:::1;::::0;;10791:34:::1;::::0;-1:-1:-1;;;;;10811:6:0;;::::1;::::0;10791:19:::1;:34::i;:::-;10836:16;10855:6:::0;;-1:-1:-1;;10872:19:0;::::1;::::0;;10907:42:::1;::::0;-1:-1:-1;;;;;10855:6:0;;::::1;::::0;10836:16;10855:6;;10907:42:::1;::::0;10836:16;;10907:42:::1;10780:177;10732:225::o:0;16958:299::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;17093:11:::1;:42:::0;;-1:-1:-1;;;;;17093:42:0;;::::1;-1:-1:-1::0;;17093:42:0;;::::1;;::::0;;;17146:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17203:23;:46;;;;;::::1;::::0;::::1;;::::0;;16958:299::o;13719:492::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;13801:7:::1;13796:408;;-1:-1:-1::0;;;;;13825:13:0;;::::1;13841:5;13825:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13825:21:0::1;::::0;;13861:9:::1;::::0;:32;;;;;::::1;::::0;::::1;20189:74:1::0;;;;20279:18;;;20272:50;;;;13861:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20162:18:1;;13861:32:0::1;20021:307:1::0;13796:408:0::1;13930:17;::::0;:22;13926:136:::1;;14019:6;13999:17;;13981:15;:35;;;;:::i;:::-;:44;13973:73;;;::::0;-1:-1:-1;;;13973:73:0;;20535:2:1;13973:73:0::1;::::0;::::1;20517:21:1::0;20574:2;20554:18;;;20547:30;20613:18;20593;;;20586:46;20649:18;;13973:73:0::1;20333:340:1::0;13973:73:0::1;-1:-1:-1::0;;;;;14076:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;14076:20:0::1;14092:4;14076:20:::0;;::::1;::::0;;;14131:15:::1;14111:17;:35:::0;14161:9:::1;::::0;:31;;;;;::::1;::::0;::::1;20189:74:1::0;;;;20279:18;;;20272:50;14161:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20162:18:1;;14161:31:0::1;20021:307:1::0;13796:408:0::1;13719:492:::0;;:::o;12672:175::-;12738:4;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;12787:9:::1;::::0;12755:62:::1;::::0;12772:4:::1;::::0;-1:-1:-1;;;;;12787:9:0::1;-1:-1:-1::0;;12755:8:0::1;:62::i;:::-;-1:-1:-1::0;12835:4:0::1;12672:175:::0;:::o;24052:544::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;24114:14:::1;::::0;::::1;;24113:15;24105:52;;;::::0;-1:-1:-1;;;24105:52:0;;20880:2:1;24105:52:0::1;::::0;::::1;20862:21:1::0;20919:2;20899:18;;;20892:30;20958:26;20938:18;;;20931:54;21002:18;;24105:52:0::1;20678:348:1::0;24105:52:0::1;24176:16;::::0;::::1;::::0;::::1;;;24168:53;;;::::0;-1:-1:-1;;;24168:53:0;;21233:2:1;24168:53:0::1;::::0;::::1;21215:21:1::0;21272:2;21252:18;;;21245:30;21311:26;21291:18;;;21284:54;21355:18;;24168:53:0::1;21031:348:1::0;24168:53:0::1;24243:9;::::0;;;::::1;-1:-1:-1::0;;;;;24243:9:0::1;24232:99;;24283:9;:36:::0;;;::::1;24313:4;24283:36:::0;::::1;;::::0;;24232:99:::1;24345:9;::::0;24365:6:::1;::::0;24345:85:::1;::::0;;;;-1:-1:-1;;;;;24365:6:0;;::::1;24345:85;::::0;::::1;21607:74:1::0;21729:10;24380:12:0::1;21717:23:1::0;21697:18;;;21690:51;21789:18;24402:15:0::1;21777:31:1::0;21757:18;;;21750:59;4873:2:0::1;21825:18:1::0;;;21818:45;24345:9:0;;;::::1;;::::0;:19:::1;::::0;21579::1;;24345:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24341:101:::0;24452:14:::1;:21:::0;;-1:-1:-1;;24452:21:0::1;24469:4;24452:21;::::0;;24511:6:::1;::::0;24527:5:::1;::::0;24501:17:::1;::::0;-1:-1:-1;;;;;24511:6:0::1;-1:-1:-1::0;;;;;11980:16:0;11953:7;11980:16;;;:7;:16;;;;;;;11887:117;24501:17:::1;:22;::::0;24521:2:::1;24501:22;:::i;:::-;24500:32;;;;:::i;:::-;24484:13;:48:::0;24567:6:::1;::::0;-1:-1:-1;;;;;24567:6:0::1;11953:7:::0;11980:16;;;:7;:16;;;;;;24583:5:::1;::::0;24557:22:::1;::::0;24577:2:::1;24557:22;:::i;:::-;24556:32;;;;:::i;:::-;24543:10;:45:::0;24052:544::o;12012:165::-;12090:4;12107:40;12117:10;12129:9;12140:6;12107:9;:40::i;:::-;-1:-1:-1;12165:4:0;;12012:165;-1:-1:-1;;;12012:165:0:o;18654:263::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;18763:19:::1;:33:::0;;-1:-1:-1;;18763:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18807:22:::1;:47:::0;;-1:-1:-1;;18807:47:0::1;::::0;::::1;;;::::0;;18870:39:::1;::::0;3399:41:1;;;18870:39:0::1;::::0;3387:2:1;3372:18;18870:39:0::1;;;;;;;;18654:263:::0;;:::o;15314:200::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;15470:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15470:36:0::1;::::0;::::1;160:74:1::0;15470:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;15470:36:0::1;14:226:1::0;13169:542:0;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;13240:20:::1;13273:9;13240:43;;13294:16;13324:10;-1:-1:-1::0;;;;;13324:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13313:40:0::1;;13362:4;13369:10;-1:-1:-1::0;;;;;13369:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13313:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;15192:15:1;;;13313:74:0::1;::::0;::::1;15174:34:1::0;15244:15;;15224:18;;;15217:43;15086:18;;13313:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13294:93:::0;-1:-1:-1;;;;;;13402:22:0;::::1;13398:200;;13461:10;-1:-1:-1::0;;;;;13461:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13450:43:0::1;;13502:4;13509:10;-1:-1:-1::0;;;;;13509:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13450:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;15192:15:1;;;13450:77:0::1;::::0;::::1;15174:34:1::0;15244:15;;15224:18;;;15217:43;15086:18;;13450:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13441:6;:86:::0;;-1:-1:-1;;13441:86:0::1;-1:-1:-1::0;;;;;13441:86:0;;;::::1;::::0;;;::::1;::::0;;13398:200:::1;;;13569:6;:17:::0;;-1:-1:-1;;13569:17:0::1;-1:-1:-1::0;;;;;13569:17:0;::::1;;::::0;;13398:200:::1;13608:9;:22:::0;;-1:-1:-1;;13608:22:0::1;-1:-1:-1::0;;;;;13608:22:0;::::1;::::0;;::::1;::::0;;;13641:62:::1;::::0;13658:4:::1;::::0;-1:-1:-1;;13641:8:0::1;:62::i;24604:182::-:0;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;24671:16:::1;::::0;::::1;::::0;::::1;;;24670:17;24662:58;;;::::0;-1:-1:-1;;;24662:58:0;;22076:2:1;24662:58:0::1;::::0;::::1;22058:21:1::0;22115:2;22095:18;;;22088:30;22154;22134:18;;;22127:58;22202:18;;24662:58:0::1;21874:352:1::0;24662:58:0::1;24739:6;::::0;;24731:47:::1;::::0;-1:-1:-1;;;;;24739:6:0;;::::1;::::0;24756:21:::1;24731:47:::0;::::1;;;::::0;24756:21;;24731:47;24739:6;24731:47;24756:21;24739:6;24731:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;18050:373:::0;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;18250:16;18230;4936:13:::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;18220:26;;;;:::i;:::-;18219:47;;;;:::i;:::-;18203:13;:63:::0;18318:13;18301;4936::::1;4873:2;4936;:13;:::i;:::-;4919:30;::::0;4716:13:::1;4919:30;:::i;:::-;18291:23;;;;:::i;:::-;18290:41;;;;:::i;:::-;18277:10;:54:::0;;;18350:13:::1;::::0;:27:::1;;18342:73;;;::::0;-1:-1:-1;;;18342:73:0;;22433:2:1;18342:73:0::1;::::0;::::1;22415:21:1::0;22472:2;22452:18;;;22445:30;22511:34;22491:18;;;22484:62;22582:3;22562:18;;;22555:31;22603:19;;18342:73:0::1;22231:397:1::0;18342:73:0::1;18050:373:::0;;;;:::o;15522:127::-;15609:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15609:32:0;;;160:74:1;15585:4:0;;15609:9;;;;;:23;;133:18:1;;15609:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15158:148::-;7166:6;;-1:-1:-1;;;;;7166:6:0;7176:10;7166:20;7158:50;;;;-1:-1:-1;;;7158:50:0;;10645:2:1;7158:50:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:47;10760:18;;7158:50:0;10443:341:1;7158:50:0;-1:-1:-1;;;;;15254:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;15254:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15158:148::o;12354:310::-;-1:-1:-1;;;;;12449:20:0;;12441:52;;;;-1:-1:-1;;;12441:52:0;;23085:2:1;12441:52:0;;;23067:21:1;23124:2;23104:18;;;23097:30;23163:21;23143:18;;;23136:49;23202:18;;12441:52:0;22883:343:1;12441:52:0;-1:-1:-1;;;;;12512:21:0;;12504:53;;;;-1:-1:-1;;;12504:53:0;;23085:2:1;12504:53:0;;;23067:21:1;23124:2;23104:18;;;23097:30;23163:21;23143:18;;;23136:49;23202:18;;12504:53:0;22883:343:1;12504:53:0;-1:-1:-1;;;;;12570:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12623:33;;391:25:1;;;12623:33:0;;364:18:1;12623:33:0;;;;;;;12354:310;;;:::o;25212:1148::-;25353:16;;25331:4;;25353:16;;;;;25348:298;;25386:28;25405:4;25411:2;25386:18;:28::i;:::-;25434:16;;;;;;;25433:17;:41;;;;;25454:20;25465:4;25471:2;25454:10;:20::i;:::-;25433:77;;;;-1:-1:-1;;;;;;25479:31:0;;;;;;:25;:31;;;;;;;;25478:32;25433:77;:111;;;;-1:-1:-1;;;;;;25515:29:0;;;;;;:25;:29;;;;;;;;25514:30;25433:111;:121;;;;;25549:5;25548:6;25433:121;25429:206;;;25575:44;;-1:-1:-1;;;25575:44:0;;23433:2:1;25575:44:0;;;23415:21:1;23472:2;23452:18;;;23445:30;23511:34;23491:18;;;23484:62;23582:4;23562:18;;;23555:32;23604:19;;25575:44:0;23231:398:1;25429:206:0;25662:20;25673:4;25679:2;25662:10;:20::i;:::-;25658:314;;;25730:9;;:37;;;;;-1:-1:-1;;;;;23915:15:1;;;25730:37:0;;;23897:34:1;23967:15;;;23947:18;;;23940:43;23999:18;;;23992:34;;;25699:12:0;;25730:9;;;;;:19;;23809:18:1;;25730:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25730:37:0;;;;;;;;-1:-1:-1;;25730:37:0;;;;;;;;;;;;:::i;:::-;;;25726:163;;25865:8;;;25726:163;25818:5;-1:-1:-1;25909:7:0;25905:56;;25937:8;;;25905:56;25684:288;25658:314;-1:-1:-1;;;;;26017:25:0;;25984:12;26017:25;;;:19;:25;;;;;;25999:4;;26017:25;;;:52;;-1:-1:-1;;;;;;26046:23:0;;;;;;:19;:23;;;;;;;;26017:52;26014:98;;;-1:-1:-1;26095:5:0;26014:98;-1:-1:-1;;;;;26124:13:0;;;;;;:7;:13;;;;;:23;;26141:6;;26124:13;:23;;26141:6;;26124:23;:::i;:::-;;;;-1:-1:-1;26158:22:0;;-1:-1:-1;26184:7:0;26183:55;;26232:6;26183:55;;;26195:34;26205:4;26211:3;26216:4;26222:6;26195:9;:34::i;:::-;-1:-1:-1;;;;;26249:11:0;;;;;;:7;:11;;;;;:29;;26158:80;;-1:-1:-1;26158:80:0;;26249:11;;;:29;;26158:80;;26249:29;:::i;:::-;;;;;;;;26311:2;-1:-1:-1;;;;;26296:34:0;26305:4;-1:-1:-1;;;;;26296:34:0;;26315:14;26296:34;;;;391:25:1;;379:2;364:18;;245:177;26296:34:0;;;;;;;;-1:-1:-1;26348:4:0;;25212:1148;-1:-1:-1;;;;;;;;25212:1148:0:o;19291:2024::-;19370:4;-1:-1:-1;;;;;19395:18:0;;19387:68;;;;-1:-1:-1;;;19387:68:0;;24372:2:1;19387:68:0;;;24354:21:1;24411:2;24391:18;;;24384:30;24450:34;24430:18;;;24423:62;24521:7;24501:18;;;24494:35;24546:19;;19387:68:0;24170:401:1;19387:68:0;-1:-1:-1;;;;;19474:16:0;;19466:64;;;;-1:-1:-1;;;19466:64:0;;24778:2:1;19466:64:0;;;24760:21:1;24817:2;24797:18;;;24790:30;24856:34;24836:18;;;24829:62;24927:5;24907:18;;;24900:33;24950:19;;19466:64:0;24576:399:1;19466:64:0;19558:1;19549:6;:10;19541:64;;;;-1:-1:-1;;;19541:64:0;;25182:2:1;19541:64:0;;;25164:21:1;25221:2;25201:18;;;25194:30;25260:34;25240:18;;;25233:62;25331:11;25311:18;;;25304:39;25360:19;;19541:64:0;24980:405:1;19541:64:0;19624:13;;;;;;;19616:54;;;;-1:-1:-1;;;19616:54:0;;25592:2:1;19616:54:0;;;25574:21:1;25631:2;25611:18;;;25604:30;25670;25650:18;;;25643:58;25718:18;;19616:54:0;25390:352:1;19616:54:0;-1:-1:-1;;;;;19769:13:0;;19681:8;19769:13;;;:7;:13;;;;;;19681:8;;;;19769:13;;19765:162;;;19805:4;19799:10;;19765:162;;;-1:-1:-1;;;;;19831:11:0;;;;;;:7;:11;;;;;;;;19827:100;;;19866:4;19859:11;;19827:100;;;-1:-1:-1;19911:4:0;19827:100;19940:20;19951:4;19957:2;19940:10;:20::i;:::-;19937:641;;;19981:14;;;;19977:89;;20016:34;;-1:-1:-1;;;20016:34:0;;25949:2:1;20016:34:0;;;25931:21:1;25988:2;25968:18;;;25961:30;26027:26;26007:18;;;26000:54;26071:18;;20016:34:0;25747:348:1;19977:89:0;20083:3;:11;;;;20090:4;20083:11;20080:231;;;-1:-1:-1;;;;;20119:27:0;;;;;;:21;:27;;;;;;;;20118:28;:58;;;;-1:-1:-1;;;;;;20151:25:0;;;;;;:21;:25;;;;;;;;20150:26;20118:58;20114:182;;;20219:12;;20209:6;:22;;20201:75;;;;-1:-1:-1;;;20201:75:0;;26302:2:1;20201:75:0;;;26284:21:1;26341:2;26321:18;;;26314:30;26380:34;26360:18;;;26353:62;26451:10;26431:18;;;26424:38;26479:19;;20201:75:0;26100:404:1;20201:75:0;20342:9;;-1:-1:-1;;;;;20328:24:0;;;20342:9;;20328:24;;;;:33;;;20357:4;20356:5;20328:33;20325:242;;;-1:-1:-1;;;;;20387:25:0;;;;;;:21;:25;;;;;;;;20382:170;;20471:14;;20461:6;20445:13;20455:2;-1:-1:-1;;;;;11980:16:0;11953:7;11980:16;;;:7;:16;;;;;;;11887:117;20445:13;:22;;;;:::i;:::-;:40;;20437:95;;;;-1:-1:-1;;;20437:95:0;;26711:2:1;20437:95:0;;;26693:21:1;26750:2;26730:18;;;26723:30;26789:34;26769:18;;;26762:62;26860:12;26840:18;;;26833:40;26890:19;;20437:95:0;26509:406:1;20437:95:0;20594:4;20590:647;;;20620:6;;;;20615:611;;20650:19;;;;;;;20647:564;;;20761:4;20712:28;11980:16;;;:7;:16;;;;;;20818:13;;20794:37;;20790:402;;20878:10;;20918:22;;;;20915:96;;;20975:13;;20965:6;;-1:-1:-1;;;;;20965:6:0;11953:7;11980:16;;;:7;:16;;;;;;5774:5;;20955:33;;;:::i;:::-;20954:54;;;;:::i;:::-;20944:64;;20915:96;21064:7;21040:20;:31;21037:71;;21098:7;21075:30;;21037:71;21134:34;21147:20;21134:12;:34::i;:::-;20833:359;20790:402;20689:522;20647:564;21255:52;21272:4;21278:2;21282:6;21290:3;21295:4;21301:5;21255:16;:52::i;:::-;21248:59;19291:2024;-1:-1:-1;;;;;;;19291:2024:0:o;23488:556::-;23571:16;;;;;;;23570:17;23562:65;;;;-1:-1:-1;;;23562:65:0;;27122:2:1;23562:65:0;;;27104:21:1;27161:2;27141:18;;;27134:30;27200:34;27180:18;;;27173:62;27271:5;27251:18;;;27244:33;27294:19;;23562:65:0;26920:399:1;23562:65:0;23643:20;23654:4;23660:2;23643:10;:20::i;:::-;23642:21;:37;;;;-1:-1:-1;23673:6:0;;-1:-1:-1;;;;;23667:12:0;;;23673:6;;23667:12;23642:37;23638:399;;;-1:-1:-1;;;;;23696:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;23696:30:0;;;23722:4;23696:30;;;;;;23741:19;:25;;;;;:32;;;;;;;;;;23788:16;:23;;-1:-1:-1;;23788:23:0;23696:30;23788:23;;;;;23837:9;;;;23826:107;;23881:9;:36;;;;23911:4;23881:36;;;;;23826:107;23947:19;:26;;-1:-1:-1;;23947:26:0;;;;;23993:32;;-1:-1:-1;3399:41:1;;23993:32:0;;3387:2:1;3372:18;23993:32:0;3259:187:1;18925:358:0;18994:4;19026:6;;-1:-1:-1;;;;;19018:14:0;;;19026:6;;19018:14;;;;:43;;-1:-1:-1;19055:6:0;;-1:-1:-1;;;;;19049:12:0;;;19055:6;;19049:12;;19018:43;:79;;;;-1:-1:-1;19091:6:0;;-1:-1:-1;;;;;19091:6:0;19078:9;:19;;19018:79;:118;;;;-1:-1:-1;;;;;;19115:21:0;;;;;;:17;:21;;;;;;;;19114:22;19018:118;:159;;;;-1:-1:-1;;;;;;19154:23:0;;;;;;:17;:23;;;;;;;;19153:24;19018:159;:186;;;;-1:-1:-1;;;;;;19194:10:0;;5880:42;19194:10;;19018:186;:219;;;;-1:-1:-1;;;;;;19221:16:0;;;;19018:219;:257;;;;-1:-1:-1;;;;;;19254:21:0;;19270:4;19254:21;;19018:257;19011:264;18925:358;-1:-1:-1;;;18925:358:0:o;26368:562::-;26456:7;26476:18;26509:3;26505:205;;;-1:-1:-1;26542:9:0;:16;;;26505:205;;;26580:4;26576:134;;;-1:-1:-1;26614:9:0;:17;;;;;;26576:134;;;-1:-1:-1;26677:9:0;:21;;;;;;26576:134;26722:17;5774:5;26742:19;26751:10;26742:6;:19;:::i;:::-;:38;;;;:::i;:::-;26809:4;26793:22;;;;:7;:22;;;;;:35;;26722:58;;-1:-1:-1;26722:58:0;;26793:22;;;:35;;26722:58;;26793:35;:::i;:::-;;;;-1:-1:-1;;26844:40:0;;391:25:1;;;26867:4:0;;-1:-1:-1;;;;;26844:40:0;;;;;379:2:1;364:18;26844:40:0;;;;;;;26904:18;26913:9;26904:6;:18;:::i;21323:2157::-;7060:6;:13;;-1:-1:-1;;7060:13:0;7069:4;7060:13;;;21407:30:::1;::::0;;::::1;::::0;::::1;::::0;;21430:7:::1;21407:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;7060:6;21452:21;21448:60:::1;;21490:7;;;21448:60;21543:4;21523:26;::::0;;;:11:::1;:26;::::0;;;;;;;21558:9:::1;::::0;-1:-1:-1;;;;;21558:9:0::1;21523:46:::0;;;;;;;;-1:-1:-1;;21523:67:0::1;21520:165;;21627:4;21607:26;::::0;;;:11:::1;:26;::::0;;;;;;;21642:9:::1;::::0;-1:-1:-1;;;;;21642:9:0::1;21607:46:::0;;;;;;;-1:-1:-1;;21607:66:0;;21520:165:::1;21697:17;21782:1;21762:6;:16;;;21718:60;;21742:6;:16;;;21719:39;;:20;:39;;;;:::i;:::-;21718:60;;;;:::i;:::-;21717:66;;;;:::i;:::-;21697:86:::0;-1:-1:-1;21794:15:0::1;21812:32;21697:86:::0;21812:20;:32:::1;:::i;:::-;21889:16;::::0;;21903:1:::1;21889:16:::0;;;;;::::1;::::0;;21794:50;;-1:-1:-1;21865:21:0::1;::::0;21889:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21889:16:0::1;21865:40;;21934:4;21916;21921:1;21916:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21916:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21960:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21916:7;;21960:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21950:4;21955:1;21950:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21950:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21989:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;22064:7;;21989:9:::1;::::0;22102:4;;22129::::1;::::0;22149:15:::1;::::0;21989:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22209:21:0::1;::::0;-1:-1:-1;22188:18:0::1;::::0;-1:-1:-1;22295:7:0;;-1:-1:-1;22269:22:0::1;22282:9:::0;22209:21;22269:22:::1;:::i;:::-;22268:34;;;;:::i;:::-;22241:61:::0;-1:-1:-1;22319:13:0;;22315:328:::1;;22349:9;::::0;:222:::1;::::0;;;;22426:4:::1;22349:222;::::0;::::1;15635:34:1::0;15685:18;;;15678:34;;;22349:9:0::1;15728:18:1::0;;;15721:34;;;15771:18;;;15764:34;5880:42:0::1;15814:19:1::0;;;15807:44;22541:15:0::1;15867:19:1::0;;;15860:35;-1:-1:-1;;;;;22349:9:0;;::::1;::::0;:25:::1;::::0;22382:16;;15546:19:1;;22349:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22591:40:0::1;::::0;;28529:25:1;;;28585:2;28570:18;;28563:34;;;22591:40:0::1;::::0;-1:-1:-1;28502:18:1;22591:40:0::1;;;;;;;22315:328;22655:30;22669:16:::0;22655:30;::::1;:::i;:::-;;;22716:6;:16;;;22696:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;22831:16:::1;::::0;::::1;::::0;22809:18:::1;::::0;::::1;::::0;22743:12:::1;::::0;-1:-1:-1;22743:12:0;;22795:52;;::::1;::::0;22796:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;22795:52;;;;:::i;:::-;22766:81;;22858:26;22923:6;:16;;;22887:52;;22901:6;:18;;;22888:31;;:10;:31;;;;:::i;:::-;22887:52;;;;:::i;:::-;22858:81:::0;-1:-1:-1;22950:24:0::1;22991:39;22858:81:::0;22991:18;:39:::1;:::i;:::-;22977:54;::::0;:10;:54:::1;:::i;:::-;23046:18;::::0;::::1;::::0;22950:81;;-1:-1:-1;23046:22:0::1;;::::0;23042:139:::1;;23098:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;23098:23:0;;::::1;::::0;23159:5:::1;::::0;23134:18;;23098:71:::1;::::0;;;23134:18;23098:23;23159:5;23098:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23085:84:0;;-1:-1:-1;;23042:139:0::1;23195:18;::::0;::::1;::::0;:22:::1;;::::0;23191:139:::1;;23247:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;23247:23:0;;::::1;::::0;23308:5:::1;::::0;23283:18;;23247:71:::1;::::0;;;23283:18;23247:23;23308:5;23247:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23234:84:0;;-1:-1:-1;;23191:139:0::1;23344:16;::::0;::::1;::::0;:20:::1;;::::0;23340:133:::1;;23394:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;23394:21:0;;::::1;::::0;23451:5:::1;::::0;23428:16;;23394:67:::1;::::0;;;23428:16;23394:21;23451:5;23394:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23381:80:0;;-1:-1:-1;;23340:133:0::1;21396:2084;;;;;;;;;;7084:1;-1:-1:-1::0;7096:6:0;:14;;-1:-1:-1;;7096:14:0;;;21323:2157::o;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:656::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1739:6;1736:1;1733:13;1730:91;;;1809:1;1804:2;1795:6;1784:9;1780:22;1776:31;1769:42;1730:91;-1:-1:-1;1873:2:1;1861:15;-1:-1:-1;;1857:88:1;1842:104;;;;1948:2;1838:113;;1301:656;-1:-1:-1;;;1301:656:1:o;1962:159::-;2029:20;;2089:6;2078:18;;2068:29;;2058:57;;2111:1;2108;2101:12;2058:57;1962:159;;;:::o;2126:401::-;2208:6;2216;2224;2232;2285:3;2273:9;2264:7;2260:23;2256:33;2253:53;;;2302:1;2299;2292:12;2253:53;2325:28;2343:9;2325:28;:::i;:::-;2315:38;;2372:37;2405:2;2394:9;2390:18;2372:37;:::i;:::-;2362:47;;2428:37;2461:2;2450:9;2446:18;2428:37;:::i;:::-;2418:47;;2484:37;2517:2;2506:9;2502:18;2484:37;:::i;:::-;2474:47;;2126:401;;;;;;;:::o;2780:154::-;-1:-1:-1;;;;;2859:5:1;2855:54;2848:5;2845:65;2835:93;;2924:1;2921;2914:12;2939:315;3007:6;3015;3068:2;3056:9;3047:7;3043:23;3039:32;3036:52;;;3084:1;3081;3074:12;3036:52;3123:9;3110:23;3142:31;3167:5;3142:31;:::i;:::-;3192:5;3244:2;3229:18;;;;3216:32;;-1:-1:-1;;;2939:315:1:o;3451:180::-;3510:6;3563:2;3551:9;3542:7;3538:23;3534:32;3531:52;;;3579:1;3576;3569:12;3531:52;-1:-1:-1;3602:23:1;;3451:180;-1:-1:-1;3451:180:1:o;3636:247::-;3695:6;3748:2;3736:9;3727:7;3723:23;3719:32;3716:52;;;3764:1;3761;3754:12;3716:52;3803:9;3790:23;3822:31;3847:5;3822:31;:::i;3888:456::-;3965:6;3973;3981;4034:2;4022:9;4013:7;4009:23;4005:32;4002:52;;;4050:1;4047;4040:12;4002:52;4089:9;4076:23;4108:31;4133:5;4108:31;:::i;:::-;4158:5;-1:-1:-1;4215:2:1;4200:18;;4187:32;4228:33;4187:32;4228:33;:::i;:::-;3888:456;;4280:7;;-1:-1:-1;;;4334:2:1;4319:18;;;;4306:32;;3888:456::o;4349:248::-;4417:6;4425;4478:2;4466:9;4457:7;4453:23;4449:32;4446:52;;;4494:1;4491;4484:12;4446:52;-1:-1:-1;;4517:23:1;;;4587:2;4572:18;;;4559:32;;-1:-1:-1;4349:248:1:o;4602:184::-;4654:77;4651:1;4644:88;4751:4;4748:1;4741:15;4775:4;4772:1;4765:15;4791:334;4862:2;4856:9;4918:2;4908:13;;-1:-1:-1;;4904:86:1;4892:99;;5021:18;5006:34;;5042:22;;;5003:62;5000:88;;;5068:18;;:::i;:::-;5104:2;5097:22;4791:334;;-1:-1:-1;4791:334:1:o;5130:183::-;5190:4;5223:18;5215:6;5212:30;5209:56;;;5245:18;;:::i;:::-;-1:-1:-1;5290:1:1;5286:14;5302:4;5282:25;;5130:183::o;5318:662::-;5372:5;5425:3;5418:4;5410:6;5406:17;5402:27;5392:55;;5443:1;5440;5433:12;5392:55;5479:6;5466:20;5505:4;5529:60;5545:43;5585:2;5545:43;:::i;:::-;5529:60;:::i;:::-;5623:15;;;5709:1;5705:10;;;;5693:23;;5689:32;;;5654:12;;;;5733:15;;;5730:35;;;5761:1;5758;5751:12;5730:35;5797:2;5789:6;5785:15;5809:142;5825:6;5820:3;5817:15;5809:142;;;5891:17;;5879:30;;5929:12;;;;5842;;5809:142;;;-1:-1:-1;5969:5:1;5318:662;-1:-1:-1;;;;;;5318:662:1:o;5985:1215::-;6103:6;6111;6164:2;6152:9;6143:7;6139:23;6135:32;6132:52;;;6180:1;6177;6170:12;6132:52;6220:9;6207:23;6249:18;6290:2;6282:6;6279:14;6276:34;;;6306:1;6303;6296:12;6276:34;6344:6;6333:9;6329:22;6319:32;;6389:7;6382:4;6378:2;6374:13;6370:27;6360:55;;6411:1;6408;6401:12;6360:55;6447:2;6434:16;6469:4;6493:60;6509:43;6549:2;6509:43;:::i;6493:60::-;6587:15;;;6669:1;6665:10;;;;6657:19;;6653:28;;;6618:12;;;;6693:19;;;6690:39;;;6725:1;6722;6715:12;6690:39;6749:11;;;;6769:217;6785:6;6780:3;6777:15;6769:217;;;6865:3;6852:17;6882:31;6907:5;6882:31;:::i;:::-;6926:18;;6802:12;;;;6964;;;;6769:217;;;7005:5;-1:-1:-1;;7048:18:1;;7035:32;;-1:-1:-1;;7079:16:1;;;7076:36;;;7108:1;7105;7098:12;7076:36;;7131:63;7186:7;7175:8;7164:9;7160:24;7131:63;:::i;:::-;7121:73;;;5985:1215;;;;;:::o;7394:328::-;7468:6;7476;7484;7537:2;7525:9;7516:7;7512:23;7508:32;7505:52;;;7553:1;7550;7543:12;7505:52;7576:28;7594:9;7576:28;:::i;:::-;7566:38;;7623:37;7656:2;7645:9;7641:18;7623:37;:::i;:::-;7613:47;;7679:37;7712:2;7701:9;7697:18;7679:37;:::i;:::-;7669:47;;7394:328;;;;;:::o;7727:382::-;7792:6;7800;7853:2;7841:9;7832:7;7828:23;7824:32;7821:52;;;7869:1;7866;7859:12;7821:52;7908:9;7895:23;7927:31;7952:5;7927:31;:::i;8114:553::-;8215:6;8223;8231;8284:2;8272:9;8263:7;8259:23;8255:32;8252:52;;;8300:1;8297;8290:12;8252:52;8339:9;8326:23;8358:31;8383:5;8358:31;:::i;:::-;8408:5;-1:-1:-1;8465:2:1;8450:18;;8437:32;8478:33;8437:32;8478:33;:::i;:::-;8530:7;-1:-1:-1;8589:2:1;8574:18;;8561:32;8602:33;8561:32;8602:33;:::i;:::-;8654:7;8644:17;;;8114:553;;;;;:::o;9200:388::-;9268:6;9276;9329:2;9317:9;9308:7;9304:23;9300:32;9297:52;;;9345:1;9342;9335:12;9297:52;9384:9;9371:23;9403:31;9428:5;9403:31;:::i;:::-;9453:5;-1:-1:-1;9510:2:1;9495:18;;9482:32;9523:33;9482:32;9523:33;:::i;10053:385::-;10139:6;10147;10155;10163;10216:3;10204:9;10195:7;10191:23;10187:33;10184:53;;;10233:1;10230;10223:12;10184:53;-1:-1:-1;;10256:23:1;;;10326:2;10311:18;;10298:32;;-1:-1:-1;10377:2:1;10362:18;;10349:32;;10428:2;10413:18;10400:32;;-1:-1:-1;10053:385:1;-1:-1:-1;10053:385:1:o;11062:184::-;11114:77;11111:1;11104:88;11211:4;11208:1;11201:15;11235:4;11232:1;11225:15;11251:224;11290:3;11318:6;11351:2;11348:1;11344:10;11381:2;11378:1;11374:10;11412:3;11408:2;11404:12;11399:3;11396:21;11393:47;;;11420:18;;:::i;:::-;11456:13;;11251:224;-1:-1:-1;;;;11251:224:1:o;12588:482::-;12677:1;12720:5;12677:1;12734:330;12755:7;12745:8;12742:21;12734:330;;;12874:4;-1:-1:-1;;12802:77:1;12796:4;12793:87;12790:113;;;12883:18;;:::i;:::-;12933:7;12923:8;12919:22;12916:55;;;12953:16;;;;12916:55;13032:22;;;;12992:15;;;;12734:330;;;12738:3;12588:482;;;;;:::o;13075:866::-;13124:5;13154:8;13144:80;;-1:-1:-1;13195:1:1;13209:5;;13144:80;13243:4;13233:76;;-1:-1:-1;13280:1:1;13294:5;;13233:76;13325:4;13343:1;13338:59;;;;13411:1;13406:130;;;;13318:218;;13338:59;13368:1;13359:10;;13382:5;;;13406:130;13443:3;13433:8;13430:17;13427:43;;;13450:18;;:::i;:::-;-1:-1:-1;;13506:1:1;13492:16;;13521:5;;13318:218;;13620:2;13610:8;13607:16;13601:3;13595:4;13592:13;13588:36;13582:2;13572:8;13569:16;13564:2;13558:4;13555:12;13551:35;13548:77;13545:159;;;-1:-1:-1;13657:19:1;;;13689:5;;13545:159;13736:34;13761:8;13755:4;13736:34;:::i;:::-;13866:6;-1:-1:-1;;13794:79:1;13785:7;13782:92;13779:118;;;13877:18;;:::i;:::-;13915:20;;13075:866;-1:-1:-1;;;13075:866:1:o;13946:140::-;14004:5;14033:47;14074:4;14064:8;14060:19;14054:4;14033:47;:::i;14091:228::-;14131:7;14257:1;-1:-1:-1;;14185:74:1;14182:1;14179:81;14174:1;14167:9;14160:17;14156:105;14153:131;;;14264:18;;:::i;:::-;-1:-1:-1;14304:9:1;;14091:228::o;14683:251::-;14753:6;14806:2;14794:9;14785:7;14781:23;14777:32;14774:52;;;14822:1;14819;14812:12;14774:52;14854:9;14848:16;14873:31;14898:5;14873:31;:::i;15906:306::-;15994:6;16002;16010;16063:2;16051:9;16042:7;16038:23;16034:32;16031:52;;;16079:1;16076;16069:12;16031:52;16108:9;16102:16;16092:26;;16158:2;16147:9;16143:18;16137:25;16127:35;;16202:2;16191:9;16187:18;16181:25;16171:35;;15906:306;;;;;:::o;16217:274::-;16257:1;16283;16273:189;;16318:77;16315:1;16308:88;16419:4;16416:1;16409:15;16447:4;16444:1;16437:15;16273:189;-1:-1:-1;16476:9:1;;16217:274::o;16496:125::-;16536:4;16564:1;16561;16558:8;16555:34;;;16569:18;;:::i;:::-;-1:-1:-1;16606:9:1;;16496:125::o;17393:184::-;17445:77;17442:1;17435:88;17542:4;17539:1;17532:15;17566:4;17563:1;17556:15;17582:175;17619:3;17663:4;17656:5;17652:16;17692:4;17683:7;17680:17;17677:43;;17700:18;;:::i;:::-;17749:1;17736:15;;17582:175;-1:-1:-1;;17582:175:1:o;22633:245::-;22700:6;22753:2;22741:9;22732:7;22728:23;22724:32;22721:52;;;22769:1;22766;22759:12;22721:52;22801:9;22795:16;22820:28;22842:5;22820:28;:::i;24037:128::-;24077:3;24108:1;24104:6;24101:1;24098:13;24095:39;;;24114:18;;:::i;:::-;-1:-1:-1;24150:9:1;;24037:128::o;27324:1026::-;27586:4;27634:3;27623:9;27619:19;27665:6;27654:9;27647:25;27691:2;27729:6;27724:2;27713:9;27709:18;27702:34;27772:3;27767:2;27756:9;27752:18;27745:31;27796:6;27831;27825:13;27862:6;27854;27847:22;27900:3;27889:9;27885:19;27878:26;;27939:2;27931:6;27927:15;27913:29;;27960:1;27970:218;27984:6;27981:1;27978:13;27970:218;;;28049:13;;-1:-1:-1;;;;;28045:62:1;28033:75;;28163:15;;;;28128:12;;;;28006:1;27999:9;27970:218;;;-1:-1:-1;;;;;;;28244:55:1;;;;28239:2;28224:18;;28217:83;-1:-1:-1;;;28331:3:1;28316:19;28309:35;28205:3;27324:1026;-1:-1:-1;;;27324:1026:1:o;28608:217::-;28647:4;28676:6;28732:10;;;;28702;;28754:12;;;28751:38;;;28769:18;;:::i;:::-;28806:13;;28608:217;-1:-1:-1;;;28608:217:1:o

Swarm Source

ipfs://b3bc8dde47830b063a6f6d7c0ca7df9b73537fceaf10e75a9a0f26710b62827f

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.