ETH Price: $3,451.41 (+1.76%)
Gas: 4 Gwei

Token

0xScans (SCANS)
 

Overview

Max Total Supply

100,000,000 SCANS

Holders

2,411

Market

Price

$0.03 @ 0.000010 ETH (-0.06%)

Onchain Market Cap

$3,369,624.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,826.894664386720344777 SCANS

Value
$95.26 ( ~0.0276002925628314 Eth) [0.0028%]
0x05dd2a6ccb0476e523406c7658de4e8e1a8015fc
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The 0xScan ecosystem is an advanced, multifaceted platform designed to enhance the security and integrity of smart contracts through a series of innovative tools and features.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ZeroxScans

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 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 Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    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);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract ZeroxScans is IERC20 {
    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 = 100_000_000;
    string constant private _name = "0xScans";
    string constant private _symbol = "SCANS";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 sales;
        uint16 manualBuybackLP;
        uint16 team;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 1,
        development: 1,
        sales: 1,
        manualBuybackLP: 1,
        team: 1,
        totalSwap: 5
    });

    uint256 constant public maxBuyTaxes = 3000;
    uint256 constant public maxSellTaxes = 3000;
    uint256 constant public maxTransferTaxes = 3000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable sales;
        address payable manualBuybackLP;
        address payable team;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x37Eed540FF1C1BE591cd31D206d35d82178ccF8d),
        development: payable(0x883ff095c6BdCAE0cDdeBF360286268858b1Fc1C),
        sales: payable(0x183fc2F0F7B5BbB0006d2E7089f15151902a639E),
        manualBuybackLP: payable(0xd20c7EEc5BfA0Bbf9C9731c3C8645E0F7c1A16bb),
        team: payable(0xFB36163c602978B2144EA2dFb258b1dD81a21e17)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    uint256 private _maxTxAmount = (_tTotal * 25) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 5) / 1000;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;
    bool public blacklistRenounced = false;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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 {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}
    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 {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

//================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(!blacklistRenounced, "Cannot call, blacklist functions have been renounced.");
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        require(!blacklistRenounced, "Cannot call, blacklist functions have been renounced.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

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

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

//================================================ BLACKLIST

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function renounceBlacklist() external onlyOwner {
        require(!blacklistRenounced, "Already renounced.");
        blacklistRenounced = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 marketing, uint16 development, uint16 sales, uint16 manualBuybackLP, uint16 team) external onlyOwner {
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.sales = sales;
        _ratios.manualBuybackLP = manualBuybackLP;
        _ratios.team = team;
        _ratios.totalSwap = marketing + development + sales + manualBuybackLP + team;
        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 development, address payable sales, address payable manualBuybackLP, address payable team) external onlyOwner {
        require(marketing != address(0) && sales != address(0) && development != address(0) && manualBuybackLP != address(0) && team != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.sales = payable(sales);
        _taxWallets.development = payable(development);
        _taxWallets.manualBuybackLP = payable(manualBuybackLP);
        _taxWallets.team = payable(team);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% 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 getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    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.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        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)
            && from != address(initializer)
            && to != address(initializer);
    }

    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");
        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) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
            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 inSwapFlag {
        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;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 manualBuybackLPBalanace = (amtBalance * ratios.manualBuybackLP) / ratios.totalSwap;
        uint256 salesBalance = (amtBalance * ratios.sales) / ratios.totalSwap;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (developmentBalance + manualBuybackLPBalanace + salesBalance + teamBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.manualBuybackLP > 0) {
            (success,) = _taxWallets.manualBuybackLP.call{value: manualBuybackLPBalanace, gas: 55000}("");
        }
        if (ratios.sales > 0) {
            (success,) = _taxWallets.sales.call{value: salesBalance, gas: 55000}("");
        }
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: 55000}("");
        }
    }

    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(initializer) == address(0)){
                initializer = Initializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

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

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            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 (_hasLimits(from, to)) { bool checked;
            try initializer.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, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"sales","type":"uint16"},{"internalType":"uint16","name":"manualBuybackLP","type":"uint16"},{"internalType":"uint16","name":"team","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":"development","type":"address"},{"internalType":"address payable","name":"sales","type":"address"},{"internalType":"address payable","name":"manualBuybackLP","type":"address"},{"internalType":"address payable","name":"team","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":"blacklistRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","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":"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":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","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":"init","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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"sales","type":"uint16"},{"internalType":"uint16","name":"manualBuybackLP","type":"uint16"},{"internalType":"uint16","name":"team","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":"development","type":"address"},{"internalType":"address payable","name":"sales","type":"address"},{"internalType":"address payable","name":"manualBuybackLP","type":"address"},{"internalType":"address payable","name":"team","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":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

600060028190556101f4608081905260a05260c0526008805465ffffffffffff19166301f401f4179055600160e081905261010081905261012081905261014081905261016052600561018052600980546a05000100010001000100016001600160601b03199091161790556102406040527337eed540ff1c1be591cd31d206d35d82178ccf8d6101a081905273883ff095c6bdcae0cddebf360286268858b1fc1c6101c081905273183fc2f0f7b5bbb0006d2e7089f15151902a639e6101e081905273d20c7eec5bfa0bbf9c9731c3c8645e0f7c1a16bb61020081905273fb36163c602978b2144ea2dfb258b1dd81a21e17610220819052600c80546001600160a01b03199081169096179055600d80548616909417909355600e80548516909217909155600f805484169091179055601080549092161790556011805461ff0019169055600a6015819055612710906200015e90601290620004b9565b6200016e906305f5e100620004d1565b6200017b906019620004d1565b620001879190620004eb565b6016556103e86200019b6012600a620004b9565b620001ab906305f5e100620004d1565b620001b8906005620004d1565b620001c49190620004eb565b6017556018805461ffff19169055601a80546001600160a81b0319166101003302179055620001f66012600a620004b9565b62000206906305f5e100620004d1565b601a80546001600160a01b0361010091829004811660009081526020819052604081209490945591540416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002616012600a620004b9565b62000271906305f5e100620004d1565b60405190815260200160405180910390a3601a80546001600160a01b036101009182900481166000908152600660208181526040808420805460ff19908116600190811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905597549690960490941683526004815292822080548616851790559091527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556200050e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003fb578160001904821115620003df57620003df620003a4565b80851615620003ed57918102915b93841c9390800290620003bf565b509250929050565b6000826200041457506001620004b3565b816200042357506000620004b3565b81600181146200043c5760028114620004475762000467565b6001915050620004b3565b60ff8411156200045b576200045b620003a4565b50506001821b620004b3565b5060208310610133831016604e8410600b84101617156200048c575081810a620004b3565b620004988383620003ba565b8060001904821115620004af57620004af620003a4565b0290505b92915050565b6000620004ca60ff84168362000403565b9392505050565b8082028115828204841417620004b357620004b3620003a4565b6000826200050957634e487b7160e01b600052601260045260246000fd5b500490565b614754806200051e6000396000f3fe6080604052600436106103d25760003560e01c8063590ffdce116101fd578063ab558e4d11610118578063eafb5a3c116100ab578063f94aa1b41161007a578063f94aa1b414610bd5578063fb78680d14610c48578063fdb78c0e14610c68578063fe575a8714610c87578063feadde9c14610ca757600080fd5b8063eafb5a3c14610b60578063ee5d9c2d14610b80578063eec2744e14610b95578063f08f43a214610bb557600080fd5b8063bfc2fc35116100e7578063bfc2fc3514610a4f578063c6a276c214610a6f578063cf84770614610a8f578063dd62ed3e14610b1a57600080fd5b8063ab558e4d14610a15578063b1b08f7114610663578063b3d514fb14610663578063b7df8b3614610a3557600080fd5b806378648edf116101905780638a63bd9b1161015f5780638a63bd9b1461099d5780638a8c523c146109b257806395d89b41146109c7578063a9059cbb146109f557600080fd5b806378648edf1461092557806380c581d11461093a578063825287911461095a578063893d20e81461097a57600080fd5b80635f189361116101cc5780635f189361146108c65780636ebd0078146108db57806370a08231146108f0578063715018a61461091057600080fd5b8063590ffdce146108375780635a6f0918146108575780635c24b0741461086d5780635cce86cd1461088d57600080fd5b80632b112e49116102ed5780633f3cf56c116102805780634e718e481161024f5780634e718e481461079f5780634fb2e45d146107bf5780634fbee193146107df57806350a8e0161461081857600080fd5b80633f3cf56c14610725578063452ed4f1146107455780634ada218b146107655780634bbb93eb1461077f57600080fd5b806332cde664116102bc57806332cde664146106ab57806333251a0b146106cb57806336fddb04146106eb5780633dc599ff1461070b57600080fd5b80632b112e491461064e5780632b28fc7a146106635780632e8fa82114610679578063313ce5671461068f57600080fd5b8063095ea7b31161036557806323b872dd1161033457806323b872dd146105d857806326003957146105f85780632610eaca14610618578063285777511461063857600080fd5b8063095ea7b3146105555780630dcbcf1c146105755780630fa604e4146105ae57806318160ddd146105c357600080fd5b8063069d955f116103a1578063069d955f1461047757806306fdde03146104cd5780630758d9241461050657806307dd79e01461052b57600080fd5b806303fd2a45146103de5780630445b66714610411578063044df7261461043557806305bbedb61461045757600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041d57600080fd5b5061042760125481565b604051908152602001610408565b34801561044157600080fd5b50610455610450366004613df8565b610cc7565b005b34801561046357600080fd5b50610455610472366004613f25565b610d70565b34801561048357600080fd5b506008546104a89061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610408565b3480156104d957600080fd5b5060408051808201909152600781526630785363616e7360c81b60208201525b6040516104089190613f6c565b34801561051257600080fd5b50600a546103f49061010090046001600160a01b031681565b34801561053757600080fd5b50600a546105459060ff1681565b6040519015158152602001610408565b34801561056157600080fd5b50610545610570366004613fba565b610e3f565b34801561058157600080fd5b50610545610590366004613fe6565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ba57600080fd5b50610427610e56565b3480156105cf57600080fd5b50610427610e76565b3480156105e457600080fd5b506105456105f3366004614003565b610e92565b34801561060457600080fd5b50610455610613366004614044565b610f0a565b34801561062457600080fd5b50610455610633366004614066565b61102d565b34801561064457600080fd5b5061042760155481565b34801561065a57600080fd5b506104276111af565b34801561066f57600080fd5b50610427610bb881565b34801561068557600080fd5b5061042760135481565b34801561069b57600080fd5b5060405160128152602001610408565b3480156106b757600080fd5b506104556106c6366004614138565b6111f4565b3480156106d757600080fd5b506104556106e6366004613fe6565b611323565b3480156106f757600080fd5b5061045561070636600461417b565b6113bc565b34801561071757600080fd5b50601a546105459060ff1681565b34801561073157600080fd5b50610455610740366004614044565b611416565b34801561075157600080fd5b50600b546103f4906001600160a01b031681565b34801561077157600080fd5b506018546105459060ff1681565b34801561078b57600080fd5b5061042761079a366004614199565b611552565b3480156107ab57600080fd5b506104556107ba366004614199565b611584565b3480156107cb57600080fd5b506104556107da366004613fe6565b611602565b3480156107eb57600080fd5b506105456107fa366004613fe6565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082457600080fd5b5060185461054590610100900460ff1681565b34801561084357600080fd5b5061045561085236600461417b565b611747565b34801561086357600080fd5b5061042760195481565b34801561087957600080fd5b50610455610888366004613fe6565b6117a1565b34801561089957600080fd5b506105456108a8366004613fe6565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d257600080fd5b5061045561194d565b3480156108e757600080fd5b506104276119d3565b3480156108fc57600080fd5b5061042761090b366004613fe6565b6119ee565b34801561091c57600080fd5b50610455611a09565b34801561093157600080fd5b50610455611b11565b34801561094657600080fd5b5061045561095536600461417b565b611b4f565b34801561096657600080fd5b506104556109753660046141b2565b611d01565b34801561098657600080fd5b50601a5461010090046001600160a01b03166103f4565b3480156109a957600080fd5b50610545611e36565b3480156109be57600080fd5b50610455611e8d565b3480156109d357600080fd5b506040805180820190915260058152645343414e5360d81b60208201526104f9565b348015610a0157600080fd5b50610545610a10366004613fba565b6120bc565b348015610a2157600080fd5b50610455610a30366004613fe6565b6120d3565b348015610a4157600080fd5b506014546105459060ff1681565b348015610a5b57600080fd5b50610455610a6a366004613df8565b612258565b348015610a7b57600080fd5b50610455610a8a366004613fe6565b6122e6565b348015610a9b57600080fd5b50600954610add9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610408565b348015610b2657600080fd5b50610427610b35366004614223565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b6c57600080fd5b50610455610b7b366004613fe6565b61234e565b348015610b8c57600080fd5b50610455612729565b348015610ba157600080fd5b50610455610bb036600461417b565b6127f0565b348015610bc157600080fd5b50610455610bd0366004614251565b612883565b348015610be157600080fd5b50600c54600d54600e54600f54601054610c0e946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610408565b348015610c5457600080fd5b50610455610c633660046142b6565b6129ea565b348015610c7457600080fd5b5060115461054590610100900460ff1681565b348015610c9357600080fd5b50610545610ca2366004613fe6565b612c02565b348015610cb357600080fd5b50610455610cc236600461417b565b612c77565b601a5461010090046001600160a01b03163314610cff5760405162461bcd60e51b8152600401610cf6906142e8565b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d5457600080fd5b505af1158015610d68573d6000803e3d6000fd5b505050505050565b601a5461010090046001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610cf6906142e8565b606482511115610de55760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610cf6565b601a5460ff1615610e085760405162461bcd60e51b8152600401610cf690614313565b6018546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610d3a90859085906004016143ac565b6000610e4c338484612cd1565b5060015b92915050565b6000610e646012600a6144ca565b601754610e7191906144d9565b905090565b6000610e846012600a6144ca565b610e71906305f5e1006144fb565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ef7576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ef1908490614512565b90915550505b610f02848484612dca565b949350505050565b601a5461010090046001600160a01b03163314610f395760405162461bcd60e51b8152600401610cf6906142e8565b6064610f476012600a6144ca565b610f55906305f5e1006144fb565b610f5f91906144d9565b8183610f6d6012600a6144ca565b610f7b906305f5e1006144fb565b610f8591906144fb565b610f8f91906144d9565b1015610ff65760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610cf6565b80826110046012600a6144ca565b611012906305f5e1006144fb565b61101c91906144fb565b61102691906144d9565b6017555050565b601a5461010090046001600160a01b0316331461105c5760405162461bcd60e51b8152600401610cf6906142e8565b80518251146110a55760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610cf6565b60005b82518161ffff1610156111aa576110c16012600a6144ca565b828261ffff16815181106110d7576110d7614525565b60200260200101516110e991906144fb565b6110f2336119ee565b10156111355760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610cf6565b61119733848361ffff168151811061114f5761114f614525565b60200260200101516012600a61116591906144ca565b858561ffff168151811061117b5761117b614525565b602002602001015161118d91906144fb565b600080600161327a565b50806111a28161453b565b9150506110a8565b505050565b60006111bb60006119ee565b6111c661dead6119ee565b6111d0919061455c565b6111dc6012600a6144ca565b6111ea906305f5e1006144fb565b610e719190614512565b601a5461010090046001600160a01b031633146112235760405162461bcd60e51b8152600401610cf6906142e8565b600a5460ff161561126a5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610cf6565b610bb88361ffff16111580156112865750610bb88261ffff1611155b80156112985750610bb88161ffff1611155b6112e45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cf6565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a5461010090046001600160a01b031633146113525760405162461bcd60e51b8152600401610cf6906142e8565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113a157600080fd5b505af11580156113b5573d6000803e3d6000fd5b5050505050565b601a5461010090046001600160a01b031633146113eb5760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a5461010090046001600160a01b031633146114455760405162461bcd60e51b8152600401610cf6906142e8565b6103e86114546012600a6144ca565b611462906305f5e1006144fb565b61146d9060056144fb565b61147791906144d9565b81836114856012600a6144ca565b611493906305f5e1006144fb565b61149d91906144fb565b6114a791906144d9565b101561151b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610cf6565b80826115296012600a6144ca565b611537906305f5e1006144fb565b61154191906144fb565b61154b91906144d9565b6016555050565b600b54600090612710908390611570906001600160a01b03166119ee565b61157a91906144fb565b610e5091906144d9565b601a5461010090046001600160a01b031633146115b35760405162461bcd60e51b8152600401610cf6906142e8565b60968111156115fd5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610cf6565b601555565b601a5461010090046001600160a01b031633146116315760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b0381166116575760405162461bcd60e51b8152600401610cf69061456f565b61deac196001600160a01b038216016116825760405162461bcd60e51b8152600401610cf69061456f565b601a5461169e9061010090046001600160a01b03166000611747565b6116a9816001611747565b601a546000906116c69061010090046001600160a01b03166119ee565b11156116ed57601a546116eb9061010090046001600160a01b03168261118d826119ee565b505b601a80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a5461010090046001600160a01b031633146117765760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a5461010090046001600160a01b031633146117d05760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff16156117e057600080fd5b306001600160a01b038216036118295760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610cf6565b6018805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156118af575060408051601f3d908101601f191682019092526118ac918101906145cc565b60015b6118b857600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601a54925461192b9382900483169291900416600019612cd1565b600a546111aa90309061010090046001600160a01b0316600019612cd1565b50565b601a5461010090046001600160a01b0316331461197c5760405162461bcd60e51b8152600401610cf6906142e8565b601a5460ff16156119c45760405162461bcd60e51b815260206004820152601260248201527120b63932b0b23c903932b737bab731b2b21760711b6044820152606401610cf6565b601a805460ff19166001179055565b60006119e16012600a6144ca565b601654610e7191906144d9565b6001600160a01b031660009081526020819052604090205490565b601a5461010090046001600160a01b03163314611a385760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff16611aa25760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610cf6565b601a54611abe9061010090046001600160a01b03166000611747565b601a8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a5461010090046001600160a01b03163314611b405760405162461bcd60e51b8152600401610cf6906142e8565b600a805460ff19166001179055565b601a5461010090046001600160a01b03163314611b7e5760405162461bcd60e51b8152600401610cf6906142e8565b80611bdc576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610d3a565b60025415611c35576203f48060025442611bf69190614512565b11611c355760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610cf6565b6001600160a01b03821660009081526001602052604090205460ff1615611c9e5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cf6565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610d3a565b5050565b601a5461010090046001600160a01b03163314611d305760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03851615801590611d5057506001600160a01b03831615155b8015611d6457506001600160a01b03841615155b8015611d7857506001600160a01b03821615155b8015611d8c57506001600160a01b03811615155b611dd85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cf6565b600c80546001600160a01b03199081166001600160a01b0397881617909155600e8054821694871694909417909355600d8054841694861694909417909355600f805483169185169190911790556010805490911691909216179055565b601a5460009061010090046001600160a01b03163314611e685760405162461bcd60e51b8152600401610cf6906142e8565b600a54611e8790309061010090046001600160a01b0316600019612cd1565b50600190565b601a5461010090046001600160a01b03163314611ebc5760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff1615611f0f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cf6565b601854610100900460ff16611f665760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cf6565b6018546201000090046001600160a01b0316611f96576018805462010000600160b01b0319163062010000021790555b601854600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561200857600080fd5b505af1925050508015612019575060015b50601854600b546001600160a01b03620100009092048216916325a71cae9161204291166119ee565b6040518263ffffffff1660e01b815260040161206091815260200190565b60408051808303816000875af192505050801561209a575060408051601f3d908101601f19168201909252612097918101906145fb565b60015b156120a9576012919091556013555b6018805460ff1916600117905542601955565b60006120c9338484612dca565b5060019392505050565b601a5461010090046001600160a01b031633146121025760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff161561216a57306001600160a01b0382160361216a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cf6565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e9919061461f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190614638565b601a5461010090046001600160a01b031633146122875760405162461bcd60e51b8152600401610cf6906142e8565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a5461010090046001600160a01b031633146123155760405162461bcd60e51b8152600401610cf6906142e8565b6018546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611387565b601a5461010090046001600160a01b0316331461237d5760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff16156123d55760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cf6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614655565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190614655565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251e9190614655565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166126b457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad9190614655565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261e9190614655565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614655565b600b80546001600160a01b0319166001600160a01b03929092169190911790556126d0565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff1916909117905591546111aa923092910416600019612cd1565b601a5461010090046001600160a01b031633146127585760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff16156127b05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cf6565b601a546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561194a573d6000803e3d6000fd5b601a5461010090046001600160a01b0316331461281f5760405162461bcd60e51b8152600401610cf6906142e8565b601a5460ff16156128425760405162461bcd60e51b8152600401610cf690614313565b6018546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d3a565b601a5461010090046001600160a01b031633146128b25760405162461bcd60e51b8152600401610cf6906142e8565b6009805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff0000000019166401000000008683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b918416919091021790558082846129268789614672565b6129309190614672565b61293a9190614672565b6129449190614672565b6009805461ffff60501b1916600160501b61ffff938416021790556008546000916129789162010000810482169116614672565b60095461ffff9182169250600160501b900416811015610d685760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cf6565b601a5461010090046001600160a01b03163314612a195760405162461bcd60e51b8152600401610cf6906142e8565b8284612a276012600a6144ca565b612a35906305f5e1006144fb565b612a3f91906144fb565b612a4991906144d9565b601290815581908390612a5d90600a6144ca565b612a6b906305f5e1006144fb565b612a7591906144fb565b612a7f91906144d9565b60138190556012541115612adf5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cf6565b600b5461271090612af8906001600160a01b03166119ee565b612b039060966144fb565b612b0d91906144d9565b6013541115612b6a5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cf6565b620f4240612b7a6012600a6144ca565b612b88906305f5e1006144fb565b612b9291906144d9565b6013541015612bb35760405162461bcd60e51b8152600401610cf690614694565b620f4240612bc36012600a6144ca565b612bd1906305f5e1006144fb565b612bdb91906144d9565b6012541015612bfc5760405162461bcd60e51b8152600401610cf690614694565b50505050565b60185460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190614638565b601a5461010090046001600160a01b03163314612ca65760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612d1d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610cf6565b6001600160a01b038216612d695760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610cf6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e305760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf6565b6001600160a01b038316612e925760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf6565b60008211612ef45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cf6565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612f225760019250612f50565b6001600160a01b03861660009081526001602052604090205460ff1615612f4c5760019150612f50565b5060015b612f5a878761352d565b156131d15760185460ff1661305b5780612fb65760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cf6565b6001600160a01b03871660009081526005602052604090205460ff16158015612ff857506001600160a01b03861660009081526005602052604090205460ff16155b1561305b5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cf6565b82806130645750815b15613113576001600160a01b03871660009081526007602052604090205460ff161580156130ab57506001600160a01b03861660009081526007602052604090205460ff16155b15613113576016548511156131135760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cf6565b600a546001600160a01b038781166101009092041614801590613134575081155b156131d1576001600160a01b03861660009081526007602052604090205460ff166131d15760175485613166886119ee565b613170919061455c565b11156131d15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610cf6565b81156132615760115460ff1661326157601154610100900460ff16156132615760006131fc306119ee565b9050601254811061325f5760135460145460ff161561324957601554600b546127109190613232906001600160a01b03166119ee565b61323c91906144fb565b61324691906144d9565b90505b808210613254578091505b61325d82613653565b505b505b61326f87878786868661327a565b979650505050505050565b6000613286878761352d565b156133205760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613309575060408051601f3d908101601f1916820190925261330691810190614638565b60015b61331257600080fd5b90508061331e57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061336257506001600160a01b03871660009081526006602052604090205460ff165b1561336b575060005b6001600160a01b03881660009081526020819052604081208054889290613393908490614512565b9091555060009050816133a657866133b2565b6133b289888888613b9e565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133e8919061455c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161343491815260200190565b60405180910390a3601854610100900460ff1661351e576134558989613caa565b601854610100900460ff161580156134725750613472898961352d565b801561349757506001600160a01b03891660009081526005602052604090205460ff16155b80156134bc57506001600160a01b03881660009081526005602052604090205460ff16155b80156134c6575083155b1561351e5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cf6565b50600198975050505050505050565b601a546000906001600160a01b0384811661010090920416148015906135665750601a546001600160a01b038381166101009092041614155b80156135825750601a5461010090046001600160a01b03163214155b80156135a757506001600160a01b03821660009081526004602052604090205460ff16155b80156135cc57506001600160a01b03831660009081526004602052604090205460ff16155b80156135e357506001600160a01b03821661dead14155b80156135f757506001600160a01b03821615155b801561360c57506001600160a01b0383163014155b801561362c57506018546001600160a01b03848116620100009092041614155b801561364c57506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff191660011790556040805160c08101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526000036136cd5750613b91565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461373057306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061376557613765614525565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fc9190614655565b8160018151811061380f5761380f614525565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061385c9086906000908690309042906004016146e2565b600060405180830381600087803b15801561387657600080fd5b505af1925050508015613887575060015b613892575050613b91565b60004790506000808460a0015161ffff16856020015161ffff16846138b791906144fb565b6138c191906144d9565b905060008560a0015161ffff16866060015161ffff16856138e291906144fb565b6138ec91906144d9565b905060008660a0015161ffff16876040015161ffff168661390d91906144fb565b61391791906144d9565b905060008760a0015161ffff16886080015161ffff168761393891906144fb565b61394291906144d9565b905060008183613952868861455c565b61395c919061455c565b613966919061455c565b6139709088614512565b895190915061ffff16156139db57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146139d0576040519150601f19603f3d011682016040523d82523d6000602084013e6139d5565b606091505b50909650505b602089015161ffff1615613a4657600d546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613a3b576040519150601f19603f3d011682016040523d82523d6000602084013e613a40565b606091505b50909650505b606089015161ffff1615613ab157600f546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613aa6576040519150601f19603f3d011682016040523d82523d6000602084013e613aab565b606091505b50909650505b604089015161ffff1615613b1c57600e546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613b11576040519150601f19603f3d011682016040523d82523d6000602084013e613b16565b606091505b50909650505b608089015161ffff1615613b87576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613b7c576040519150601f19603f3d011682016040523d82523d6000602084013e613b81565b606091505b50909650505b5050505050505050505b506011805460ff19169055565b6000808315613bb4575060085461ffff16613bde565b8215613bcd575060085462010000900461ffff16613bde565b50600854640100000000900461ffff165b6018546201000090046001600160a01b031630148015613bff575046606114155b15613c0957506111945b80600003613c1a5784915050610f02565b6000612710613c2983886144fb565b613c3391906144d9565b90508015613ca0573060009081526020819052604081208054839290613c5a90849061455c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61326f8187614512565b601854610100900460ff1615613d0e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cf6565b613d18828261352d565b158015613d325750600b546001600160a01b038281169116145b15611cfd576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff001916610100179081905562010000900416613daa576018805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016122da565b801515811461194a57600080fd5b60008060408385031215613e0b57600080fd5b8235613e1681613dea565b91506020830135613e2681613dea565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e7057613e70613e31565b604052919050565b600067ffffffffffffffff821115613e9257613e92613e31565b5060051b60200190565b6001600160a01b038116811461194a57600080fd5b600082601f830112613ec257600080fd5b81356020613ed7613ed283613e78565b613e47565b82815260059290921b84018101918181019086841115613ef657600080fd5b8286015b84811015613f1a578035613f0d81613e9c565b8352918301918301613efa565b509695505050505050565b60008060408385031215613f3857600080fd5b823567ffffffffffffffff811115613f4f57600080fd5b613f5b85828601613eb1565b9250506020830135613e2681613dea565b600060208083528351808285015260005b81811015613f9957858101830151858201604001528201613f7d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613fcd57600080fd5b8235613fd881613e9c565b946020939093013593505050565b600060208284031215613ff857600080fd5b813561364c81613e9c565b60008060006060848603121561401857600080fd5b833561402381613e9c565b9250602084013561403381613e9c565b929592945050506040919091013590565b6000806040838503121561405757600080fd5b50508035926020909101359150565b6000806040838503121561407957600080fd5b823567ffffffffffffffff8082111561409157600080fd5b61409d86838701613eb1565b93506020915081850135818111156140b457600080fd5b85019050601f810186136140c757600080fd5b80356140d5613ed282613e78565b81815260059190911b820183019083810190888311156140f457600080fd5b928401925b82841015614112578335825292840192908401906140f9565b80955050505050509250929050565b803561ffff8116811461413357600080fd5b919050565b60008060006060848603121561414d57600080fd5b61415684614121565b925061416460208501614121565b915061417260408501614121565b90509250925092565b6000806040838503121561418e57600080fd5b8235613e1681613e9c565b6000602082840312156141ab57600080fd5b5035919050565b600080600080600060a086880312156141ca57600080fd5b85356141d581613e9c565b945060208601356141e581613e9c565b935060408601356141f581613e9c565b9250606086013561420581613e9c565b9150608086013561421581613e9c565b809150509295509295909350565b6000806040838503121561423657600080fd5b823561424181613e9c565b91506020830135613e2681613e9c565b600080600080600060a0868803121561426957600080fd5b61427286614121565b945061428060208701614121565b935061428e60408701614121565b925061429c60608701614121565b91506142aa60808701614121565b90509295509295909350565b600080600080608085870312156142cc57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526035908201527f43616e6e6f742063616c6c2c20626c61636b6c6973742066756e6374696f6e73604082015274103430bb32903132b2b7103932b737bab731b2b21760591b606082015260800190565b600081518084526020808501945080840160005b838110156143a15781516001600160a01b03168752958201959082019060010161437c565b509495945050505050565b6040815260006143bf6040830185614368565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614421578160001904821115614407576144076143d0565b8085161561441457918102915b93841c93908002906143eb565b509250929050565b60008261443857506001610e50565b8161444557506000610e50565b816001811461445b576002811461446557614481565b6001915050610e50565b60ff841115614476576144766143d0565b50506001821b610e50565b5060208310610133831016604e8410600b84101617156144a4575081810a610e50565b6144ae83836143e6565b80600019048211156144c2576144c26143d0565b029392505050565b600061364c60ff841683614429565b6000826144f657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e5057610e506143d0565b81810381811115610e5057610e506143d0565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614552576145526143d0565b6001019392505050565b80820180821115610e5057610e506143d0565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600080604083850312156145df57600080fd5b82516145ea81613e9c565b6020840151909250613e2681613e9c565b6000806040838503121561460e57600080fd5b505080516020909101519092909150565b60006020828403121561463157600080fd5b5051919050565b60006020828403121561464a57600080fd5b815161364c81613dea565b60006020828403121561466757600080fd5b815161364c81613e9c565b61ffff81811683821601908082111561468d5761468d6143d0565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061470160a0830186614368565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a7d0237d6efd6be9c0a8ad5447b18c23acc85b6aefc1b418f7354d59731e85ec64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103d25760003560e01c8063590ffdce116101fd578063ab558e4d11610118578063eafb5a3c116100ab578063f94aa1b41161007a578063f94aa1b414610bd5578063fb78680d14610c48578063fdb78c0e14610c68578063fe575a8714610c87578063feadde9c14610ca757600080fd5b8063eafb5a3c14610b60578063ee5d9c2d14610b80578063eec2744e14610b95578063f08f43a214610bb557600080fd5b8063bfc2fc35116100e7578063bfc2fc3514610a4f578063c6a276c214610a6f578063cf84770614610a8f578063dd62ed3e14610b1a57600080fd5b8063ab558e4d14610a15578063b1b08f7114610663578063b3d514fb14610663578063b7df8b3614610a3557600080fd5b806378648edf116101905780638a63bd9b1161015f5780638a63bd9b1461099d5780638a8c523c146109b257806395d89b41146109c7578063a9059cbb146109f557600080fd5b806378648edf1461092557806380c581d11461093a578063825287911461095a578063893d20e81461097a57600080fd5b80635f189361116101cc5780635f189361146108c65780636ebd0078146108db57806370a08231146108f0578063715018a61461091057600080fd5b8063590ffdce146108375780635a6f0918146108575780635c24b0741461086d5780635cce86cd1461088d57600080fd5b80632b112e49116102ed5780633f3cf56c116102805780634e718e481161024f5780634e718e481461079f5780634fb2e45d146107bf5780634fbee193146107df57806350a8e0161461081857600080fd5b80633f3cf56c14610725578063452ed4f1146107455780634ada218b146107655780634bbb93eb1461077f57600080fd5b806332cde664116102bc57806332cde664146106ab57806333251a0b146106cb57806336fddb04146106eb5780633dc599ff1461070b57600080fd5b80632b112e491461064e5780632b28fc7a146106635780632e8fa82114610679578063313ce5671461068f57600080fd5b8063095ea7b31161036557806323b872dd1161033457806323b872dd146105d857806326003957146105f85780632610eaca14610618578063285777511461063857600080fd5b8063095ea7b3146105555780630dcbcf1c146105755780630fa604e4146105ae57806318160ddd146105c357600080fd5b8063069d955f116103a1578063069d955f1461047757806306fdde03146104cd5780630758d9241461050657806307dd79e01461052b57600080fd5b806303fd2a45146103de5780630445b66714610411578063044df7261461043557806305bbedb61461045757600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f461dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041d57600080fd5b5061042760125481565b604051908152602001610408565b34801561044157600080fd5b50610455610450366004613df8565b610cc7565b005b34801561046357600080fd5b50610455610472366004613f25565b610d70565b34801561048357600080fd5b506008546104a89061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610408565b3480156104d957600080fd5b5060408051808201909152600781526630785363616e7360c81b60208201525b6040516104089190613f6c565b34801561051257600080fd5b50600a546103f49061010090046001600160a01b031681565b34801561053757600080fd5b50600a546105459060ff1681565b6040519015158152602001610408565b34801561056157600080fd5b50610545610570366004613fba565b610e3f565b34801561058157600080fd5b50610545610590366004613fe6565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105ba57600080fd5b50610427610e56565b3480156105cf57600080fd5b50610427610e76565b3480156105e457600080fd5b506105456105f3366004614003565b610e92565b34801561060457600080fd5b50610455610613366004614044565b610f0a565b34801561062457600080fd5b50610455610633366004614066565b61102d565b34801561064457600080fd5b5061042760155481565b34801561065a57600080fd5b506104276111af565b34801561066f57600080fd5b50610427610bb881565b34801561068557600080fd5b5061042760135481565b34801561069b57600080fd5b5060405160128152602001610408565b3480156106b757600080fd5b506104556106c6366004614138565b6111f4565b3480156106d757600080fd5b506104556106e6366004613fe6565b611323565b3480156106f757600080fd5b5061045561070636600461417b565b6113bc565b34801561071757600080fd5b50601a546105459060ff1681565b34801561073157600080fd5b50610455610740366004614044565b611416565b34801561075157600080fd5b50600b546103f4906001600160a01b031681565b34801561077157600080fd5b506018546105459060ff1681565b34801561078b57600080fd5b5061042761079a366004614199565b611552565b3480156107ab57600080fd5b506104556107ba366004614199565b611584565b3480156107cb57600080fd5b506104556107da366004613fe6565b611602565b3480156107eb57600080fd5b506105456107fa366004613fe6565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082457600080fd5b5060185461054590610100900460ff1681565b34801561084357600080fd5b5061045561085236600461417b565b611747565b34801561086357600080fd5b5061042760195481565b34801561087957600080fd5b50610455610888366004613fe6565b6117a1565b34801561089957600080fd5b506105456108a8366004613fe6565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d257600080fd5b5061045561194d565b3480156108e757600080fd5b506104276119d3565b3480156108fc57600080fd5b5061042761090b366004613fe6565b6119ee565b34801561091c57600080fd5b50610455611a09565b34801561093157600080fd5b50610455611b11565b34801561094657600080fd5b5061045561095536600461417b565b611b4f565b34801561096657600080fd5b506104556109753660046141b2565b611d01565b34801561098657600080fd5b50601a5461010090046001600160a01b03166103f4565b3480156109a957600080fd5b50610545611e36565b3480156109be57600080fd5b50610455611e8d565b3480156109d357600080fd5b506040805180820190915260058152645343414e5360d81b60208201526104f9565b348015610a0157600080fd5b50610545610a10366004613fba565b6120bc565b348015610a2157600080fd5b50610455610a30366004613fe6565b6120d3565b348015610a4157600080fd5b506014546105459060ff1681565b348015610a5b57600080fd5b50610455610a6a366004613df8565b612258565b348015610a7b57600080fd5b50610455610a8a366004613fe6565b6122e6565b348015610a9b57600080fd5b50600954610add9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610408565b348015610b2657600080fd5b50610427610b35366004614223565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b6c57600080fd5b50610455610b7b366004613fe6565b61234e565b348015610b8c57600080fd5b50610455612729565b348015610ba157600080fd5b50610455610bb036600461417b565b6127f0565b348015610bc157600080fd5b50610455610bd0366004614251565b612883565b348015610be157600080fd5b50600c54600d54600e54600f54601054610c0e946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610408565b348015610c5457600080fd5b50610455610c633660046142b6565b6129ea565b348015610c7457600080fd5b5060115461054590610100900460ff1681565b348015610c9357600080fd5b50610545610ca2366004613fe6565b612c02565b348015610cb357600080fd5b50610455610cc236600461417b565b612c77565b601a5461010090046001600160a01b03163314610cff5760405162461bcd60e51b8152600401610cf6906142e8565b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d5457600080fd5b505af1158015610d68573d6000803e3d6000fd5b505050505050565b601a5461010090046001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610cf6906142e8565b606482511115610de55760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610cf6565b601a5460ff1615610e085760405162461bcd60e51b8152600401610cf690614313565b6018546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610d3a90859085906004016143ac565b6000610e4c338484612cd1565b5060015b92915050565b6000610e646012600a6144ca565b601754610e7191906144d9565b905090565b6000610e846012600a6144ca565b610e71906305f5e1006144fb565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ef7576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ef1908490614512565b90915550505b610f02848484612dca565b949350505050565b601a5461010090046001600160a01b03163314610f395760405162461bcd60e51b8152600401610cf6906142e8565b6064610f476012600a6144ca565b610f55906305f5e1006144fb565b610f5f91906144d9565b8183610f6d6012600a6144ca565b610f7b906305f5e1006144fb565b610f8591906144fb565b610f8f91906144d9565b1015610ff65760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610cf6565b80826110046012600a6144ca565b611012906305f5e1006144fb565b61101c91906144fb565b61102691906144d9565b6017555050565b601a5461010090046001600160a01b0316331461105c5760405162461bcd60e51b8152600401610cf6906142e8565b80518251146110a55760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610cf6565b60005b82518161ffff1610156111aa576110c16012600a6144ca565b828261ffff16815181106110d7576110d7614525565b60200260200101516110e991906144fb565b6110f2336119ee565b10156111355760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610cf6565b61119733848361ffff168151811061114f5761114f614525565b60200260200101516012600a61116591906144ca565b858561ffff168151811061117b5761117b614525565b602002602001015161118d91906144fb565b600080600161327a565b50806111a28161453b565b9150506110a8565b505050565b60006111bb60006119ee565b6111c661dead6119ee565b6111d0919061455c565b6111dc6012600a6144ca565b6111ea906305f5e1006144fb565b610e719190614512565b601a5461010090046001600160a01b031633146112235760405162461bcd60e51b8152600401610cf6906142e8565b600a5460ff161561126a5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610cf6565b610bb88361ffff16111580156112865750610bb88261ffff1611155b80156112985750610bb88161ffff1611155b6112e45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cf6565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a5461010090046001600160a01b031633146113525760405162461bcd60e51b8152600401610cf6906142e8565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113a157600080fd5b505af11580156113b5573d6000803e3d6000fd5b5050505050565b601a5461010090046001600160a01b031633146113eb5760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a5461010090046001600160a01b031633146114455760405162461bcd60e51b8152600401610cf6906142e8565b6103e86114546012600a6144ca565b611462906305f5e1006144fb565b61146d9060056144fb565b61147791906144d9565b81836114856012600a6144ca565b611493906305f5e1006144fb565b61149d91906144fb565b6114a791906144d9565b101561151b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610cf6565b80826115296012600a6144ca565b611537906305f5e1006144fb565b61154191906144fb565b61154b91906144d9565b6016555050565b600b54600090612710908390611570906001600160a01b03166119ee565b61157a91906144fb565b610e5091906144d9565b601a5461010090046001600160a01b031633146115b35760405162461bcd60e51b8152600401610cf6906142e8565b60968111156115fd5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610cf6565b601555565b601a5461010090046001600160a01b031633146116315760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b0381166116575760405162461bcd60e51b8152600401610cf69061456f565b61deac196001600160a01b038216016116825760405162461bcd60e51b8152600401610cf69061456f565b601a5461169e9061010090046001600160a01b03166000611747565b6116a9816001611747565b601a546000906116c69061010090046001600160a01b03166119ee565b11156116ed57601a546116eb9061010090046001600160a01b03168261118d826119ee565b505b601a80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a5461010090046001600160a01b031633146117765760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a5461010090046001600160a01b031633146117d05760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff16156117e057600080fd5b306001600160a01b038216036118295760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610cf6565b6018805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156118af575060408051601f3d908101601f191682019092526118ac918101906145cc565b60015b6118b857600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601a54925461192b9382900483169291900416600019612cd1565b600a546111aa90309061010090046001600160a01b0316600019612cd1565b50565b601a5461010090046001600160a01b0316331461197c5760405162461bcd60e51b8152600401610cf6906142e8565b601a5460ff16156119c45760405162461bcd60e51b815260206004820152601260248201527120b63932b0b23c903932b737bab731b2b21760711b6044820152606401610cf6565b601a805460ff19166001179055565b60006119e16012600a6144ca565b601654610e7191906144d9565b6001600160a01b031660009081526020819052604090205490565b601a5461010090046001600160a01b03163314611a385760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff16611aa25760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610cf6565b601a54611abe9061010090046001600160a01b03166000611747565b601a8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a5461010090046001600160a01b03163314611b405760405162461bcd60e51b8152600401610cf6906142e8565b600a805460ff19166001179055565b601a5461010090046001600160a01b03163314611b7e5760405162461bcd60e51b8152600401610cf6906142e8565b80611bdc576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610d3a565b60025415611c35576203f48060025442611bf69190614512565b11611c355760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610cf6565b6001600160a01b03821660009081526001602052604090205460ff1615611c9e5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cf6565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610d3a565b5050565b601a5461010090046001600160a01b03163314611d305760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03851615801590611d5057506001600160a01b03831615155b8015611d6457506001600160a01b03841615155b8015611d7857506001600160a01b03821615155b8015611d8c57506001600160a01b03811615155b611dd85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cf6565b600c80546001600160a01b03199081166001600160a01b0397881617909155600e8054821694871694909417909355600d8054841694861694909417909355600f805483169185169190911790556010805490911691909216179055565b601a5460009061010090046001600160a01b03163314611e685760405162461bcd60e51b8152600401610cf6906142e8565b600a54611e8790309061010090046001600160a01b0316600019612cd1565b50600190565b601a5461010090046001600160a01b03163314611ebc5760405162461bcd60e51b8152600401610cf6906142e8565b60185460ff1615611f0f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cf6565b601854610100900460ff16611f665760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cf6565b6018546201000090046001600160a01b0316611f96576018805462010000600160b01b0319163062010000021790555b601854600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561200857600080fd5b505af1925050508015612019575060015b50601854600b546001600160a01b03620100009092048216916325a71cae9161204291166119ee565b6040518263ffffffff1660e01b815260040161206091815260200190565b60408051808303816000875af192505050801561209a575060408051601f3d908101601f19168201909252612097918101906145fb565b60015b156120a9576012919091556013555b6018805460ff1916600117905542601955565b60006120c9338484612dca565b5060019392505050565b601a5461010090046001600160a01b031633146121025760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff161561216a57306001600160a01b0382160361216a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cf6565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e9919061461f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190614638565b601a5461010090046001600160a01b031633146122875760405162461bcd60e51b8152600401610cf6906142e8565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a5461010090046001600160a01b031633146123155760405162461bcd60e51b8152600401610cf6906142e8565b6018546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611387565b601a5461010090046001600160a01b0316331461237d5760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff16156123d55760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cf6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614655565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190614655565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251e9190614655565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166126b457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad9190614655565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261e9190614655565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614655565b600b80546001600160a01b0319166001600160a01b03929092169190911790556126d0565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff1916909117905591546111aa923092910416600019612cd1565b601a5461010090046001600160a01b031633146127585760405162461bcd60e51b8152600401610cf6906142e8565b601854610100900460ff16156127b05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cf6565b601a546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561194a573d6000803e3d6000fd5b601a5461010090046001600160a01b0316331461281f5760405162461bcd60e51b8152600401610cf6906142e8565b601a5460ff16156128425760405162461bcd60e51b8152600401610cf690614313565b6018546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d3a565b601a5461010090046001600160a01b031633146128b25760405162461bcd60e51b8152600401610cf6906142e8565b6009805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff0000000019166401000000008683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b918416919091021790558082846129268789614672565b6129309190614672565b61293a9190614672565b6129449190614672565b6009805461ffff60501b1916600160501b61ffff938416021790556008546000916129789162010000810482169116614672565b60095461ffff9182169250600160501b900416811015610d685760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cf6565b601a5461010090046001600160a01b03163314612a195760405162461bcd60e51b8152600401610cf6906142e8565b8284612a276012600a6144ca565b612a35906305f5e1006144fb565b612a3f91906144fb565b612a4991906144d9565b601290815581908390612a5d90600a6144ca565b612a6b906305f5e1006144fb565b612a7591906144fb565b612a7f91906144d9565b60138190556012541115612adf5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cf6565b600b5461271090612af8906001600160a01b03166119ee565b612b039060966144fb565b612b0d91906144d9565b6013541115612b6a5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cf6565b620f4240612b7a6012600a6144ca565b612b88906305f5e1006144fb565b612b9291906144d9565b6013541015612bb35760405162461bcd60e51b8152600401610cf690614694565b620f4240612bc36012600a6144ca565b612bd1906305f5e1006144fb565b612bdb91906144d9565b6012541015612bfc5760405162461bcd60e51b8152600401610cf690614694565b50505050565b60185460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190614638565b601a5461010090046001600160a01b03163314612ca65760405162461bcd60e51b8152600401610cf6906142e8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612d1d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610cf6565b6001600160a01b038216612d695760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610cf6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e305760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf6565b6001600160a01b038316612e925760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf6565b60008211612ef45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cf6565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612f225760019250612f50565b6001600160a01b03861660009081526001602052604090205460ff1615612f4c5760019150612f50565b5060015b612f5a878761352d565b156131d15760185460ff1661305b5780612fb65760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cf6565b6001600160a01b03871660009081526005602052604090205460ff16158015612ff857506001600160a01b03861660009081526005602052604090205460ff16155b1561305b5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cf6565b82806130645750815b15613113576001600160a01b03871660009081526007602052604090205460ff161580156130ab57506001600160a01b03861660009081526007602052604090205460ff16155b15613113576016548511156131135760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610cf6565b600a546001600160a01b038781166101009092041614801590613134575081155b156131d1576001600160a01b03861660009081526007602052604090205460ff166131d15760175485613166886119ee565b613170919061455c565b11156131d15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610cf6565b81156132615760115460ff1661326157601154610100900460ff16156132615760006131fc306119ee565b9050601254811061325f5760135460145460ff161561324957601554600b546127109190613232906001600160a01b03166119ee565b61323c91906144fb565b61324691906144d9565b90505b808210613254578091505b61325d82613653565b505b505b61326f87878786868661327a565b979650505050505050565b6000613286878761352d565b156133205760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613309575060408051601f3d908101601f1916820190925261330691810190614638565b60015b61331257600080fd5b90508061331e57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061336257506001600160a01b03871660009081526006602052604090205460ff165b1561336b575060005b6001600160a01b03881660009081526020819052604081208054889290613393908490614512565b9091555060009050816133a657866133b2565b6133b289888888613b9e565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133e8919061455c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161343491815260200190565b60405180910390a3601854610100900460ff1661351e576134558989613caa565b601854610100900460ff161580156134725750613472898961352d565b801561349757506001600160a01b03891660009081526005602052604090205460ff16155b80156134bc57506001600160a01b03881660009081526005602052604090205460ff16155b80156134c6575083155b1561351e5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cf6565b50600198975050505050505050565b601a546000906001600160a01b0384811661010090920416148015906135665750601a546001600160a01b038381166101009092041614155b80156135825750601a5461010090046001600160a01b03163214155b80156135a757506001600160a01b03821660009081526004602052604090205460ff16155b80156135cc57506001600160a01b03831660009081526004602052604090205460ff16155b80156135e357506001600160a01b03821661dead14155b80156135f757506001600160a01b03821615155b801561360c57506001600160a01b0383163014155b801561362c57506018546001600160a01b03848116620100009092041614155b801561364c57506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff191660011790556040805160c08101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526000036136cd5750613b91565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461373057306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061376557613765614525565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fc9190614655565b8160018151811061380f5761380f614525565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061385c9086906000908690309042906004016146e2565b600060405180830381600087803b15801561387657600080fd5b505af1925050508015613887575060015b613892575050613b91565b60004790506000808460a0015161ffff16856020015161ffff16846138b791906144fb565b6138c191906144d9565b905060008560a0015161ffff16866060015161ffff16856138e291906144fb565b6138ec91906144d9565b905060008660a0015161ffff16876040015161ffff168661390d91906144fb565b61391791906144d9565b905060008760a0015161ffff16886080015161ffff168761393891906144fb565b61394291906144d9565b905060008183613952868861455c565b61395c919061455c565b613966919061455c565b6139709088614512565b895190915061ffff16156139db57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146139d0576040519150601f19603f3d011682016040523d82523d6000602084013e6139d5565b606091505b50909650505b602089015161ffff1615613a4657600d546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613a3b576040519150601f19603f3d011682016040523d82523d6000602084013e613a40565b606091505b50909650505b606089015161ffff1615613ab157600f546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613aa6576040519150601f19603f3d011682016040523d82523d6000602084013e613aab565b606091505b50909650505b604089015161ffff1615613b1c57600e546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613b11576040519150601f19603f3d011682016040523d82523d6000602084013e613b16565b606091505b50909650505b608089015161ffff1615613b87576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613b7c576040519150601f19603f3d011682016040523d82523d6000602084013e613b81565b606091505b50909650505b5050505050505050505b506011805460ff19169055565b6000808315613bb4575060085461ffff16613bde565b8215613bcd575060085462010000900461ffff16613bde565b50600854640100000000900461ffff165b6018546201000090046001600160a01b031630148015613bff575046606114155b15613c0957506111945b80600003613c1a5784915050610f02565b6000612710613c2983886144fb565b613c3391906144d9565b90508015613ca0573060009081526020819052604081208054839290613c5a90849061455c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61326f8187614512565b601854610100900460ff1615613d0e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cf6565b613d18828261352d565b158015613d325750600b546001600160a01b038281169116145b15611cfd576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff001916610100179081905562010000900416613daa576018805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016122da565b801515811461194a57600080fd5b60008060408385031215613e0b57600080fd5b8235613e1681613dea565b91506020830135613e2681613dea565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e7057613e70613e31565b604052919050565b600067ffffffffffffffff821115613e9257613e92613e31565b5060051b60200190565b6001600160a01b038116811461194a57600080fd5b600082601f830112613ec257600080fd5b81356020613ed7613ed283613e78565b613e47565b82815260059290921b84018101918181019086841115613ef657600080fd5b8286015b84811015613f1a578035613f0d81613e9c565b8352918301918301613efa565b509695505050505050565b60008060408385031215613f3857600080fd5b823567ffffffffffffffff811115613f4f57600080fd5b613f5b85828601613eb1565b9250506020830135613e2681613dea565b600060208083528351808285015260005b81811015613f9957858101830151858201604001528201613f7d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613fcd57600080fd5b8235613fd881613e9c565b946020939093013593505050565b600060208284031215613ff857600080fd5b813561364c81613e9c565b60008060006060848603121561401857600080fd5b833561402381613e9c565b9250602084013561403381613e9c565b929592945050506040919091013590565b6000806040838503121561405757600080fd5b50508035926020909101359150565b6000806040838503121561407957600080fd5b823567ffffffffffffffff8082111561409157600080fd5b61409d86838701613eb1565b93506020915081850135818111156140b457600080fd5b85019050601f810186136140c757600080fd5b80356140d5613ed282613e78565b81815260059190911b820183019083810190888311156140f457600080fd5b928401925b82841015614112578335825292840192908401906140f9565b80955050505050509250929050565b803561ffff8116811461413357600080fd5b919050565b60008060006060848603121561414d57600080fd5b61415684614121565b925061416460208501614121565b915061417260408501614121565b90509250925092565b6000806040838503121561418e57600080fd5b8235613e1681613e9c565b6000602082840312156141ab57600080fd5b5035919050565b600080600080600060a086880312156141ca57600080fd5b85356141d581613e9c565b945060208601356141e581613e9c565b935060408601356141f581613e9c565b9250606086013561420581613e9c565b9150608086013561421581613e9c565b809150509295509295909350565b6000806040838503121561423657600080fd5b823561424181613e9c565b91506020830135613e2681613e9c565b600080600080600060a0868803121561426957600080fd5b61427286614121565b945061428060208701614121565b935061428e60408701614121565b925061429c60608701614121565b91506142aa60808701614121565b90509295509295909350565b600080600080608085870312156142cc57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526035908201527f43616e6e6f742063616c6c2c20626c61636b6c6973742066756e6374696f6e73604082015274103430bb32903132b2b7103932b737bab731b2b21760591b606082015260800190565b600081518084526020808501945080840160005b838110156143a15781516001600160a01b03168752958201959082019060010161437c565b509495945050505050565b6040815260006143bf6040830185614368565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115614421578160001904821115614407576144076143d0565b8085161561441457918102915b93841c93908002906143eb565b509250929050565b60008261443857506001610e50565b8161444557506000610e50565b816001811461445b576002811461446557614481565b6001915050610e50565b60ff841115614476576144766143d0565b50506001821b610e50565b5060208310610133831016604e8410600b84101617156144a4575081810a610e50565b6144ae83836143e6565b80600019048211156144c2576144c26143d0565b029392505050565b600061364c60ff841683614429565b6000826144f657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e5057610e506143d0565b81810381811115610e5057610e506143d0565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614552576145526143d0565b6001019392505050565b80820180821115610e5057610e506143d0565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600080604083850312156145df57600080fd5b82516145ea81613e9c565b6020840151909250613e2681613e9c565b6000806040838503121561460e57600080fd5b505080516020909101519092909150565b60006020828403121561463157600080fd5b5051919050565b60006020828403121561464a57600080fd5b815161364c81613dea565b60006020828403121561466757600080fd5b815161364c81613e9c565b61ffff81811683821601908082111561468d5761468d6143d0565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061470160a0830186614368565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a7d0237d6efd6be9c0a8ad5447b18c23acc85b6aefc1b418f7354d59731e85ec64736f6c63430008130033

Deployed Bytecode Sourcemap

4392:25111:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6060:73;;;;;;;;;;;;6091:42;6060:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6060:73:0;;;;;;;;6845:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6845:28:0;222:177:1;16401:153:0;;;;;;;;;;-1:-1:-1;16401:153:0;;;;;:::i;:::-;;:::i;:::-;;15427:437;;;;;;;;;;-1:-1:-1;15427:437:0;;;;;:::i;:::-;;:::i;5462:107::-;;;;;;;;;;-1:-1:-1;5462:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;5462:107:0;2868:365:1;10573:80:0;;;;;;;;;;-1:-1:-1;10645:5:0;;;;;;;;;;;;-1:-1:-1;;;10645:5:0;;;;10573:80;;;;;;;:::i;5999:26::-;;;;;;;;;;-1:-1:-1;5999:26:0;;;;;;;-1:-1:-1;;;;;5999:26:0;;;5966;;;;;;;;;;-1:-1:-1;5966:26:0;;;;;;;;;;;4181:14:1;;4174:22;4156:41;;4144:2;4129:18;5966:26:0;4016:187:1;11181:161:0;;;;;;;;;;-1:-1:-1;11181:161:0;;;;;:::i;:::-;;:::i;14555:140::-;;;;;;;;;;-1:-1:-1;14555:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14653:34:0;14629:4;14653:34;;;:25;:34;;;;;;;;;14555:140;19252:114;;;;;;;;;;;;;:::i;10308:83::-;;;;;;;;;;;;;:::i;11851:306::-;;;;;;;;;;-1:-1:-1;11851:306:0;;;;;:::i;:::-;;:::i;18864:264::-;;;;;;;;;;-1:-1:-1;18864:264:0;;;;;:::i;:::-;;:::i;27215:447::-;;;;;;;;;;-1:-1:-1;27215:447:0;;;;;:::i;:::-;;:::i;6953:33::-;;;;;;;;;;;;;;;;14859:141;;;;;;;;;;;;;:::i;5763:42::-;;;;;;;;;;;;5801:4;5763:42;;6880:25;;;;;;;;;;;;;;;;10397:80;;;;;;;;;;-1:-1:-1;10397:80:0;;5082:2;6779:36:1;;6767:2;6752:18;10397:80:0;6637:184:1;16913:453:0;;;;;;;;;;-1:-1:-1;16913:453:0;;;;;:::i;:::-;;:::i;16283:110::-;;;;;;;;;;-1:-1:-1;16283:110:0;;;;;:::i;:::-;;:::i;14130:140::-;;;;;;;;;;-1:-1:-1;14130:140:0;;;;;:::i;:::-;;:::i;7260:38::-;;;;;;;;;;-1:-1:-1;7260:38:0;;;;;;;;18583:273;;;;;;;;;;-1:-1:-1;18583:273:0;;;;;:::i;:::-;;:::i;6032:21::-;;;;;;;;;;-1:-1:-1;6032:21:0;;;;-1:-1:-1;;;;;6032:21:0;;;7113:34;;;;;;;;;;-1:-1:-1;7113:34:0;;;;;;;;19374:189;;;;;;;;;;-1:-1:-1;19374:189:0;;;;;:::i;:::-;;:::i;20278:217::-;;;;;;;;;;-1:-1:-1;20278:217:0;;;;;:::i;:::-;;:::i;8946:654::-;;;;;;;;;;-1:-1:-1;8946:654:0;;;;;:::i;:::-;;:::i;14278:127::-;;;;;;;;;;-1:-1:-1;14278:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14369:28:0;14345:4;14369:28;;;:19;:28;;;;;;;;;14278:127;7154:36;;;;;;;;;;-1:-1:-1;7154:36:0;;;;;;;;;;;14413:134;;;;;;;;;;-1:-1:-1;14413:134:0;;;;;:::i;:::-;;:::i;7227:26::-;;;;;;;;;;;;;;;;13425:557;;;;;;;;;;-1:-1:-1;13425:557:0;;;;;:::i;:::-;;:::i;13990:132::-;;;;;;;;;;-1:-1:-1;13990:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14084:30:0;14060:4;14084:30;;;:21;:30;;;;;;;;;13990:132;16752:153;;;;;;;;;;;;;:::i;19136:108::-;;;;;;;;;;;;;:::i;10883:117::-;;;;;;;;;;-1:-1:-1;10883:117:0;;;;;:::i;:::-;;:::i;9608:310::-;;;;;;;;;;;;;:::i;16562:182::-;;;;;;;;;;;;;:::i;12853:564::-;;;;;;;;;;-1:-1:-1;12853:564:0;;;;;:::i;:::-;;:::i;17954:621::-;;;;;;;;;;-1:-1:-1;17954:621:0;;;;;:::i;:::-;;:::i;10659:79::-;;;;;;;;;;-1:-1:-1;10729:6:0;;;;;-1:-1:-1;;;;;10729:6:0;10659:79;;11668:175;;;;;;;;;;;;;:::i;26018:695::-;;;;;;;;;;;;;:::i;10483:84::-;;;;;;;;;;-1:-1:-1;10557:7:0;;;;;;;;;;;;-1:-1:-1;;;10557:7:0;;;;10483:84;;11008:165;;;;;;;;;;-1:-1:-1;11008:165:0;;;;;:::i;:::-;;:::i;26911:296::-;;;;;;;;;;-1:-1:-1;26911:296:0;;;;;:::i;:::-;;:::i;6912:34::-;;;;;;;;;;-1:-1:-1;6912:34:0;;;;;;;;20503:263;;;;;;;;;;-1:-1:-1;20503:263:0;;;;;:::i;:::-;;:::i;16009:202::-;;;;;;;;;;-1:-1:-1;16009:202:0;;;;;:::i;:::-;;:::i;5578:176::-;;;;;;;;;;-1:-1:-1;5578:176:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5578:176:0;;;;;-1:-1:-1;;;5578:176:0;;;;;-1:-1:-1;;;5578:176:0;;;;;;;;;9038:6:1;9071:15;;;9053:34;;9123:15;;;9118:2;9103:18;;9096:43;9175:15;;;9155:18;;;9148:43;;;;9227:15;;;9222:2;9207:18;;9200:43;9280:15;;9274:3;9259:19;;9252:44;9333:15;;;9327:3;9312:19;;9305:44;9015:3;9000:19;5578:176:0;8753:602:1;10744:133:0;;;;;;;;;;-1:-1:-1;10744:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10846:19:0;;;10828:7;10846:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10744:133;12165:680;;;;;;;;;;-1:-1:-1;12165:680:0;;;;;:::i;:::-;;:::i;26721:182::-;;;;;;;;;;;;;:::i;15072:347::-;;;;;;;;;;-1:-1:-1;15072:347:0;;;;;:::i;:::-;;:::i;17374:572::-;;;;;;;;;;-1:-1:-1;17374:572:0;;;;;:::i;:::-;;:::i;6353:415::-;;;;;;;;;;-1:-1:-1;6353:415:0;;;;;;;;;;;;-1:-1:-1;;;;;6353:415:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10627:15:1;;;10609:34;;10679:15;;;10674:2;10659:18;;10652:43;10731:15;;;10711:18;;;10704:43;;;;10783:15;;10778:2;10763:18;;10756:43;10836:15;;;10830:3;10815:19;;10808:44;10558:3;10543:19;6353:415:0;10232:626:1;19571:699:0;;;;;;;;;;-1:-1:-1;19571:699:0;;;;;:::i;:::-;;:::i;6799:39::-;;;;;;;;;;-1:-1:-1;6799:39:0;;;;;;;;;;;15872:129;;;;;;;;;;-1:-1:-1;15872:129:0;;;;;:::i;:::-;;:::i;14703:148::-;;;;;;;;;;-1:-1:-1;14703:148:0;;;;;:::i;:::-;;:::i;16401:153::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;;;;;;;;;16496:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;16496:50:0;;11786:14:1;;11779:22;16496:50:0::1;::::0;::::1;11761:41:1::0;11845:14;;11838:22;11818:18;;;11811:50;16496:11:0;;;::::1;-1:-1:-1::0;;;;;16496:11:0::1;::::0;:26:::1;::::0;11734:18:1;;16496:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16401:153:::0;;:::o;15427:437::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;15666:3:::1;15647:8;:15;:22;;15639:52;;;::::0;-1:-1:-1;;;15639:52:0;;12074:2:1;15639:52:0::1;::::0;::::1;12056:21:1::0;12113:2;12093:18;;;12086:30;-1:-1:-1;;;12132:18:1;;;12125:47;12189:18;;15639:52:0::1;11872:341:1::0;15639:52:0::1;15711:18;::::0;::::1;;15710:19;15702:85;;;;-1:-1:-1::0;;;15702:85:0::1;;;;;;;:::i;:::-;15798:11;::::0;:58:::1;::::0;-1:-1:-1;;;15798:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;15798:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;15838:8;;15848:7;;15798:58:::1;;;:::i;11181:161::-:0;11258:4;11275:37;11284:10;11296:7;11305:6;11275:8;:37::i;:::-;-1:-1:-1;11330:4:0;11181:161;;;;;:::o;19252:114::-;19299:7;19344:13;5082:2;19344;:13;:::i;:::-;19326:14;;:32;;;;:::i;:::-;19319:39;;19252:114;:::o;10308:83::-;10363:7;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;;4933:11;5126:30;:::i;11851:306::-;-1:-1:-1;;;;;11972:19:0;;11951:4;11972:19;;;:11;:19;;;;;;;;11992:10;11972:31;;;;;;;;-1:-1:-1;;11972:52:0;11968:126;;-1:-1:-1;;;;;12041:19:0;;;;;;:11;:19;;;;;;;;12061:10;12041:31;;;;;;;:41;;12076:6;;12041:19;:41;;12076:6;;12041:41;:::i;:::-;;;;-1:-1:-1;;11968:126:0;12113:36;12123:6;12131:9;12142:6;12113:9;:36::i;:::-;12106:43;11851:306;-1:-1:-1;;;;11851:306:0:o;18864:264::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;19006:3:::1;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;18996:13;;;;:::i;:::-;18984:7:::0;18973;5143:13:::1;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;18963:17;;;;:::i;:::-;18962:29;;;;:::i;:::-;:48;;18954:109;;;::::0;-1:-1:-1;;;18954:109:0;;15698:2:1;18954:109:0::1;::::0;::::1;15680:21:1::0;15737:2;15717:18;;;15710:30;15776:34;15756:18;;;15749:62;-1:-1:-1;;;15827:18:1;;;15820:46;15883:19;;18954:109:0::1;15496:412:1::0;18954:109:0::1;19113:7:::0;19102;5143:13:::1;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;19092:17;;;;:::i;:::-;19091:29;;;;:::i;:::-;19074:14;:46:::0;-1:-1:-1;;18864:264:0:o;27215:447::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;27350:7:::1;:14;27331:8;:15;:33;27323:67;;;::::0;-1:-1:-1;;;27323:67:0;;16115:2:1;27323:67:0::1;::::0;::::1;16097:21:1::0;16154:2;16134:18;;;16127:30;-1:-1:-1;;;16173:18:1;;;16166:51;16234:18;;27323:67:0::1;15913:345:1::0;27323:67:0::1;27406:8;27401:254;27424:8;:15;27420:1;:19;;;27401:254;;;27505:13;5082:2;27505;:13;:::i;:::-;27494:7;27502:1;27494:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27469:21;27479:10;27469:9;:21::i;:::-;:49;;27461:80;;;::::0;-1:-1:-1;;;27461:80:0;;16597:2:1;27461:80:0::1;::::0;::::1;16579:21:1::0;16636:2;16616:18;;;16609:30;-1:-1:-1;;;16655:18:1;;;16648:48;16713:18;;27461:80:0::1;16395:342:1::0;27461:80:0::1;27556:87;27573:10;27585:8;27594:1;27585:11;;;;;;;;;;:::i;:::-;;;;;;;5082:2;27609;:13;;;;:::i;:::-;27598:7;27606:1;27598:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27624:5;27631::::0;27638:4:::1;27556:16;:87::i;:::-;-1:-1:-1::0;27441:3:0;::::1;::::0;::::1;:::i;:::-;;;;27401:254;;;;27215:447:::0;;:::o;14859:141::-;14912:7;14969:21;14987:1;14969:9;:21::i;:::-;14951:15;6091:42;14951:9;:15::i;:::-;:39;;;;:::i;:::-;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;;4933:11;5126:30;:::i;:::-;14940:51;;;;:::i;16913:453::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;17021:14:::1;::::0;::::1;;17020:15;17012:45;;;::::0;-1:-1:-1;;;17012:45:0;;17276:2:1;17012:45:0::1;::::0;::::1;17258:21:1::0;17315:2;17295:18;;;17288:30;-1:-1:-1;;;17334:18:1;;;17327:47;17391:18;;17012:45:0::1;17074:341:1::0;17012:45:0::1;5801:4;17076:6;:21;;;;:65;;;;;5851:4;17118:7;:23;;;;17076:65;:117;;;;;5905:4;17162:11;:31;;;;17076:117;17068:170;;;::::0;-1:-1:-1;;;17068:170:0;;17622:2:1;17068:170:0::1;::::0;::::1;17604:21:1::0;17661:2;17641:18;;;17634:30;17700:25;17680:18;;;17673:53;17743:18;;17068:170:0::1;17420:347:1::0;17068:170:0::1;17249:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17285:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17323:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16913:453::o;16283:110::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;16352:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16352:33:0;;-1:-1:-1;;;;;178:32:1;;;16352:33:0::1;::::0;::::1;160:51:1::0;16352:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16352:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16283:110:::0;:::o;14130:140::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14222:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14222:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14130:140::o;18583:273::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;18728:4:::1;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;18714:11;::::0;18724:1:::1;18714:11;:::i;:::-;:18;;;;:::i;:::-;18702:7:::0;18691;5143:13:::1;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;18681:17;;;;:::i;:::-;18680:29;;;;:::i;:::-;:53;;18672:121;;;::::0;-1:-1:-1;;;18672:121:0;;17974:2:1;18672:121:0::1;::::0;::::1;17956:21:1::0;18013:2;17993:18;;;17986:30;18052:34;18032:18;;;18025:62;18123:25;18103:18;;;18096:53;18166:19;;18672:121:0::1;17772:419:1::0;18672:121:0::1;18841:7:::0;18830;5143:13:::1;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;18820:17;;;;:::i;:::-;18819:29;;;;:::i;:::-;18804:12;:44:::0;-1:-1:-1;;18583:273:0:o;19374:189::-;19503:6;;19465:7;;5952:5;;19513:21;;19493:17;;-1:-1:-1;;;;;19503:6:0;19493:9;:17::i;:::-;:41;;;;:::i;:::-;19492:62;;;;:::i;20278:217::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;20408:3:::1;20382:22;:29;;20374:64;;;::::0;-1:-1:-1;;;20374:64:0;;18398:2:1;20374:64:0::1;::::0;::::1;18380:21:1::0;18437:2;18417:18;;;18410:30;-1:-1:-1;;;18456:18:1;;;18449:52;18518:18;;20374:64:0::1;18196:346:1::0;20374:64:0::1;20449:13;:38:::0;20278:217::o;8946:654::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9025:22:0;::::1;9017:96;;;;-1:-1:-1::0;;;9017:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;9132:16:0;::::1;::::0;9124:90:::1;;;;-1:-1:-1::0;;;9124:90:0::1;;;;;;;:::i;:::-;9245:6;::::0;9225:34:::1;::::0;9245:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9245:6:0::1;9253:5;9225:19;:34::i;:::-;9270:35;9290:8;9300:4;9270:19;:35::i;:::-;9340:6;::::0;9350:1:::1;::::0;9330:17:::1;::::0;9340:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9340:6:0::1;9330:9;:17::i;:::-;:21;9326:127;;;9385:6;::::0;9368:73:::1;::::0;9385:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9385:6:0::1;9393:8:::0;9403:17:::1;9385:6:::0;9403:9:::1;:17::i;9368:73::-;;9326:127;9492:6;::::0;;-1:-1:-1;;;;;9509:17:0;;::::1;9492:6;9509:17:::0;;::::1;-1:-1:-1::0;;;;;;9509:17:0;::::1;;::::0;;;9542:40:::1;::::0;9492:6;;;::::1;;::::0;;;9542:40:::1;::::0;9473:16:::1;::::0;9542:40:::1;9006:594;8946:654:::0;:::o;14413:134::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14501:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14501:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14413:134::o;13425:557::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;13500:14:::1;::::0;::::1;;13499:15;13491:24;;;::::0;::::1;;13550:4;-1:-1:-1::0;;;;;13534:21:0;::::1;::::0;13526:48:::1;;;::::0;-1:-1:-1;;;13526:48:0;;19179:2:1;13526:48:0::1;::::0;::::1;19161:21:1::0;19218:2;19198:18;;;19191:30;-1:-1:-1;;;19237:18:1;;;19230:44;19291:18;;13526:48:0::1;18977:338:1::0;13526:48:0::1;13585:11;:31:::0;;-1:-1:-1;;;;;;13585:31:0::1;::::0;-1:-1:-1;;;;;13585:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13631:23:::1;::::0;;-1:-1:-1;;;13631:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13631:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13631:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13631:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13627:348;;13964:8;::::0;::::1;13627:348;13718:9;:29:::0;;-1:-1:-1;;;;;;13718:29:0::1;;-1:-1:-1::0;;;;;13718:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13749:6:::1;:22:::0;;-1:-1:-1;;;;;;13749:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13773:15:0;;;-1:-1:-1;13773:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13773:22:0::1;::::0;;::::1;::::0;;13820:6:::1;::::0;13836:9;;13811:55:::1;::::0;13820:6;;::::1;::::0;::::1;::::0;13836:9;;::::1;;-1:-1:-1::0;;13811:8:0::1;:55::i;:::-;13913:9;::::0;13881:62:::1;::::0;13898:4:::1;::::0;13913:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13913:9:0::1;-1:-1:-1::0;;13881:8:0::1;:62::i;13627:348::-;13425:557:::0;:::o;16752:153::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;16820:18:::1;::::0;::::1;;16819:19;16811:50;;;::::0;-1:-1:-1;;;16811:50:0;;19912:2:1;16811:50:0::1;::::0;::::1;19894:21:1::0;19951:2;19931:18;;;19924:30;-1:-1:-1;;;19970:18:1;;;19963:48;20028:18;;16811:50:0::1;19710:342:1::0;16811:50:0::1;16872:18;:25:::0;;-1:-1:-1;;16872:25:0::1;16893:4;16872:25;::::0;;16752:153::o;19136:108::-;19179:7;19222:13;5082:2;19222;:13;:::i;:::-;19206:12;;:30;;;;:::i;10883:117::-;-1:-1:-1;;;;;10976:16:0;10949:7;10976:16;;;;;;;;;;;;10883:117::o;9608:310::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;9675:14:::1;::::0;::::1;;9667:74;;;::::0;-1:-1:-1;;;9667:74:0;;20259:2:1;9667:74:0::1;::::0;::::1;20241:21:1::0;20298:2;20278:18;;;20271:30;20337:34;20317:18;;;20310:62;-1:-1:-1;;;20388:18:1;;;20381:45;20443:19;;9667:74:0::1;20057:411:1::0;9667:74:0::1;9772:6;::::0;9752:34:::1;::::0;9772:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9772:6:0::1;9780:5;9752:19;:34::i;:::-;9816:6;::::0;;-1:-1:-1;;;;;;9833:19:0;::::1;::::0;;;9868:42:::1;::::0;9816:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;9816:6:0::1;::::0;-1:-1:-1;;9816:6:0;;9868:42:::1;::::0;-1:-1:-1;;9868:42:0::1;9656:262;9608:310::o:0;16562:182::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;16715:14:::1;:21:::0;;-1:-1:-1;;16715:21:0::1;16732:4;16715:21;::::0;;16562:182::o;12853:564::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;12935:7:::1;12930:480;;-1:-1:-1::0;;;;;12959:13:0;;::::1;12975:5;12959:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12959:21:0::1;::::0;;12995:11:::1;::::0;:34;;-1:-1:-1;;;12995:34:0;;::::1;::::0;::::1;20641:51:1::0;;;;20708:18;;;20701:50;;;;12995:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;20614:18:1;;12995:34:0::1;20473:284:1::0;12930:480:0::1;13066:17;::::0;:22;13062:135:::1;;13155:6;13135:17;;13117:15;:35;;;;:::i;:::-;:44;13109:72;;;::::0;-1:-1:-1;;;13109:72:0;;20964:2:1;13109:72:0::1;::::0;::::1;20946:21:1::0;21003:2;20983:18;;;20976:30;-1:-1:-1;;;21022:18:1;;;21015:45;21077:18;;13109:72:0::1;20762:339:1::0;13109:72:0::1;-1:-1:-1::0;;;;;13220:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13219:14;13211:54;;;::::0;-1:-1:-1;;;13211:54:0;;21308:2:1;13211:54:0::1;::::0;::::1;21290:21:1::0;21347:2;21327:18;;;21320:30;21386:29;21366:18;;;21359:57;21433:18;;13211:54:0::1;21106:351:1::0;13211:54:0::1;-1:-1:-1::0;;;;;13280:13:0;;::::1;;::::0;;;13296:4:::1;13280:13;::::0;;;;;;;;:20;;-1:-1:-1;;13280:20:0::1;::::0;::::1;::::0;;13335:15:::1;13315:17;:35:::0;13365:11:::1;::::0;:33;;-1:-1:-1;;;13365:33:0;;::::1;::::0;::::1;20641:51:1::0;;;;20708:18;;;20701:50;13365:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;20614:18:1;;13365:33:0::1;20473:284:1::0;12930:480:0::1;12853:564:::0;;:::o;17954:621::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18146:23:0;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;18173:19:0;::::1;::::0;::::1;18146:46;:75;;;;-1:-1:-1::0;;;;;;18196:25:0;::::1;::::0;::::1;18146:75;:108;;;;-1:-1:-1::0;;;;;;18225:29:0;::::1;::::0;::::1;18146:108;:130;;;;-1:-1:-1::0;;;;;;18258:18:0;::::1;::::0;::::1;18146:130;18138:166;;;::::0;-1:-1:-1;;;18138:166:0;;21664:2:1;18138:166:0::1;::::0;::::1;21646:21:1::0;21703:2;21683:18;;;21676:30;21742:25;21722:18;;;21715:53;21785:18;;18138:166:0::1;21462:347:1::0;18138:166:0::1;18315:11;:42:::0;;-1:-1:-1;;;;;;18315:42:0;;::::1;-1:-1:-1::0;;;;;18315:42:0;;::::1;;::::0;;;18368:17;:34;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18413:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18470:27;:54;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18535:16;:32;;;;::::1;::::0;;;::::1;;::::0;;17954:621::o;11668:175::-;8800:6;;11734:4;;8800:6;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;11783:9:::1;::::0;11751:62:::1;::::0;11768:4:::1;::::0;11783:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11783:9:0::1;-1:-1:-1::0;;11751:8:0::1;:62::i;:::-;-1:-1:-1::0;11831:4:0::1;11668:175:::0;:::o;26018:695::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;26080:14:::1;::::0;::::1;;26079:15;26071:52;;;::::0;-1:-1:-1;;;26071:52:0;;22016:2:1;26071:52:0::1;::::0;::::1;21998:21:1::0;22055:2;22035:18;;;22028:30;22094:26;22074:18;;;22067:54;22138:18;;26071:52:0::1;21814:348:1::0;26071:52:0::1;26142:16;::::0;::::1;::::0;::::1;;;26134:53;;;::::0;-1:-1:-1;;;26134:53:0;;22369:2:1;26134:53:0::1;::::0;::::1;22351:21:1::0;22408:2;22388:18;;;22381:30;22447:26;22427:18;;;22420:54;22491:18;;26134:53:0::1;22167:348:1::0;26134:53:0::1;26210:11;::::0;;;::::1;-1:-1:-1::0;;;;;26210:11:0::1;26198:106;;26252:11;:40:::0;;-1:-1:-1;;;;;;26252:40:0::1;26286:4;26252:40:::0;::::1;;::::0;;26198:106:::1;26318:11;::::0;26340:6:::1;::::0;26318:87:::1;::::0;-1:-1:-1;;;26318:87:0;;-1:-1:-1;;;;;26340:6:0;;::::1;26318:87;::::0;::::1;22743:51:1::0;22842:10;26355:12:0::1;22830:23:1::0;22810:18;;;22803:51;22902:18;26377:15:0::1;22890:31:1::0;22870:18;;;22863:59;5082:2:0::1;22938:18:1::0;;;22931:45;26318:11:0;;;::::1;;::::0;:21:::1;::::0;22715:19:1;;26318:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26314:103:::0;26431:11:::1;::::0;26462:6:::1;::::0;-1:-1:-1;;;;;26431:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;26452:17:::1;::::0;26462:6:::1;26452:9;:17::i;:::-;26431:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;26431:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;26431:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;26431:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;26427:207:::0;::::1;;26542:13;:29:::0;;;;26586:10:::1;:27:::0;26427:207:::1;26644:14;:21:::0;;-1:-1:-1;;26644:21:0::1;26661:4;26644:21;::::0;;26690:15:::1;26676:11;:29:::0;26018:695::o;11008:165::-;11086:4;11103:40;11113:10;11125:9;11136:6;11103:9;:40::i;:::-;-1:-1:-1;11161:4:0;;11008:165;-1:-1:-1;;;11008:165:0:o;26911:296::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;26989:16:::1;::::0;::::1;::::0;::::1;;;26985:111;;;27047:4;-1:-1:-1::0;;;;;27030:22:0;::::1;::::0;27022:62:::1;;;::::0;-1:-1:-1;;;27022:62:0;;23439:2:1;27022:62:0::1;::::0;::::1;23421:21:1::0;23478:2;23458:18;;;23451:30;23517:29;23497:18;;;23490:57;23564:18;;27022:62:0::1;23237:351:1::0;27022:62:0::1;27160:6;::::0;27168:30:::1;::::0;-1:-1:-1;;;27168:30:0;;27192:4:::1;27168:30;::::0;::::1;160:51:1::0;27128:5:0;;-1:-1:-1;;;;;27145:14:0;;::::1;::::0;::::1;::::0;27160:6:::1;::::0;::::1;::::0;;::::1;::::0;27145:14;;27168:15:::1;::::0;133:18:1;;27168:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27145:54;::::0;-1:-1:-1;;;;;;27145:54:0::1;::::0;;;;;;-1:-1:-1;;;;;23974:32:1;;;27145:54:0::1;::::0;::::1;23956:51:1::0;24023:18;;;24016:34;23929:18;;27145:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20503:263::-:0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;20612:19:::1;:33:::0;;-1:-1:-1;;20612:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20656:22:::1;:47:::0;;-1:-1:-1;;20656:47:0::1;::::0;::::1;;;::::0;;20719:39:::1;::::0;4156:41:1;;;20719:39:0::1;::::0;4144:2:1;4129:18;20719:39:0::1;;;;;;;;20503:263:::0;;:::o;16009:202::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;16165:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;16165:38:0;;-1:-1:-1;;;;;178:32:1;;;16165:38:0::1;::::0;::::1;160:51:1::0;16165:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;16165:38:0::1;14:203:1::0;12165:680:0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;12245:16:::1;::::0;::::1;::::0;::::1;;;12244:17;12236:60;;;::::0;-1:-1:-1;;;12236:60:0;;24513:2:1;12236:60:0::1;::::0;::::1;24495:21:1::0;24552:2;24532:18;;;24525:30;24591:32;24571:18;;;24564:60;24641:18;;12236:60:0::1;24311:354:1::0;12236:60:0::1;12307:20;12340:9;12307:43;;12361:16;12391:10;-1:-1:-1::0;;;;;12391:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12380:40:0::1;;12429:4;12436:10;-1:-1:-1::0;;;;;12436:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12380:74;::::0;-1:-1:-1;;;;;;12380:74:0::1;::::0;;;;;;-1:-1:-1;;;;;25156:15:1;;;12380:74:0::1;::::0;::::1;25138:34:1::0;25208:15;;25188:18;;;25181:43;25073:18;;12380:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12473:6;::::0;-1:-1:-1;;;;;12473:6:0;;::::1;12483:5;12465:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12465:23:0::1;::::0;;12361:93;;-1:-1:-1;12503:22:0;::::1;12499:200;;12562:10;-1:-1:-1::0;;;;;12562:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12551:43:0::1;;12603:4;12610:10;-1:-1:-1::0;;;;;12610:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12551:77;::::0;-1:-1:-1;;;;;;12551:77:0::1;::::0;;;;;;-1:-1:-1;;;;;25156:15:1;;;12551:77:0::1;::::0;::::1;25138:34:1::0;25208:15;;25188:18;;;25181:43;25073:18;;12551:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12542:6;:86:::0;;-1:-1:-1;;;;;;12542:86:0::1;-1:-1:-1::0;;;;;12542:86:0;;;::::1;::::0;;;::::1;::::0;;12499:200:::1;;;12670:6;:17:::0;;-1:-1:-1;;;;;;12670:17:0::1;-1:-1:-1::0;;;;;12670:17:0;::::1;;::::0;;12499:200:::1;12709:9;:22:::0;;-1:-1:-1;;;;;;12709:22:0::1;;-1:-1:-1::0;;;;;12709:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12750:6:::1;::::0;;::::1;-1:-1:-1::0;12742:15:0;;;-1:-1:-1;12742:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12742:22:0::1;::::0;;::::1;::::0;;12807:9;;12775:62:::1;::::0;12792:4:::1;::::0;12807:9;::::1;;-1:-1:-1::0;;12775:8:0::1;:62::i;26721:182::-:0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;26788:16:::1;::::0;::::1;::::0;::::1;;;26787:17;26779:58;;;::::0;-1:-1:-1;;;26779:58:0;;25437:2:1;26779:58:0::1;::::0;::::1;25419:21:1::0;25476:2;25456:18;;;25449:30;25515;25495:18;;;25488:58;25563:18;;26779:58:0::1;25235:352:1::0;26779:58:0::1;26856:6;::::0;26848:47:::1;::::0;-1:-1:-1;;;;;26856:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;26873:21:::1;26848:47:::0;::::1;;;::::0;::::1;::::0;;;26873:21;26856:6;26848:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15072:347:::0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;15275:18:::1;::::0;::::1;;15274:19;15266:85;;;;-1:-1:-1::0;;;15266:85:0::1;;;;;;;:::i;:::-;15362:11;::::0;:49:::1;::::0;-1:-1:-1;;;15362:49:0;;-1:-1:-1;;;;;20659:32:1;;;15362:49:0::1;::::0;::::1;20641:51:1::0;20735:14;;20728:22;20708:18;;;20701:50;15362:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;20614:18:1;;15362:49:0::1;20473:284:1::0;17374:572:0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;17512:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17552:33:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;17628:41:0;17596:21;;;::::1;;-1:-1:-1::0;;17628:41:0;;-1:-1:-1;;;17628:41:0;;::::1;;;-1:-1:-1::0;;17680:19:0::1;-1:-1:-1::0;;;17680:19:0;;::::1;::::0;;;::::1;;::::0;;;17628:41;17596:21;17730:23:::1;17552:33:::0;17512:29;17730:23:::1;:::i;:::-;:31;;;;:::i;:::-;:49;;;;:::i;:::-;:56;;;;:::i;:::-;17710:7;:76:::0;;-1:-1:-1;;;;17710:76:0::1;-1:-1:-1::0;;;17710:76:0::1;::::0;;::::1;;;::::0;;17832:9:::1;:17:::0;-1:-1:-1;;17813:36:0::1;::::0;17832:17;;::::1;::::0;::::1;::::0;17813:16:::1;:36;:::i;:::-;17868:7;:17:::0;17797:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;17868:17:0;::::1;;:26:::0;-1:-1:-1;17868:26:0::1;17860:78;;;::::0;-1:-1:-1;;;17860:78:0;;25967:2:1;17860:78:0::1;::::0;::::1;25949:21:1::0;26006:2;25986:18;;;25979:30;26045:34;26025:18;;;26018:62;-1:-1:-1;;;26096:18:1;;;26089:37;26143:19;;17860:78:0::1;25765:403:1::0;19571:699:0;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;19771:16;19751;5143:13:::1;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;19741:26;;;;:::i;:::-;19740:47;;;;:::i;:::-;19724:13;:63:::0;;;19839:13;;19822;;5143::::1;::::0;:2:::1;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;19812:23;;;;:::i;:::-;19811:41;;;;:::i;:::-;19798:10;:54:::0;;;19871:13:::1;::::0;:27:::1;;19863:73;;;::::0;-1:-1:-1;;;19863:73:0;;26375:2:1;19863:73:0::1;::::0;::::1;26357:21:1::0;26414:2;26394:18;;;26387:30;26453:34;26433:18;;;26426:62;-1:-1:-1;;;26504:18:1;;;26497:31;26545:19;;19863:73:0::1;26173:397:1::0;19863:73:0::1;19980:6;::::0;5952:5:::1;::::0;19970:17:::1;::::0;-1:-1:-1;;;;;19980:6:0::1;19970:9;:17::i;:::-;:23;::::0;19990:3:::1;19970:23;:::i;:::-;19969:44;;;;:::i;:::-;19955:10;;:58;;19947:106;;;::::0;-1:-1:-1;;;19947:106:0;;26777:2:1;19947:106:0::1;::::0;::::1;26759:21:1::0;26816:2;26796:18;;;26789:30;26855:34;26835:18;;;26828:62;-1:-1:-1;;;26906:18:1;;;26899:33;26949:19;;19947:106:0::1;26575:399:1::0;19947:106:0::1;20096:9;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;20086:19;;;;:::i;:::-;20072:10;;:33;;20064:92;;;;-1:-1:-1::0;;;20064:92:0::1;;;;;;;:::i;:::-;20202:9;5143:13;5082:2;5143;:13;:::i;:::-;5126:30;::::0;4933:11:::1;5126:30;:::i;:::-;20192:19;;;;:::i;:::-;20175:13;;:36;;20167:95;;;;-1:-1:-1::0;;;20167:95:0::1;;;;;;;:::i;:::-;19571:699:::0;;;;:::o;15872:129::-;15959:11;;:34;;-1:-1:-1;;;15959:34:0;;-1:-1:-1;;;;;178:32:1;;;15959:34:0;;;160:51:1;15935:4:0;;15959:11;;;;;:25;;133:18:1;;15959:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14703:148::-;8800:6;;;;;-1:-1:-1;;;;;8800:6:0;8810:10;8800:20;8792:50;;;;-1:-1:-1;;;8792:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14799:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14799:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14703:148::o;11350:310::-;-1:-1:-1;;;;;11445:20:0;;11437:52;;;;-1:-1:-1;;;11437:52:0;;27596:2:1;11437:52:0;;;27578:21:1;27635:2;27615:18;;;27608:30;-1:-1:-1;;;27654:18:1;;;27647:49;27713:18;;11437:52:0;27394:343:1;11437:52:0;-1:-1:-1;;;;;11508:21:0;;11500:53;;;;-1:-1:-1;;;11500:53:0;;27596:2:1;11500:53:0;;;27578:21:1;27635:2;27615:18;;;27608:30;-1:-1:-1;;;27654:18:1;;;27647:49;27713:18;;11500:53:0;27394:343:1;11500:53:0;-1:-1:-1;;;;;11566:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11619:33;;368:25:1;;;11619:33:0;;341:18:1;11619:33:0;;;;;;;11350:310;;;:::o;21228:2176::-;21307:4;-1:-1:-1;;;;;21332:18:0;;21324:68;;;;-1:-1:-1;;;21324:68:0;;27944:2:1;21324:68:0;;;27926:21:1;27983:2;27963:18;;;27956:30;28022:34;28002:18;;;27995:62;-1:-1:-1;;;28073:18:1;;;28066:35;28118:19;;21324:68:0;27742:401:1;21324:68:0;-1:-1:-1;;;;;21411:16:0;;21403:64;;;;-1:-1:-1;;;21403:64:0;;28350:2:1;21403:64:0;;;28332:21:1;28389:2;28369:18;;;28362:30;28428:34;28408:18;;;28401:62;-1:-1:-1;;;28479:18:1;;;28472:33;28522:19;;21403:64:0;28148:399:1;21403:64:0;21495:1;21486:6;:10;21478:64;;;;-1:-1:-1;;;21478:64:0;;28754:2:1;21478:64:0;;;28736:21:1;28793:2;28773:18;;;28766:30;28832:34;28812:18;;;28805:62;-1:-1:-1;;;28883:18:1;;;28876:39;28932:19;;21478:64:0;28552:405:1;21478:64:0;-1:-1:-1;;;;;21641:13:0;;21553:8;21641:13;;;:7;:13;;;;;;21553:8;;;;21641:13;;21637:162;;;21677:4;21671:10;;21637:162;;;-1:-1:-1;;;;;21703:11:0;;;;;;:7;:11;;;;;;;;21699:100;;;21738:4;21731:11;;21699:100;;;-1:-1:-1;21783:4:0;21699:100;21813:20;21824:4;21830:2;21813:10;:20::i;:::-;21809:874;;;21854:14;;;;21850:319;;21894:5;21889:265;;21924:34;;-1:-1:-1;;;21924:34:0;;29164:2:1;21924:34:0;;;29146:21:1;29203:2;29183:18;;;29176:30;29242:26;29222:18;;;29215:54;29286:18;;21924:34:0;28962:348:1;21889:265:0;-1:-1:-1;;;;;21989:31:0;;;;;;:25;:31;;;;;;;;21988:32;:66;;;;-1:-1:-1;;;;;;22025:29:0;;;;;;:25;:29;;;;;;;;22024:30;21988:66;21984:170;;;22079:55;;-1:-1:-1;;;22079:55:0;;29517:2:1;22079:55:0;;;29499:21:1;29556:2;29536:18;;;29529:30;29595:34;29575:18;;;29568:62;-1:-1:-1;;;29646:18:1;;;29639:43;29699:19;;22079:55:0;29315:409:1;21984:170:0;22187:3;:11;;;;22194:4;22187:11;22183:232;;;-1:-1:-1;;;;;22223:27:0;;;;;;:21;:27;;;;;;;;22222:28;:58;;;;-1:-1:-1;;;;;;22255:25:0;;;;;;:21;:25;;;;;;;;22254:26;22222:58;22218:182;;;22323:12;;22313:6;:22;;22305:75;;;;-1:-1:-1;;;22305:75:0;;29931:2:1;22305:75:0;;;29913:21:1;29970:2;29950:18;;;29943:30;30009:34;29989:18;;;29982:62;-1:-1:-1;;;30060:18:1;;;30053:38;30108:19;;22305:75:0;29729:404:1;22305:75:0;22447:9;;-1:-1:-1;;;;;22433:24:0;;;22447:9;;;;;22433:24;;;;:33;;;22462:4;22461:5;22433:33;22429:243;;;-1:-1:-1;;;;;22492:25:0;;;;;;:21;:25;;;;;;;;22487:170;;22576:14;;22566:6;22550:13;22560:2;22550:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;22542:95;;;;-1:-1:-1;;;22542:95:0;;30340:2:1;22542:95:0;;;30322:21:1;30379:2;30359:18;;;30352:30;30418:34;30398:18;;;30391:62;-1:-1:-1;;;30469:18:1;;;30462:40;30519:19;;22542:95:0;30138:406:1;22542:95:0;22699:4;22695:632;;;22725:6;;;;22720:596;;22756:19;;;;;;;22752:549;;;22800:28;22831:24;22849:4;22831:9;:24::i;:::-;22800:55;;22906:13;;22882:20;:37;22878:404;;22966:10;;23007:22;;;;23003:97;;;23064:13;;23054:6;;5952:5;;23064:13;23044:17;;-1:-1:-1;;;;;23054:6:0;23044:9;:17::i;:::-;:33;;;;:::i;:::-;23043:54;;;;:::i;:::-;23033:64;;23003:97;23154:7;23130:20;:31;23126:72;;23188:7;23165:30;;23126:72;23224:34;23237:20;23224:12;:34::i;:::-;22921:361;22878:404;22777:524;22752:549;23344:52;23361:4;23367:2;23371:6;23379:3;23384:4;23390:5;23344:16;:52::i;:::-;23337:59;21228:2176;-1:-1:-1;;;;;;;21228:2176:0:o;27670:1055::-;27789:4;27810:20;27821:4;27827:2;27810:10;:20::i;:::-;27806:228;;;27865:11;;:39;;-1:-1:-1;;;27865:39:0;;-1:-1:-1;;;;;30807:15:1;;;27865:39:0;;;30789:34:1;30859:15;;;30839:18;;;30832:43;30891:18;;;30884:34;;;27834:12:0;;27865:11;;;;;:21;;30724:18:1;;27865:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;27865:39:0;;;;;;;;-1:-1:-1;;27865:39:0;;;;;;;;;;;;:::i;:::-;;;27861:122;;27972:8;;;27861:122;27955:5;-1:-1:-1;28001:7:0;27997:26;;28012:8;;;27997:26;27832:202;27806:228;-1:-1:-1;;;;;28078:25:0;;28044:12;28078:25;;;:19;:25;;;;;;28059:4;;28078:25;;;:52;;-1:-1:-1;;;;;;28107:23:0;;;;;;:19;:23;;;;;;;;28078:52;28074:99;;;-1:-1:-1;28156:5:0;28074:99;-1:-1:-1;;;;;28183:13:0;;:7;:13;;;;;;;;;;:23;;28200:6;;28183:7;:23;;28200:6;;28183:23;:::i;:::-;;;;-1:-1:-1;28217:22:0;;-1:-1:-1;28243:7:0;28242:55;;28291:6;28242:55;;;28254:34;28264:4;28270:6;28278:3;28283:4;28254:9;:34::i;:::-;28217:80;;28323:14;28308:7;:11;28316:2;-1:-1:-1;;;;;28308:11:0;-1:-1:-1;;;;;28308:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;28368:2;-1:-1:-1;;;;;28353:34:0;28362:4;-1:-1:-1;;;;;28353:34:0;;28372:14;28353:34;;;;368:25:1;;356:2;341:18;;222:177;28353:34:0;;;;;;;;28403:16;;;;;;;28398:298;;28436:28;28455:4;28461:2;28436:18;:28::i;:::-;28484:16;;;;;;;28483:17;:41;;;;;28504:20;28515:4;28521:2;28504:10;:20::i;:::-;28483:77;;;;-1:-1:-1;;;;;;28529:31:0;;;;;;:25;:31;;;;;;;;28528:32;28483:77;:111;;;;-1:-1:-1;;;;;;28565:29:0;;;;;;:25;:29;;;;;;;;28564:30;28483:111;:121;;;;;28599:5;28598:6;28483:121;28479:206;;;28625:44;;-1:-1:-1;;;28625:44:0;;31131:2:1;28625:44:0;;;31113:21:1;31170:2;31150:18;;;31143:30;31209:34;31189:18;;;31182:62;-1:-1:-1;;;31260:18:1;;;31253:32;31302:19;;28625:44:0;30929:398:1;28479:206:0;-1:-1:-1;28713:4:0;;27670:1055;-1:-1:-1;;;;;;;;27670:1055:0:o;20774:446::-;20875:6;;20843:4;;-1:-1:-1;;;;;20867:14:0;;;20875:6;;;;;20867:14;;;;:43;;-1:-1:-1;20904:6:0;;-1:-1:-1;;;;;20898:12:0;;;20904:6;;;;;20898:12;;20867:43;:79;;;;-1:-1:-1;20940:6:0;;;;;-1:-1:-1;;;;;20940:6:0;20927:9;:19;;20867:79;:118;;;;-1:-1:-1;;;;;;20964:21:0;;;;;;:17;:21;;;;;;;;20963:22;20867:118;:159;;;;-1:-1:-1;;;;;;21003:23:0;;;;;;:17;:23;;;;;;;;21002:24;20867:159;:186;;;;-1:-1:-1;;;;;;21043:10:0;;6091:42;21043:10;;20867:186;:219;;;;-1:-1:-1;;;;;;21070:16:0;;;;20867:219;:257;;;;-1:-1:-1;;;;;;21103:21:0;;21119:4;21103:21;;20867:257;:302;;;;-1:-1:-1;21157:11:0;;-1:-1:-1;;;;;21141:28:0;;;21157:11;;;;;21141:28;;20867:302;:345;;;;-1:-1:-1;21200:11:0;;-1:-1:-1;;;;;21186:26:0;;;21200:11;;;;;21186:26;;20867:345;20860:352;20774:446;-1:-1:-1;;;20774:446:0:o;23412:2027::-;7463:6;:13;;-1:-1:-1;;7463:13:0;7472:4;7463:13;;;23495:30:::1;::::0;;::::1;::::0;::::1;::::0;;23518:7:::1;23495:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;23495:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23495:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23495:30:0;::::1;::::0;;::::1;::::0;;;;;;7463:6;23540:21;23536:60:::1;;23578:7;;;23536:60;23632:4;23612:26;::::0;;;:11:::1;:26;::::0;;;;;;;23647:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23647:9:0::1;23612:46:::0;;;;;;;;-1:-1:-1;;23612:67:0::1;23608:166;;23716:4;23696:26;::::0;;;:11:::1;:26;::::0;;;;;;;23731:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23731:9:0::1;23696:46:::0;;;;;;;-1:-1:-1;;23696:66:0;;23608:166:::1;23818:16;::::0;;23832:1:::1;23818:16:::0;;;;;::::1;::::0;;23794:21:::1;::::0;23818:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23818:16:0::1;23794:40;;23863:4;23845;23850:1;23845:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23845:23:0::1;;;-1:-1:-1::0;;;;;23845:23:0::1;;;::::0;::::1;23889:9;;;;;;;;;-1:-1:-1::0;;;;;23889:9:0::1;-1:-1:-1::0;;;;;23889:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23879:4;23884:1;23879:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23879:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23922:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;23922:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23997:20;;24032:1:::1;::::0;24048:4;;24075::::1;::::0;24095:15:::1;::::0;23922:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23918:246;;24146:7;;;;23918:246;24176:18;24197:21;24176:42;;24229:12;24252:26:::0;24317:6:::1;:16;;;24281:52;;24295:6;:18;;;24282:31;;:10;:31;;;;:::i;:::-;24281:52;;;;:::i;:::-;24252:81;;24344:31;24418:6;:16;;;24378:56;;24392:6;:22;;;24379:35;;:10;:35;;;;:::i;:::-;24378:56;;;;:::i;:::-;24344:90;;24445:20;24498:6;:16;;;24468:46;;24482:6;:12;;;24469:25;;:10;:25;;;;:::i;:::-;24468:46;;;;:::i;:::-;24445:69;;24525:19;24576:6;:16;;;24547:45;;24561:6;:11;;;24548:24;;:10;:24;;;;:::i;:::-;24547:45;;;;:::i;:::-;24525:67:::0;-1:-1:-1;24603:24:0::1;24525:67:::0;24691:12;24644:44:::1;24665:23:::0;24644:18;:44:::1;:::i;:::-;:59;;;;:::i;:::-;:73;;;;:::i;:::-;24630:88;::::0;:10;:88:::1;:::i;:::-;24733:16:::0;;24603:115;;-1:-1:-1;24733:20:0::1;;::::0;24729:133:::1;;24783:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;24783:21:0;;::::1;::::0;24840:5:::1;::::0;24817:16;;24783:67:::1;::::0;;;24817:16;24783:21;24840:5;24783:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24770:80:0;;-1:-1:-1;;24729:133:0::1;24876:18;::::0;::::1;::::0;:22:::1;;::::0;24872:139:::1;;24928:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;24928:23:0;;::::1;::::0;24989:5:::1;::::0;24964:18;;24928:71:::1;::::0;;;24964:18;24928:23;24989:5;24928:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24915:84:0;;-1:-1:-1;;24872:139:0::1;25025:22;::::0;::::1;::::0;:26:::1;;::::0;25021:152:::1;;25081:27:::0;;:80:::1;::::0;-1:-1:-1;;;;;25081:27:0;;::::1;::::0;25151:5:::1;::::0;25121:23;;25081:80:::1;::::0;;;25121:23;25081:27;25151:5;25081:80:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25068:93:0;;-1:-1:-1;;25021:152:0::1;25187:12;::::0;::::1;::::0;:16:::1;;::::0;25183:121:::1;;25233:17:::0;;:59:::1;::::0;-1:-1:-1;;;;;25233:17:0;;::::1;::::0;25282:5:::1;::::0;25263:12;;25233:59:::1;::::0;;;25263:12;25233:17;25282:5;25233:59:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25220:72:0;;-1:-1:-1;;25183:121:0::1;25318:11;::::0;::::1;::::0;:15:::1;;::::0;25314:118:::1;;25363:16:::0;;:57:::1;::::0;-1:-1:-1;;;;;25363:16:0;;::::1;::::0;25410:5:::1;::::0;25392:11;;25363:57:::1;::::0;;;25392:11;25363:16;25410:5;25363:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25350:70:0;;-1:-1:-1;;25314:118:0::1;23484:1955;;;;;;;;;7487:1;-1:-1:-1::0;7499:6:0;:14;;-1:-1:-1;;7499:14:0;;;23412:2027::o;28733:767::-;28821:7;28841:18;28874:3;28870:205;;;-1:-1:-1;28907:9:0;:16;;;28870:205;;;28945:4;28941:134;;;-1:-1:-1;28979:9:0;:17;;;;;;28941:134;;;-1:-1:-1;29042:9:0;:21;;;;;;28941:134;29097:11;;;;;-1:-1:-1;;;;;29097:11:0;29121:4;29089:37;:73;;;;;29143:13;29160:2;29143:19;;29089:73;29085:101;;;-1:-1:-1;29179:4:0;29085:101;29200:10;29214:1;29200:15;29196:39;;29226:6;29219:13;;;;;29196:39;29245:17;5952:5;29265:19;29274:10;29265:6;:19;:::i;:::-;:38;;;;:::i;:::-;29245:58;-1:-1:-1;29318:13:0;;29314:141;;29364:4;29348:7;:22;;;;;;;;;;:35;;29374:9;;29348:7;:35;;29374:9;;29348:35;:::i;:::-;;;;-1:-1:-1;;29403:40:0;;368:25:1;;;29426:4:0;;-1:-1:-1;;;;;29403:40:0;;;;;356:2:1;341:18;29403:40:0;;;;;;;29314:141;29474:18;29483:9;29474:6;:18;:::i;25447:563::-;25530:16;;;;;;;25529:17;25521:65;;;;-1:-1:-1;;;25521:65:0;;32331:2:1;25521:65:0;;;32313:21:1;32370:2;32350:18;;;32343:30;32409:34;32389:18;;;32382:62;-1:-1:-1;;;32460:18:1;;;32453:33;32503:19;;25521:65:0;32129:399:1;25521:65:0;25602:20;25613:4;25619:2;25602:10;:20::i;:::-;25601:21;:37;;;;-1:-1:-1;25632:6:0;;-1:-1:-1;;;;;25626:12:0;;;25632:6;;25626:12;25601:37;25597:406;;;-1:-1:-1;;;;;25655:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25655:30:0;;;25681:4;25655:30;;;;;;25700:19;:25;;;;;:32;;;;;;;;;;25747:16;:23;;-1:-1:-1;;25747:23:0;25655:30;25747:23;;;;;25797:11;;;;25785:114;;25843:11;:40;;-1:-1:-1;;;;;;25843:40:0;25877:4;25843:40;;;;;25785:114;25913:19;:26;;-1:-1:-1;;25913:26:0;;;;;25959:32;;-1:-1:-1;4156:41:1;;25959:32:0;;4144:2:1;4129:18;25959:32:0;4016:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;1211:18;1196:34;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;1413:18;1405:6;1402:30;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2593:9;2580:23;2626:18;2618:6;2615:30;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:548::-;3350:4;3379:2;3408;3397:9;3390:21;3440:6;3434:13;3483:6;3478:2;3467:9;3463:18;3456:34;3508:1;3518:140;3532:6;3529:1;3526:13;3518:140;;;3627:14;;;3623:23;;3617:30;3593:17;;;3612:2;3589:26;3582:66;3547:10;;3518:140;;;3522:3;3707:1;3702:2;3693:6;3682:9;3678:22;3674:31;3667:42;3777:2;3770;3766:7;3761:2;3753:6;3749:15;3745:29;3734:9;3730:45;3726:54;3718:62;;;;3238:548;;;;:::o;4208:315::-;4276:6;4284;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;:::-;4461:5;4513:2;4498:18;;;;4485:32;;-1:-1:-1;;;4208:315:1:o;4528:247::-;4587:6;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4695:9;4682:23;4714:31;4739:5;4714:31;:::i;4780:456::-;4857:6;4865;4873;4926:2;4914:9;4905:7;4901:23;4897:32;4894:52;;;4942:1;4939;4932:12;4894:52;4981:9;4968:23;5000:31;5025:5;5000:31;:::i;:::-;5050:5;-1:-1:-1;5107:2:1;5092:18;;5079:32;5120:33;5079:32;5120:33;:::i;:::-;4780:456;;5172:7;;-1:-1:-1;;;5226:2:1;5211:18;;;;5198:32;;4780:456::o;5241:248::-;5309:6;5317;5370:2;5358:9;5349:7;5345:23;5341:32;5338:52;;;5386:1;5383;5376:12;5338:52;-1:-1:-1;;5409:23:1;;;5479:2;5464:18;;;5451:32;;-1:-1:-1;5241:248:1:o;5494:1138::-;5612:6;5620;5673:2;5661:9;5652:7;5648:23;5644:32;5641:52;;;5689:1;5686;5679:12;5641:52;5729:9;5716:23;5758:18;5799:2;5791:6;5788:14;5785:34;;;5815:1;5812;5805:12;5785:34;5838:61;5891:7;5882:6;5871:9;5867:22;5838:61;:::i;:::-;5828:71;;5918:2;5908:12;;5973:2;5962:9;5958:18;5945:32;6002:2;5992:8;5989:16;5986:36;;;6018:1;6015;6008:12;5986:36;6041:24;;;-1:-1:-1;6096:4:1;6088:13;;6084:27;-1:-1:-1;6074:55:1;;6125:1;6122;6115:12;6074:55;6161:2;6148:16;6184:60;6200:43;6240:2;6200:43;:::i;6184:60::-;6278:15;;;6360:1;6356:10;;;;6348:19;;6344:28;;;6309:12;;;;6384:19;;;6381:39;;;6416:1;6413;6406:12;6381:39;6440:11;;;;6460:142;6476:6;6471:3;6468:15;6460:142;;;6542:17;;6530:30;;6493:12;;;;6580;;;;6460:142;;;6621:5;6611:15;;;;;;;5494:1138;;;;;:::o;6826:159::-;6893:20;;6953:6;6942:18;;6932:29;;6922:57;;6975:1;6972;6965:12;6922:57;6826:159;;;:::o;6990:328::-;7064:6;7072;7080;7133:2;7121:9;7112:7;7108:23;7104:32;7101:52;;;7149:1;7146;7139:12;7101:52;7172:28;7190:9;7172:28;:::i;:::-;7162:38;;7219:37;7252:2;7241:9;7237:18;7219:37;:::i;:::-;7209:47;;7275:37;7308:2;7297:9;7293:18;7275:37;:::i;:::-;7265:47;;6990:328;;;;;:::o;7323:382::-;7388:6;7396;7449:2;7437:9;7428:7;7424:23;7420:32;7417:52;;;7465:1;7462;7455:12;7417:52;7504:9;7491:23;7523:31;7548:5;7523:31;:::i;7710:180::-;7769:6;7822:2;7810:9;7801:7;7797:23;7793:32;7790:52;;;7838:1;7835;7828:12;7790:52;-1:-1:-1;7861:23:1;;7710:180;-1:-1:-1;7710:180:1:o;7895:853::-;8030:6;8038;8046;8054;8062;8115:3;8103:9;8094:7;8090:23;8086:33;8083:53;;;8132:1;8129;8122:12;8083:53;8171:9;8158:23;8190:31;8215:5;8190:31;:::i;:::-;8240:5;-1:-1:-1;8297:2:1;8282:18;;8269:32;8310:33;8269:32;8310:33;:::i;:::-;8362:7;-1:-1:-1;8421:2:1;8406:18;;8393:32;8434:33;8393:32;8434:33;:::i;:::-;8486:7;-1:-1:-1;8545:2:1;8530:18;;8517:32;8558:33;8517:32;8558:33;:::i;:::-;8610:7;-1:-1:-1;8669:3:1;8654:19;;8641:33;8683;8641;8683;:::i;:::-;8735:7;8725:17;;;7895:853;;;;;;;;:::o;9360:388::-;9428:6;9436;9489:2;9477:9;9468:7;9464:23;9460:32;9457:52;;;9505:1;9502;9495:12;9457:52;9544:9;9531:23;9563:31;9588:5;9563:31;:::i;:::-;9613:5;-1:-1:-1;9670:2:1;9655:18;;9642:32;9683:33;9642:32;9683:33;:::i;9753:474::-;9843:6;9851;9859;9867;9875;9928:3;9916:9;9907:7;9903:23;9899:33;9896:53;;;9945:1;9942;9935:12;9896:53;9968:28;9986:9;9968:28;:::i;:::-;9958:38;;10015:37;10048:2;10037:9;10033:18;10015:37;:::i;:::-;10005:47;;10071:37;10104:2;10093:9;10089:18;10071:37;:::i;:::-;10061:47;;10127:37;10160:2;10149:9;10145:18;10127:37;:::i;:::-;10117:47;;10183:38;10216:3;10205:9;10201:19;10183:38;:::i;:::-;10173:48;;9753:474;;;;;;;;:::o;10863:385::-;10949:6;10957;10965;10973;11026:3;11014:9;11005:7;11001:23;10997:33;10994:53;;;11043:1;11040;11033:12;10994:53;-1:-1:-1;;11066:23:1;;;11136:2;11121:18;;11108:32;;-1:-1:-1;11187:2:1;11172:18;;11159:32;;11238:2;11223:18;11210:32;;-1:-1:-1;10863:385:1;-1:-1:-1;10863:385:1:o;11253:341::-;11455:2;11437:21;;;11494:2;11474:18;;;11467:30;-1:-1:-1;;;11528:2:1;11513:18;;11506:47;11585:2;11570:18;;11253:341::o;12218:417::-;12420:2;12402:21;;;12459:2;12439:18;;;12432:30;12498:34;12493:2;12478:18;;12471:62;-1:-1:-1;;;12564:2:1;12549:18;;12542:51;12625:3;12610:19;;12218:417::o;12640:461::-;12693:3;12731:5;12725:12;12758:6;12753:3;12746:19;12784:4;12813:2;12808:3;12804:12;12797:19;;12850:2;12843:5;12839:14;12871:1;12881:195;12895:6;12892:1;12889:13;12881:195;;;12960:13;;-1:-1:-1;;;;;12956:39:1;12944:52;;13016:12;;;;13051:15;;;;12992:1;12910:9;12881:195;;;-1:-1:-1;13092:3:1;;12640:461;-1:-1:-1;;;;;12640:461:1:o;13106:342::-;13307:2;13296:9;13289:21;13270:4;13327:56;13379:2;13368:9;13364:18;13356:6;13327:56;:::i;:::-;13319:64;;13433:6;13426:14;13419:22;13414:2;13403:9;13399:18;13392:50;13106:342;;;;;:::o;13453:127::-;13514:10;13509:3;13505:20;13502:1;13495:31;13545:4;13542:1;13535:15;13569:4;13566:1;13559:15;13585:422;13674:1;13717:5;13674:1;13731:270;13752:7;13742:8;13739:21;13731:270;;;13811:4;13807:1;13803:6;13799:17;13793:4;13790:27;13787:53;;;13820:18;;:::i;:::-;13870:7;13860:8;13856:22;13853:55;;;13890:16;;;;13853:55;13969:22;;;;13929:15;;;;13731:270;;;13735:3;13585:422;;;;;:::o;14012:806::-;14061:5;14091:8;14081:80;;-1:-1:-1;14132:1:1;14146:5;;14081:80;14180:4;14170:76;;-1:-1:-1;14217:1:1;14231:5;;14170:76;14262:4;14280:1;14275:59;;;;14348:1;14343:130;;;;14255:218;;14275:59;14305:1;14296:10;;14319:5;;;14343:130;14380:3;14370:8;14367:17;14364:43;;;14387:18;;:::i;:::-;-1:-1:-1;;14443:1:1;14429:16;;14458:5;;14255:218;;14557:2;14547:8;14544:16;14538:3;14532:4;14529:13;14525:36;14519:2;14509:8;14506:16;14501:2;14495:4;14492:12;14488:35;14485:77;14482:159;;;-1:-1:-1;14594:19:1;;;14626:5;;14482:159;14673:34;14698:8;14692:4;14673:34;:::i;:::-;14743:6;14739:1;14735:6;14731:19;14722:7;14719:32;14716:58;;;14754:18;;:::i;:::-;14792:20;;14012:806;-1:-1:-1;;;14012:806:1:o;14823:140::-;14881:5;14910:47;14951:4;14941:8;14937:19;14931:4;14910:47;:::i;14968:217::-;15008:1;15034;15024:132;;15078:10;15073:3;15069:20;15066:1;15059:31;15113:4;15110:1;15103:15;15141:4;15138:1;15131:15;15024:132;-1:-1:-1;15170:9:1;;14968:217::o;15190:168::-;15263:9;;;15294;;15311:15;;;15305:22;;15291:37;15281:71;;15332:18;;:::i;15363:128::-;15430:9;;;15451:11;;;15448:37;;;15465:18;;:::i;16263:127::-;16324:10;16319:3;16315:20;16312:1;16305:31;16355:4;16352:1;16345:15;16379:4;16376:1;16369:15;16742:197;16780:3;16808:6;16849:2;16842:5;16838:14;16876:2;16867:7;16864:15;16861:41;;16882:18;;:::i;:::-;16931:1;16918:15;;16742:197;-1:-1:-1;;;16742:197:1:o;16944:125::-;17009:9;;;17030:10;;;17027:36;;;17043:18;;:::i;18547:425::-;18749:2;18731:21;;;18788:2;18768:18;;;18761:30;18827:34;18822:2;18807:18;;18800:62;18898:31;18893:2;18878:18;;18871:59;18962:3;18947:19;;18547:425::o;19320:385::-;19399:6;19407;19460:2;19448:9;19439:7;19435:23;19431:32;19428:52;;;19476:1;19473;19466:12;19428:52;19508:9;19502:16;19527:31;19552:5;19527:31;:::i;:::-;19627:2;19612:18;;19606:25;19577:5;;-1:-1:-1;19640:33:1;19606:25;19640:33;:::i;22987:245::-;23066:6;23074;23127:2;23115:9;23106:7;23102:23;23098:32;23095:52;;;23143:1;23140;23133:12;23095:52;-1:-1:-1;;23166:16:1;;23222:2;23207:18;;;23201:25;23166:16;;23201:25;;-1:-1:-1;22987:245:1:o;23593:184::-;23663:6;23716:2;23704:9;23695:7;23691:23;23687:32;23684:52;;;23732:1;23729;23722:12;23684:52;-1:-1:-1;23755:16:1;;23593:184;-1:-1:-1;23593:184:1:o;24061:245::-;24128:6;24181:2;24169:9;24160:7;24156:23;24152:32;24149:52;;;24197:1;24194;24187:12;24149:52;24229:9;24223:16;24248:28;24270:5;24248:28;:::i;24670:251::-;24740:6;24793:2;24781:9;24772:7;24768:23;24764:32;24761:52;;;24809:1;24806;24799:12;24761:52;24841:9;24835:16;24860:31;24885:5;24860:31;:::i;25592:168::-;25659:6;25685:10;;;25697;;;25681:27;;25720:11;;;25717:37;;;25734:18;;:::i;:::-;25717:37;25592:168;;;;:::o;26979:410::-;27181:2;27163:21;;;27220:2;27200:18;;;27193:30;27259:34;27254:2;27239:18;;27232:62;-1:-1:-1;;;27325:2:1;27310:18;;27303:44;27379:3;27364:19;;26979:410::o;31332:582::-;31631:6;31620:9;31613:25;31674:6;31669:2;31658:9;31654:18;31647:34;31717:3;31712:2;31701:9;31697:18;31690:31;31594:4;31738:57;31790:3;31779:9;31775:19;31767:6;31738:57;:::i;:::-;-1:-1:-1;;;;;31831:32:1;;;;31826:2;31811:18;;31804:60;-1:-1:-1;31895:3:1;31880:19;31873:35;31730:65;31332:582;-1:-1:-1;;;31332:582:1:o

Swarm Source

ipfs://a7d0237d6efd6be9c0a8ad5447b18c23acc85b6aefc1b418f7354d59731e85ec
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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.