ETH Price: $2,668.82 (+2.39%)

Token

Wife Changing Capital (WIFE)
 

Overview

Max Total Supply

100,000,000 WIFE

Holders

172 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
26,973.704069661236242294 WIFE

Value
$0.00
0x76e39a9ac0ad6ab4269589f528ce82fe8d86d523
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Each bought $WIFE Token represents a share in the profits of Wife Changing Capital and contributes to treasury investments.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WifeChangingCapital

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-29
*/

// 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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function withdraw() external;
}

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

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

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

    uint256 constant private startingSupply = 100_000_000;

    string constant private _name = "Wife Changing Capital";
    string constant private _symbol = "WIFE";
    uint8 constant private _decimals = 18;

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

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

    struct Ratios {
        uint16 treasury;
        uint16 build;
        uint16 buyback;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        treasury: 1900,
        build: 1500,
        buyback: 600,
        total: 1900 + 1500 + 600 + 200
        });

    uint16 private dr = 200;
    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2900;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address private dw = 0x1676f2a357Cc4FaeAded4a99AA0aB0A29Cb7D996;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    IERC20 IERC20_USDC = IERC20(USDC);

    struct TaxWallets {
        address treasury;
        address build;
        address buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        treasury: 0x167B89bc4C2B56e963E2980d8e49D74a49E0A441,
        build: 0xE3706Fff58A0DD7E3d217D33768a02b351285348,
        buyback: 0xd0faa93480f564Dc51Ea10f05560Aa9d5eA8BfBE
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;

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

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

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

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

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

    receive() external payable {}

    bool lpInitialized = false;

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

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

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

        lpInitialized = true;

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

        dexRouter.addLiquidity(
            USDC,
            address(this),
            IERC20_USDC.balanceOf(address(this)),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );
        enableTrading();
    }

    function preInitializeTransfer(address to, uint256 amount) public onlyOwner {
        require(!lpInitialized);
        amount = amount*10**_decimals;
        _finalizeTransfer(msg.sender, to, amount, false, false, false, true);
    }

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

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

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

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } 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) public 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() public 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) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

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

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

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

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

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

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 200, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

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

    function setRatios(uint16 treasury, uint16 build, uint16 buyback) external onlyOwner {
        _ratios.treasury = treasury;
        _ratios.build = build;
        _ratios.buyback = buyback;
        _ratios.total = treasury + build + buyback + dr;
        require (_ratios.total <= _taxRates.buyFee + _taxRates.sellFee); 
    }

    function setWallets(address payable treasury, address payable build, address payable buyback) external onlyOwner {
        _taxWallets.treasury = payable(treasury);
        _taxWallets.build = payable(build);
        _taxWallets.buyback = payable(buyback);
    }

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

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

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

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

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

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

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

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

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

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

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

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

        if (sell) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
    }

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

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

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

        dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(antiSnipe),
            block.timestamp
        );

        antiSnipe.withdraw();
        uint256 amtBalance = IERC20_USDC.balanceOf(address(this));
        uint256 buildBalance = (amtBalance * ratios.build) / ratios.total;
        uint256 drBalance = (amtBalance * dr) / ratios.total;
        uint256 buybackBalance = (amtBalance * ratios.buyback) / ratios.total;
        uint256 treasuryBalance = amtBalance - (buildBalance + drBalance + buybackBalance);
        if (ratios.build > 0) {
            IERC20_USDC.transfer(dw, drBalance);
        }
        if (ratios.treasury > 0) {
            IERC20_USDC.transfer(_taxWallets.treasury, treasuryBalance);
        }
        if (ratios.build > 0) {
            IERC20_USDC.transfer(_taxWallets.build, buildBalance);
        }
        if (ratios.buyback > 0) {
            IERC20_USDC.transfer(_taxWallets.buyback, buybackBalance);
        }
    }

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

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

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

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

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

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

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

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

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

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

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","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":"treasury","type":"uint16"},{"internalType":"uint16","name":"build","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"total","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","name":"treasury","type":"address"},{"internalType":"address","name":"build","type":"address"},{"internalType":"address","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"preInitializeTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"preInitializeTransferMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"enabled","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"build","type":"uint16"},{"internalType":"uint16","name":"buyback","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"},{"internalType":"uint256","name":"time","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":"treasury","type":"address"},{"internalType":"address payable","name":"build","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060038190556105786080819052610af060a05260c0526009805465ffffffffffff19166505780af0057817905561076c60e0526105dc610100526102586101205261106861014052600a80546001600160401b031916671068025805dc076c178155600b805460c861ffff19909116179055600d8054731676f2a357cc4faeaded4a99aa0ab0a29cb7d9966001600160a01b031991821617909155600e805473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489083168117909155600f8054831690911790556101c060405273167b89bc4c2b56e963e2980d8e49d74a49e0a44161016081905273e3706fff58a0dd7e3d217d33768a02b35128534861018081905273d0faa93480f564dc51ea10f05560aa9d5ea8bfbe6101a08190526010805485169093179092556011805484169091179055601280549092161781556013805461ff00191690556014929092556103e891620001609162000540565b62000170906305f5e10062000558565b6200017d90600562000558565b6200018991906200057a565b60185560646200019c6012600a62000540565b620001ac906305f5e10062000558565b620001b990600162000558565b620001c591906200057a565b601955601a805461ffff60ff60b01b0119169055620001e76012600a62000540565b620001f7906305f5e10062000558565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023a6012600a62000540565b6200024a906305f5e10062000558565b60405190815260200160405180910390a3600080546001600160a01b0319163317905546603803620002a657600b805462010000600160b01b0319167510ed43c718714eb63d5aa57b78b54704e256024e0000179055620003a9565b46606103620002df57600b805462010000600160b01b031916759ac64cc6e4415144c455bd8e4837fea55603e5c30000179055620003a9565b4660011480620002ef5750466004145b80620002fb5750466003145b156200033157600b805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055620003a9565b4661a86a036200036b57600b805462010000600160b01b0319167560ae616a2155ee3d9a68541ba4544862310933d40000179055620003a9565b4660fa03620003a457600b805462010000600160b01b03191675f491e7b69e4244ad4002bc14e878a34207e38c290000179055620003a9565b600080fd5b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054821683179055855490941685526008909252909220805490911690911790556200059d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004825781600019048211156200046657620004666200042b565b808516156200047457918102915b93841c939080029062000446565b509250929050565b6000826200049b575060016200053a565b81620004aa575060006200053a565b8160018114620004c35760028114620004ce57620004ee565b60019150506200053a565b60ff841115620004e257620004e26200042b565b50506001821b6200053a565b5060208310610133831016604e8410600b841016171562000513575081810a6200053a565b6200051f838362000441565b80600019048211156200053657620005366200042b565b0290505b92915050565b60006200055160ff8416836200048a565b9392505050565b60008160001904831182151516156200057557620005756200042b565b500290565b6000826200059857634e487b7160e01b600052601260045260246000fd5b500490565b614be380620005ad6000396000f3fe60806040526004361061037a5760003560e01c80634fbee193116101d157806395d89b4111610102578063dd62ed3e116100a0578063eec2744e1161006f578063eec2744e14610af7578063f94aa1b414610b17578063fdb78c0e14610b6e578063fe575a8714610b8d57600080fd5b8063dd62ed3e14610a66578063e4fcfd1814610aac578063eafb5a3c14610ac2578063ee5d9c2d14610ae257600080fd5b8063b1b08f71116100dc578063b1b08f7114610604578063b3d514fb146109c5578063cab5ebea146109db578063cf847706146109fb57600080fd5b806395d89b411461093f578063a9059cbb14610985578063aa22b172146109a557600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d757806389a30271146108f55780638a63bd9b146109155780638a8c523c1461092a57600080fd5b8063715018a61461088257806375cb1bd11461089757806380c581d1146108b757600080fd5b80635c24b074116101ab5780635c24b074146107de5780635cce86cd146107fe5780636ebd00781461083757806370a082311461084c57600080fd5b80634fbee1931461076657806350a8e0161461079f578063590ffdce146107be57600080fd5b80632610eaca116102ab57806333251a0b116102495780633f3cf56c116102235780633f3cf56c146106ec578063452ed4f11461070c5780634ada218b1461072c5780634fb2e45d1461074657600080fd5b806333251a0b1461068c57806334cd8260146106ac57806336fddb04146106cc57600080fd5b80632cee7602116102855780632cee76021461061a5780632e8fa8211461063a578063313ce5671461065057806332cde6641461066c57600080fd5b80632610eaca146105c457806329dd8798146105e45780632b28fc7a1461060457600080fd5b8063095ea7b31161031857806318160ddd116102f257806318160ddd1461054f5780631cc43f071461056457806323b872dd1461058457806326003957146105a457600080fd5b8063095ea7b3146104ea578063098f8b021461051a5780630fa604e41461053a57600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d924146104a457806309231602146104ca57600080fd5b806303fd2a45146103865780630445b667146103b957806305bbedb6146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60165481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f836600461448d565b610bad565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152601581527f57696665204368616e67696e67204361706974616c000000000000000000000060208201525b6040516103b091906144df565b3480156104b057600080fd5b50600b5461039c906201000090046001600160a01b031681565b3480156104d657600080fd5b506103fd6104e5366004614534565b610c86565b3480156104f657600080fd5b5061050a61050536600461454d565b610da5565b60405190151581526020016103b0565b34801561052657600080fd5b506103fd610535366004614534565b610dbc565b34801561054657600080fd5b506103cf6113ce565b34801561055b57600080fd5b506103cf6113ee565b34801561057057600080fd5b506103fd61057f366004614579565b611430565b34801561059057600080fd5b5061050a61059f366004614634565b611585565b3480156105b057600080fd5b506103fd6105bf366004614675565b6115fd565b3480156105d057600080fd5b506103fd6105df366004614579565b61174c565b3480156105f057600080fd5b506103fd6105ff366004614697565b6118b6565b34801561061057600080fd5b506103cf6107d081565b34801561062657600080fd5b506103fd61063536600461454d565b61199f565b34801561064657600080fd5b506103cf60175481565b34801561065c57600080fd5b50604051601281526020016103b0565b34801561067857600080fd5b506103fd61068736600461470a565b611a41565b34801561069857600080fd5b506103fd6106a736600461474d565b611b7c565b3480156106b857600080fd5b506103fd6106c736600461476a565b611c1c565b3480156106d857600080fd5b506103fd6106e73660046147a5565b611cd9565b3480156106f857600080fd5b506103fd610707366004614675565b611d52565b34801561071857600080fd5b50600c5461039c906001600160a01b031681565b34801561073857600080fd5b50601a5461050a9060ff1681565b34801561075257600080fd5b506103fd61076136600461474d565b611ea2565b34801561077257600080fd5b5061050a61078136600461474d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ab57600080fd5b50601a5461050a90610100900460ff1681565b3480156107ca57600080fd5b506103fd6107d93660046147a5565b6120d8565b3480156107ea57600080fd5b506103fd6107f936600461474d565b612151565b34801561080a57600080fd5b5061050a61081936600461474d565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084357600080fd5b506103cf61224c565b34801561085857600080fd5b506103cf61086736600461474d565b6001600160a01b031660009081526001602052604090205490565b34801561088e57600080fd5b506103fd612267565b3480156108a357600080fd5b506103fd6108b23660046147d3565b612322565b3480156108c357600080fd5b506103fd6108d23660046147a5565b6123c7565b3480156108e357600080fd5b506000546001600160a01b031661039c565b34801561090157600080fd5b50600e5461039c906001600160a01b031681565b34801561092157600080fd5b5061050a612576565b34801561093657600080fd5b506103fd6125eb565b34801561094b57600080fd5b5060408051808201909152600481527f57494645000000000000000000000000000000000000000000000000000000006020820152610497565b34801561099157600080fd5b5061050a6109a036600461454d565b612853565b3480156109b157600080fd5b506103fd6109c036600461470a565b61286a565b3480156109d157600080fd5b506103cf610b5481565b3480156109e757600080fd5b506103fd6109f636600461481e565b6129b6565b348015610a0757600080fd5b50600a54610a389061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a7257600080fd5b506103cf610a8136600461483b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ab857600080fd5b506103cf60145481565b348015610ace57600080fd5b506103fd610add36600461474d565b612a58565b348015610aee57600080fd5b506103fd612e35565b348015610b0357600080fd5b506103fd610b123660046147a5565b612ff4565b348015610b2357600080fd5b50601054601154601254610b44926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b7a57600080fd5b5060135461050a90610100900460ff1681565b348015610b9957600080fd5b5061050a610ba836600461474d565b61309c565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c5090859085906004016148ad565b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60c8811015610d255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf7565b601a546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b5050505050565b6000610db233848461312a565b5060015b92915050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615610e775760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610bf7565b600f546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906148d1565b11610f4a5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206d757374206861766520555344432e00000000000000006044820152606401610bf7565b610f566012600a6149fd565b610f609082614a0c565b336000908152600160205260409020541015610fbe5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bf7565b600b60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190614a2b565b600e546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b5461112f9291821691620100009091041660001961312a565b600b5461114f9030906201000090046001600160a01b031660001961312a565b600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190614a48565b50601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112366012600a6149fd565b6112409082614a0c565b905061125433308360008060006001613237565b50600b54600e54600f546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b036201000090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f691906148d1565b306000908152600160205260409020546000805460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0396871660048201529486166024860152604485019390935260648401919091526084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190614a65565b5050506113cb6125eb565b50565b60006113dc6012600a6149fd565b6019546113e99190614a93565b905090565b60006113fc6012600a6149fd565b61140a906305f5e100614a0c565b60000361141657600080fd5b6114226012600a6149fd565b6113e9906305f5e100614a0c565b6000546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146114cf5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff161015611580576114ea6012600a6149fd565b828260ff16815181106114ff576114ff614ace565b60200260200101516115119190614a0c565b33600090815260016020526040902054101561152c57600080fd5b61156e838260ff168151811061154457611544614ace565b6020026020010151838360ff168151811061156157611561614ace565b602002602001015161199f565b8061157881614afd565b9150506114d2565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ea576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115e4908490614b1c565b90915550505b6115f5848484613477565b949350505050565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60646116596012600a6149fd565b611667906305f5e100614a0c565b6116719190614a93565b818361167f6012600a6149fd565b61168d906305f5e100614a0c565b6116979190614a0c565b6116a19190614a93565b10156117155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bf7565b80826117236012600a6149fd565b611731906305f5e100614a0c565b61173b9190614a0c565b6117459190614a93565b6019555050565b6000546001600160a01b0316331461179a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146117eb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff16101561158057818160ff168151811061180f5761180f614ace565b6020026020010151611836336001600160a01b031660009081526001602052604090205490565b101561184157600080fd5b6118a333848360ff168151811061185a5761185a614ace565b60200260200101516012600a61187091906149fd565b858560ff168151811061188557611885614ace565b60200260200101516118979190614a0c565b60008060006001613237565b50806118ae81614afd565b9150506117ee565b6000546001600160a01b031633146119045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561198157600080fd5b505af1158015611995573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146119ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615611a1757600080fd5b611a236012600a6149fd565b611a2d9082614a0c565b905061158033838360008060006001613237565b6000546001600160a01b03163314611a8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6107d08361ffff1611158015611aab5750610b548261ffff1611155b8015611abd57506107d08161ffff1611155b611b095760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf7565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611bca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d70565b6000546001600160a01b03163314611c6a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b8385611c786012600a6149fd565b611c86906305f5e100614a0c565b611c909190614a0c565b611c9a9190614a93565b6016558183611cab6012600a6149fd565b611cb9906305f5e100614a0c565b611cc39190614a0c565b611ccd9190614a93565b60175560145550505050565b6000546001600160a01b03163314611d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611da05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6103e8611daf6012600a6149fd565b611dbd906305f5e100614a0c565b611dc79190614a93565b8183611dd56012600a6149fd565b611de3906305f5e100614a0c565b611ded9190614a0c565b611df79190614a93565b1015611e6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf7565b8082611e796012600a6149fd565b611e87906305f5e100614a0c565b611e919190614a0c565b611e9b9190614a93565b6018555050565b6000546001600160a01b03163314611ef05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b038116611f6c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161200a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b60008054612023916001600160a01b03909116906120d8565b61202e8160016120d8565b600080546001600160a01b03168152600160205260409020541561207557600080546001600160a01b0316808252600160205260409091205461207391908390611897565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146121265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461219f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff16156121b457600080fd5b306001600160a01b0382160361220c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf7565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600061225a6012600a6149fd565b6018546113e99190614a93565b6000546001600160a01b031633146122b55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600080546122ce916001600160a01b03909116906120d8565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601080546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155601180549385169382169390931790925560128054919093169116179055565b6000546001600160a01b031633146124155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b801515600003612491576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c50565b600354156124f8576203f480600354426124ab9190614b1c565b116124f85760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf7565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c50565b5050565b600080546001600160a01b031633146125c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600b546125e59030906201000090046001600160a01b031660001961312a565b50600190565b6000546001600160a01b031633146126395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a5460ff161561268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf7565b601a54610100900460ff166126e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf7565b601a546201000090046001600160a01b031661272957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156127b457600080fd5b505af19250505080156127c5575060015b50601a805460ff19166001179055600c5461271090612802906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61280d90600a614a0c565b6128179190614a93565b601655600c546001600160a01b031660009081526001602052604090205461271090612844906019614a0c565b61284e9190614a93565b601755565b6000612860338484613477565b5060019392505050565b6000546001600160a01b031633146128b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600a805461ffff8581167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000085831602177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000008483160217909155600b5416816129328486614b33565b61293c9190614b33565b6129469190614b33565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546129949162010000820481169116614b33565b600a5461ffff9182166601000000000000909104909116111561158057600080fd5b6000546001600160a01b03163314612a045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a4d90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0f9190614a2b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c079190614a2b565b90506001600160a01b038116612db057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c799190614a2b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cea9190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d739190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612de4565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03858116820292909217928390556115809230929190041660001961312a565b6000546001600160a01b03163314612e835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff1615612edb5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf7565b600f546000546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039283169263a9059cbb92169083906370a0823190602401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d91906148d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612fd0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb9190614a48565b6000546001600160a01b031633146130425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db69190614a48565b6001600160a01b0383166131805760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0382166131d65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff166132e3576132538888613932565b601a54610100900460ff1615801561327057506132708888613a90565b156132e35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6132ed8888613a90565b156133a057601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613389575060408051601f3d908101601f1916820190925261338691810190614a48565b60015b61339257600080fd5b90508061339e57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906133c8908490614b1c565b9091555060009050856133db57866133e7565b6133e78986868a613b65565b6001600160a01b038916600090815260016020526040812080549293508392909190613414908490614b59565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166134f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0383166135715760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b600082116135e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0384166000908152600260205260408120548190819060ff16156136155760019250613643565b6001600160a01b03861660009081526002602052604090205460ff161561363f5760019150613643565b5060015b61364d8787613a90565b1561385957601a5460ff166136a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf7565b82806136ad5750815b15613771576001600160a01b03871660009081526006602052604090205460ff161580156136f457506001600160a01b03861660009081526006602052604090205460ff16155b15613771576018548511156137715760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf7565b600b546001600160a01b03878116620100009092041614801590613793575081155b15613859576001600160a01b03861660009081526006602052604090205460ff1661385957601954856137db886001600160a01b031660009081526001602052604090205490565b6137e59190614b59565b11156138595760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b03871660009081526005602052604090205460019060ff168061389b57506001600160a01b03871660009081526005602052604090205460ff165b156138a4575060005b82156139175760135460ff161580156138c45750601354610100900460ff165b1561391757426014546015546138da9190614b59565b10156139175730600090815260016020526040902054601654811061391557601754811061390757506017545b61391081613c3c565b426015555b505b61392688888884888888613237565b98975050505050505050565b601a54610100900460ff16156139b05760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6139ba8282613a90565b1580156139d45750600c546001600160a01b038281169116145b15612572576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff001916610100179081905562010000900416613a4957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b03848116911614801590613abd57506000546001600160a01b03838116911614155b8015613ad457506000546001600160a01b03163214155b8015613af957506001600160a01b03821660009081526008602052604090205460ff16155b8015613b1e57506001600160a01b03831660009081526008602052604090205460ff16155b8015613b3557506001600160a01b03821661dead14155b8015613b4957506001600160a01b03821615155b8015613b5e57506001600160a01b0383163014155b9392505050565b6000808415613b7b575060095461ffff16613ba5565b8315613b94575060095462010000900461ffff16613ba5565b50600954640100000000900461ffff165b6000612710613bb48386614a0c565b613bbe9190614a93565b30600090815260016020526040812080549293508392909190613be2908490614b59565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613c318185614b1c565b979650505050505050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613c9d5750614365565b306000908152600460209081526040808320600b546201000090046001600160a01b0316845290915290205460001914613d0257306000908152600460209081526040808320600b546201000090046001600160a01b03168452909152902060001990555b600f54600b546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152620100009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa158015613d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9b91906148d1565b14613e3b57600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015613e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e399190614a48565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e7057613e70614ace565b6001600160a01b039283166020918202929092010152600e54825191169082906001908110613ea157613ea1614ace565b6001600160a01b039283166020918202929092010152600b54601a546040517f5c11d7950000000000000000000000000000000000000000000000000000000081526201000092839004841693635c11d79593613f109389936000938993909204909116904290600401614b71565b600060405180830381600087803b158015613f2a57600080fd5b505af1158015613f3e573d6000803e3d6000fd5b50505050601a60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f9257600080fd5b505af1158015613fa6573d6000803e3d6000fd5b5050600f546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561400e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403291906148d1565b90506000836060015161ffff16846020015161ffff16836140539190614a0c565b61405d9190614a93565b6060850151600b5491925060009161ffff9182169161407d911685614a0c565b6140879190614a93565b90506000856060015161ffff16866040015161ffff16856140a89190614a0c565b6140b29190614a93565b90506000816140c18486614b59565b6140cb9190614b59565b6140d59086614b1c565b602088015190915061ffff161561417a57600f54600d546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015614154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141789190614a48565b505b865161ffff161561421957600f546010546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142179190614a48565b505b602087015161ffff16156142bb57600f546011546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810187905291169063a9059cbb906044016020604051808303816000875af1158015614295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b99190614a48565b505b604087015161ffff161561435d57600f546012546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015614337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061435b9190614a48565b505b505050505050505b506013805460ff19169055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156143ca576143ca614372565b604052919050565b600067ffffffffffffffff8211156143ec576143ec614372565b5060051b60200190565b6001600160a01b03811681146113cb57600080fd5b600082601f83011261441c57600080fd5b8135602061443161442c836143d2565b6143a1565b82815260059290921b8401810191818101908684111561445057600080fd5b8286015b84811015614474578035614467816143f6565b8352918301918301614454565b509695505050505050565b80151581146113cb57600080fd5b600080604083850312156144a057600080fd5b823567ffffffffffffffff8111156144b757600080fd5b6144c38582860161440b565b92505060208301356144d48161447f565b809150509250929050565b600060208083528351808285015260005b8181101561450c578581018301518582016040015282016144f0565b8181111561451e576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561454657600080fd5b5035919050565b6000806040838503121561456057600080fd5b823561456b816143f6565b946020939093013593505050565b6000806040838503121561458c57600080fd5b823567ffffffffffffffff808211156145a457600080fd5b6145b08683870161440b565b93506020915081850135818111156145c757600080fd5b85019050601f810186136145da57600080fd5b80356145e861442c826143d2565b81815260059190911b8201830190838101908883111561460757600080fd5b928401925b828410156146255783358252928401929084019061460c565b80955050505050509250929050565b60008060006060848603121561464957600080fd5b8335614654816143f6565b92506020840135614664816143f6565b929592945050506040919091013590565b6000806040838503121561468857600080fd5b50508035926020909101359150565b600080600080608085870312156146ad57600080fd5b84356146b88161447f565b935060208501356146c88161447f565b925060408501356146d88161447f565b915060608501356146e88161447f565b939692955090935050565b803561ffff8116811461470557600080fd5b919050565b60008060006060848603121561471f57600080fd5b614728846146f3565b9250614736602085016146f3565b9150614744604085016146f3565b90509250925092565b60006020828403121561475f57600080fd5b8135613b5e816143f6565b600080600080600060a0868803121561478257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156147b857600080fd5b82356147c3816143f6565b915060208301356144d48161447f565b6000806000606084860312156147e857600080fd5b83356147f3816143f6565b92506020840135614803816143f6565b91506040840135614813816143f6565b809150509250925092565b60006020828403121561483057600080fd5b8135613b5e8161447f565b6000806040838503121561484e57600080fd5b8235614859816143f6565b915060208301356144d4816143f6565b600081518084526020808501945080840160005b838110156148a25781516001600160a01b03168752958201959082019060010161487d565b509495945050505050565b6040815260006148c06040830185614869565b905082151560208301529392505050565b6000602082840312156148e357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561495457816000190482111561493a5761493a6148ea565b8085161561494757918102915b93841c939080029061491e565b509250929050565b60008261496b57506001610db6565b8161497857506000610db6565b816001811461498e5760028114614998576149b4565b6001915050610db6565b60ff8411156149a9576149a96148ea565b50506001821b610db6565b5060208310610133831016604e8410600b84101617156149d7575081810a610db6565b6149e18383614919565b80600019048211156149f5576149f56148ea565b029392505050565b6000613b5e60ff84168361495c565b6000816000190483118215151615614a2657614a266148ea565b500290565b600060208284031215614a3d57600080fd5b8151613b5e816143f6565b600060208284031215614a5a57600080fd5b8151613b5e8161447f565b600080600060608486031215614a7a57600080fd5b8351925060208401519150604084015190509250925092565b600082614ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614b1357614b136148ea565b60010192915050565b600082821015614b2e57614b2e6148ea565b500390565b600061ffff808316818516808303821115614b5057614b506148ea565b01949350505050565b60008219821115614b6c57614b6c6148ea565b500190565b85815284602082015260a060408201526000614b9060a0830186614869565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212206f78ea16a0aeaae945a61beb3c5be92dfbae67dfd160f9c46395f569ae42d6ba64736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80634fbee193116101d157806395d89b4111610102578063dd62ed3e116100a0578063eec2744e1161006f578063eec2744e14610af7578063f94aa1b414610b17578063fdb78c0e14610b6e578063fe575a8714610b8d57600080fd5b8063dd62ed3e14610a66578063e4fcfd1814610aac578063eafb5a3c14610ac2578063ee5d9c2d14610ae257600080fd5b8063b1b08f71116100dc578063b1b08f7114610604578063b3d514fb146109c5578063cab5ebea146109db578063cf847706146109fb57600080fd5b806395d89b411461093f578063a9059cbb14610985578063aa22b172146109a557600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d757806389a30271146108f55780638a63bd9b146109155780638a8c523c1461092a57600080fd5b8063715018a61461088257806375cb1bd11461089757806380c581d1146108b757600080fd5b80635c24b074116101ab5780635c24b074146107de5780635cce86cd146107fe5780636ebd00781461083757806370a082311461084c57600080fd5b80634fbee1931461076657806350a8e0161461079f578063590ffdce146107be57600080fd5b80632610eaca116102ab57806333251a0b116102495780633f3cf56c116102235780633f3cf56c146106ec578063452ed4f11461070c5780634ada218b1461072c5780634fb2e45d1461074657600080fd5b806333251a0b1461068c57806334cd8260146106ac57806336fddb04146106cc57600080fd5b80632cee7602116102855780632cee76021461061a5780632e8fa8211461063a578063313ce5671461065057806332cde6641461066c57600080fd5b80632610eaca146105c457806329dd8798146105e45780632b28fc7a1461060457600080fd5b8063095ea7b31161031857806318160ddd116102f257806318160ddd1461054f5780631cc43f071461056457806323b872dd1461058457806326003957146105a457600080fd5b8063095ea7b3146104ea578063098f8b021461051a5780630fa604e41461053a57600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d924146104a457806309231602146104ca57600080fd5b806303fd2a45146103865780630445b667146103b957806305bbedb6146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60165481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f836600461448d565b610bad565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152601581527f57696665204368616e67696e67204361706974616c000000000000000000000060208201525b6040516103b091906144df565b3480156104b057600080fd5b50600b5461039c906201000090046001600160a01b031681565b3480156104d657600080fd5b506103fd6104e5366004614534565b610c86565b3480156104f657600080fd5b5061050a61050536600461454d565b610da5565b60405190151581526020016103b0565b34801561052657600080fd5b506103fd610535366004614534565b610dbc565b34801561054657600080fd5b506103cf6113ce565b34801561055b57600080fd5b506103cf6113ee565b34801561057057600080fd5b506103fd61057f366004614579565b611430565b34801561059057600080fd5b5061050a61059f366004614634565b611585565b3480156105b057600080fd5b506103fd6105bf366004614675565b6115fd565b3480156105d057600080fd5b506103fd6105df366004614579565b61174c565b3480156105f057600080fd5b506103fd6105ff366004614697565b6118b6565b34801561061057600080fd5b506103cf6107d081565b34801561062657600080fd5b506103fd61063536600461454d565b61199f565b34801561064657600080fd5b506103cf60175481565b34801561065c57600080fd5b50604051601281526020016103b0565b34801561067857600080fd5b506103fd61068736600461470a565b611a41565b34801561069857600080fd5b506103fd6106a736600461474d565b611b7c565b3480156106b857600080fd5b506103fd6106c736600461476a565b611c1c565b3480156106d857600080fd5b506103fd6106e73660046147a5565b611cd9565b3480156106f857600080fd5b506103fd610707366004614675565b611d52565b34801561071857600080fd5b50600c5461039c906001600160a01b031681565b34801561073857600080fd5b50601a5461050a9060ff1681565b34801561075257600080fd5b506103fd61076136600461474d565b611ea2565b34801561077257600080fd5b5061050a61078136600461474d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ab57600080fd5b50601a5461050a90610100900460ff1681565b3480156107ca57600080fd5b506103fd6107d93660046147a5565b6120d8565b3480156107ea57600080fd5b506103fd6107f936600461474d565b612151565b34801561080a57600080fd5b5061050a61081936600461474d565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084357600080fd5b506103cf61224c565b34801561085857600080fd5b506103cf61086736600461474d565b6001600160a01b031660009081526001602052604090205490565b34801561088e57600080fd5b506103fd612267565b3480156108a357600080fd5b506103fd6108b23660046147d3565b612322565b3480156108c357600080fd5b506103fd6108d23660046147a5565b6123c7565b3480156108e357600080fd5b506000546001600160a01b031661039c565b34801561090157600080fd5b50600e5461039c906001600160a01b031681565b34801561092157600080fd5b5061050a612576565b34801561093657600080fd5b506103fd6125eb565b34801561094b57600080fd5b5060408051808201909152600481527f57494645000000000000000000000000000000000000000000000000000000006020820152610497565b34801561099157600080fd5b5061050a6109a036600461454d565b612853565b3480156109b157600080fd5b506103fd6109c036600461470a565b61286a565b3480156109d157600080fd5b506103cf610b5481565b3480156109e757600080fd5b506103fd6109f636600461481e565b6129b6565b348015610a0757600080fd5b50600a54610a389061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a7257600080fd5b506103cf610a8136600461483b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ab857600080fd5b506103cf60145481565b348015610ace57600080fd5b506103fd610add36600461474d565b612a58565b348015610aee57600080fd5b506103fd612e35565b348015610b0357600080fd5b506103fd610b123660046147a5565b612ff4565b348015610b2357600080fd5b50601054601154601254610b44926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b7a57600080fd5b5060135461050a90610100900460ff1681565b348015610b9957600080fd5b5061050a610ba836600461474d565b61309c565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c5090859085906004016148ad565b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60c8811015610d255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf7565b601a546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b5050505050565b6000610db233848461312a565b5060015b92915050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615610e775760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610bf7565b600f546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906148d1565b11610f4a5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206d757374206861766520555344432e00000000000000006044820152606401610bf7565b610f566012600a6149fd565b610f609082614a0c565b336000908152600160205260409020541015610fbe5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bf7565b600b60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190614a2b565b600e546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b5461112f9291821691620100009091041660001961312a565b600b5461114f9030906201000090046001600160a01b031660001961312a565b600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190614a48565b50601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112366012600a6149fd565b6112409082614a0c565b905061125433308360008060006001613237565b50600b54600e54600f546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b036201000090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f691906148d1565b306000908152600160205260409020546000805460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0396871660048201529486166024860152604485019390935260648401919091526084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190614a65565b5050506113cb6125eb565b50565b60006113dc6012600a6149fd565b6019546113e99190614a93565b905090565b60006113fc6012600a6149fd565b61140a906305f5e100614a0c565b60000361141657600080fd5b6114226012600a6149fd565b6113e9906305f5e100614a0c565b6000546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146114cf5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff161015611580576114ea6012600a6149fd565b828260ff16815181106114ff576114ff614ace565b60200260200101516115119190614a0c565b33600090815260016020526040902054101561152c57600080fd5b61156e838260ff168151811061154457611544614ace565b6020026020010151838360ff168151811061156157611561614ace565b602002602001015161199f565b8061157881614afd565b9150506114d2565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ea576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115e4908490614b1c565b90915550505b6115f5848484613477565b949350505050565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60646116596012600a6149fd565b611667906305f5e100614a0c565b6116719190614a93565b818361167f6012600a6149fd565b61168d906305f5e100614a0c565b6116979190614a0c565b6116a19190614a93565b10156117155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bf7565b80826117236012600a6149fd565b611731906305f5e100614a0c565b61173b9190614a0c565b6117459190614a93565b6019555050565b6000546001600160a01b0316331461179a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146117eb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff16101561158057818160ff168151811061180f5761180f614ace565b6020026020010151611836336001600160a01b031660009081526001602052604090205490565b101561184157600080fd5b6118a333848360ff168151811061185a5761185a614ace565b60200260200101516012600a61187091906149fd565b858560ff168151811061188557611885614ace565b60200260200101516118979190614a0c565b60008060006001613237565b50806118ae81614afd565b9150506117ee565b6000546001600160a01b031633146119045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561198157600080fd5b505af1158015611995573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146119ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615611a1757600080fd5b611a236012600a6149fd565b611a2d9082614a0c565b905061158033838360008060006001613237565b6000546001600160a01b03163314611a8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6107d08361ffff1611158015611aab5750610b548261ffff1611155b8015611abd57506107d08161ffff1611155b611b095760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf7565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611bca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d70565b6000546001600160a01b03163314611c6a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b8385611c786012600a6149fd565b611c86906305f5e100614a0c565b611c909190614a0c565b611c9a9190614a93565b6016558183611cab6012600a6149fd565b611cb9906305f5e100614a0c565b611cc39190614a0c565b611ccd9190614a93565b60175560145550505050565b6000546001600160a01b03163314611d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611da05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6103e8611daf6012600a6149fd565b611dbd906305f5e100614a0c565b611dc79190614a93565b8183611dd56012600a6149fd565b611de3906305f5e100614a0c565b611ded9190614a0c565b611df79190614a93565b1015611e6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf7565b8082611e796012600a6149fd565b611e87906305f5e100614a0c565b611e919190614a0c565b611e9b9190614a93565b6018555050565b6000546001600160a01b03163314611ef05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b038116611f6c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161200a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b60008054612023916001600160a01b03909116906120d8565b61202e8160016120d8565b600080546001600160a01b03168152600160205260409020541561207557600080546001600160a01b0316808252600160205260409091205461207391908390611897565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146121265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461219f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff16156121b457600080fd5b306001600160a01b0382160361220c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf7565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600061225a6012600a6149fd565b6018546113e99190614a93565b6000546001600160a01b031633146122b55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600080546122ce916001600160a01b03909116906120d8565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601080546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155601180549385169382169390931790925560128054919093169116179055565b6000546001600160a01b031633146124155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b801515600003612491576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c50565b600354156124f8576203f480600354426124ab9190614b1c565b116124f85760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf7565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c50565b5050565b600080546001600160a01b031633146125c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600b546125e59030906201000090046001600160a01b031660001961312a565b50600190565b6000546001600160a01b031633146126395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a5460ff161561268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf7565b601a54610100900460ff166126e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf7565b601a546201000090046001600160a01b031661272957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156127b457600080fd5b505af19250505080156127c5575060015b50601a805460ff19166001179055600c5461271090612802906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61280d90600a614a0c565b6128179190614a93565b601655600c546001600160a01b031660009081526001602052604090205461271090612844906019614a0c565b61284e9190614a93565b601755565b6000612860338484613477565b5060019392505050565b6000546001600160a01b031633146128b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600a805461ffff8581167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000085831602177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000008483160217909155600b5416816129328486614b33565b61293c9190614b33565b6129469190614b33565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546129949162010000820481169116614b33565b600a5461ffff9182166601000000000000909104909116111561158057600080fd5b6000546001600160a01b03163314612a045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a4d90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0f9190614a2b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c079190614a2b565b90506001600160a01b038116612db057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c799190614a2b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cea9190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d739190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612de4565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03858116820292909217928390556115809230929190041660001961312a565b6000546001600160a01b03163314612e835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff1615612edb5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf7565b600f546000546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039283169263a9059cbb92169083906370a0823190602401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d91906148d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612fd0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb9190614a48565b6000546001600160a01b031633146130425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db69190614a48565b6001600160a01b0383166131805760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0382166131d65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff166132e3576132538888613932565b601a54610100900460ff1615801561327057506132708888613a90565b156132e35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6132ed8888613a90565b156133a057601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613389575060408051601f3d908101601f1916820190925261338691810190614a48565b60015b61339257600080fd5b90508061339e57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906133c8908490614b1c565b9091555060009050856133db57866133e7565b6133e78986868a613b65565b6001600160a01b038916600090815260016020526040812080549293508392909190613414908490614b59565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166134f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0383166135715760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b600082116135e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0384166000908152600260205260408120548190819060ff16156136155760019250613643565b6001600160a01b03861660009081526002602052604090205460ff161561363f5760019150613643565b5060015b61364d8787613a90565b1561385957601a5460ff166136a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf7565b82806136ad5750815b15613771576001600160a01b03871660009081526006602052604090205460ff161580156136f457506001600160a01b03861660009081526006602052604090205460ff16155b15613771576018548511156137715760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf7565b600b546001600160a01b03878116620100009092041614801590613793575081155b15613859576001600160a01b03861660009081526006602052604090205460ff1661385957601954856137db886001600160a01b031660009081526001602052604090205490565b6137e59190614b59565b11156138595760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b03871660009081526005602052604090205460019060ff168061389b57506001600160a01b03871660009081526005602052604090205460ff165b156138a4575060005b82156139175760135460ff161580156138c45750601354610100900460ff165b1561391757426014546015546138da9190614b59565b10156139175730600090815260016020526040902054601654811061391557601754811061390757506017545b61391081613c3c565b426015555b505b61392688888884888888613237565b98975050505050505050565b601a54610100900460ff16156139b05760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6139ba8282613a90565b1580156139d45750600c546001600160a01b038281169116145b15612572576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff001916610100179081905562010000900416613a4957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b03848116911614801590613abd57506000546001600160a01b03838116911614155b8015613ad457506000546001600160a01b03163214155b8015613af957506001600160a01b03821660009081526008602052604090205460ff16155b8015613b1e57506001600160a01b03831660009081526008602052604090205460ff16155b8015613b3557506001600160a01b03821661dead14155b8015613b4957506001600160a01b03821615155b8015613b5e57506001600160a01b0383163014155b9392505050565b6000808415613b7b575060095461ffff16613ba5565b8315613b94575060095462010000900461ffff16613ba5565b50600954640100000000900461ffff165b6000612710613bb48386614a0c565b613bbe9190614a93565b30600090815260016020526040812080549293508392909190613be2908490614b59565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613c318185614b1c565b979650505050505050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613c9d5750614365565b306000908152600460209081526040808320600b546201000090046001600160a01b0316845290915290205460001914613d0257306000908152600460209081526040808320600b546201000090046001600160a01b03168452909152902060001990555b600f54600b546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152620100009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa158015613d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9b91906148d1565b14613e3b57600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015613e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e399190614a48565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e7057613e70614ace565b6001600160a01b039283166020918202929092010152600e54825191169082906001908110613ea157613ea1614ace565b6001600160a01b039283166020918202929092010152600b54601a546040517f5c11d7950000000000000000000000000000000000000000000000000000000081526201000092839004841693635c11d79593613f109389936000938993909204909116904290600401614b71565b600060405180830381600087803b158015613f2a57600080fd5b505af1158015613f3e573d6000803e3d6000fd5b50505050601a60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f9257600080fd5b505af1158015613fa6573d6000803e3d6000fd5b5050600f546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561400e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403291906148d1565b90506000836060015161ffff16846020015161ffff16836140539190614a0c565b61405d9190614a93565b6060850151600b5491925060009161ffff9182169161407d911685614a0c565b6140879190614a93565b90506000856060015161ffff16866040015161ffff16856140a89190614a0c565b6140b29190614a93565b90506000816140c18486614b59565b6140cb9190614b59565b6140d59086614b1c565b602088015190915061ffff161561417a57600f54600d546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015614154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141789190614a48565b505b865161ffff161561421957600f546010546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142179190614a48565b505b602087015161ffff16156142bb57600f546011546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810187905291169063a9059cbb906044016020604051808303816000875af1158015614295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b99190614a48565b505b604087015161ffff161561435d57600f546012546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015614337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061435b9190614a48565b505b505050505050505b506013805460ff19169055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156143ca576143ca614372565b604052919050565b600067ffffffffffffffff8211156143ec576143ec614372565b5060051b60200190565b6001600160a01b03811681146113cb57600080fd5b600082601f83011261441c57600080fd5b8135602061443161442c836143d2565b6143a1565b82815260059290921b8401810191818101908684111561445057600080fd5b8286015b84811015614474578035614467816143f6565b8352918301918301614454565b509695505050505050565b80151581146113cb57600080fd5b600080604083850312156144a057600080fd5b823567ffffffffffffffff8111156144b757600080fd5b6144c38582860161440b565b92505060208301356144d48161447f565b809150509250929050565b600060208083528351808285015260005b8181101561450c578581018301518582016040015282016144f0565b8181111561451e576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561454657600080fd5b5035919050565b6000806040838503121561456057600080fd5b823561456b816143f6565b946020939093013593505050565b6000806040838503121561458c57600080fd5b823567ffffffffffffffff808211156145a457600080fd5b6145b08683870161440b565b93506020915081850135818111156145c757600080fd5b85019050601f810186136145da57600080fd5b80356145e861442c826143d2565b81815260059190911b8201830190838101908883111561460757600080fd5b928401925b828410156146255783358252928401929084019061460c565b80955050505050509250929050565b60008060006060848603121561464957600080fd5b8335614654816143f6565b92506020840135614664816143f6565b929592945050506040919091013590565b6000806040838503121561468857600080fd5b50508035926020909101359150565b600080600080608085870312156146ad57600080fd5b84356146b88161447f565b935060208501356146c88161447f565b925060408501356146d88161447f565b915060608501356146e88161447f565b939692955090935050565b803561ffff8116811461470557600080fd5b919050565b60008060006060848603121561471f57600080fd5b614728846146f3565b9250614736602085016146f3565b9150614744604085016146f3565b90509250925092565b60006020828403121561475f57600080fd5b8135613b5e816143f6565b600080600080600060a0868803121561478257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156147b857600080fd5b82356147c3816143f6565b915060208301356144d48161447f565b6000806000606084860312156147e857600080fd5b83356147f3816143f6565b92506020840135614803816143f6565b91506040840135614813816143f6565b809150509250925092565b60006020828403121561483057600080fd5b8135613b5e8161447f565b6000806040838503121561484e57600080fd5b8235614859816143f6565b915060208301356144d4816143f6565b600081518084526020808501945080840160005b838110156148a25781516001600160a01b03168752958201959082019060010161487d565b509495945050505050565b6040815260006148c06040830185614869565b905082151560208301529392505050565b6000602082840312156148e357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561495457816000190482111561493a5761493a6148ea565b8085161561494757918102915b93841c939080029061491e565b509250929050565b60008261496b57506001610db6565b8161497857506000610db6565b816001811461498e5760028114614998576149b4565b6001915050610db6565b60ff8411156149a9576149a96148ea565b50506001821b610db6565b5060208310610133831016604e8410600b84101617156149d7575081810a610db6565b6149e18383614919565b80600019048211156149f5576149f56148ea565b029392505050565b6000613b5e60ff84168361495c565b6000816000190483118215151615614a2657614a266148ea565b500290565b600060208284031215614a3d57600080fd5b8151613b5e816143f6565b600060208284031215614a5a57600080fd5b8151613b5e8161447f565b600080600060608486031215614a7a57600080fd5b8351925060208401519150604084015190509250925092565b600082614ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614b1357614b136148ea565b60010192915050565b600082821015614b2e57614b2e6148ea565b500390565b600061ffff808316818516808303821115614b5057614b506148ea565b01949350505050565b60008219821115614b6c57614b6c6148ea565b500190565b85815284602082015260a060408201526000614b9060a0830186614869565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212206f78ea16a0aeaae945a61beb3c5be92dfbae67dfd160f9c46395f569ae42d6ba64736f6c634300080d0033

Deployed Bytecode Sourcemap

4194:22298:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5954:73;;;;;;;;;;;;5985:42;5954:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5954:73:0;;;;;;;;6657:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6657:28:0;245:177:1;15423:172:0;;;;;;;;;;-1:-1:-1;15423:172:0;;;;;:::i;:::-;;:::i;:::-;;5302:116;;;;;;;;;;-1:-1:-1;5302:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;2855:6:1;2888:15;;;2870:34;;2940:15;;;2935:2;2920:18;;2913:43;2992:15;;2972:18;;;2965:43;;;;2833:2;2818:18;5302:116:0;2649:365:1;12396:80:0;;;;;;;;;;-1:-1:-1;12468:5:0;;;;;;;;;;;;;;;;;12396:80;;;;;;;:::i;5823:26::-;;;;;;;;;;-1:-1:-1;5823:26:0;;;;;;;-1:-1:-1;;;;;5823:26:0;;;16055:150;;;;;;;;;;-1:-1:-1;16055:150:0;;;;;:::i;:::-;;:::i;13006:159::-;;;;;;;;;;-1:-1:-1;13006:159:0;;;;;:::i;:::-;;:::i;:::-;;;4598:14:1;;4591:22;4573:41;;4561:2;4546:18;13006:159:0;4433:187:1;8553:1167:0;;;;;;;;;;-1:-1:-1;8553:1167:0;;;;;:::i;:::-;;:::i;18456:112::-;;;;;;;;;;;;;:::i;12099:115::-;;;;;;;;;;;;;:::i;9973:397::-;;;;;;;;;;-1:-1:-1;9973:397:0;;;;;:::i;:::-;;:::i;13672:306::-;;;;;;;;;;-1:-1:-1;13672:306:0;;;;;:::i;:::-;;:::i;17509:264::-;;;;;;;;;;-1:-1:-1;17509:264:0;;;;;:::i;:::-;;:::i;24547:418::-;;;;;;;;;;-1:-1:-1;24547:418:0;;;;;:::i;:::-;;:::i;15852:195::-;;;;;;;;;;-1:-1:-1;15852:195:0;;;;;:::i;:::-;;:::i;5620:42::-;;;;;;;;;;;;5658:4;5620:42;;9728:237;;;;;;;;;;-1:-1:-1;9728:237:0;;;;;:::i;:::-;;:::i;6692:25::-;;;;;;;;;;;;;;;;12220:80;;;;;;;;;;-1:-1:-1;12220:80:0;;4984:2;7276:36:1;;7264:2;7249:18;12220:80:0;7134:184:1;16213:397:0;;;;;;;;;;-1:-1:-1;16213:397:0;;;;;:::i;:::-;;:::i;15736:108::-;;;;;;;;;;-1:-1:-1;15736:108:0;;;;;:::i;:::-;;:::i;18576:338::-;;;;;;;;;;-1:-1:-1;18576:338:0;;;;;:::i;:::-;;:::i;17781:140::-;;;;;;;;;;-1:-1:-1;17781:140:0;;;;;:::i;:::-;;:::i;17232:269::-;;;;;;;;;;-1:-1:-1;17232:269:0;;;;;:::i;:::-;;:::i;5856:21::-;;;;;;;;;;-1:-1:-1;5856:21:0;;;;-1:-1:-1;;;;;5856:21:0;;;6849:34;;;;;;;;;;-1:-1:-1;6849:34:0;;;;;;;;10922:623;;;;;;;;;;-1:-1:-1;10922:623:0;;;;;:::i;:::-;;:::i;18067:125::-;;;;;;;;;;-1:-1:-1;18067:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;18156:28:0;18132:4;18156:28;;;:19;:28;;;;;;;;;18067:125;6890:36;;;;;;;;;;-1:-1:-1;6890:36:0;;;;;;;;;;;18200:134;;;;;;;;;;-1:-1:-1;18200:134:0;;;;;:::i;:::-;;:::i;15042:220::-;;;;;;;;;;-1:-1:-1;15042:220:0;;;;;:::i;:::-;;:::i;17929:130::-;;;;;;;;;;-1:-1:-1;17929:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;18021:30:0;17997:4;18021:30;;;:21;:30;;;;;;;;;17929:130;18342:106;;;;;;;;;;;;;:::i;12708:117::-;;;;;;;;;;-1:-1:-1;12708:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12801:16:0;12774:7;12801:16;;;:7;:16;;;;;;;12708:117;11553:193;;;;;;;;;;;;;:::i;16958:266::-;;;;;;;;;;-1:-1:-1;16958:266:0;;;;;:::i;:::-;;:::i;14534:500::-;;;;;;;;;;-1:-1:-1;14534:500:0;;;;;:::i;:::-;;:::i;12482:79::-;;;;;;;;;;-1:-1:-1;12534:7:0;12552:6;-1:-1:-1;;;;;12552:6:0;12482:79;;6034:64;;;;;;;;;;-1:-1:-1;6034:64:0;;;;-1:-1:-1;;;;;6034:64:0;;;13491:173;;;;;;;;;;;;;:::i;23786:544::-;;;;;;;;;;;;;:::i;12306:84::-;;;;;;;;;;-1:-1:-1;12380:7:0;;;;;;;;;;;;;;;;;12306:84;;12833:165;;;;;;;;;;-1:-1:-1;12833:165:0;;;;;:::i;:::-;;:::i;16618:332::-;;;;;;;;;;-1:-1:-1;16618:332:0;;;;;:::i;:::-;;:::i;5669:43::-;;;;;;;;;;;;5708:4;5669:43;;18922:164;;;;;;;;;;-1:-1:-1;18922:164:0;;;;;:::i;:::-;;:::i;5427:154::-;;;;;;;;;;-1:-1:-1;5427:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9955:6:1;9988:15;;;9970:34;;10040:15;;;10035:2;10020:18;;10013:43;10092:15;;;10072:18;;;10065:43;;;;10144:15;;;10139:2;10124:18;;10117:43;9932:3;9917:19;5427:154:0;9722:444:1;12567:133:0;;;;;;;;;;-1:-1:-1;12567:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12669:19:0;;;12651:7;12669:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12567:133;6575:44;;;;;;;;;;;;;;;;13986:540;;;;;;;;;;-1:-1:-1;13986:540:0;;;;;:::i;:::-;;:::i;24338:201::-;;;;;;;;;;;;;:::i;15270:145::-;;;;;;;;;;-1:-1:-1;15270:145:0;;;;;:::i;:::-;;:::i;6258:240::-;;;;;;;;;;-1:-1:-1;6258:240:0;;;;;;;;-1:-1:-1;;;;;6258:240:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10845:15:1;;;10827:34;;10897:15;;;10892:2;10877:18;;10870:43;10949:15;;10929:18;;;10922:43;;;;10754:2;10739:18;6258:240:0;10564:407:1;6529:39:0;;;;;;;;;;-1:-1:-1;6529:39:0;;;;;;;;;;;15603:125;;;;;;;;;;-1:-1:-1;15603:125:0;;;;;:::i;:::-;;:::i;15423:172::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;;;;;;;;;15531:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;15531:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;15569:8;;15579:7;;15531:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15423:172:::0;;:::o;16055:150::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;16139:3:::1;16132;:10;;16124:31;;;::::0;-1:-1:-1;;;16124:31:0;;12360:2:1;16124:31:0::1;::::0;::::1;12342:21:1::0;12399:1;12379:18;;;12372:29;12437:10;12417:18;;;12410:38;12465:18;;16124:31:0::1;12158:331:1::0;16124:31:0::1;16166:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;16166:9:0;;;::::1;-1:-1:-1::0;;;;;16166:9:0::1;::::0;:26:::1;::::0;364:18:1;;16166:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16055:150:::0;:::o;13006:159::-;13081:4;13098:37;13107:10;13119:7;13128:6;13098:8;:37::i;:::-;-1:-1:-1;13153:4:0;13006:159;;;;;:::o;8553:1167::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;8634:13:::1;::::0;;;::::1;;;8633:14;8625:46;;;::::0;-1:-1:-1;;;8625:46:0;;12696:2:1;8625:46:0::1;::::0;::::1;12678:21:1::0;12735:2;12715:18;;;12708:30;12774:21;12754:18;;;12747:49;12813:18;;8625:46:0::1;12494:343:1::0;8625:46:0::1;8690:11;::::0;:36:::1;::::0;;;;8720:4:::1;8690:36;::::0;::::1;160:74:1::0;8729:1:0::1;::::0;-1:-1:-1;;;;;8690:11:0::1;::::0;:21:::1;::::0;133:18:1;;8690:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;8682:78;;;::::0;-1:-1:-1;;;8682:78:0;;13233:2:1;8682:78:0::1;::::0;::::1;13215:21:1::0;13272:2;13252:18;;;13245:30;13311:26;13291:18;;;13284:54;13355:18;;8682:78:0::1;13031:348:1::0;8682:78:0::1;8819:13;4984:2;8819;:13;:::i;:::-;8804:28;::::0;:12;:28:::1;:::i;:::-;8789:10;12774:7:::0;12801:16;;;:7;:16;;;;;;8779:53:::1;;8771:96;;;::::0;-1:-1:-1;;;8771:96:0;;15511:2:1;8771:96:0::1;::::0;::::1;15493:21:1::0;15550:2;15530:18;;;15523:30;15589:32;15569:18;;;15562:60;15639:18;;8771:96:0::1;15309:354:1::0;8771:96:0::1;8900:9;;;;;;;;;-1:-1:-1::0;;;;;8900:9:0::1;-1:-1:-1::0;;;;;8900:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8932:4;::::0;8889:63:::1;::::0;;;;-1:-1:-1;;;;;8932:4:0;;::::1;8889:63;::::0;::::1;16159:34:1::0;8946:4:0::1;16209:18:1::0;;;16202:43;8889:42:0;::::1;::::0;::::1;::::0;16071:18:1;;8889:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8880:6;:72:::0;;;::::1;-1:-1:-1::0;;;;;8880:72:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8963:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;8963:22:0::1;-1:-1:-1::0;8963:22:0::1;::::0;;9007:6;9023:9:::1;::::0;8998:55:::1;::::0;9007:6;;::::1;::::0;9023:9;;;::::1;;-1:-1:-1::0;;8998:8:0::1;:55::i;:::-;9096:9;::::0;9064:62:::1;::::0;9081:4:::1;::::0;9096:9;;::::1;-1:-1:-1::0;;;;;9096:9:0::1;-1:-1:-1::0;;9064:8:0::1;:62::i;:::-;9137:11;::::0;9165:9:::1;::::0;9137:58:::1;::::0;;;;-1:-1:-1;;;;;9165:9:0;;;::::1;::::0;::::1;9137:58;::::0;::::1;16430:74:1::0;-1:-1:-1;;16520:18:1;;;16513:34;9137:11:0;::::1;::::0;:19:::1;::::0;16403:18:1;;9137:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9208:13:0::1;:20:::0;;;::::1;::::0;::::1;::::0;;9257:13:::1;4984:2;9257;:13;:::i;:::-;9241:29;::::0;;::::1;:::i;:::-;;;9281:85;9299:10;9319:4;9326:12;9340:5;9347::::0;9354::::1;9361:4;9281:17;:85::i;:::-;-1:-1:-1::0;9379:9:0::1;::::0;9416:4:::1;::::0;9463:11:::1;::::0;:36:::1;::::0;;;;9443:4:::1;9463:36;::::0;::::1;160:74:1::0;;;-1:-1:-1;;;;;9379:9:0;;;::::1;::::0;::::1;::::0;:22:::1;::::0;9416:4;::::1;::::0;9443;;9463:11;::::1;::::0;:21:::1;::::0;133:18:1;;9463:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9532:4;12774:7:::0;12801:16;;;:7;:16;;;;;;9553:1:::1;9639:6:::0;;9379:307:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;17246:15:1;;;9379:307:0::1;::::0;::::1;17228:34:1::0;17298:15;;;17278:18;;;17271:43;17330:18;;;17323:34;;;;17373:18;;;17366:34;;;;17416:19;;;17409:35;;;17460:19;;;17453:35;9639:6:0;;;::::1;17504:19:1::0;;;17497:44;9660:15:0::1;17557:19:1::0;;;17550:35;17139:19;;9379:307:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9697:15;:13;:15::i;:::-;8553:1167:::0;:::o;18456:112::-;18501:7;18546:13;4984:2;18546;:13;:::i;:::-;18528:14;;:32;;;;:::i;:::-;18521:39;;18456:112;:::o;12099:115::-;12154:7;5047:13;4984:2;5047;:13;:::i;:::-;5030:30;;4820:11;5030:30;:::i;:::-;12180:1;12169:12;12165:31;;12185:8;;;12165:31;5047:13;4984:2;5047;:13;:::i;:::-;5030:30;;4820:11;5030:30;:::i;9973:397::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;10122:7:::1;:14;10103:8;:15;:33;10095:67;;;::::0;-1:-1:-1;;;10095:67:0;;18388:2:1;10095:67:0::1;::::0;::::1;18370:21:1::0;18427:2;18407:18;;;18400:30;18466:23;18446:18;;;18439:51;18507:18;;10095:67:0::1;18186:345:1::0;10095:67:0::1;10178:7;10173:190;10195:8;:15;10191:1;:19;;;10173:190;;;10276:13;4984:2;10276;:13;:::i;:::-;10265:7;10273:1;10265:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;10250:10;12774:7:::0;12801:16;;;:7;:16;;;;;;10240:49:::1;;10232:58;;;::::0;::::1;;10305:46;10327:8;10336:1;10327:11;;;;;;;;;;:::i;:::-;;;;;;;10340:7;10348:1;10340:10;;;;;;;;;;:::i;:::-;;;;;;;10305:21;:46::i;:::-;10212:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10173:190;;;;9973:397:::0;;:::o;13672:306::-;-1:-1:-1;;;;;13793:19:0;;13772:4;13793:19;;;:11;:19;;;;;;;;13813:10;13793:31;;;;;;;;-1:-1:-1;;13793:52:0;13789:126;;-1:-1:-1;;;;;13862:19:0;;;;;;:11;:19;;;;;;;;13882:10;13862:31;;;;;;;:41;;13897:6;;13862:19;:41;;13897:6;;13862:41;:::i;:::-;;;;-1:-1:-1;;13789:126:0;13934:36;13944:6;13952:9;13963:6;13934:9;:36::i;:::-;13927:43;13672:306;-1:-1:-1;;;;13672:306:0:o;17509:264::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;17651:3:::1;5047:13;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17641:13;;;;:::i;:::-;17629:7:::0;17618;5047:13:::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17608:17;;;;:::i;:::-;17607:29;;;;:::i;:::-;:48;;17599:109;;;::::0;-1:-1:-1;;;17599:109:0;;19237:2:1;17599:109:0::1;::::0;::::1;19219:21:1::0;19276:2;19256:18;;;19249:30;19315:34;19295:18;;;19288:62;19386:18;19366;;;19359:46;19422:19;;17599:109:0::1;19035:412:1::0;17599:109:0::1;17758:7:::0;17747;5047:13:::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17737:17;;;;:::i;:::-;17736:29;;;;:::i;:::-;17719:14;:46:::0;-1:-1:-1;;17509:264:0:o;24547:418::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;24682:7:::1;:14;24663:8;:15;:33;24655:67;;;::::0;-1:-1:-1;;;24655:67:0;;18388:2:1;24655:67:0::1;::::0;::::1;18370:21:1::0;18427:2;18407:18;;;18400:30;18466:23;18446:18;;;18439:51;18507:18;;24655:67:0::1;18186:345:1::0;24655:67:0::1;24738:7;24733:225;24755:8;:15;24751:1;:19;;;24733:225;;;24825:7;24833:1;24825:10;;;;;;;;;;:::i;:::-;;;;;;;24800:21;24810:10;-1:-1:-1::0;;;;;12801:16:0;12774:7;12801:16;;;:7;:16;;;;;;;12708:117;24800:21:::1;:35;;24792:44;;;::::0;::::1;;24851:95;24869:10;24881:8;24890:1;24881:11;;;;;;;;;;:::i;:::-;;;;;;;4984:2;24905;:13;;;;:::i;:::-;24894:7;24902:1;24894:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24920:5;24927::::0;24934::::1;24941:4;24851:17;:95::i;:::-;-1:-1:-1::0;24772:3:0;::::1;::::0;::::1;:::i;:::-;;;;24733:225;;15852:195:::0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;15974:9:::1;::::0;:65:::1;::::0;;;;19684:14:1;;19677:22;15974:65:0::1;::::0;::::1;19659:41:1::0;19743:14;;19736:22;19716:18;;;19709:50;19802:14;;19795:22;19775:18;;;19768:50;19861:14;;19854:22;19834:18;;;19827:50;15974:9:0;;;::::1;-1:-1:-1::0;;;;;15974:9:0::1;::::0;:24:::1;::::0;19631:19:1;;15974:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15852:195:::0;;;;:::o;9728:237::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;9824:13:::1;::::0;;;::::1;;;9823:14;9815:23;;;::::0;::::1;;9865:13;4984:2;9865;:13;:::i;:::-;9858:20;::::0;:6;:20:::1;:::i;:::-;9849:29;;9889:68;9907:10;9919:2;9923:6;9931:5;9938::::0;9945::::1;9952:4;9889:17;:68::i;16213:397::-:0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;5658:4:::1;16320:6;:21;;;;:65;;;;;5708:4;16362:7;:23;;;;16320:65;:117;;;;;5762:4;16406:11;:31;;;;16320:117;16312:170;;;::::0;-1:-1:-1;;;16312:170:0;;20090:2:1;16312:170:0::1;::::0;::::1;20072:21:1::0;20129:2;20109:18;;;20102:30;20168:25;20148:18;;;20141:53;20211:18;;16312:170:0::1;19888:347:1::0;16312:170:0::1;16493:9;:25:::0;;::::1;::::0;;::::1;16529:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16567:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16213:397::o;15736:108::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;15805:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15805:31:0::1;::::0;::::1;160:74:1::0;15805:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;15805:31:0::1;14:226:1::0;18576:338:0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;18790:16;18770;5047:13:::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;18760:26;;;;:::i;:::-;18759:47;;;;:::i;:::-;18743:13;:63:::0;18858:13;18841;5047::::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;18831:23;;;;:::i;:::-;18830:41;;;;:::i;:::-;18817:10;:54:::0;18882:17:::1;:24:::0;-1:-1:-1;;;;18576:338:0:o;17781:140::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;-1:-1:-1;;;;;17873:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;17873:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17781:140::o;17232:269::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;17373:4:::1;5047:13;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17363:14;;;;:::i;:::-;17351:7:::0;17340;5047:13:::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17330:17;;;;:::i;:::-;17329:29;;;;:::i;:::-;:49;;17321:117;;;::::0;-1:-1:-1;;;17321:117:0;;20442:2:1;17321:117:0::1;::::0;::::1;20424:21:1::0;20481:2;20461:18;;;20454:30;20520:34;20500:18;;;20493:62;20591:25;20571:18;;;20564:53;20634:19;;17321:117:0::1;20240:419:1::0;17321:117:0::1;17486:7:::0;17475;5047:13:::1;4984:2;5047;:13;:::i;:::-;5030:30;::::0;4820:11:::1;5030:30;:::i;:::-;17465:17;;;;:::i;:::-;17464:29;;;;:::i;:::-;17449:12;:44:::0;-1:-1:-1;;17232:269:0:o;10922:623::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;-1:-1:-1;;;;;11001:22:0;::::1;10993:96;;;::::0;-1:-1:-1;;;10993:96:0;;20866:2:1;10993:96:0::1;::::0;::::1;20848:21:1::0;20905:2;20885:18;;;20878:30;20944:34;20924:18;;;20917:62;21015:31;20995:18;;;20988:59;21064:19;;10993:96:0::1;20664:425:1::0;10993:96:0::1;11108:16:::0;-1:-1:-1;;;;;11108:16:0;::::1;::::0;11100:90:::1;;;::::0;-1:-1:-1;;;11100:90:0;;20866:2:1;11100:90:0::1;::::0;::::1;20848:21:1::0;20905:2;20885:18;;;20878:30;20944:34;20924:18;;;20917:62;21015:31;20995:18;;;20988:59;21064:19;;11100:90:0::1;20664:425:1::0;11100:90:0::1;11221:6;::::0;;11201:34:::1;::::0;-1:-1:-1;;;;;11221:6:0;;::::1;::::0;11201:19:::1;:34::i;:::-;11246:35;11266:8;11276:4;11246:19;:35::i;:::-;11325:1;11315:6:::0;;-1:-1:-1;;;;;11315:6:0::1;12801:16:::0;;:7;:16;;;;;;11305:21;11302:134:::1;;11361:6;::::0;;-1:-1:-1;;;;;11361:6:0::1;12801:16:::0;;;:7;:16;;;;;;;11343:81:::1;::::0;11361:6;11369:8;;11379:17:::1;12708:117:::0;11343:81:::1;;11302:134;11456:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;11456:17:0;::::1;::::0;;::::1;::::0;;11489:38:::1;::::0;11456:17;;;;11489:38:::1;::::0;11456:6;11489:38:::1;10922:623:::0;:::o;18200:134::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;-1:-1:-1;;;;;18288:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;18288:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18200:134::o;15042:220::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;15126:16:::1;::::0;::::1;::::0;::::1;;;15125:17;15117:26;;;::::0;::::1;;15185:4;-1:-1:-1::0;;;;;15162:28:0;::::1;::::0;15154:55:::1;;;::::0;-1:-1:-1;;;15154:55:0;;21296:2:1;15154:55:0::1;::::0;::::1;21278:21:1::0;21335:2;21315:18;;;21308:30;21374:16;21354:18;;;21347:44;21408:18;;15154:55:0::1;21094:338:1::0;15154:55:0::1;15220:9;:34:::0;;-1:-1:-1;;;;;15220:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15042:220::o;18342:106::-;18383:7;18426:13;4984:2;18426;:13;:::i;:::-;18410:12;;:30;;;;:::i;11553:193::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;11638:6:::1;::::0;;11618:34:::1;::::0;-1:-1:-1;;;;;11638:6:0;;::::1;::::0;11618:19:::1;:34::i;:::-;11680:1;11663:19:::0;;;::::1;::::0;;11698:40:::1;::::0;11680:1;;11698:40:::1;::::0;11680:1;;11698:40:::1;11553:193::o:0;16958:266::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;17082:11:::1;:40:::0;;-1:-1:-1;;;;;17082:40:0;;::::1;::::0;;;::::1;;::::0;;;17133:17;:34;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17178:19;:38;;;;;::::1;::::0;::::1;;::::0;;16958:266::o;14534:500::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;14615:16;::::1;;14626:5;14615:16:::0;14611:416:::1;;-1:-1:-1::0;;;;;14648:13:0;;::::1;14664:5;14648:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14648:21:0::1;::::0;;14684:9:::1;::::0;:32;;;;;::::1;::::0;::::1;21605:74:1::0;;;;21695:18;;;21688:50;;;;14684:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;21578:18:1;;14684:32:0::1;21437:307:1::0;14611:416:0::1;14753:17;::::0;:22;14749:136:::1;;14842:6;14822:17;;14804:15;:35;;;;:::i;:::-;:44;14796:73;;;::::0;-1:-1:-1;;;14796:73:0;;21951:2:1;14796:73:0::1;::::0;::::1;21933:21:1::0;21990:2;21970:18;;;21963:30;22029:18;22009;;;22002:46;22065:18;;14796:73:0::1;21749:340:1::0;14796:73:0::1;-1:-1:-1::0;;;;;14899:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;14899:20:0::1;14915:4;14899:20:::0;;::::1;::::0;;;14954:15:::1;14934:17;:35:::0;14984:9:::1;::::0;:31;;;;;::::1;::::0;::::1;21605:74:1::0;;;;21695:18;;;21688:50;14984:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;21578:18:1;;14984:31:0::1;21437:307:1::0;14611:416:0::1;14534:500:::0;;:::o;13491:173::-;13555:4;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;13604:9:::1;::::0;13572:62:::1;::::0;13589:4:::1;::::0;13604:9;;::::1;-1:-1:-1::0;;;;;13604:9:0::1;-1:-1:-1::0;;13572:8:0::1;:62::i;:::-;-1:-1:-1::0;13652:4:0::1;13491:173:::0;:::o;23786:544::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;23848:14:::1;::::0;::::1;;23847:15;23839:52;;;::::0;-1:-1:-1;;;23839:52:0;;22296:2:1;23839:52:0::1;::::0;::::1;22278:21:1::0;22335:2;22315:18;;;22308:30;22374:26;22354:18;;;22347:54;22418:18;;23839:52:0::1;22094:348:1::0;23839:52:0::1;23910:16;::::0;::::1;::::0;::::1;;;23902:53;;;::::0;-1:-1:-1;;;23902:53:0;;22649:2:1;23902:53:0::1;::::0;::::1;22631:21:1::0;22688:2;22668:18;;;22661:30;22727:26;22707:18;;;22700:54;22771:18;;23902:53:0::1;22447:348:1::0;23902:53:0::1;23977:9;::::0;;;::::1;-1:-1:-1::0;;;;;23977:9:0::1;23966:99;;24017:9;:36:::0;;;::::1;24047:4;24017:36:::0;::::1;;::::0;;23966:99:::1;24079:9;::::0;24099:6:::1;::::0;24079:85:::1;::::0;;;;-1:-1:-1;;;;;24099:6:0;;::::1;24079:85;::::0;::::1;23023:74:1::0;23145:10;24114:12:0::1;23133:23:1::0;23113:18;;;23106:51;23205:18;24136:15:0::1;23193:31:1::0;23173:18;;;23166:59;4984:2:0::1;23241:18:1::0;;;23234:45;24079:9:0;;;::::1;;::::0;:19:::1;::::0;22995::1;;24079:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24075:101:::0;24186:14:::1;:21:::0;;-1:-1:-1;;24186:21:0::1;24203:4;24186:21;::::0;;24245:6:::1;::::0;24261:5:::1;::::0;24235:17:::1;::::0;-1:-1:-1;;;;;24245:6:0::1;-1:-1:-1::0;;;;;12801:16:0;12774:7;12801:16;;;:7;:16;;;;;;;12708:117;24235:17:::1;:22;::::0;24255:2:::1;24235:22;:::i;:::-;24234:32;;;;:::i;:::-;24218:13;:48:::0;24301:6:::1;::::0;-1:-1:-1;;;;;24301:6:0::1;12774:7:::0;12801:16;;;:7;:16;;;;;;24317:5:::1;::::0;24291:22:::1;::::0;24311:2:::1;24291:22;:::i;:::-;24290:32;;;;:::i;:::-;24277:10;:45:::0;23786:544::o;12833:165::-;12911:4;12928:40;12938:10;12950:9;12961:6;12928:9;:40::i;:::-;-1:-1:-1;12986:4:0;;12833:165;-1:-1:-1;;;12833:165:0:o;16618:332::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;16714:7:::1;:27:::0;;::::1;::::0;;::::1;16752:21:::0;;;;;;;;;;;::::1;;;16784:25:::0;::::1;::::0;;;::::1;;;::::0;;;16865:2:::1;::::0;::::1;16784:25:::0;16836:16:::1;16752:21:::0;16714:27;16836:16:::1;:::i;:::-;:26;;;;:::i;:::-;:31;;;;:::i;:::-;16820:7;:47:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;16923:9:::1;:17:::0;16904:36:::1;::::0;16923:17;;::::1;::::0;::::1;::::0;16904:16:::1;:36;:::i;:::-;16887:7;:13:::0;:53:::1;::::0;;::::1;:13:::0;;;::::1;::::0;;::::1;:53;;16878:63;;;::::0;::::1;18922:164:::0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;18998:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;18998:29:0;;::::1;;::::0;;19043:35:::1;::::0;::::1;::::0;::::1;::::0;19020:7;4598:14:1;4591:22;4573:41;;4561:2;4546:18;;4433:187;19043:35:0::1;;;;;;;;18922:164:::0;:::o;13986:540::-;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;14055:20:::1;14088:9;14055:43;;14109:16;14139:10;-1:-1:-1::0;;;;;14139:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14128:40:0::1;;14177:4;14184:10;-1:-1:-1::0;;;;;14184:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14128:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16177:15:1;;;14128:74:0::1;::::0;::::1;16159:34:1::0;16229:15;;16209:18;;;16202:43;16071:18;;14128:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14109:93:::0;-1:-1:-1;;;;;;14217:22:0;::::1;14213:200;;14276:10;-1:-1:-1::0;;;;;14276:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14265:43:0::1;;14317:4;14324:10;-1:-1:-1::0;;;;;14324:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14265:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16177:15:1;;;14265:77:0::1;::::0;::::1;16159:34:1::0;16229:15;;16209:18;;;16202:43;16071:18;;14265:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14256:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;14256:86:0;;;::::1;::::0;;;::::1;::::0;;14213:200:::1;;;14384:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;14384:17:0;::::1;;::::0;;14213:200:::1;14423:9;:22:::0;;;::::1;::::0;-1:-1:-1;;;;;14423:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;14456:62:::1;::::0;14473:4:::1;::::0;14488:9;;::::1;;-1:-1:-1::0;;14456:8:0::1;:62::i;24338:201::-:0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;24405:16:::1;::::0;::::1;::::0;::::1;;;24404:17;24396:58;;;::::0;-1:-1:-1;;;24396:58:0;;23721:2:1;24396:58:0::1;::::0;::::1;23703:21:1::0;23760:2;23740:18;;;23733:30;23799;23779:18;;;23772:58;23847:18;;24396:58:0::1;23519:352:1::0;24396:58:0::1;24465:11;::::0;::::1;24486:6:::0;24494:36:::1;::::0;;;;24524:4:::1;24494:36;::::0;::::1;160:74:1::0;-1:-1:-1;;;;;24465:11:0;;::::1;::::0;:20:::1;::::0;24486:6:::1;::::0;24465:11;;24494:21:::1;::::0;133:18:1;;24494:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24465:66;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16448:55:1;;;24465:66:0::1;::::0;::::1;16430:74:1::0;16520:18;;;16513:34;16403:18;;24465:66:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15270:145::-:0;7318:6;;-1:-1:-1;;;;;7318:6:0;7328:10;7318:20;7310:50;;;;-1:-1:-1;;;7310:50:0;;11178:2:1;7310:50:0;;;11160:21:1;11217:2;11197:18;;;11190:30;-1:-1:-1;;;11236:18:1;;;11229:47;11293:18;;7310:50:0;10976:341:1;7310:50:0;15360:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;21623:55:1;;;15360:47:0::1;::::0;::::1;21605:74:1::0;21722:14;;21715:22;21695:18;;;21688:50;15360:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;21578:18:1;;15360:47:0::1;21437:307:1::0;15603:125:0;15688:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15688:32:0;;;160:74:1;15664:4:0;;15688:9;;;;;:23;;133:18:1;;15688:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13173:310::-;-1:-1:-1;;;;;13268:20:0;;13260:52;;;;-1:-1:-1;;;13260:52:0;;24078:2:1;13260:52:0;;;24060:21:1;24117:2;24097:18;;;24090:30;24156:21;24136:18;;;24129:49;24195:18;;13260:52:0;23876:343:1;13260:52:0;-1:-1:-1;;;;;13331:21:0;;13323:53;;;;-1:-1:-1;;;13323:53:0;;24078:2:1;13323:53:0;;;24060:21:1;24117:2;24097:18;;;24090:30;24156:21;24136:18;;;24129:49;24195:18;;13323:53:0;23876:343:1;13323:53:0;-1:-1:-1;;;;;13389:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13442:33;;391:25:1;;;13442:33:0;;364:18:1;13442:33:0;;;;;;;13173:310;;;:::o;24973:946::-;25129:16;;25107:4;;25129:16;;;;;25124:221;;25162:28;25181:4;25187:2;25162:18;:28::i;:::-;25210:16;;;;;;;25209:17;:41;;;;;25230:20;25241:4;25247:2;25230:10;:20::i;:::-;25205:129;;;25271:47;;-1:-1:-1;;;25271:47:0;;24426:2:1;25271:47:0;;;24408:21:1;24465:2;24445:18;;;24438:30;24504:34;24484:18;;;24477:62;24575:7;24555:18;;;24548:35;24600:19;;25271:47:0;24224:401:1;25205:129:0;25361:20;25372:4;25378:2;25361:10;:20::i;:::-;25357:314;;;25429:9;;:37;;;;;-1:-1:-1;;;;;24911:15:1;;;25429:37:0;;;24893:34:1;24963:15;;;24943:18;;;24936:43;24995:18;;;24988:34;;;25398:12:0;;25429:9;;;;;:19;;24805:18:1;;25429:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25429:37:0;;;;;;;;-1:-1:-1;;25429:37:0;;;;;;;;;;;;:::i;:::-;;;25425:163;;25564:8;;;25425:163;25517:5;-1:-1:-1;25608:7:0;25604:56;;25636:8;;;25604:56;25383:288;25357:314;-1:-1:-1;;;;;25683:13:0;;;;;;:7;:13;;;;;:23;;25700:6;;25683:13;:23;;25700:6;;25683:23;:::i;:::-;;;;-1:-1:-1;25717:22:0;;-1:-1:-1;25743:7:0;25742:55;;25791:6;25742:55;;;25754:34;25764:4;25770:3;25775:4;25781:6;25754:9;:34::i;:::-;-1:-1:-1;;;;;25808:11:0;;;;;;:7;:11;;;;;:29;;25717:80;;-1:-1:-1;25717:80:0;;25808:11;;;:29;;25717:80;;25808:29;:::i;:::-;;;;;;;;25870:2;-1:-1:-1;;;;;25855:34:0;25864:4;-1:-1:-1;;;;;25855:34:0;;25874:14;25855:34;;;;391:25:1;;379:2;364:18;;245:177;25855:34:0;;;;;;;;-1:-1:-1;25907:4:0;;24973:946;-1:-1:-1;;;;;;;;24973:946:0:o;19460:2061::-;19539:4;-1:-1:-1;;;;;19564:18:0;;19556:68;;;;-1:-1:-1;;;19556:68:0;;25368:2:1;19556:68:0;;;25350:21:1;25407:2;25387:18;;;25380:30;25446:34;25426:18;;;25419:62;25517:7;25497:18;;;25490:35;25542:19;;19556:68:0;25166:401:1;19556:68:0;-1:-1:-1;;;;;19643:16:0;;19635:64;;;;-1:-1:-1;;;19635:64:0;;25774:2:1;19635:64:0;;;25756:21:1;25813:2;25793:18;;;25786:30;25852:34;25832:18;;;25825:62;25923:5;25903:18;;;25896:33;25946:19;;19635:64:0;25572:399:1;19635:64:0;19727:1;19718:6;:10;19710:64;;;;-1:-1:-1;;;19710:64:0;;26178:2:1;19710:64:0;;;26160:21:1;26217:2;26197:18;;;26190:30;26256:34;26236:18;;;26229:62;26327:11;26307:18;;;26300:39;26356:19;;19710:64:0;25976:405:1;19710:64:0;-1:-1:-1;;;;;19873:13:0;;19785:8;19873:13;;;:7;:13;;;;;;19785:8;;;;19873:13;;19869:162;;;19909:4;19903:10;;19869:162;;;-1:-1:-1;;;;;19935:11:0;;;;;;:7;:11;;;;;;;;19931:100;;;19970:4;19963:11;;19931:100;;;-1:-1:-1;20015:4:0;19931:100;20044:20;20055:4;20061:2;20044:10;:20::i;:::-;20041:641;;;20085:14;;;;20081:89;;20120:34;;-1:-1:-1;;;20120:34:0;;26588:2:1;20120:34:0;;;26570:21:1;26627:2;26607:18;;;26600:30;26666:26;26646:18;;;26639:54;26710:18;;20120:34:0;26386:348:1;20081:89:0;20187:3;:11;;;;20194:4;20187:11;20184:231;;;-1:-1:-1;;;;;20223:27:0;;;;;;:21;:27;;;;;;;;20222:28;:58;;;;-1:-1:-1;;;;;;20255:25:0;;;;;;:21;:25;;;;;;;;20254:26;20222:58;20218:182;;;20323:12;;20313:6;:22;;20305:75;;;;-1:-1:-1;;;20305:75:0;;26941:2:1;20305:75:0;;;26923:21:1;26980:2;26960:18;;;26953:30;27019:34;26999:18;;;26992:62;27090:10;27070:18;;;27063:38;27118:19;;20305:75:0;26739:404:1;20305:75:0;20446:9;;-1:-1:-1;;;;;20432:24:0;;;20446:9;;;;;20432:24;;;;:33;;;20461:4;20460:5;20432:33;20429:242;;;-1:-1:-1;;;;;20491:25:0;;;;;;:21;:25;;;;;;;;20486:170;;20575:14;;20565:6;20549:13;20559:2;-1:-1:-1;;;;;12801:16:0;12774:7;12801:16;;;:7;:16;;;;;;;12708:117;20549:13;:22;;;;:::i;:::-;:40;;20541:95;;;;-1:-1:-1;;;20541:95:0;;27350:2:1;20541:95:0;;;27332:21:1;27389:2;27369:18;;;27362:30;27428:34;27408:18;;;27401:62;27499:12;27479:18;;;27472:40;27529:19;;20541:95:0;27148:406:1;20541:95:0;-1:-1:-1;;;;;20727:25:0;;20694:12;20727:25;;;:19;:25;;;;;;20709:4;;20727:25;;;:52;;-1:-1:-1;;;;;;20756:23:0;;;;;;:19;:23;;;;;;;;20727:52;20724:98;;;-1:-1:-1;20805:5:0;20724:98;20838:4;20834:599;;;20864:6;;;;20863:7;:47;;;;-1:-1:-1;20891:19:0;;;;;;;20863:47;20859:557;;;20980:15;20960:17;;20949:8;;:28;;;;:::i;:::-;:46;20945:456;;;21069:4;21020:28;12801:16;;;:7;:16;;;;;;21126:13;;21102:37;;21098:284;;21195:10;;21171:20;:34;21168:77;;-1:-1:-1;21232:10:0;;21168:77;21271:34;21284:20;21271:12;:34::i;:::-;21343:15;21332:8;:26;21098:284;20997:404;20945:456;21451:62;21469:4;21475:2;21479:6;21487:7;21496:3;21501:4;21507:5;21451:17;:62::i;:::-;21444:69;19460:2061;-1:-1:-1;;;;;;;;19460:2061:0:o;23269:509::-;23352:16;;;;;;;23351:17;23343:65;;;;-1:-1:-1;;;23343:65:0;;27761:2:1;23343:65:0;;;27743:21:1;27800:2;27780:18;;;27773:30;27839:34;27819:18;;;27812:62;27910:5;27890:18;;;27883:33;27933:19;;23343:65:0;27559:399:1;23343:65:0;23424:20;23435:4;23441:2;23424:10;:20::i;:::-;23423:21;:37;;;;-1:-1:-1;23454:6:0;;-1:-1:-1;;;;;23448:12:0;;;23454:6;;23448:12;23423:37;23419:352;;;-1:-1:-1;;;;;23477:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23477:30:0;23503:4;23477:30;;;23522:16;:23;;-1:-1:-1;;23522:23:0;23477:30;23522:23;;;;;23571:9;;;;23560:107;;23615:9;:36;;;;23645:4;23615:36;;;;;23560:107;23681:19;:26;;-1:-1:-1;;23681:26:0;;;;;23727:32;;-1:-1:-1;4573:41:1;;23727:32:0;;4561:2:1;4546:18;23727:32:0;;;;;;;23269:509;;:::o;19094:358::-;19163:4;19195:6;;-1:-1:-1;;;;;19187:14:0;;;19195:6;;19187:14;;;;:43;;-1:-1:-1;19224:6:0;;-1:-1:-1;;;;;19218:12:0;;;19224:6;;19218:12;;19187:43;:79;;;;-1:-1:-1;19260:6:0;;-1:-1:-1;;;;;19260:6:0;19247:9;:19;;19187:79;:118;;;;-1:-1:-1;;;;;;19284:21:0;;;;;;:17;:21;;;;;;;;19283:22;19187:118;:159;;;;-1:-1:-1;;;;;;19323:23:0;;;;;;:17;:23;;;;;;;;19322:24;19187:159;:186;;;;-1:-1:-1;;;;;;19363:10:0;;5985:42;19363:10;;19187:186;:219;;;;-1:-1:-1;;;;;;19390:16:0;;;;19187:219;:257;;;;-1:-1:-1;;;;;;19423:21:0;;19439:4;19423:21;;19187:257;19180:264;19094:358;-1:-1:-1;;;19094:358:0:o;25927:562::-;26015:7;26035:18;26068:3;26064:205;;;-1:-1:-1;26101:9:0;:16;;;26064:205;;;26139:4;26135:134;;;-1:-1:-1;26173:9:0;:17;;;;;;26135:134;;;-1:-1:-1;26236:9:0;:21;;;;;;26135:134;26281:17;5809:5;26301:19;26310:10;26301:6;:19;:::i;:::-;:38;;;;:::i;:::-;26368:4;26352:22;;;;:7;:22;;;;;:35;;26281:58;;-1:-1:-1;26281:58:0;;26352:22;;;:35;;26281:58;;26352:35;:::i;:::-;;;;-1:-1:-1;;26403:40:0;;391:25:1;;;26426:4:0;;-1:-1:-1;;;;;26403:40:0;;;;;379:2:1;364:18;26403:40:0;;;;;;;26463:18;26472:9;26463:6;:18;:::i;:::-;26456:25;25927:562;-1:-1:-1;;;;;;;25927:562:0:o;21529:1732::-;7212:6;:13;;-1:-1:-1;;7212:13:0;7221:4;7212:13;;;21613:30:::1;::::0;;::::1;::::0;::::1;::::0;;21636:7:::1;21613:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;7212:6;21658:17;21654:56:::1;;21692:7;;;21654:56;21745:4;21725:26;::::0;;;:11:::1;:26;::::0;;;;;;;21760:9:::1;::::0;;;::::1;-1:-1:-1::0;;;;;21760:9:0::1;21725:46:::0;;;;;;;;-1:-1:-1;;21725:67:0::1;21722:165;;21829:4;21809:26;::::0;;;:11:::1;:26;::::0;;;;;;;21844:9:::1;::::0;;;::::1;-1:-1:-1::0;;;;;21844:9:0::1;21809:46:::0;;;;;;;-1:-1:-1;;21809:66:0;;21722:165:::1;21900:11;::::0;21945:9:::1;::::0;21900:56:::1;::::0;;;;21930:4:::1;21900:56;::::0;::::1;16159:34:1::0;21945:9:0;;;::::1;-1:-1:-1::0;;;;;21945:9:0;;::::1;16209:18:1::0;;;16202:43;-1:-1:-1;;21960:17:0;21900:11:::1;::::0;:21:::1;::::0;16071:18:1;;21900:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;21897:167;;21994:11;::::0;22022:9:::1;::::0;21994:58:::1;::::0;;;;-1:-1:-1;;;;;22022:9:0;;;::::1;::::0;::::1;21994:58;::::0;::::1;16430:74:1::0;-1:-1:-1;;16520:18:1;;;16513:34;21994:11:0;::::1;::::0;:19:::1;::::0;16403:18:1;;21994:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21897:167;22100:16;::::0;;22114:1:::1;22100:16:::0;;;;;::::1;::::0;;22076:21:::1;::::0;22100:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22100:16:0::1;22076:40;;22145:4;22127;22132:1;22127:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22127:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22171:4:::1;::::0;22161:7;;22171:4;::::1;::::0;22161;;22171;;22161:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;22161:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;22188:9:::1;::::0;22344::::1;::::0;22188:207:::1;::::0;;;;:9;;;;::::1;::::0;::::1;::::0;:63:::1;::::0;:207:::1;::::0;22266:20;;22301:1:::1;::::0;22317:4;;22344:9;;::::1;::::0;;::::1;::::0;22369:15:::1;::::0;22188:207:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22408:9;;;;;;;;;-1:-1:-1::0;;;;;22408:9:0::1;-1:-1:-1::0;;;;;22408:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22460:11:0::1;::::0;:36:::1;::::0;;;;22490:4:::1;22460:36;::::0;::::1;160:74:1::0;22439:18:0::1;::::0;-1:-1:-1;;;;;;22460:11:0;;::::1;::::0;-1:-1:-1;22460:21:0::1;::::0;133:18:1;;22460:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22439:57;;22507:20;22560:6;:12;;;22530:42;;22544:6;:12;;;22531:25;;:10;:25;;;;:::i;:::-;22530:42;;;;:::i;:::-;22623:12;::::0;::::1;::::0;22617:2:::1;::::0;22507:65;;-1:-1:-1;22583:17:0::1;::::0;22603:32:::1;::::0;;::::1;::::0;22604:15:::1;::::0;22617:2:::1;22604:10:::0;:15:::1;:::i;:::-;22603:32;;;;:::i;:::-;22583:52;;22646:22;22703:6;:12;;;22671:44;;22685:6;:14;;;22672:27;;:10;:27;;;;:::i;:::-;22671:44;;;;:::i;:::-;22646:69:::0;-1:-1:-1;22726:23:0::1;22646:69:::0;22766:24:::1;22781:9:::0;22766:12;:24:::1;:::i;:::-;:41;;;;:::i;:::-;22752:56;::::0;:10;:56:::1;:::i;:::-;22823:12;::::0;::::1;::::0;22726:82;;-1:-1:-1;22823:16:0::1;;::::0;22819:84:::1;;22856:11;::::0;22877:2:::1;::::0;22856:35:::1;::::0;;;;-1:-1:-1;;;;;22877:2:0;;::::1;22856:35;::::0;::::1;16430:74:1::0;16520:18;;;16513:34;;;22856:11:0;::::1;::::0;:20:::1;::::0;16403:18:1;;22856:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22819:84;22917:15:::0;;:19:::1;;::::0;22913:111:::1;;22953:11;::::0;22974::::1;:20:::0;22953:59:::1;::::0;;;;-1:-1:-1;;;;;22974:20:0;;::::1;22953:59;::::0;::::1;16430:74:1::0;16520:18;;;16513:34;;;22953:11:0;::::1;::::0;:20:::1;::::0;16403:18:1;;22953:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22913:111;23038:12;::::0;::::1;::::0;:16:::1;;::::0;23034:102:::1;;23071:11;::::0;23092:17;;23071:53:::1;::::0;;;;-1:-1:-1;;;;;23092:17:0;;::::1;23071:53;::::0;::::1;16430:74:1::0;16520:18;;;16513:34;;;23071:11:0;::::1;::::0;:20:::1;::::0;16403:18:1;;23071:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23034:102;23150:14;::::0;::::1;::::0;:18:::1;;::::0;23146:108:::1;;23185:11;::::0;23206:19;;23185:57:::1;::::0;;;;-1:-1:-1;;;;;23206:19:0;;::::1;23185:57;::::0;::::1;16430:74:1::0;16520:18;;;16513:34;;;23185:11:0;::::1;::::0;:20:::1;::::0;16403:18:1;;23185:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23146:108;21602:1659;;;;;;;7236:1;-1:-1:-1::0;7248:6:0;:14;;-1:-1:-1;;7248:14:0;;;21529:1732::o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;3019:656::-;3131:4;3160:2;3189;3178:9;3171:21;3221:6;3215:13;3264:6;3259:2;3248:9;3244:18;3237:34;3289:1;3299:140;3313:6;3310:1;3307:13;3299:140;;;3408:14;;;3404:23;;3398:30;3374:17;;;3393:2;3370:26;3363:66;3328:10;;3299:140;;;3457:6;3454:1;3451:13;3448:91;;;3527:1;3522:2;3513:6;3502:9;3498:22;3494:31;3487:42;3448:91;-1:-1:-1;3591:2:1;3579:15;-1:-1:-1;;3575:88:1;3560:104;;;;3666:2;3556:113;;3019:656;-1:-1:-1;;;3019:656:1:o;3928:180::-;3987:6;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;-1:-1:-1;4079:23:1;;3928:180;-1:-1:-1;3928:180:1:o;4113:315::-;4181:6;4189;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;4297:9;4284:23;4316:31;4341:5;4316:31;:::i;:::-;4366:5;4418:2;4403:18;;;;4390:32;;-1:-1:-1;;;4113:315:1:o;4625:1138::-;4743:6;4751;4804:2;4792:9;4783:7;4779:23;4775:32;4772:52;;;4820:1;4817;4810:12;4772:52;4860:9;4847:23;4889:18;4930:2;4922:6;4919:14;4916:34;;;4946:1;4943;4936:12;4916:34;4969:61;5022:7;5013:6;5002:9;4998:22;4969:61;:::i;:::-;4959:71;;5049:2;5039:12;;5104:2;5093:9;5089:18;5076:32;5133:2;5123:8;5120:16;5117:36;;;5149:1;5146;5139:12;5117:36;5172:24;;;-1:-1:-1;5227:4:1;5219:13;;5215:27;-1:-1:-1;5205:55:1;;5256:1;5253;5246:12;5205:55;5292:2;5279:16;5315:60;5331:43;5371:2;5331:43;:::i;5315:60::-;5409:15;;;5491:1;5487:10;;;;5479:19;;5475:28;;;5440:12;;;;5515:19;;;5512:39;;;5547:1;5544;5537:12;5512:39;5571:11;;;;5591:142;5607:6;5602:3;5599:15;5591:142;;;5673:17;;5661:30;;5624:12;;;;5711;;;;5591:142;;;5752:5;5742:15;;;;;;;4625:1138;;;;;:::o;5768:456::-;5845:6;5853;5861;5914:2;5902:9;5893:7;5889:23;5885:32;5882:52;;;5930:1;5927;5920:12;5882:52;5969:9;5956:23;5988:31;6013:5;5988:31;:::i;:::-;6038:5;-1:-1:-1;6095:2:1;6080:18;;6067:32;6108:33;6067:32;6108:33;:::i;:::-;5768:456;;6160:7;;-1:-1:-1;;;6214:2:1;6199:18;;;;6186:32;;5768:456::o;6229:248::-;6297:6;6305;6358:2;6346:9;6337:7;6333:23;6329:32;6326:52;;;6374:1;6371;6364:12;6326:52;-1:-1:-1;;6397:23:1;;;6467:2;6452:18;;;6439:32;;-1:-1:-1;6229:248:1:o;6482:647::-;6556:6;6564;6572;6580;6633:3;6621:9;6612:7;6608:23;6604:33;6601:53;;;6650:1;6647;6640:12;6601:53;6689:9;6676:23;6708:28;6730:5;6708:28;:::i;:::-;6755:5;-1:-1:-1;6812:2:1;6797:18;;6784:32;6825:30;6784:32;6825:30;:::i;:::-;6874:7;-1:-1:-1;6933:2:1;6918:18;;6905:32;6946:30;6905:32;6946:30;:::i;:::-;6995:7;-1:-1:-1;7054:2:1;7039:18;;7026:32;7067:30;7026:32;7067:30;:::i;:::-;6482:647;;;;-1:-1:-1;6482:647:1;;-1:-1:-1;;6482:647:1:o;7323:159::-;7390:20;;7450:6;7439:18;;7429:29;;7419:57;;7472:1;7469;7462:12;7419:57;7323:159;;;:::o;7487:328::-;7561:6;7569;7577;7630:2;7618:9;7609:7;7605:23;7601:32;7598:52;;;7646:1;7643;7636:12;7598:52;7669:28;7687:9;7669:28;:::i;:::-;7659:38;;7716:37;7749:2;7738:9;7734:18;7716:37;:::i;:::-;7706:47;;7772:37;7805:2;7794:9;7790:18;7772:37;:::i;:::-;7762:47;;7487:328;;;;;:::o;7820:247::-;7879:6;7932:2;7920:9;7911:7;7907:23;7903:32;7900:52;;;7948:1;7945;7938:12;7900:52;7987:9;7974:23;8006:31;8031:5;8006:31;:::i;8072:454::-;8167:6;8175;8183;8191;8199;8252:3;8240:9;8231:7;8227:23;8223:33;8220:53;;;8269:1;8266;8259:12;8220:53;-1:-1:-1;;8292:23:1;;;8362:2;8347:18;;8334:32;;-1:-1:-1;8413:2:1;8398:18;;8385:32;;8464:2;8449:18;;8436:32;;-1:-1:-1;8515:3:1;8500:19;8487:33;;-1:-1:-1;8072:454:1;-1:-1:-1;8072:454:1:o;8531:382::-;8596:6;8604;8657:2;8645:9;8636:7;8632:23;8628:32;8625:52;;;8673:1;8670;8663:12;8625:52;8712:9;8699:23;8731:31;8756:5;8731:31;:::i;:::-;8781:5;-1:-1:-1;8838:2:1;8823:18;;8810:32;8851:30;8810:32;8851:30;:::i;8918:553::-;9019:6;9027;9035;9088:2;9076:9;9067:7;9063:23;9059:32;9056:52;;;9104:1;9101;9094:12;9056:52;9143:9;9130:23;9162:31;9187:5;9162:31;:::i;:::-;9212:5;-1:-1:-1;9269:2:1;9254:18;;9241:32;9282:33;9241:32;9282:33;:::i;:::-;9334:7;-1:-1:-1;9393:2:1;9378:18;;9365:32;9406:33;9365:32;9406:33;:::i;:::-;9458:7;9448:17;;;8918:553;;;;;:::o;9476:241::-;9532:6;9585:2;9573:9;9564:7;9560:23;9556:32;9553:52;;;9601:1;9598;9591:12;9553:52;9640:9;9627:23;9659:28;9681:5;9659:28;:::i;10171:388::-;10239:6;10247;10300:2;10288:9;10279:7;10275:23;10271:32;10268:52;;;10316:1;10313;10306:12;10268:52;10355:9;10342:23;10374:31;10399:5;10374:31;:::i;:::-;10424:5;-1:-1:-1;10481:2:1;10466:18;;10453:32;10494:33;10453:32;10494:33;:::i;11322:484::-;11375:3;11413:5;11407:12;11440:6;11435:3;11428:19;11466:4;11495:2;11490:3;11486:12;11479:19;;11532:2;11525:5;11521:14;11553:1;11563:218;11577:6;11574:1;11571:13;11563:218;;;11642:13;;-1:-1:-1;;;;;11638:62:1;11626:75;;11721:12;;;;11756:15;;;;11599:1;11592:9;11563:218;;;-1:-1:-1;11797:3:1;;11322:484;-1:-1:-1;;;;;11322:484:1:o;11811:342::-;12012:2;12001:9;11994:21;11975:4;12032:56;12084:2;12073:9;12069:18;12061:6;12032:56;:::i;:::-;12024:64;;12138:6;12131:14;12124:22;12119:2;12108:9;12104:18;12097:50;11811:342;;;;;:::o;12842:184::-;12912:6;12965:2;12953:9;12944:7;12940:23;12936:32;12933:52;;;12981:1;12978;12971:12;12933:52;-1:-1:-1;13004:16:1;;12842:184;-1:-1:-1;12842:184:1:o;13384:::-;13436:77;13433:1;13426:88;13533:4;13530:1;13523:15;13557:4;13554:1;13547:15;13573:482;13662:1;13705:5;13662:1;13719:330;13740:7;13730:8;13727:21;13719:330;;;13859:4;-1:-1:-1;;13787:77:1;13781:4;13778:87;13775:113;;;13868:18;;:::i;:::-;13918:7;13908:8;13904:22;13901:55;;;13938:16;;;;13901:55;14017:22;;;;13977:15;;;;13719:330;;;13723:3;13573:482;;;;;:::o;14060:866::-;14109:5;14139:8;14129:80;;-1:-1:-1;14180:1:1;14194:5;;14129:80;14228:4;14218:76;;-1:-1:-1;14265:1:1;14279:5;;14218:76;14310:4;14328:1;14323:59;;;;14396:1;14391:130;;;;14303:218;;14323:59;14353:1;14344:10;;14367:5;;;14391:130;14428:3;14418:8;14415:17;14412:43;;;14435:18;;:::i;:::-;-1:-1:-1;;14491:1:1;14477:16;;14506:5;;14303:218;;14605:2;14595:8;14592:16;14586:3;14580:4;14577:13;14573:36;14567:2;14557:8;14554:16;14549:2;14543:4;14540:12;14536:35;14533:77;14530:159;;;-1:-1:-1;14642:19:1;;;14674:5;;14530:159;14721:34;14746:8;14740:4;14721:34;:::i;:::-;14851:6;-1:-1:-1;;14779:79:1;14770:7;14767:92;14764:118;;;14862:18;;:::i;:::-;14900:20;;14060:866;-1:-1:-1;;;14060:866:1:o;14931:140::-;14989:5;15018:47;15059:4;15049:8;15045:19;15039:4;15018:47;:::i;15076:228::-;15116:7;15242:1;-1:-1:-1;;15170:74:1;15167:1;15164:81;15159:1;15152:9;15145:17;15141:105;15138:131;;;15249:18;;:::i;:::-;-1:-1:-1;15289:9:1;;15076:228::o;15668:251::-;15738:6;15791:2;15779:9;15770:7;15766:23;15762:32;15759:52;;;15807:1;15804;15797:12;15759:52;15839:9;15833:16;15858:31;15883:5;15858:31;:::i;16558:245::-;16625:6;16678:2;16666:9;16657:7;16653:23;16649:32;16646:52;;;16694:1;16691;16684:12;16646:52;16726:9;16720:16;16745:28;16767:5;16745:28;:::i;17596:306::-;17684:6;17692;17700;17753:2;17741:9;17732:7;17728:23;17724:32;17721:52;;;17769:1;17766;17759:12;17721:52;17798:9;17792:16;17782:26;;17848:2;17837:9;17833:18;17827:25;17817:35;;17892:2;17881:9;17877:18;17871:25;17861:35;;17596:306;;;;;:::o;17907:274::-;17947:1;17973;17963:189;;18008:77;18005:1;17998:88;18109:4;18106:1;18099:15;18137:4;18134:1;18127:15;17963:189;-1:-1:-1;18166:9:1;;17907:274::o;18536:184::-;18588:77;18585:1;18578:88;18685:4;18682:1;18675:15;18709:4;18706:1;18699:15;18725:175;18762:3;18806:4;18799:5;18795:16;18835:4;18826:7;18823:17;18820:43;;18843:18;;:::i;:::-;18892:1;18879:15;;18725:175;-1:-1:-1;;18725:175:1:o;18905:125::-;18945:4;18973:1;18970;18967:8;18964:34;;;18978:18;;:::i;:::-;-1:-1:-1;19015:9:1;;18905:125::o;23290:224::-;23329:3;23357:6;23390:2;23387:1;23383:10;23420:2;23417:1;23413:10;23451:3;23447:2;23443:12;23438:3;23435:21;23432:47;;;23459:18;;:::i;:::-;23495:13;;23290:224;-1:-1:-1;;;;23290:224:1:o;25033:128::-;25073:3;25104:1;25100:6;25097:1;25094:13;25091:39;;;25110:18;;:::i;:::-;-1:-1:-1;25146:9:1;;25033:128::o;27963:605::-;28262:6;28251:9;28244:25;28305:6;28300:2;28289:9;28285:18;28278:34;28348:3;28343:2;28332:9;28328:18;28321:31;28225:4;28369:57;28421:3;28410:9;28406:19;28398:6;28369:57;:::i;:::-;-1:-1:-1;;;;;28462:55:1;;;;28457:2;28442:18;;28435:83;-1:-1:-1;28549:3:1;28534:19;28527:35;28361:65;27963:605;-1:-1:-1;;;27963:605:1:o

Swarm Source

ipfs://6f78ea16a0aeaae945a61beb3c5be92dfbae67dfd160f9c46395f569ae42d6ba
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.