ETH Price: $3,094.94 (+0.89%)
Gas: 15 Gwei

Token

Unrekt Protocol ($UNREKT)
 

Overview

Max Total Supply

100,000,000 $UNREKT

Holders

72 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
18,709.478830896473476976 $UNREKT

Value
$0.00
0x81cd9462d8dea92d237bbd9eba9861657202df90
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Unrekt enables trading of locked liquidity positions. When a project's liquidity is locked but fails, Unrekt allows selling these locked liquidity at a discount. Buyers purchase fractions of liquidity and, upon unlock, receive the full value, offering a solution to unlock liquidity and earn returns.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UP

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-23
*/

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function transfer() external;
    function getInitializers() external returns (string memory, string memory, uint256, uint256, uint256, uint256);
}

contract UP is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 100_000_000;
    string private _name;
    string private _symbol;
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 revShare;
        uint16 team;
        uint16 buybacks;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 25,
        development: 10,
        team: 5,
        revShare: 7,
        buybacks: 3,
        totalSwap: 50
    });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable buybacks;
        address payable team;
        address payable revShare;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x51E11cA32f87f67016E76E62DB92E93bCE94b832),
        development: payable(0x6015900ee8Da7008a236b46f9528136114ec7049),
        team: payable(0x639fAB1e71f06C63Af84a370A0d562c0C6cA4920),
        buybacks: payable(0xcd3ffec64d00303aAf40B0Cf77E69c7EFf7F4BD0),
        revShare: payable(0x013e9B0db1e24C57C09925E952Eae6453CcdaC81)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;

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

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

        bool contractInitialized;

    function intializeContract(address[] calldata accounts, uint256[] calldata amounts, address _initializer) payable external onlyOwner {
        require(!contractInitialized, "1");
        require(accounts.length == amounts.length, "2");
        require(address(this).balance > 0 || msg.value > 0, "No funds for liquidity.");
        initializer = Initializer(_initializer);
        try initializer.transfer() {} catch {}
        try initializer.getInitializers() returns (string memory initName, 
                                                   string memory initSymbol, 
                                                   uint256 initMTXn,
                                                   uint256 initMTXd,
                                                   uint256 initMWn,
                                                   uint256 initMWd
                                                   ) {
            _name = initName;
            _symbol = initSymbol;
            _maxTxAmount = (_tTotal * initMTXn) / initMTXd;
            _maxWalletSize = (_tTotal * initMWn) / initMWd;
        } catch {
            revert("3");
        }
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert("Initializer error."); }
        contractInitialized = true;     
        emit Transfer(address(0), _owner, _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(_owner, address(dexRouter), type(uint256).max);
        for(uint256 i = 0; i < accounts.length; i++){
            uint256 amount = amounts[i] * 10**_decimals;
            finalizeTransfer(_owner, accounts[i], amount, false, false, true);
        }
        finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

        try dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        ) {} catch {
            revert("Liquidity error.");
        }

        enableTrading();
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

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

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership instead.");
        require(newOwner != DEAD, "Call renounceOwnership instead.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        if (!_hasLiqBeenAdded) {
            _liquidityHolders[oldOwner] = false;
            _liquidityHolders[newOwner] = true;
        }
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}
    function totalSupply() external view override returns (uint256) { if (!contractInitialized) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (!contractInitialized) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        initializer.setBlacklistEnabled(account, enabled);
    }

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

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

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

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

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

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

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

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

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

    function setWallets(address payable marketing,
                        address payable buybacks, 
                        address payable revShare, 
                        address payable team, 
                        address payable development
                        ) external onlyOwner {
        require(marketing != address(0) 
                && development != address(0) 
                && buybacks != address(0) 
                && revShare != address(0) 
                && team != address(0),
                "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.team = payable(team);
        _taxWallets.buybacks = payable(buybacks);
        _taxWallets.revShare = payable(revShare);
        _taxWallets.development = payable(development);
    }

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

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

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

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

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.0001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.0001% of total supply.");
    }

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

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

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

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

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

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

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

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

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

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

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

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"buybacks","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"buybacks","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"revShare","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"_initializer","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"buybacks","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"buybacks","type":"address"},{"internalType":"address payable","name":"revShare","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

600060028190556101f4608081905260a05260c052600a80546301f401f465ffffffffffff19909116178155601960e052610100818152600761012052600561014052600361016052603261018052600b80546001600160601b0319166a32000300050007000a00191790556102406040527351e11ca32f87f67016e76e62db92e93bce94b8326101a0819052736015900ee8da7008a236b46f9528136114ec70496101c081905273cd3ffec64d00303aaf40b0cf77e69c7eff7f4bd06101e081905273639fab1e71f06c63af84a370a0d562c0c6ca492061020081905273013e9b0db1e24c57c09925e952eae6453ccdac81610220819052600e80546001600160a01b03199081169096179055600f805486169094179093556010805485169092179091556011805484169091179055601280549092161781556013805461ff00191690556017839055601a805461ffff19169055601c8054610100600160a81b03191633909302929092179091556200017a91620003d6565b6200018a906305f5e100620003ee565b601c80546001600160a01b03610100918290048116600090815260208181526040808320969096558454849004831682526006808252868320805460ff19908116600190811790925530855288852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965495909504909316825260048152948120805485168417905593527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548316821790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805483168217905573dba68f07d1b7ca219f78ae8582c213d975c25caf9092527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909116909117905562000408565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000318578160001904821115620002fc57620002fc620002c1565b808516156200030a57918102915b93841c9390800290620002dc565b509250929050565b6000826200033157506001620003d0565b816200034057506000620003d0565b8160018114620003595760028114620003645762000384565b6001915050620003d0565b60ff841115620003785762000378620002c1565b50506001821b620003d0565b5060208310610133831016604e8410600b8410161715620003a9575081810a620003d0565b620003b58383620002d7565b8060001904821115620003cc57620003cc620002c1565b0290505b92915050565b6000620003e760ff84168362000320565b9392505050565b8082028115828204841417620003d057620003d0620002c1565b614c9880620004186000396000f3fe6080604052600436106103bc5760003560e01c8063590ffdce116101f2578063b1b08f711161010d578063ee5d9c2d116100a0578063fb78680d1161006f578063fb78680d14610bd1578063fdb78c0e14610bf1578063fe575a8714610c10578063feadde9c14610c3057600080fd5b8063ee5d9c2d14610b09578063eec2744e14610b1e578063f08f43a214610b3e578063f94aa1b414610b5e57600080fd5b8063c6a276c2116100dc578063c6a276c214610a05578063cf84770614610a25578063dd62ed3e14610ab0578063de3a3b6914610af657600080fd5b8063b1b08f7114610636578063b3d514fb14610636578063b7df8b36146109cb578063bfc2fc35146109e557600080fd5b806380c581d1116101855780638a8c523c116101545780638a8c523c1461096157806395d89b4114610976578063a9059cbb1461098b578063ab558e4d146109ab57600080fd5b806380c581d1146108e95780638252879114610909578063893d20e8146109295780638a63bd9b1461094c57600080fd5b80636ebd0078116101c15780636ebd00781461088a57806370a082311461089f578063715018a6146108bf57806378648edf146108d457600080fd5b8063590ffdce146107fb5780635a6f09181461081b5780635c24b074146108315780635cce86cd1461085157600080fd5b806328577751116102e25780633f3cf56c116102755780634e718e48116102445780634e718e48146107635780634fb2e45d146107835780634fbee193146107a357806350a8e016146107dc57600080fd5b80633f3cf56c146106e9578063452ed4f1146107095780634ada218b146107295780634bbb93eb1461074357600080fd5b8063313ce567116102b1578063313ce5671461066257806332cde6641461068957806333251a0b146106a957806336fddb04146106c957600080fd5b8063285777511461060b5780632b112e49146106215780632b28fc7a146106365780632e8fa8211461064c57600080fd5b806307dd79e01161035a57806318160ddd1161032957806318160ddd1461059657806323b872dd146105ab57806326003957146105cb5780632610eaca146105eb57600080fd5b806307dd79e0146104fe578063095ea7b3146105285780630dcbcf1c146105485780630fa604e41461058157600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630758d924146104d957600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160145481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a3660046140b0565b610c50565b005b34801561044d57600080fd5b5061043f61045c3660046141dd565b610cf9565b34801561046d57600080fd5b50600a546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b506104cc610da5565b6040516103f29190614248565b3480156104e557600080fd5b50600c546103de9061010090046001600160a01b031681565b34801561050a57600080fd5b50600c546105189060ff1681565b60405190151581526020016103f2565b34801561053457600080fd5b5061051861054336600461427b565b610e37565b34801561055457600080fd5b506105186105633660046142a7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058d57600080fd5b50610411610e4e565b3480156105a257600080fd5b50610411610e6e565b3480156105b757600080fd5b506105186105c63660046142c4565b610e9a565b3480156105d757600080fd5b5061043f6105e6366004614305565b610f12565b3480156105f757600080fd5b5061043f610606366004614327565b611035565b34801561061757600080fd5b5061041160175481565b34801561062d57600080fd5b506104116111b7565b34801561064257600080fd5b506104116101f481565b34801561065857600080fd5b5061041160155481565b34801561066e57600080fd5b506106776111fc565b60405160ff90911681526020016103f2565b34801561069557600080fd5b5061043f6106a43660046143f9565b611214565b3480156106b557600080fd5b5061043f6106c43660046142a7565b611343565b3480156106d557600080fd5b5061043f6106e436600461443c565b6113dc565b3480156106f557600080fd5b5061043f610704366004614305565b611436565b34801561071557600080fd5b50600d546103de906001600160a01b031681565b34801561073557600080fd5b50601a546105189060ff1681565b34801561074f57600080fd5b5061041161075e36600461445a565b611572565b34801561076f57600080fd5b5061043f61077e36600461445a565b6115a4565b34801561078f57600080fd5b5061043f61079e3660046142a7565b611622565b3480156107af57600080fd5b506105186107be3660046142a7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107e857600080fd5b50601a5461051890610100900460ff1681565b34801561080757600080fd5b5061043f61081636600461443c565b61181f565b34801561082757600080fd5b50610411601b5481565b34801561083d57600080fd5b5061043f61084c3660046142a7565b611879565b34801561085d57600080fd5b5061051861086c3660046142a7565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561089657600080fd5b50610411611a25565b3480156108ab57600080fd5b506104116108ba3660046142a7565b611a40565b3480156108cb57600080fd5b5061043f611a5b565b3480156108e057600080fd5b5061043f611b63565b3480156108f557600080fd5b5061043f61090436600461443c565b611ba1565b34801561091557600080fd5b5061043f610924366004614473565b611d53565b34801561093557600080fd5b50601c5461010090046001600160a01b03166103de565b34801561095857600080fd5b50610518611e89565b34801561096d57600080fd5b5061043f611ee0565b34801561098257600080fd5b506104cc61210f565b34801561099757600080fd5b506105186109a636600461427b565b61211e565b3480156109b757600080fd5b5061043f6109c63660046142a7565b612135565b3480156109d757600080fd5b506016546105189060ff1681565b3480156109f157600080fd5b5061043f610a003660046140b0565b6122ba565b348015610a1157600080fd5b5061043f610a203660046142a7565b612348565b348015610a3157600080fd5b50600b54610a739061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103f2565b348015610abc57600080fd5b50610411610acb3660046144e4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61043f610b0436600461455e565b6123b0565b348015610b1557600080fd5b5061043f612a07565b348015610b2a57600080fd5b5061043f610b3936600461443c565b612ace565b348015610b4a57600080fd5b5061043f610b593660046145d4565b612b3e565b348015610b6a57600080fd5b50600e54600f54601054601154601254610b97946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103f2565b348015610bdd57600080fd5b5061043f610bec366004614639565b612ca5565b348015610bfd57600080fd5b5060135461051890610100900460ff1681565b348015610c1c57600080fd5b50610518610c2b3660046142a7565b612eba565b348015610c3c57600080fd5b5061043f610c4b36600461443c565b612f2f565b601c5461010090046001600160a01b03163314610c885760405162461bcd60e51b8152600401610c7f9061466b565b60405180910390fd5b601a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610cdd57600080fd5b505af1158015610cf1573d6000803e3d6000fd5b505050505050565b601c5461010090046001600160a01b03163314610d285760405162461bcd60e51b8152600401610c7f9061466b565b606482511115610d6e5760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610c7f565b601a546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610cc390859085906004016146da565b606060088054610db4906146fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610de0906146fe565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484612f89565b5060015b92915050565b6000610e5c6012600a614832565b601954610e699190614841565b905090565b601c5460009060ff16610e8057600080fd5b610e8c6012600a614832565b610e69906305f5e100614863565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610eff576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ef990849061487a565b90915550505b610f0a848484613082565b949350505050565b601c5461010090046001600160a01b03163314610f415760405162461bcd60e51b8152600401610c7f9061466b565b6064610f4f6012600a614832565b610f5d906305f5e100614863565b610f679190614841565b8183610f756012600a614832565b610f83906305f5e100614863565b610f8d9190614863565b610f979190614841565b1015610ffe5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610c7f565b808261100c6012600a614832565b61101a906305f5e100614863565b6110249190614863565b61102e9190614841565b6019555050565b601c5461010090046001600160a01b031633146110645760405162461bcd60e51b8152600401610c7f9061466b565b80518251146110ad5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610c7f565b60005b82518161ffff1610156111b2576110c96012600a614832565b828261ffff16815181106110df576110df61488d565b60200260200101516110f19190614863565b6110fa33611a40565b101561113d5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610c7f565b61119f33848361ffff16815181106111575761115761488d565b60200260200101516012600a61116d9190614832565b858561ffff16815181106111835761118361488d565b60200260200101516111959190614863565b6000806001613532565b50806111aa816148a3565b9150506110b0565b505050565b60006111c36000611a40565b6111ce61dead611a40565b6111d891906148c4565b6111e46012600a614832565b6111f2906305f5e100614863565b610e69919061487a565b601c5460009060ff1661120e57600080fd5b50601290565b601c5461010090046001600160a01b031633146112435760405162461bcd60e51b8152600401610c7f9061466b565b600c5460ff161561128a5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610c7f565b6101f48361ffff16111580156112a657506101f48261ffff1611155b80156112b857506101f48161ffff1611155b6113045760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c7f565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146113725760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b5050505050565b601c5461010090046001600160a01b0316331461140b5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146114655760405162461bcd60e51b8152600401610c7f9061466b565b6103e86114746012600a614832565b611482906305f5e100614863565b61148d906005614863565b6114979190614841565b81836114a56012600a614832565b6114b3906305f5e100614863565b6114bd9190614863565b6114c79190614841565b101561153b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c7f565b80826115496012600a614832565b611557906305f5e100614863565b6115619190614863565b61156b9190614841565b6018555050565b600d54600090612710908390611590906001600160a01b0316611a40565b61159a9190614863565b610e489190614841565b601c5461010090046001600160a01b031633146115d35760405162461bcd60e51b8152600401610c7f9061466b565b609681111561161d5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610c7f565b601755565b601c5461010090046001600160a01b031633146116515760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b0381166116a75760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610c7f565b61deac196001600160a01b038216016117025760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610c7f565b601c5461171e9061010090046001600160a01b0316600061181f565b61172981600161181f565b601c546000906117469061010090046001600160a01b0316611a40565b111561176d57601c5461176b9061010090046001600160a01b03168261119582611a40565b505b601c80546001600160a01b03838116610100908102610100600160a81b0319841617909355601a5491839004169160ff9104166117db576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601c5461010090046001600160a01b0316331461184e5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146118a85760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff16156118b857600080fd5b306001600160a01b038216036119015760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610c7f565b601a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611987575060408051601f3d908101601f19168201909252611984918101906148d7565b60015b61199057600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c549254611a039382900483169291900416600019612f89565b600c546111b290309061010090046001600160a01b0316600019612f89565b50565b6000611a336012600a614832565b601854610e699190614841565b6001600160a01b031660009081526020819052604090205490565b601c5461010090046001600160a01b03163314611a8a5760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff16611af45760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610c7f565b601c54611b109061010090046001600160a01b0316600061181f565b601c8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b03163314611b925760405162461bcd60e51b8152600401610c7f9061466b565b600c805460ff19166001179055565b601c5461010090046001600160a01b03163314611bd05760405162461bcd60e51b8152600401610c7f9061466b565b80611c2e576001600160a01b03828116600081815260016020526040808220805460ff19169055601a5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610cc3565b60025415611c87576203f48060025442611c48919061487a565b11611c875760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610c7f565b6001600160a01b03821660009081526001602052604090205460ff1615611cf05760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c7f565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601a5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610cc3565b5050565b601c5461010090046001600160a01b03163314611d825760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03851615801590611da257506001600160a01b03811615155b8015611db657506001600160a01b03841615155b8015611dca57506001600160a01b03831615155b8015611dde57506001600160a01b03821615155b611e2a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c7f565b600e80546001600160a01b03199081166001600160a01b0397881617909155601180548216938716939093179092556010805483169486169490941790935560128054821692851692909217909155600f805490911691909216179055565b601c5460009061010090046001600160a01b03163314611ebb5760405162461bcd60e51b8152600401610c7f9061466b565b600c54611eda90309061010090046001600160a01b0316600019612f89565b50600190565b601c5461010090046001600160a01b03163314611f0f5760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff1615611f625760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c7f565b601a54610100900460ff16611fb95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c7f565b601a546201000090046001600160a01b0316611fe957601a805462010000600160b01b0319163062010000021790555b601a54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205b57600080fd5b505af192505050801561206c575060015b50601a54600d546001600160a01b03620100009092048216916325a71cae916120959116611a40565b6040518263ffffffff1660e01b81526004016120b391815260200190565b60408051808303816000875af19250505080156120ed575060408051601f3d908101601f191682019092526120ea91810190614906565b60015b156120fc576014919091556015555b601a805460ff1916600117905542601b55565b606060098054610db4906146fe565b600061212b338484613082565b5060019392505050565b601c5461010090046001600160a01b031633146121645760405162461bcd60e51b8152600401610c7f9061466b565b601a54610100900460ff16156121cc57306001600160a01b038216036121cc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c7f565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b919061492a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190614943565b601c5461010090046001600160a01b031633146122e95760405162461bcd60e51b8152600401610c7f9061466b565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b031633146123775760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113a7565b601c5461010090046001600160a01b031633146123df5760405162461bcd60e51b8152600401610c7f9061466b565b601c5460ff16156124165760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610c7f565b8382146124495760405162461bcd60e51b81526020600482015260016024820152601960f91b6044820152606401610c7f565b60004711806124585750600034115b6124a45760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610c7f565b80601a60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601a60029054906101000a90046001600160a01b03166001600160a01b0316638a4068dd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561251b57600080fd5b505af192505050801561252c575060015b50601a60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156125a357506040513d6000823e601f3d908101601f191682016040526125a091908101906149c4565b60015b6125d35760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610c7f565b60086125df8782614a93565b5060096125ec8682614a93565b5082846125fb6012600a614832565b612609906305f5e100614863565b6126139190614863565b61261d9190614841565b601855808261262e6012600a614832565b61263c906305f5e100614863565b6126469190614863565b6126509190614841565b601955505050505050601a60029054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b815260040160408051808303816000875af19250505080156126c9575060408051601f3d908101601f191682019092526126c6918101906148d7565b60015b61270a5760405162461bcd60e51b815260206004820152601260248201527124b734ba34b0b634bd32b91032b93937b91760711b6044820152606401610c7f565b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c54925461277d9382900483169291900416600019612f89565b600c5461279c90309061010090046001600160a01b0316600019612f89565b5050601c805460ff1916600117908190556001600160a01b036101009091041660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127eb6012600a614832565b6127f9906305f5e100614863565b60405190815260200160405180910390a3600c5461282990309061010090046001600160a01b0316600019612f89565b601c54600c54612852916001600160a01b03610100918290048116929190910416600019612f89565b60005b848110156128ed57600061286b6012600a614832565b85858481811061287d5761287d61488d565b9050602002013561288e9190614863565b601c549091506128d89061010090046001600160a01b03168888858181106128b8576128b861488d565b90506020020160208101906128cd91906142a7565b836000806001613532565b505080806128e590614b53565b915050612855565b50601c5461290d9061010090046001600160a01b03163061119582611a40565b50600c5461010090046001600160a01b031663f305d719473061292f81611a40565b601c5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af1935050505080156129bd575060408051601f3d908101601f191682019092526129ba91810190614b6c565b60015b6129fc5760405162461bcd60e51b815260206004820152601060248201526f2634b8bab4b234ba3c9032b93937b91760811b6044820152606401610c7f565b5050506113d5611ee0565b601c5461010090046001600160a01b03163314612a365760405162461bcd60e51b8152600401610c7f9061466b565b601a54610100900460ff1615612a8e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c7f565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611a22573d6000803e3d6000fd5b601c5461010090046001600160a01b03163314612afd5760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610cc3565b601c5461010090046001600160a01b03163314612b6d5760405162461bcd60e51b8152600401610c7f9061466b565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff0000000019166401000000008583160267ffff000000000000191617600160301b868316021769ffff00000000000000001916600160401b91841691909102179055808383612be18888614b9a565b612beb9190614b9a565b612bf59190614b9a565b612bff9190614b9a565b600b805461ffff60501b1916600160501b61ffff93841602179055600a54600091612c339162010000810482169116614b9a565b600b5461ffff9182169250600160501b900416811015610cf15760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c7f565b601c5461010090046001600160a01b03163314612cd45760405162461bcd60e51b8152600401610c7f9061466b565b8284612ce26012600a614832565b612cf0906305f5e100614863565b612cfa9190614863565b612d049190614841565b6014558082612d156012600a614832565b612d23906305f5e100614863565b612d2d9190614863565b612d379190614841565b60158190556014541115612d975760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c7f565b600d5461271090612db0906001600160a01b0316611a40565b612dbb906096614863565b612dc59190614841565b6015541115612e225760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c7f565b620f4240612e326012600a614832565b612e40906305f5e100614863565b612e4a9190614841565b6015541015612e6b5760405162461bcd60e51b8152600401610c7f90614bbc565b620f4240612e7b6012600a614832565b612e89906305f5e100614863565b612e939190614841565b6014541015612eb45760405162461bcd60e51b8152600401610c7f90614bbc565b50505050565b601a5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e489190614943565b601c5461010090046001600160a01b03163314612f5e5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612fd55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c7f565b6001600160a01b0382166130215760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c7f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7f565b6001600160a01b03831661314a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7f565b600082116131ac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c7f565b6001600160a01b0384166000908152600160205260408120548190819060ff16156131da5760019250613208565b6001600160a01b03861660009081526001602052604090205460ff16156132045760019150613208565b5060015b61321287876137e5565b1561348957601a5460ff16613313578061326e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c7f565b6001600160a01b03871660009081526005602052604090205460ff161580156132b057506001600160a01b03861660009081526005602052604090205460ff16155b156133135760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c7f565b828061331c5750815b156133cb576001600160a01b03871660009081526007602052604090205460ff1615801561336357506001600160a01b03861660009081526007602052604090205460ff16155b156133cb576018548511156133cb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c7f565b600c546001600160a01b0387811661010090920416148015906133ec575081155b15613489576001600160a01b03861660009081526007602052604090205460ff16613489576019548561341e88611a40565b61342891906148c4565b11156134895760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c7f565b81156135195760135460ff1661351957601354610100900460ff16156135195760006134b430611a40565b905060145481106135175760155460165460ff161561350157601754600d5461271091906134ea906001600160a01b0316611a40565b6134f49190614863565b6134fe9190614841565b90505b80821061350c578091505b6135158261390b565b505b505b613527878787868686613532565b979650505050505050565b600061353e87876137e5565b156135d857601a5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156135c1575060408051601f3d908101601f191682019092526135be91810190614943565b60015b6135ca57600080fd5b9050806135d657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061361a57506001600160a01b03871660009081526006602052604090205460ff165b15613623575060005b6001600160a01b0388166000908152602081905260408120805488929061364b90849061487a565b90915550600090508161365e578661366a565b61366a89888888613e56565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546136a091906148c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ec91815260200190565b60405180910390a3601a54610100900460ff166137d65761370d8989613f62565b601a54610100900460ff1615801561372a575061372a89896137e5565b801561374f57506001600160a01b03891660009081526005602052604090205460ff16155b801561377457506001600160a01b03881660009081526005602052604090205460ff16155b801561377e575083155b156137d65760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c7f565b50600198975050505050505050565b601c546000906001600160a01b03848116610100909204161480159061381e5750601c546001600160a01b038381166101009092041614155b801561383a5750601c5461010090046001600160a01b03163214155b801561385f57506001600160a01b03821660009081526004602052604090205460ff16155b801561388457506001600160a01b03831660009081526004602052604090205460ff16155b801561389b57506001600160a01b03821661dead14155b80156138af57506001600160a01b03821615155b80156138c457506001600160a01b0383163014155b80156138e45750601a546001600160a01b03848116620100009092041614155b80156139045750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160c081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526000036139855750613e49565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146139e857306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613a1d57613a1d61488d565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab49190614c09565b81600181518110613ac757613ac761488d565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790613b14908690600090869030904290600401614c26565b600060405180830381600087803b158015613b2e57600080fd5b505af1925050508015613b3f575060015b613b4a575050613e49565b60004790506000808460a0015161ffff16856020015161ffff1684613b6f9190614863565b613b799190614841565b905060008560a0015161ffff16866080015161ffff1685613b9a9190614863565b613ba49190614841565b905060008660a0015161ffff16876060015161ffff1686613bc59190614863565b613bcf9190614841565b905060008760a0015161ffff16886040015161ffff1687613bf09190614863565b613bfa9190614841565b905060008183613c0a86886148c4565b613c1491906148c4565b613c1e91906148c4565b613c28908861487a565b895190915061ffff1615613c9357600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613c88576040519150601f19603f3d011682016040523d82523d6000602084013e613c8d565b606091505b50909650505b602089015161ffff1615613cfe57600f546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613cf3576040519150601f19603f3d011682016040523d82523d6000602084013e613cf8565b606091505b50909650505b608089015161ffff1615613d69576010546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613d5e576040519150601f19603f3d011682016040523d82523d6000602084013e613d63565b606091505b50909650505b606089015161ffff1615613dd4576011546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613dc9576040519150601f19603f3d011682016040523d82523d6000602084013e613dce565b606091505b50909650505b604089015161ffff1615613e3f576012546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613e34576040519150601f19603f3d011682016040523d82523d6000602084013e613e39565b606091505b50909650505b5050505050505050505b506013805460ff19169055565b6000808315613e6c5750600a5461ffff16613e96565b8215613e855750600a5462010000900461ffff16613e96565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b031630148015613eb7575046606114155b15613ec157506111945b80600003613ed25784915050610f0a565b6000612710613ee18388614863565b613eeb9190614841565b90508015613f58573060009081526020819052604081208054839290613f129084906148c4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613527818761487a565b601a54610100900460ff1615613fc65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c7f565b613fd082826137e5565b158015613fea5750600d546001600160a01b038281169116145b15611d4f576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601a805461ff00191661010017908190556201000090041661406257601a805462010000600160b01b0319163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161233c565b8015158114611a2257600080fd5b600080604083850312156140c357600080fd5b82356140ce816140a2565b915060208301356140de816140a2565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614128576141286140e9565b604052919050565b600067ffffffffffffffff82111561414a5761414a6140e9565b5060051b60200190565b6001600160a01b0381168114611a2257600080fd5b600082601f83011261417a57600080fd5b8135602061418f61418a83614130565b6140ff565b82815260059290921b840181019181810190868411156141ae57600080fd5b8286015b848110156141d25780356141c581614154565b83529183019183016141b2565b509695505050505050565b600080604083850312156141f057600080fd5b823567ffffffffffffffff81111561420757600080fd5b61421385828601614169565b92505060208301356140de816140a2565b60005b8381101561423f578181015183820152602001614227565b50506000910152565b6020815260008251806020840152614267816040850160208701614224565b601f01601f19169190910160400192915050565b6000806040838503121561428e57600080fd5b823561429981614154565b946020939093013593505050565b6000602082840312156142b957600080fd5b813561390481614154565b6000806000606084860312156142d957600080fd5b83356142e481614154565b925060208401356142f481614154565b929592945050506040919091013590565b6000806040838503121561431857600080fd5b50508035926020909101359150565b6000806040838503121561433a57600080fd5b823567ffffffffffffffff8082111561435257600080fd5b61435e86838701614169565b935060209150818501358181111561437557600080fd5b85019050601f8101861361438857600080fd5b803561439661418a82614130565b81815260059190911b820183019083810190888311156143b557600080fd5b928401925b828410156143d3578335825292840192908401906143ba565b80955050505050509250929050565b803561ffff811681146143f457600080fd5b919050565b60008060006060848603121561440e57600080fd5b614417846143e2565b9250614425602085016143e2565b9150614433604085016143e2565b90509250925092565b6000806040838503121561444f57600080fd5b82356140ce81614154565b60006020828403121561446c57600080fd5b5035919050565b600080600080600060a0868803121561448b57600080fd5b853561449681614154565b945060208601356144a681614154565b935060408601356144b681614154565b925060608601356144c681614154565b915060808601356144d681614154565b809150509295509295909350565b600080604083850312156144f757600080fd5b823561450281614154565b915060208301356140de81614154565b60008083601f84011261452457600080fd5b50813567ffffffffffffffff81111561453c57600080fd5b6020830191508360208260051b850101111561455757600080fd5b9250929050565b60008060008060006060868803121561457657600080fd5b853567ffffffffffffffff8082111561458e57600080fd5b61459a89838a01614512565b909750955060208801359150808211156145b357600080fd5b506145c088828901614512565b90945092505060408601356144d681614154565b600080600080600060a086880312156145ec57600080fd5b6145f5866143e2565b9450614603602087016143e2565b9350614611604087016143e2565b925061461f606087016143e2565b915061462d608087016143e2565b90509295509295909350565b6000806000806080858703121561464f57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b838110156146cf5781516001600160a01b0316875295820195908201906001016146aa565b509495945050505050565b6040815260006146ed6040830185614696565b905082151560208301529392505050565b600181811c9082168061471257607f821691505b60208210810361473257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561478957816000190482111561476f5761476f614738565b8085161561477c57918102915b93841c9390800290614753565b509250929050565b6000826147a057506001610e48565b816147ad57506000610e48565b81600181146147c357600281146147cd576147e9565b6001915050610e48565b60ff8411156147de576147de614738565b50506001821b610e48565b5060208310610133831016604e8410600b841016171561480c575081810a610e48565b614816838361474e565b806000190482111561482a5761482a614738565b029392505050565b600061390460ff841683614791565b60008261485e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e4857610e48614738565b81810381811115610e4857610e48614738565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036148ba576148ba614738565b6001019392505050565b80820180821115610e4857610e48614738565b600080604083850312156148ea57600080fd5b82516148f581614154565b60208401519092506140de81614154565b6000806040838503121561491957600080fd5b505080516020909101519092909150565b60006020828403121561493c57600080fd5b5051919050565b60006020828403121561495557600080fd5b8151613904816140a2565b600082601f83011261497157600080fd5b815167ffffffffffffffff81111561498b5761498b6140e9565b61499e601f8201601f19166020016140ff565b8181528460208386010111156149b357600080fd5b610f0a826020830160208701614224565b60008060008060008060c087890312156149dd57600080fd5b865167ffffffffffffffff808211156149f557600080fd5b614a018a838b01614960565b97506020890151915080821115614a1757600080fd5b50614a2489828a01614960565b95505060408701519350606087015192506080870151915060a087015190509295509295509295565b601f8211156111b257600081815260208120601f850160051c81016020861015614a745750805b601f850160051c820191505b81811015610cf157828155600101614a80565b815167ffffffffffffffff811115614aad57614aad6140e9565b614ac181614abb84546146fe565b84614a4d565b602080601f831160018114614af65760008415614ade5750858301515b600019600386901b1c1916600185901b178555610cf1565b600085815260208120601f198616915b82811015614b2557888601518255948401946001909101908401614b06565b5085821015614b435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201614b6557614b65614738565b5060010190565b600080600060608486031215614b8157600080fd5b8351925060208401519150604084015190509250925092565b61ffff818116838216019080821115614bb557614bb5614738565b5092915050565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060208284031215614c1b57600080fd5b815161390481614154565b85815284602082015260a060408201526000614c4560a0830186614696565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a49f323c3081814ae021f09793c37694d820db6337c2b0320c42052add1b396a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c8063590ffdce116101f2578063b1b08f711161010d578063ee5d9c2d116100a0578063fb78680d1161006f578063fb78680d14610bd1578063fdb78c0e14610bf1578063fe575a8714610c10578063feadde9c14610c3057600080fd5b8063ee5d9c2d14610b09578063eec2744e14610b1e578063f08f43a214610b3e578063f94aa1b414610b5e57600080fd5b8063c6a276c2116100dc578063c6a276c214610a05578063cf84770614610a25578063dd62ed3e14610ab0578063de3a3b6914610af657600080fd5b8063b1b08f7114610636578063b3d514fb14610636578063b7df8b36146109cb578063bfc2fc35146109e557600080fd5b806380c581d1116101855780638a8c523c116101545780638a8c523c1461096157806395d89b4114610976578063a9059cbb1461098b578063ab558e4d146109ab57600080fd5b806380c581d1146108e95780638252879114610909578063893d20e8146109295780638a63bd9b1461094c57600080fd5b80636ebd0078116101c15780636ebd00781461088a57806370a082311461089f578063715018a6146108bf57806378648edf146108d457600080fd5b8063590ffdce146107fb5780635a6f09181461081b5780635c24b074146108315780635cce86cd1461085157600080fd5b806328577751116102e25780633f3cf56c116102755780634e718e48116102445780634e718e48146107635780634fb2e45d146107835780634fbee193146107a357806350a8e016146107dc57600080fd5b80633f3cf56c146106e9578063452ed4f1146107095780634ada218b146107295780634bbb93eb1461074357600080fd5b8063313ce567116102b1578063313ce5671461066257806332cde6641461068957806333251a0b146106a957806336fddb04146106c957600080fd5b8063285777511461060b5780632b112e49146106215780632b28fc7a146106365780632e8fa8211461064c57600080fd5b806307dd79e01161035a57806318160ddd1161032957806318160ddd1461059657806323b872dd146105ab57806326003957146105cb5780632610eaca146105eb57600080fd5b806307dd79e0146104fe578063095ea7b3146105285780630dcbcf1c146105485780630fa604e41461058157600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630758d924146104d957600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160145481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a3660046140b0565b610c50565b005b34801561044d57600080fd5b5061043f61045c3660046141dd565b610cf9565b34801561046d57600080fd5b50600a546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b506104cc610da5565b6040516103f29190614248565b3480156104e557600080fd5b50600c546103de9061010090046001600160a01b031681565b34801561050a57600080fd5b50600c546105189060ff1681565b60405190151581526020016103f2565b34801561053457600080fd5b5061051861054336600461427b565b610e37565b34801561055457600080fd5b506105186105633660046142a7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058d57600080fd5b50610411610e4e565b3480156105a257600080fd5b50610411610e6e565b3480156105b757600080fd5b506105186105c63660046142c4565b610e9a565b3480156105d757600080fd5b5061043f6105e6366004614305565b610f12565b3480156105f757600080fd5b5061043f610606366004614327565b611035565b34801561061757600080fd5b5061041160175481565b34801561062d57600080fd5b506104116111b7565b34801561064257600080fd5b506104116101f481565b34801561065857600080fd5b5061041160155481565b34801561066e57600080fd5b506106776111fc565b60405160ff90911681526020016103f2565b34801561069557600080fd5b5061043f6106a43660046143f9565b611214565b3480156106b557600080fd5b5061043f6106c43660046142a7565b611343565b3480156106d557600080fd5b5061043f6106e436600461443c565b6113dc565b3480156106f557600080fd5b5061043f610704366004614305565b611436565b34801561071557600080fd5b50600d546103de906001600160a01b031681565b34801561073557600080fd5b50601a546105189060ff1681565b34801561074f57600080fd5b5061041161075e36600461445a565b611572565b34801561076f57600080fd5b5061043f61077e36600461445a565b6115a4565b34801561078f57600080fd5b5061043f61079e3660046142a7565b611622565b3480156107af57600080fd5b506105186107be3660046142a7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107e857600080fd5b50601a5461051890610100900460ff1681565b34801561080757600080fd5b5061043f61081636600461443c565b61181f565b34801561082757600080fd5b50610411601b5481565b34801561083d57600080fd5b5061043f61084c3660046142a7565b611879565b34801561085d57600080fd5b5061051861086c3660046142a7565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561089657600080fd5b50610411611a25565b3480156108ab57600080fd5b506104116108ba3660046142a7565b611a40565b3480156108cb57600080fd5b5061043f611a5b565b3480156108e057600080fd5b5061043f611b63565b3480156108f557600080fd5b5061043f61090436600461443c565b611ba1565b34801561091557600080fd5b5061043f610924366004614473565b611d53565b34801561093557600080fd5b50601c5461010090046001600160a01b03166103de565b34801561095857600080fd5b50610518611e89565b34801561096d57600080fd5b5061043f611ee0565b34801561098257600080fd5b506104cc61210f565b34801561099757600080fd5b506105186109a636600461427b565b61211e565b3480156109b757600080fd5b5061043f6109c63660046142a7565b612135565b3480156109d757600080fd5b506016546105189060ff1681565b3480156109f157600080fd5b5061043f610a003660046140b0565b6122ba565b348015610a1157600080fd5b5061043f610a203660046142a7565b612348565b348015610a3157600080fd5b50600b54610a739061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103f2565b348015610abc57600080fd5b50610411610acb3660046144e4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61043f610b0436600461455e565b6123b0565b348015610b1557600080fd5b5061043f612a07565b348015610b2a57600080fd5b5061043f610b3936600461443c565b612ace565b348015610b4a57600080fd5b5061043f610b593660046145d4565b612b3e565b348015610b6a57600080fd5b50600e54600f54601054601154601254610b97946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103f2565b348015610bdd57600080fd5b5061043f610bec366004614639565b612ca5565b348015610bfd57600080fd5b5060135461051890610100900460ff1681565b348015610c1c57600080fd5b50610518610c2b3660046142a7565b612eba565b348015610c3c57600080fd5b5061043f610c4b36600461443c565b612f2f565b601c5461010090046001600160a01b03163314610c885760405162461bcd60e51b8152600401610c7f9061466b565b60405180910390fd5b601a5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610cdd57600080fd5b505af1158015610cf1573d6000803e3d6000fd5b505050505050565b601c5461010090046001600160a01b03163314610d285760405162461bcd60e51b8152600401610c7f9061466b565b606482511115610d6e5760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610c7f565b601a546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610cc390859085906004016146da565b606060088054610db4906146fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610de0906146fe565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484612f89565b5060015b92915050565b6000610e5c6012600a614832565b601954610e699190614841565b905090565b601c5460009060ff16610e8057600080fd5b610e8c6012600a614832565b610e69906305f5e100614863565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610eff576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ef990849061487a565b90915550505b610f0a848484613082565b949350505050565b601c5461010090046001600160a01b03163314610f415760405162461bcd60e51b8152600401610c7f9061466b565b6064610f4f6012600a614832565b610f5d906305f5e100614863565b610f679190614841565b8183610f756012600a614832565b610f83906305f5e100614863565b610f8d9190614863565b610f979190614841565b1015610ffe5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610c7f565b808261100c6012600a614832565b61101a906305f5e100614863565b6110249190614863565b61102e9190614841565b6019555050565b601c5461010090046001600160a01b031633146110645760405162461bcd60e51b8152600401610c7f9061466b565b80518251146110ad5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610c7f565b60005b82518161ffff1610156111b2576110c96012600a614832565b828261ffff16815181106110df576110df61488d565b60200260200101516110f19190614863565b6110fa33611a40565b101561113d5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610c7f565b61119f33848361ffff16815181106111575761115761488d565b60200260200101516012600a61116d9190614832565b858561ffff16815181106111835761118361488d565b60200260200101516111959190614863565b6000806001613532565b50806111aa816148a3565b9150506110b0565b505050565b60006111c36000611a40565b6111ce61dead611a40565b6111d891906148c4565b6111e46012600a614832565b6111f2906305f5e100614863565b610e69919061487a565b601c5460009060ff1661120e57600080fd5b50601290565b601c5461010090046001600160a01b031633146112435760405162461bcd60e51b8152600401610c7f9061466b565b600c5460ff161561128a5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610c7f565b6101f48361ffff16111580156112a657506101f48261ffff1611155b80156112b857506101f48161ffff1611155b6113045760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c7f565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601c5461010090046001600160a01b031633146113725760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b5050505050565b601c5461010090046001600160a01b0316331461140b5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146114655760405162461bcd60e51b8152600401610c7f9061466b565b6103e86114746012600a614832565b611482906305f5e100614863565b61148d906005614863565b6114979190614841565b81836114a56012600a614832565b6114b3906305f5e100614863565b6114bd9190614863565b6114c79190614841565b101561153b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c7f565b80826115496012600a614832565b611557906305f5e100614863565b6115619190614863565b61156b9190614841565b6018555050565b600d54600090612710908390611590906001600160a01b0316611a40565b61159a9190614863565b610e489190614841565b601c5461010090046001600160a01b031633146115d35760405162461bcd60e51b8152600401610c7f9061466b565b609681111561161d5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610c7f565b601755565b601c5461010090046001600160a01b031633146116515760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b0381166116a75760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610c7f565b61deac196001600160a01b038216016117025760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610c7f565b601c5461171e9061010090046001600160a01b0316600061181f565b61172981600161181f565b601c546000906117469061010090046001600160a01b0316611a40565b111561176d57601c5461176b9061010090046001600160a01b03168261119582611a40565b505b601c80546001600160a01b03838116610100908102610100600160a81b0319841617909355601a5491839004169160ff9104166117db576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601c5461010090046001600160a01b0316331461184e5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c5461010090046001600160a01b031633146118a85760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff16156118b857600080fd5b306001600160a01b038216036119015760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610c7f565b601a805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611987575060408051601f3d908101601f19168201909252611984918101906148d7565b60015b61199057600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c549254611a039382900483169291900416600019612f89565b600c546111b290309061010090046001600160a01b0316600019612f89565b50565b6000611a336012600a614832565b601854610e699190614841565b6001600160a01b031660009081526020819052604090205490565b601c5461010090046001600160a01b03163314611a8a5760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff16611af45760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610c7f565b601c54611b109061010090046001600160a01b0316600061181f565b601c8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c5461010090046001600160a01b03163314611b925760405162461bcd60e51b8152600401610c7f9061466b565b600c805460ff19166001179055565b601c5461010090046001600160a01b03163314611bd05760405162461bcd60e51b8152600401610c7f9061466b565b80611c2e576001600160a01b03828116600081815260016020526040808220805460ff19169055601a5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610cc3565b60025415611c87576203f48060025442611c48919061487a565b11611c875760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610c7f565b6001600160a01b03821660009081526001602052604090205460ff1615611cf05760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c7f565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601a5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610cc3565b5050565b601c5461010090046001600160a01b03163314611d825760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03851615801590611da257506001600160a01b03811615155b8015611db657506001600160a01b03841615155b8015611dca57506001600160a01b03831615155b8015611dde57506001600160a01b03821615155b611e2a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c7f565b600e80546001600160a01b03199081166001600160a01b0397881617909155601180548216938716939093179092556010805483169486169490941790935560128054821692851692909217909155600f805490911691909216179055565b601c5460009061010090046001600160a01b03163314611ebb5760405162461bcd60e51b8152600401610c7f9061466b565b600c54611eda90309061010090046001600160a01b0316600019612f89565b50600190565b601c5461010090046001600160a01b03163314611f0f5760405162461bcd60e51b8152600401610c7f9061466b565b601a5460ff1615611f625760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c7f565b601a54610100900460ff16611fb95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c7f565b601a546201000090046001600160a01b0316611fe957601a805462010000600160b01b0319163062010000021790555b601a54600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205b57600080fd5b505af192505050801561206c575060015b50601a54600d546001600160a01b03620100009092048216916325a71cae916120959116611a40565b6040518263ffffffff1660e01b81526004016120b391815260200190565b60408051808303816000875af19250505080156120ed575060408051601f3d908101601f191682019092526120ea91810190614906565b60015b156120fc576014919091556015555b601a805460ff1916600117905542601b55565b606060098054610db4906146fe565b600061212b338484613082565b5060019392505050565b601c5461010090046001600160a01b031633146121645760405162461bcd60e51b8152600401610c7f9061466b565b601a54610100900460ff16156121cc57306001600160a01b038216036121cc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c7f565b601c546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224b919061492a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190614943565b601c5461010090046001600160a01b031633146122e95760405162461bcd60e51b8152600401610c7f9061466b565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c5461010090046001600160a01b031633146123775760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016113a7565b601c5461010090046001600160a01b031633146123df5760405162461bcd60e51b8152600401610c7f9061466b565b601c5460ff16156124165760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610c7f565b8382146124495760405162461bcd60e51b81526020600482015260016024820152601960f91b6044820152606401610c7f565b60004711806124585750600034115b6124a45760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610c7f565b80601a60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601a60029054906101000a90046001600160a01b03166001600160a01b0316638a4068dd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561251b57600080fd5b505af192505050801561252c575060015b50601a60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156125a357506040513d6000823e601f3d908101601f191682016040526125a091908101906149c4565b60015b6125d35760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610c7f565b60086125df8782614a93565b5060096125ec8682614a93565b5082846125fb6012600a614832565b612609906305f5e100614863565b6126139190614863565b61261d9190614841565b601855808261262e6012600a614832565b61263c906305f5e100614863565b6126469190614863565b6126509190614841565b601955505050505050601a60029054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b815260040160408051808303816000875af19250505080156126c9575060408051601f3d908101601f191682019092526126c6918101906148d7565b60015b61270a5760405162461bcd60e51b815260206004820152601260248201527124b734ba34b0b634bd32b91032b93937b91760711b6044820152606401610c7f565b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601c54925461277d9382900483169291900416600019612f89565b600c5461279c90309061010090046001600160a01b0316600019612f89565b5050601c805460ff1916600117908190556001600160a01b036101009091041660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127eb6012600a614832565b6127f9906305f5e100614863565b60405190815260200160405180910390a3600c5461282990309061010090046001600160a01b0316600019612f89565b601c54600c54612852916001600160a01b03610100918290048116929190910416600019612f89565b60005b848110156128ed57600061286b6012600a614832565b85858481811061287d5761287d61488d565b9050602002013561288e9190614863565b601c549091506128d89061010090046001600160a01b03168888858181106128b8576128b861488d565b90506020020160208101906128cd91906142a7565b836000806001613532565b505080806128e590614b53565b915050612855565b50601c5461290d9061010090046001600160a01b03163061119582611a40565b50600c5461010090046001600160a01b031663f305d719473061292f81611a40565b601c5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af1935050505080156129bd575060408051601f3d908101601f191682019092526129ba91810190614b6c565b60015b6129fc5760405162461bcd60e51b815260206004820152601060248201526f2634b8bab4b234ba3c9032b93937b91760811b6044820152606401610c7f565b5050506113d5611ee0565b601c5461010090046001600160a01b03163314612a365760405162461bcd60e51b8152600401610c7f9061466b565b601a54610100900460ff1615612a8e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c7f565b601c546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611a22573d6000803e3d6000fd5b601c5461010090046001600160a01b03163314612afd5760405162461bcd60e51b8152600401610c7f9061466b565b601a546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610cc3565b601c5461010090046001600160a01b03163314612b6d5760405162461bcd60e51b8152600401610c7f9061466b565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff0000000019166401000000008583160267ffff000000000000191617600160301b868316021769ffff00000000000000001916600160401b91841691909102179055808383612be18888614b9a565b612beb9190614b9a565b612bf59190614b9a565b612bff9190614b9a565b600b805461ffff60501b1916600160501b61ffff93841602179055600a54600091612c339162010000810482169116614b9a565b600b5461ffff9182169250600160501b900416811015610cf15760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c7f565b601c5461010090046001600160a01b03163314612cd45760405162461bcd60e51b8152600401610c7f9061466b565b8284612ce26012600a614832565b612cf0906305f5e100614863565b612cfa9190614863565b612d049190614841565b6014558082612d156012600a614832565b612d23906305f5e100614863565b612d2d9190614863565b612d379190614841565b60158190556014541115612d975760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c7f565b600d5461271090612db0906001600160a01b0316611a40565b612dbb906096614863565b612dc59190614841565b6015541115612e225760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c7f565b620f4240612e326012600a614832565b612e40906305f5e100614863565b612e4a9190614841565b6015541015612e6b5760405162461bcd60e51b8152600401610c7f90614bbc565b620f4240612e7b6012600a614832565b612e89906305f5e100614863565b612e939190614841565b6014541015612eb45760405162461bcd60e51b8152600401610c7f90614bbc565b50505050565b601a5460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e489190614943565b601c5461010090046001600160a01b03163314612f5e5760405162461bcd60e51b8152600401610c7f9061466b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612fd55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c7f565b6001600160a01b0382166130215760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c7f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c7f565b6001600160a01b03831661314a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c7f565b600082116131ac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c7f565b6001600160a01b0384166000908152600160205260408120548190819060ff16156131da5760019250613208565b6001600160a01b03861660009081526001602052604090205460ff16156132045760019150613208565b5060015b61321287876137e5565b1561348957601a5460ff16613313578061326e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c7f565b6001600160a01b03871660009081526005602052604090205460ff161580156132b057506001600160a01b03861660009081526005602052604090205460ff16155b156133135760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c7f565b828061331c5750815b156133cb576001600160a01b03871660009081526007602052604090205460ff1615801561336357506001600160a01b03861660009081526007602052604090205460ff16155b156133cb576018548511156133cb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c7f565b600c546001600160a01b0387811661010090920416148015906133ec575081155b15613489576001600160a01b03861660009081526007602052604090205460ff16613489576019548561341e88611a40565b61342891906148c4565b11156134895760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c7f565b81156135195760135460ff1661351957601354610100900460ff16156135195760006134b430611a40565b905060145481106135175760155460165460ff161561350157601754600d5461271091906134ea906001600160a01b0316611a40565b6134f49190614863565b6134fe9190614841565b90505b80821061350c578091505b6135158261390b565b505b505b613527878787868686613532565b979650505050505050565b600061353e87876137e5565b156135d857601a5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156135c1575060408051601f3d908101601f191682019092526135be91810190614943565b60015b6135ca57600080fd5b9050806135d657600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061361a57506001600160a01b03871660009081526006602052604090205460ff165b15613623575060005b6001600160a01b0388166000908152602081905260408120805488929061364b90849061487a565b90915550600090508161365e578661366a565b61366a89888888613e56565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546136a091906148c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ec91815260200190565b60405180910390a3601a54610100900460ff166137d65761370d8989613f62565b601a54610100900460ff1615801561372a575061372a89896137e5565b801561374f57506001600160a01b03891660009081526005602052604090205460ff16155b801561377457506001600160a01b03881660009081526005602052604090205460ff16155b801561377e575083155b156137d65760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c7f565b50600198975050505050505050565b601c546000906001600160a01b03848116610100909204161480159061381e5750601c546001600160a01b038381166101009092041614155b801561383a5750601c5461010090046001600160a01b03163214155b801561385f57506001600160a01b03821660009081526004602052604090205460ff16155b801561388457506001600160a01b03831660009081526004602052604090205460ff16155b801561389b57506001600160a01b03821661dead14155b80156138af57506001600160a01b03821615155b80156138c457506001600160a01b0383163014155b80156138e45750601a546001600160a01b03848116620100009092041614155b80156139045750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160c081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190526000036139855750613e49565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146139e857306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613a1d57613a1d61488d565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab49190614c09565b81600181518110613ac757613ac761488d565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790613b14908690600090869030904290600401614c26565b600060405180830381600087803b158015613b2e57600080fd5b505af1925050508015613b3f575060015b613b4a575050613e49565b60004790506000808460a0015161ffff16856020015161ffff1684613b6f9190614863565b613b799190614841565b905060008560a0015161ffff16866080015161ffff1685613b9a9190614863565b613ba49190614841565b905060008660a0015161ffff16876060015161ffff1686613bc59190614863565b613bcf9190614841565b905060008760a0015161ffff16886040015161ffff1687613bf09190614863565b613bfa9190614841565b905060008183613c0a86886148c4565b613c1491906148c4565b613c1e91906148c4565b613c28908861487a565b895190915061ffff1615613c9357600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613c88576040519150601f19603f3d011682016040523d82523d6000602084013e613c8d565b606091505b50909650505b602089015161ffff1615613cfe57600f546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613cf3576040519150601f19603f3d011682016040523d82523d6000602084013e613cf8565b606091505b50909650505b608089015161ffff1615613d69576010546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114613d5e576040519150601f19603f3d011682016040523d82523d6000602084013e613d63565b606091505b50909650505b606089015161ffff1615613dd4576011546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613dc9576040519150601f19603f3d011682016040523d82523d6000602084013e613dce565b606091505b50909650505b604089015161ffff1615613e3f576012546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613e34576040519150601f19603f3d011682016040523d82523d6000602084013e613e39565b606091505b50909650505b5050505050505050505b506013805460ff19169055565b6000808315613e6c5750600a5461ffff16613e96565b8215613e855750600a5462010000900461ffff16613e96565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b031630148015613eb7575046606114155b15613ec157506111945b80600003613ed25784915050610f0a565b6000612710613ee18388614863565b613eeb9190614841565b90508015613f58573060009081526020819052604081208054839290613f129084906148c4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613527818761487a565b601a54610100900460ff1615613fc65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c7f565b613fd082826137e5565b158015613fea5750600d546001600160a01b038281169116145b15611d4f576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601a805461ff00191661010017908190556201000090041661406257601a805462010000600160b01b0319163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161233c565b8015158114611a2257600080fd5b600080604083850312156140c357600080fd5b82356140ce816140a2565b915060208301356140de816140a2565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614128576141286140e9565b604052919050565b600067ffffffffffffffff82111561414a5761414a6140e9565b5060051b60200190565b6001600160a01b0381168114611a2257600080fd5b600082601f83011261417a57600080fd5b8135602061418f61418a83614130565b6140ff565b82815260059290921b840181019181810190868411156141ae57600080fd5b8286015b848110156141d25780356141c581614154565b83529183019183016141b2565b509695505050505050565b600080604083850312156141f057600080fd5b823567ffffffffffffffff81111561420757600080fd5b61421385828601614169565b92505060208301356140de816140a2565b60005b8381101561423f578181015183820152602001614227565b50506000910152565b6020815260008251806020840152614267816040850160208701614224565b601f01601f19169190910160400192915050565b6000806040838503121561428e57600080fd5b823561429981614154565b946020939093013593505050565b6000602082840312156142b957600080fd5b813561390481614154565b6000806000606084860312156142d957600080fd5b83356142e481614154565b925060208401356142f481614154565b929592945050506040919091013590565b6000806040838503121561431857600080fd5b50508035926020909101359150565b6000806040838503121561433a57600080fd5b823567ffffffffffffffff8082111561435257600080fd5b61435e86838701614169565b935060209150818501358181111561437557600080fd5b85019050601f8101861361438857600080fd5b803561439661418a82614130565b81815260059190911b820183019083810190888311156143b557600080fd5b928401925b828410156143d3578335825292840192908401906143ba565b80955050505050509250929050565b803561ffff811681146143f457600080fd5b919050565b60008060006060848603121561440e57600080fd5b614417846143e2565b9250614425602085016143e2565b9150614433604085016143e2565b90509250925092565b6000806040838503121561444f57600080fd5b82356140ce81614154565b60006020828403121561446c57600080fd5b5035919050565b600080600080600060a0868803121561448b57600080fd5b853561449681614154565b945060208601356144a681614154565b935060408601356144b681614154565b925060608601356144c681614154565b915060808601356144d681614154565b809150509295509295909350565b600080604083850312156144f757600080fd5b823561450281614154565b915060208301356140de81614154565b60008083601f84011261452457600080fd5b50813567ffffffffffffffff81111561453c57600080fd5b6020830191508360208260051b850101111561455757600080fd5b9250929050565b60008060008060006060868803121561457657600080fd5b853567ffffffffffffffff8082111561458e57600080fd5b61459a89838a01614512565b909750955060208801359150808211156145b357600080fd5b506145c088828901614512565b90945092505060408601356144d681614154565b600080600080600060a086880312156145ec57600080fd5b6145f5866143e2565b9450614603602087016143e2565b9350614611604087016143e2565b925061461f606087016143e2565b915061462d608087016143e2565b90509295509295909350565b6000806000806080858703121561464f57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b838110156146cf5781516001600160a01b0316875295820195908201906001016146aa565b509495945050505050565b6040815260006146ed6040830185614696565b905082151560208301529392505050565b600181811c9082168061471257607f821691505b60208210810361473257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561478957816000190482111561476f5761476f614738565b8085161561477c57918102915b93841c9390800290614753565b509250929050565b6000826147a057506001610e48565b816147ad57506000610e48565b81600181146147c357600281146147cd576147e9565b6001915050610e48565b60ff8411156147de576147de614738565b50506001821b610e48565b5060208310610133831016604e8410600b841016171561480c575081810a610e48565b614816838361474e565b806000190482111561482a5761482a614738565b029392505050565b600061390460ff841683614791565b60008261485e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e4857610e48614738565b81810381811115610e4857610e48614738565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036148ba576148ba614738565b6001019392505050565b80820180821115610e4857610e48614738565b600080604083850312156148ea57600080fd5b82516148f581614154565b60208401519092506140de81614154565b6000806040838503121561491957600080fd5b505080516020909101519092909150565b60006020828403121561493c57600080fd5b5051919050565b60006020828403121561495557600080fd5b8151613904816140a2565b600082601f83011261497157600080fd5b815167ffffffffffffffff81111561498b5761498b6140e9565b61499e601f8201601f19166020016140ff565b8181528460208386010111156149b357600080fd5b610f0a826020830160208701614224565b60008060008060008060c087890312156149dd57600080fd5b865167ffffffffffffffff808211156149f557600080fd5b614a018a838b01614960565b97506020890151915080821115614a1757600080fd5b50614a2489828a01614960565b95505060408701519350606087015192506080870151915060a087015190509295509295509295565b601f8211156111b257600081815260208120601f850160051c81016020861015614a745750805b601f850160051c820191505b81811015610cf157828155600101614a80565b815167ffffffffffffffff811115614aad57614aad6140e9565b614ac181614abb84546146fe565b84614a4d565b602080601f831160018114614af65760008415614ade5750858301515b600019600386901b1c1916600185901b178555610cf1565b600085815260208120601f198616915b82811015614b2557888601518255948401946001909101908401614b06565b5085821015614b435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201614b6557614b65614738565b5060010190565b600080600060608486031215614b8157600080fd5b8351925060208401519150604084015190509250925092565b61ffff818116838216019080821115614bb557614bb5614738565b5092915050565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060208284031215614c1b57600080fd5b815161390481614154565b85815284602082015260a060408201526000614c4560a0830186614696565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220a49f323c3081814ae021f09793c37694d820db6337c2b0320c42052add1b396a64736f6c63430008130033

Deployed Bytecode Sourcemap

4544:26674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6156:73;;;;;;;;;;;;6187:42;6156:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6156:73:0;;;;;;;;6935:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6935:28:0;222:177:1;18120:153:0;;;;;;;;;;-1:-1:-1;18120:153:0;;;;;:::i;:::-;;:::i;:::-;;17242:341;;;;;;;;;;-1:-1:-1;17242:341:0;;;;;:::i;:::-;;:::i;5562:107::-;;;;;;;;;;-1:-1:-1;5562:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;5562:107:0;2868:365:1;13172:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6095:26::-;;;;;;;;;;-1:-1:-1;6095:26:0;;;;;;;-1:-1:-1;;;;;6095:26:0;;;6062;;;;;;;;;;-1:-1:-1;6062:26:0;;;;;;;;;;;4284:14:1;;4277:22;4259:41;;4247:2;4232:18;6062:26:0;4119:187:1;13780:161:0;;;;;;;;;;-1:-1:-1;13780:161:0;;;;;:::i;:::-;;:::i;16466:140::-;;;;;;;;;;-1:-1:-1;16466:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16564:34:0;16540:4;16564:34;;;:25;:34;;;;;;;;;16466:140;20996:114;;;;;;;;;;;;;:::i;12827:123::-;;;;;;;;;;;;;:::i;14450:306::-;;;;;;;;;;-1:-1:-1;14450:306:0;;;;;:::i;:::-;;:::i;20608:264::-;;;;;;;;;;-1:-1:-1;20608:264:0;;;;;:::i;:::-;;:::i;28930:447::-;;;;;;;;;;-1:-1:-1;28930:447:0;;;;;:::i;:::-;;:::i;7043:33::-;;;;;;;;;;;;;;;;16770:141;;;;;;;;;;;;;:::i;5862:41::-;;;;;;;;;;;;5900:3;5862:41;;6970:25;;;;;;;;;;;;;;;;12956:120;;;;;;;;;;;;;:::i;:::-;;;6912:4:1;6900:17;;;6882:36;;6870:2;6855:18;12956:120:0;6740:184:1;18471:453:0;;;;;;;;;;-1:-1:-1;18471:453:0;;;;;:::i;:::-;;:::i;18002:110::-;;;;;;;;;;-1:-1:-1;18002:110:0;;;;;:::i;:::-;;:::i;16041:140::-;;;;;;;;;;-1:-1:-1;16041:140:0;;;;;:::i;:::-;;:::i;20327:273::-;;;;;;;;;;-1:-1:-1;20327:273:0;;;;;:::i;:::-;;:::i;6128:21::-;;;;;;;;;;-1:-1:-1;6128:21:0;;;;-1:-1:-1;;;;;6128:21:0;;;7163:34;;;;;;;;;;-1:-1:-1;7163:34:0;;;;;;;;21118:189;;;;;;;;;;-1:-1:-1;21118:189:0;;;;;:::i;:::-;;:::i;22020:217::-;;;;;;;;;;-1:-1:-1;22020:217:0;;;;;:::i;:::-;;:::i;11391:728::-;;;;;;;;;;-1:-1:-1;11391:728:0;;;;;:::i;:::-;;:::i;16189:127::-;;;;;;;;;;-1:-1:-1;16189:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;16280:28:0;16256:4;16280:28;;;:19;:28;;;;;;;;;16189:127;7204:36;;;;;;;;;;-1:-1:-1;7204:36:0;;;;;;;;;;;16324:134;;;;;;;;;;-1:-1:-1;16324:134:0;;;;;:::i;:::-;;:::i;7277:26::-;;;;;;;;;;;;;;;;15336:557;;;;;;;;;;-1:-1:-1;15336:557:0;;;;;:::i;:::-;;:::i;15901:132::-;;;;;;;;;;-1:-1:-1;15901:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15995:30:0;15971:4;15995:30;;;:21;:30;;;;;;;;;15901:132;20880:108;;;;;;;;;;;;;:::i;13482:117::-;;;;;;;;;;-1:-1:-1;13482:117:0;;;;;:::i;:::-;;:::i;12127:310::-;;;;;;;;;;;;;:::i;18281:182::-;;;;;;;;;;;;;:::i;14764:564::-;;;;;;;;;;-1:-1:-1;14764:564:0;;;;;:::i;:::-;;:::i;19496:823::-;;;;;;;;;;-1:-1:-1;19496:823:0;;;;;:::i;:::-;;:::i;13258:79::-;;;;;;;;;;-1:-1:-1;13328:6:0;;;;;-1:-1:-1;;;;;13328:6:0;13258:79;;14267:175;;;;;;;;;;;;;:::i;27733:695::-;;;;;;;;;;;;;:::i;13082:84::-;;;;;;;;;;;;;:::i;13607:165::-;;;;;;;;;;-1:-1:-1;13607:165:0;;;;;:::i;:::-;;:::i;28626:296::-;;;;;;;;;;-1:-1:-1;28626:296:0;;;;;:::i;:::-;;:::i;7002:34::-;;;;;;;;;;-1:-1:-1;7002:34:0;;;;;;;;22245:263;;;;;;;;;;-1:-1:-1;22245:263:0;;;;;:::i;:::-;;:::i;17728:202::-;;;;;;;;;;-1:-1:-1;17728:202:0;;;;;:::i;:::-;;:::i;5678:175::-;;;;;;;;;;-1:-1:-1;5678:175:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5678:175:0;;;;;-1:-1:-1;;;5678:175:0;;;;;-1:-1:-1;;;5678:175:0;;;;;;;;;9141:6:1;9174:15;;;9156:34;;9226:15;;;9221:2;9206:18;;9199:43;9278:15;;;9258:18;;;9251:43;;;;9330:15;;;9325:2;9310:18;;9303:43;9383:15;;9377:3;9362:19;;9355:44;9436:15;;;9430:3;9415:19;;9408:44;9118:3;9103:19;5678:175:0;8856:602:1;13343:133:0;;;;;;;;;;-1:-1:-1;13343:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13445:19:0;;;13427:7;13445:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13343:133;8181:2448;;;;;;:::i;:::-;;:::i;28436:182::-;;;;;;;;;;;;;:::i;16983:251::-;;;;;;;;;;-1:-1:-1;16983:251:0;;;;;:::i;:::-;;:::i;18932:556::-;;;;;;;;;;-1:-1:-1;18932:556:0;;;;;:::i;:::-;;:::i;6447:411::-;;;;;;;;;;-1:-1:-1;6447:411:0;;;;;;;;;;;;-1:-1:-1;;;;;6447:411:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12015:15:1;;;11997:34;;12067:15;;;12062:2;12047:18;;12040:43;12119:15;;;12099:18;;;12092:43;;;;12171:15;;12166:2;12151:18;;12144:43;12224:15;;;12218:3;12203:19;;12196:44;11946:3;11931:19;6447:411:0;11620:626:1;21315:697:0;;;;;;;;;;-1:-1:-1;21315:697:0;;;;;:::i;:::-;;:::i;6889:39::-;;;;;;;;;;-1:-1:-1;6889:39:0;;;;;;;;;;;17591:129;;;;;;;;;;-1:-1:-1;17591:129:0;;;;;:::i;:::-;;:::i;16614:148::-;;;;;;;;;;-1:-1:-1;16614:148:0;;;;;:::i;:::-;;:::i;18120:153::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;;;;;;;;;18215:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;18215:50:0;;13174:14:1;;13167:22;18215:50:0::1;::::0;::::1;13149:41:1::0;13233:14;;13226:22;13206:18;;;13199:50;18215:11:0;;;::::1;-1:-1:-1::0;;;;;18215:11:0::1;::::0;:26:::1;::::0;13122:18:1;;18215:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18120:153:::0;;:::o;17242:341::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;17481:3:::1;17462:8;:15;:22;;17454:52;;;::::0;-1:-1:-1;;;17454:52:0;;13462:2:1;17454:52:0::1;::::0;::::1;13444:21:1::0;13501:2;13481:18;;;13474:30;-1:-1:-1;;;13520:18:1;;;13513:47;13577:18;;17454:52:0::1;13260:341:1::0;17454:52:0::1;17517:11;::::0;:58:::1;::::0;-1:-1:-1;;;17517:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;17517:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;17557:8;;17567:7;;17517:58:::1;;;:::i;13172:80::-:0;13220:13;13244:5;13237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13172:80;:::o;13780:161::-;13857:4;13874:37;13883:10;13895:7;13904:6;13874:8;:37::i;:::-;-1:-1:-1;13929:4:0;13780:161;;;;;:::o;20996:114::-;21043:7;21088:13;5186:2;21088;:13;:::i;:::-;21070:14;;:32;;;;:::i;:::-;21063:39;;20996:114;:::o;12827:123::-;12898:19;;12882:7;;12898:19;;12893:39;;12921:8;;;12893:39;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;;5077:11;5230:30;:::i;14450:306::-;-1:-1:-1;;;;;14571:19:0;;14550:4;14571:19;;;:11;:19;;;;;;;;14591:10;14571:31;;;;;;;;-1:-1:-1;;14571:52:0;14567:126;;-1:-1:-1;;;;;14640:19:0;;;;;;:11;:19;;;;;;;;14660:10;14640:31;;;;;;;:41;;14675:6;;14640:19;:41;;14675:6;;14640:41;:::i;:::-;;;;-1:-1:-1;;14567:126:0;14712:36;14722:6;14730:9;14741:6;14712:9;:36::i;:::-;14705:43;14450:306;-1:-1:-1;;;;14450:306:0:o;20608:264::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;20750:3:::1;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20740:13;;;;:::i;:::-;20728:7:::0;20717;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20707:17;;;;:::i;:::-;20706:29;;;;:::i;:::-;:48;;20698:109;;;::::0;-1:-1:-1;;;20698:109:0;;17049:2:1;20698:109:0::1;::::0;::::1;17031:21:1::0;17088:2;17068:18;;;17061:30;17127:34;17107:18;;;17100:62;-1:-1:-1;;;17178:18:1;;;17171:46;17234:19;;20698:109:0::1;16847:412:1::0;20698:109:0::1;20857:7:::0;20846;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20836:17;;;;:::i;:::-;20835:29;;;;:::i;:::-;20818:14;:46:::0;-1:-1:-1;;20608:264:0:o;28930:447::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;29065:7:::1;:14;29046:8;:15;:33;29038:67;;;::::0;-1:-1:-1;;;29038:67:0;;17466:2:1;29038:67:0::1;::::0;::::1;17448:21:1::0;17505:2;17485:18;;;17478:30;-1:-1:-1;;;17524:18:1;;;17517:51;17585:18;;29038:67:0::1;17264:345:1::0;29038:67:0::1;29121:8;29116:254;29139:8;:15;29135:1;:19;;;29116:254;;;29220:13;5186:2;29220;:13;:::i;:::-;29209:7;29217:1;29209:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;29184:21;29194:10;29184:9;:21::i;:::-;:49;;29176:80;;;::::0;-1:-1:-1;;;29176:80:0;;17948:2:1;29176:80:0::1;::::0;::::1;17930:21:1::0;17987:2;17967:18;;;17960:30;-1:-1:-1;;;18006:18:1;;;17999:48;18064:18;;29176:80:0::1;17746:342:1::0;29176:80:0::1;29271:87;29288:10;29300:8;29309:1;29300:11;;;;;;;;;;:::i;:::-;;;;;;;5186:2;29324;:13;;;;:::i;:::-;29313:7;29321:1;29313:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;29339:5;29346::::0;29353:4:::1;29271:16;:87::i;:::-;-1:-1:-1::0;29156:3:0;::::1;::::0;::::1;:::i;:::-;;;;29116:254;;;;28930:447:::0;;:::o;16770:141::-;16823:7;16880:21;16898:1;16880:9;:21::i;:::-;16862:15;6187:42;16862:9;:15::i;:::-;:39;;;;:::i;:::-;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;;5077:11;5230:30;:::i;:::-;16851:51;;;;:::i;12956:120::-;13022:19;;13008:5;;13022:19;;13017:39;;13045:8;;;13017:39;-1:-1:-1;5186:2:0;;12956:120::o;18471:453::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;18579:14:::1;::::0;::::1;;18578:15;18570:45;;;::::0;-1:-1:-1;;;18570:45:0;;18627:2:1;18570:45:0::1;::::0;::::1;18609:21:1::0;18666:2;18646:18;;;18639:30;-1:-1:-1;;;18685:18:1;;;18678:47;18742:18;;18570:45:0::1;18425:341:1::0;18570:45:0::1;5900:3;18634:6;:21;;;;:65;;;;;5949:3;18676:7;:23;;;;18634:65;:117;;;;;6002:3;18720:11;:31;;;;18634:117;18626:170;;;::::0;-1:-1:-1;;;18626:170:0;;18973:2:1;18626:170:0::1;::::0;::::1;18955:21:1::0;19012:2;18992:18;;;18985:30;19051:25;19031:18;;;19024:53;19094:18;;18626:170:0::1;18771:347:1::0;18626:170:0::1;18807:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;18843:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;18881:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;18471:453::o;18002:110::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;18071:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;18071:33:0;;-1:-1:-1;;;;;178:32:1;;;18071:33:0::1;::::0;::::1;160:51:1::0;18071:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;18071:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18002:110:::0;:::o;16041:140::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16133:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16133:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16041:140::o;20327:273::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;20472:4:::1;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20458:11;::::0;20468:1:::1;20458:11;:::i;:::-;:18;;;;:::i;:::-;20446:7:::0;20435;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20425:17;;;;:::i;:::-;20424:29;;;;:::i;:::-;:53;;20416:121;;;::::0;-1:-1:-1;;;20416:121:0;;19325:2:1;20416:121:0::1;::::0;::::1;19307:21:1::0;19364:2;19344:18;;;19337:30;19403:34;19383:18;;;19376:62;19474:25;19454:18;;;19447:53;19517:19;;20416:121:0::1;19123:419:1::0;20416:121:0::1;20585:7:::0;20574;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;20564:17;;;;:::i;:::-;20563:29;;;;:::i;:::-;20548:12;:44:::0;-1:-1:-1;;20327:273:0:o;21118:189::-;21247:6;;21209:7;;6048:5;;21257:21;;21237:17;;-1:-1:-1;;;;;21247:6:0;21237:9;:17::i;:::-;:41;;;;:::i;:::-;21236:62;;;;:::i;22020:217::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;22150:3:::1;22124:22;:29;;22116:64;;;::::0;-1:-1:-1;;;22116:64:0;;19749:2:1;22116:64:0::1;::::0;::::1;19731:21:1::0;19788:2;19768:18;;;19761:30;-1:-1:-1;;;19807:18:1;;;19800:52;19869:18;;22116:64:0::1;19547:346:1::0;22116:64:0::1;22191:13;:38:::0;22020:217::o;11391:728::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11470:22:0;::::1;11462:66;;;::::0;-1:-1:-1;;;11462:66:0;;20100:2:1;11462:66:0::1;::::0;::::1;20082:21:1::0;20139:2;20119:18;;;20112:30;20178:33;20158:18;;;20151:61;20229:18;;11462:66:0::1;19898:355:1::0;11462:66:0::1;-1:-1:-1::0;;;;;;;11547:16:0;::::1;::::0;11539:60:::1;;;::::0;-1:-1:-1;;;11539:60:0;;20100:2:1;11539:60:0::1;::::0;::::1;20082:21:1::0;20139:2;20119:18;;;20112:30;20178:33;20158:18;;;20151:61;20229:18;;11539:60:0::1;19898:355:1::0;11539:60:0::1;11630:6;::::0;11610:34:::1;::::0;11630:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11630:6:0::1;11638:5;11610:19;:34::i;:::-;11655:35;11675:8;11685:4;11655:19;:35::i;:::-;11725:6;::::0;11735:1:::1;::::0;11715:17:::1;::::0;11725:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11725:6:0::1;11715:9;:17::i;:::-;:21;11711:127;;;11770:6;::::0;11753:73:::1;::::0;11770:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11770:6:0::1;11778:8:::0;11788:17:::1;11770:6:::0;11788:9:::1;:17::i;11753:73::-;;11711:127;11877:6;::::0;;-1:-1:-1;;;;;11894:17:0;;::::1;11877:6;11894:17:::0;;::::1;-1:-1:-1::0;;;;;;11894:17:0;::::1;;::::0;;;11927:16:::1;::::0;11877:6;;;::::1;;::::0;11927:16:::1;::::0;::::1;;11922:134;;-1:-1:-1::0;;;;;11960:27:0;;::::1;11990:5;11960:27:::0;;;:17:::1;:27;::::0;;;;;:35;;-1:-1:-1;;11960:35:0;;::::1;::::0;;;12010:27;;::::1;::::0;;;;:34;;;;::::1;11960:35:::0;12010:34:::1;::::0;;11922:134:::1;12102:8;-1:-1:-1::0;;;;;12071:40:0::1;12092:8;-1:-1:-1::0;;;;;12071:40:0::1;;;;;;;;;;;11451:668;11391:728:::0;:::o;16324:134::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16412:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16412:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16324:134::o;15336:557::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;15411:14:::1;::::0;::::1;;15410:15;15402:24;;;::::0;::::1;;15461:4;-1:-1:-1::0;;;;;15445:21:0;::::1;::::0;15437:48:::1;;;::::0;-1:-1:-1;;;15437:48:0;;20460:2:1;15437:48:0::1;::::0;::::1;20442:21:1::0;20499:2;20479:18;;;20472:30;-1:-1:-1;;;20518:18:1;;;20511:44;20572:18;;15437:48:0::1;20258:338:1::0;15437:48:0::1;15496:11;:31:::0;;-1:-1:-1;;;;;;15496:31:0::1;::::0;-1:-1:-1;;;;;15496:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;15542:23:::1;::::0;;-1:-1:-1;;;15542:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;15542:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;15542:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;15542:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;15538:348;;15875:8;::::0;::::1;15538:348;15629:9;:29:::0;;-1:-1:-1;;;;;;15629:29:0::1;;-1:-1:-1::0;;;;;15629:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;15660:6:::1;:22:::0;;-1:-1:-1;;;;;;15660:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;15684:15:0;;;-1:-1:-1;15684:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;15684:22:0::1;::::0;;::::1;::::0;;15731:6:::1;::::0;15747:9;;15722:55:::1;::::0;15731:6;;::::1;::::0;::::1;::::0;15747:9;;::::1;;-1:-1:-1::0;;15722:8:0::1;:55::i;:::-;15824:9;::::0;15792:62:::1;::::0;15809:4:::1;::::0;15824:9:::1;::::0;::::1;-1:-1:-1::0;;;;;15824:9:0::1;-1:-1:-1::0;;15792:8:0::1;:62::i;15538:348::-;15336:557:::0;:::o;20880:108::-;20923:7;20966:13;5186:2;20966;:13;:::i;:::-;20950:12;;:30;;;;:::i;13482:117::-;-1:-1:-1;;;;;13575:16:0;13548:7;13575:16;;;;;;;;;;;;13482:117::o;12127:310::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;12194:14:::1;::::0;::::1;;12186:74;;;::::0;-1:-1:-1;;;12186:74:0;;21193:2:1;12186:74:0::1;::::0;::::1;21175:21:1::0;21232:2;21212:18;;;21205:30;21271:34;21251:18;;;21244:62;-1:-1:-1;;;21322:18:1;;;21315:45;21377:19;;12186:74:0::1;20991:411:1::0;12186:74:0::1;12291:6;::::0;12271:34:::1;::::0;12291:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12291:6:0::1;12299:5;12271:19;:34::i;:::-;12335:6;::::0;;-1:-1:-1;;;;;;12352:19:0;::::1;::::0;;;12387:42:::1;::::0;12335:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;12335:6:0::1;::::0;-1:-1:-1;;12335:6:0;;12387:42:::1;::::0;-1:-1:-1;;12387:42:0::1;12175:262;12127:310::o:0;18281:182::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;18434:14:::1;:21:::0;;-1:-1:-1;;18434:21:0::1;18451:4;18434:21;::::0;;18281:182::o;14764:564::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;14846:7:::1;14841:480;;-1:-1:-1::0;;;;;14870:13:0;;::::1;14886:5;14870:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14870:21:0::1;::::0;;14906:11:::1;::::0;:34;;-1:-1:-1;;;14906:34:0;;::::1;::::0;::::1;21575:51:1::0;;;;21642:18;;;21635:50;;;;14906:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;21548:18:1;;14906:34:0::1;21407:284:1::0;14841:480:0::1;14977:17;::::0;:22;14973:135:::1;;15066:6;15046:17;;15028:15;:35;;;;:::i;:::-;:44;15020:72;;;::::0;-1:-1:-1;;;15020:72:0;;21898:2:1;15020:72:0::1;::::0;::::1;21880:21:1::0;21937:2;21917:18;;;21910:30;-1:-1:-1;;;21956:18:1;;;21949:45;22011:18;;15020:72:0::1;21696:339:1::0;15020:72:0::1;-1:-1:-1::0;;;;;15131:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;15130:14;15122:54;;;::::0;-1:-1:-1;;;15122:54:0;;22242:2:1;15122:54:0::1;::::0;::::1;22224:21:1::0;22281:2;22261:18;;;22254:30;22320:29;22300:18;;;22293:57;22367:18;;15122:54:0::1;22040:351:1::0;15122:54:0::1;-1:-1:-1::0;;;;;15191:13:0;;::::1;;::::0;;;15207:4:::1;15191:13;::::0;;;;;;;;:20;;-1:-1:-1;;15191:20:0::1;::::0;::::1;::::0;;15246:15:::1;15226:17;:35:::0;15276:11:::1;::::0;:33;;-1:-1:-1;;;15276:33:0;;::::1;::::0;::::1;21575:51:1::0;;;;21642:18;;;21635:50;15276:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;21548:18:1;;15276:33:0::1;21407:284:1::0;14841:480:0::1;14764:564:::0;;:::o;19496:823::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19813:23:0;::::1;::::0;;::::1;::::0;:70:::1;;-1:-1:-1::0;;;;;;19858:25:0;::::1;::::0;::::1;19813:70;:114;;;;-1:-1:-1::0;;;;;;19905:22:0;::::1;::::0;::::1;19813:114;:158;;;;-1:-1:-1::0;;;;;;19949:22:0;::::1;::::0;::::1;19813:158;:198;;;;-1:-1:-1::0;;;;;;19993:18:0;::::1;::::0;::::1;19813:198;19805:251;;;::::0;-1:-1:-1;;;19805:251:0;;22598:2:1;19805:251:0::1;::::0;::::1;22580:21:1::0;22637:2;22617:18;;;22610:30;22676:25;22656:18;;;22649:53;22719:18;;19805:251:0::1;22396:347:1::0;19805:251:0::1;20067:11;:42:::0;;-1:-1:-1;;;;;;20067:42:0;;::::1;-1:-1:-1::0;;;;;20067:42:0;;::::1;;::::0;;;20120:16;:32;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20163:20;:40;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20214:20;:40;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;20265:23;:46;;;;::::1;::::0;;;::::1;;::::0;;19496:823::o;14267:175::-;11245:6;;14333:4;;11245:6;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;14382:9:::1;::::0;14350:62:::1;::::0;14367:4:::1;::::0;14382:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14382:9:0::1;-1:-1:-1::0;;14350:8:0::1;:62::i;:::-;-1:-1:-1::0;14430:4:0::1;14267:175:::0;:::o;27733:695::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;27795:14:::1;::::0;::::1;;27794:15;27786:52;;;::::0;-1:-1:-1;;;27786:52:0;;22950:2:1;27786:52:0::1;::::0;::::1;22932:21:1::0;22989:2;22969:18;;;22962:30;23028:26;23008:18;;;23001:54;23072:18;;27786:52:0::1;22748:348:1::0;27786:52:0::1;27857:16;::::0;::::1;::::0;::::1;;;27849:53;;;::::0;-1:-1:-1;;;27849:53:0;;23303:2:1;27849:53:0::1;::::0;::::1;23285:21:1::0;23342:2;23322:18;;;23315:30;23381:26;23361:18;;;23354:54;23425:18;;27849:53:0::1;23101:348:1::0;27849:53:0::1;27925:11;::::0;;;::::1;-1:-1:-1::0;;;;;27925:11:0::1;27913:106;;27967:11;:40:::0;;-1:-1:-1;;;;;;27967:40:0::1;28001:4;27967:40:::0;::::1;;::::0;;27913:106:::1;28033:11;::::0;28055:6:::1;::::0;28033:87:::1;::::0;-1:-1:-1;;;28033:87:0;;-1:-1:-1;;;;;28055:6:0;;::::1;28033:87;::::0;::::1;23677:51:1::0;23776:10;28070:12:0::1;23764:23:1::0;23744:18;;;23737:51;23836:18;28092:15:0::1;23824:31:1::0;23804:18;;;23797:59;5186:2:0::1;23872:18:1::0;;;23865:45;28033:11:0;;;::::1;;::::0;:21:::1;::::0;23649:19:1;;28033:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28029:103:::0;28146:11:::1;::::0;28177:6:::1;::::0;-1:-1:-1;;;;;28146:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;28167:17:::1;::::0;28177:6:::1;28167:9;:17::i;:::-;28146:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;28146:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;28146:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;28146:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;28142:207:::0;::::1;;28257:13;:29:::0;;;;28301:10:::1;:27:::0;28142:207:::1;28359:14;:21:::0;;-1:-1:-1;;28359:21:0::1;28376:4;28359:21;::::0;;28405:15:::1;28391:11;:29:::0;27733:695::o;13082:84::-;13132:13;13156:7;13149:14;;;;;:::i;13607:165::-;13685:4;13702:40;13712:10;13724:9;13735:6;13702:9;:40::i;:::-;-1:-1:-1;13760:4:0;;13607:165;-1:-1:-1;;;13607:165:0:o;28626:296::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;28704:16:::1;::::0;::::1;::::0;::::1;;;28700:111;;;28762:4;-1:-1:-1::0;;;;;28745:22:0;::::1;::::0;28737:62:::1;;;::::0;-1:-1:-1;;;28737:62:0;;24373:2:1;28737:62:0::1;::::0;::::1;24355:21:1::0;24412:2;24392:18;;;24385:30;24451:29;24431:18;;;24424:57;24498:18;;28737:62:0::1;24171:351:1::0;28737:62:0::1;28875:6;::::0;28883:30:::1;::::0;-1:-1:-1;;;28883:30:0;;28907:4:::1;28883:30;::::0;::::1;160:51:1::0;28843:5:0;;-1:-1:-1;;;;;28860:14:0;;::::1;::::0;::::1;::::0;28875:6:::1;::::0;::::1;::::0;;::::1;::::0;28860:14;;28883:15:::1;::::0;133:18:1;;28883:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28860:54;::::0;-1:-1:-1;;;;;;28860:54:0::1;::::0;;;;;;-1:-1:-1;;;;;24908:32:1;;;28860:54:0::1;::::0;::::1;24890:51:1::0;24957:18;;;24950:34;24863:18;;28860:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22245:263::-:0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;22354:19:::1;:33:::0;;-1:-1:-1;;22354:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;22398:22:::1;:47:::0;;-1:-1:-1;;22398:47:0::1;::::0;::::1;;;::::0;;22461:39:::1;::::0;4259:41:1;;;22461:39:0::1;::::0;4247:2:1;4232:18;22461:39:0::1;;;;;;;;22245:263:::0;;:::o;17728:202::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;17884:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;17884:38:0;;-1:-1:-1;;;;;178:32:1;;;17884:38:0::1;::::0;::::1;160:51:1::0;17884:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;17884:38:0::1;14:203:1::0;8181:2448:0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;8334:19:::1;::::0;::::1;;8333:20;8325:34;;;::::0;-1:-1:-1;;;8325:34:0;;25447:2:1;8325:34:0::1;::::0;::::1;25429:21:1::0;25486:1;25466:18;;;25459:29;-1:-1:-1;;;25504:18:1;;;25497:31;25545:18;;8325:34:0::1;25245:324:1::0;8325:34:0::1;8378:33:::0;;::::1;8370:47;;;::::0;-1:-1:-1;;;8370:47:0;;25776:2:1;8370:47:0::1;::::0;::::1;25758:21:1::0;25815:1;25795:18;;;25788:29;-1:-1:-1;;;25833:18:1;;;25826:31;25874:18;;8370:47:0::1;25574:324:1::0;8370:47:0::1;8460:1;8436:21;:25;:42;;;;8477:1;8465:9;:13;8436:42;8428:78;;;::::0;-1:-1:-1;;;8428:78:0;;26105:2:1;8428:78:0::1;::::0;::::1;26087:21:1::0;26144:2;26124:18;;;26117:30;26183:25;26163:18;;;26156:53;26226:18;;8428:78:0::1;25903:347:1::0;8428:78:0::1;8543:12;8517:11;;:39;;;;;-1:-1:-1::0;;;;;8517:39:0::1;;;;;-1:-1:-1::0;;;;;8517:39:0::1;;;;;;8571:11;;;;;;;;;-1:-1:-1::0;;;;;8571:11:0::1;-1:-1:-1::0;;;;;8571:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;8567:38:::0;8619:11:::1;;;;;;;;;-1:-1:-1::0;;;;;8619:11:0::1;-1:-1:-1::0;;;;;8619:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8619:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;8615:723;;9315:11;::::0;-1:-1:-1;;;9315:11:0;;27786:2:1;9315:11:0::1;::::0;::::1;27768:21:1::0;27825:1;27805:18;;;27798:29;-1:-1:-1;;;27843:18:1;;;27836:31;27884:18;;9315:11:0::1;27584:324:1::0;8615:723:0::1;9108:5;:16;9116:8:::0;9108:5;:16:::1;:::i;:::-;-1:-1:-1::0;9139:7:0::1;:20;9149:10:::0;9139:7;:20:::1;:::i;:::-;-1:-1:-1::0;9212:8:0;9200;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;9190:18;;;;:::i;:::-;9189:31;;;;:::i;:::-;9174:12;:46:::0;9274:7;9263;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;9253:17;;;;:::i;:::-;9252:29;;;;:::i;:::-;9235:14;:46:::0;-1:-1:-1;;;;;;9352:11:0::1;;;;;;;;;-1:-1:-1::0;;;;;9352:11:0::1;-1:-1:-1::0;;;;;9352:21:0::1;;:23;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;9352:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;9352:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;9348:368;;9685:28;::::0;-1:-1:-1;;;9685:28:0;;30319:2:1;9685:28:0::1;::::0;::::1;30301:21:1::0;30358:2;30338:18;;;30331:30;-1:-1:-1;;;30377:18:1;;;30370:48;30435:18;;9685:28:0::1;30117:342:1::0;9348:368:0::1;9439:9;:29:::0;;-1:-1:-1;;;;;;9439:29:0::1;;-1:-1:-1::0;;;;;9439:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;9470:6:::1;:22:::0;;-1:-1:-1;;;;;;9470:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9494:15:0;;;-1:-1:-1;9494:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;9494:22:0::1;::::0;;::::1;::::0;;9541:6:::1;::::0;9557:9;;9532:55:::1;::::0;9541:6;;::::1;::::0;::::1;::::0;9557:9;;::::1;;-1:-1:-1::0;;9532:8:0::1;:55::i;:::-;9634:9;::::0;9602:62:::1;::::0;9619:4:::1;::::0;9634:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9634:9:0::1;-1:-1:-1::0;;9602:8:0::1;:62::i;:::-;9376:300;;9726:19;:26:::0;;-1:-1:-1;;9726:26:0::1;9748:4;9726:26;::::0;;;;-1:-1:-1;;;;;9726:26:0::1;9794:6:::0;;::::1;;9726:19;9773:37;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;9773:37;::::0;368:25:1;;;356:2;341:18;9773:37:0::1;;;;;;;9855:9;::::0;9823:62:::1;::::0;9840:4:::1;::::0;9855:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9855:9:0::1;-1:-1:-1::0;;9823:8:0::1;:62::i;:::-;9905:6;::::0;9921:9:::1;::::0;9896:55:::1;::::0;-1:-1:-1;;;;;9905:6:0::1;::::0;;;::::1;::::0;::::1;::::0;9921:9;;;::::1;;-1:-1:-1::0;;9896:8:0::1;:55::i;:::-;9966:9;9962:194;9981:19:::0;;::::1;9962:194;;;10021:14;10051:13;5186:2;10051;:13;:::i;:::-;10038:7;;10046:1;10038:10;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;10096:6;::::0;10021:43;;-1:-1:-1;10079:65:0::1;::::0;10096:6:::1;::::0;::::1;-1:-1:-1::0;;;;;10096:6:0::1;10104:8:::0;;10113:1;10104:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10117:6;10125:5;10132::::0;10139:4:::1;10079:16;:65::i;:::-;;10006:150;10002:3;;;;;:::i;:::-;;;;9962:194;;;-1:-1:-1::0;10183:6:0::1;::::0;10166:78:::1;::::0;10183:6:::1;::::0;::::1;-1:-1:-1::0;;;;;10183:6:0::1;10199:4;10206:17;10183:6:::0;10206:9:::1;:17::i;10166:78::-;-1:-1:-1::0;10261:9:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;10261:9:0::1;:25;10294:21;10339:4;10359:24;10339:4:::0;10359:9:::1;:24::i;:::-;10484:6;::::0;10261:270:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10261:270:0;;;-1:-1:-1;;;;;30963:15:1;;;10261:270:0::1;::::0;::::1;30945:34:1::0;30995:18;;;30988:34;;;;10398:1:0::1;31038:18:1::0;;;31031:34;;;31081:18;;;31074:34;10484:6:0::1;::::0;::::1;::::0;;::::1;31124:19:1::0;;;31117:44;10505:15:0::1;31177:19:1::0;;;31170:35;30879:19;;10261:270:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;10261:270:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;10261:270:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;10257:337;;10556:26;::::0;-1:-1:-1;;;10556:26:0;;31729:2:1;10556:26:0::1;::::0;::::1;31711:21:1::0;31768:2;31748:18;;;31741:30;-1:-1:-1;;;31787:18:1;;;31780:46;31843:18;;10556:26:0::1;31527:340:1::0;10257:337:0::1;;;;10606:15;:13;:15::i;28436:182::-:0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;28503:16:::1;::::0;::::1;::::0;::::1;;;28502:17;28494:58;;;::::0;-1:-1:-1;;;28494:58:0;;32074:2:1;28494:58:0::1;::::0;::::1;32056:21:1::0;32113:2;32093:18;;;32086:30;32152;32132:18;;;32125:58;32200:18;;28494:58:0::1;31872:352:1::0;28494:58:0::1;28571:6;::::0;28563:47:::1;::::0;-1:-1:-1;;;;;28571:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;28588:21:::1;28563:47:::0;::::1;;;::::0;::::1;::::0;;;28588:21;28571:6;28563:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;16983:251:::0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;17177:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;17177:49:0;;-1:-1:-1;;;;;21593:32:1;;;17177:49:0::1;::::0;::::1;21575:51:1::0;21669:14;;21662:22;21642:18;;;21635:50;17177:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;21548:18:1;;17177:49:0::1;21407:284:1::0;18932:556:0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;19066:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;19106:33:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;19188:19:0;19150:27;;;::::1;;-1:-1:-1::0;;19188:19:0;;-1:-1:-1;;;19188:19:0;;::::1;;;-1:-1:-1::0;;19218:27:0::1;-1:-1:-1::0;;;19218:27:0;;::::1;::::0;;;::::1;;::::0;;;19188:19;19150:27;19276:23:::1;19066:29:::0;19106:33;19276:23:::1;:::i;:::-;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:52;;;;:::i;:::-;19256:7;:72:::0;;-1:-1:-1;;;;19256:72:0::1;-1:-1:-1::0;;;19256:72:0::1;::::0;;::::1;;;::::0;;:17:::1;19374::::0;-1:-1:-1;;19355:36:0::1;::::0;19374:17;;::::1;::::0;::::1;::::0;19355:16:::1;:36;:::i;:::-;19410:7;:17:::0;19339:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;19410:17:0;::::1;;:26:::0;-1:-1:-1;19410:26:0::1;19402:78;;;::::0;-1:-1:-1;;;19402:78:0;;32604:2:1;19402:78:0::1;::::0;::::1;32586:21:1::0;32643:2;32623:18;;;32616:30;32682:34;32662:18;;;32655:62;-1:-1:-1;;;32733:18:1;;;32726:37;32780:19;;19402:78:0::1;32402:403:1::0;21315:697:0;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;21515:16;21495;5247:13:::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;21485:26;;;;:::i;:::-;21484:47;;;;:::i;:::-;21468:13;:63:::0;21583:13;21566;5247::::1;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;21556:23;;;;:::i;:::-;21555:41;;;;:::i;:::-;21542:10;:54:::0;;;21615:13:::1;::::0;:27:::1;;21607:73;;;::::0;-1:-1:-1;;;21607:73:0;;33012:2:1;21607:73:0::1;::::0;::::1;32994:21:1::0;33051:2;33031:18;;;33024:30;33090:34;33070:18;;;33063:62;-1:-1:-1;;;33141:18:1;;;33134:31;33182:19;;21607:73:0::1;32810:397:1::0;21607:73:0::1;21724:6;::::0;6048:5:::1;::::0;21714:17:::1;::::0;-1:-1:-1;;;;;21724:6:0::1;21714:9;:17::i;:::-;:23;::::0;21734:3:::1;21714:23;:::i;:::-;21713:44;;;;:::i;:::-;21699:10;;:58;;21691:106;;;::::0;-1:-1:-1;;;21691:106:0;;33414:2:1;21691:106:0::1;::::0;::::1;33396:21:1::0;33453:2;33433:18;;;33426:30;33492:34;33472:18;;;33465:62;-1:-1:-1;;;33543:18:1;;;33536:33;33586:19;;21691:106:0::1;33212:399:1::0;21691:106:0::1;21840:9;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;21830:19;;;;:::i;:::-;21816:10;;:33;;21808:91;;;;-1:-1:-1::0;;;21808:91:0::1;;;;;;;:::i;:::-;21945:9;5247:13;5186:2;5247;:13;:::i;:::-;5230:30;::::0;5077:11:::1;5230:30;:::i;:::-;21935:19;;;;:::i;:::-;21918:13;;:36;;21910:94;;;;-1:-1:-1::0;;;21910:94:0::1;;;;;;;:::i;:::-;21315:697:::0;;;;:::o;17591:129::-;17678:11;;:34;;-1:-1:-1;;;17678:34:0;;-1:-1:-1;;;;;178:32:1;;;17678:34:0;;;160:51:1;17654:4:0;;17678:11;;;;;:25;;133:18:1;;17678:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16614:148::-;11245:6;;;;;-1:-1:-1;;;;;11245:6:0;11255:10;11245:20;11237:50;;;;-1:-1:-1;;;11237:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16710:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16710:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16614:148::o;13949:310::-;-1:-1:-1;;;;;14044:20:0;;14036:52;;;;-1:-1:-1;;;14036:52:0;;34232:2:1;14036:52:0;;;34214:21:1;34271:2;34251:18;;;34244:30;-1:-1:-1;;;34290:18:1;;;34283:49;34349:18;;14036:52:0;34030:343:1;14036:52:0;-1:-1:-1;;;;;14107:21:0;;14099:53;;;;-1:-1:-1;;;14099:53:0;;34232:2:1;14099:53:0;;;34214:21:1;34271:2;34251:18;;;34244:30;-1:-1:-1;;;34290:18:1;;;34283:49;34349:18;;14099:53:0;34030:343:1;14099:53:0;-1:-1:-1;;;;;14165:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14218:33;;368:25:1;;;14218:33:0;;341:18:1;14218:33:0;;;;;;;13949:310;;;:::o;22970:2176::-;23049:4;-1:-1:-1;;;;;23074:18:0;;23066:68;;;;-1:-1:-1;;;23066:68:0;;34580:2:1;23066:68:0;;;34562:21:1;34619:2;34599:18;;;34592:30;34658:34;34638:18;;;34631:62;-1:-1:-1;;;34709:18:1;;;34702:35;34754:19;;23066:68:0;34378:401:1;23066:68:0;-1:-1:-1;;;;;23153:16:0;;23145:64;;;;-1:-1:-1;;;23145:64:0;;34986:2:1;23145:64:0;;;34968:21:1;35025:2;35005:18;;;34998:30;35064:34;35044:18;;;35037:62;-1:-1:-1;;;35115:18:1;;;35108:33;35158:19;;23145:64:0;34784:399:1;23145:64:0;23237:1;23228:6;:10;23220:64;;;;-1:-1:-1;;;23220:64:0;;35390:2:1;23220:64:0;;;35372:21:1;35429:2;35409:18;;;35402:30;35468:34;35448:18;;;35441:62;-1:-1:-1;;;35519:18:1;;;35512:39;35568:19;;23220:64:0;35188:405:1;23220:64:0;-1:-1:-1;;;;;23383:13:0;;23295:8;23383:13;;;:7;:13;;;;;;23295:8;;;;23383:13;;23379:162;;;23419:4;23413:10;;23379:162;;;-1:-1:-1;;;;;23445:11:0;;;;;;:7;:11;;;;;;;;23441:100;;;23480:4;23473:11;;23441:100;;;-1:-1:-1;23525:4:0;23441:100;23555:20;23566:4;23572:2;23555:10;:20::i;:::-;23551:874;;;23596:14;;;;23592:319;;23636:5;23631:265;;23666:34;;-1:-1:-1;;;23666:34:0;;35800:2:1;23666:34:0;;;35782:21:1;35839:2;35819:18;;;35812:30;35878:26;35858:18;;;35851:54;35922:18;;23666:34:0;35598:348:1;23631:265:0;-1:-1:-1;;;;;23731:31:0;;;;;;:25;:31;;;;;;;;23730:32;:66;;;;-1:-1:-1;;;;;;23767:29:0;;;;;;:25;:29;;;;;;;;23766:30;23730:66;23726:170;;;23821:55;;-1:-1:-1;;;23821:55:0;;36153:2:1;23821:55:0;;;36135:21:1;36192:2;36172:18;;;36165:30;36231:34;36211:18;;;36204:62;-1:-1:-1;;;36282:18:1;;;36275:43;36335:19;;23821:55:0;35951:409:1;23726:170:0;23929:3;:11;;;;23936:4;23929:11;23925:232;;;-1:-1:-1;;;;;23965:27:0;;;;;;:21;:27;;;;;;;;23964:28;:58;;;;-1:-1:-1;;;;;;23997:25:0;;;;;;:21;:25;;;;;;;;23996:26;23964:58;23960:182;;;24065:12;;24055:6;:22;;24047:75;;;;-1:-1:-1;;;24047:75:0;;36567:2:1;24047:75:0;;;36549:21:1;36606:2;36586:18;;;36579:30;36645:34;36625:18;;;36618:62;-1:-1:-1;;;36696:18:1;;;36689:38;36744:19;;24047:75:0;36365:404:1;24047:75:0;24189:9;;-1:-1:-1;;;;;24175:24:0;;;24189:9;;;;;24175:24;;;;:33;;;24204:4;24203:5;24175:33;24171:243;;;-1:-1:-1;;;;;24234:25:0;;;;;;:21;:25;;;;;;;;24229:170;;24318:14;;24308:6;24292:13;24302:2;24292:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;24284:95;;;;-1:-1:-1;;;24284:95:0;;36976:2:1;24284:95:0;;;36958:21:1;37015:2;36995:18;;;36988:30;37054:34;37034:18;;;37027:62;-1:-1:-1;;;37105:18:1;;;37098:40;37155:19;;24284:95:0;36774:406:1;24284:95:0;24441:4;24437:632;;;24467:6;;;;24462:596;;24498:19;;;;;;;24494:549;;;24542:28;24573:24;24591:4;24573:9;:24::i;:::-;24542:55;;24648:13;;24624:20;:37;24620:404;;24708:10;;24749:22;;;;24745:97;;;24806:13;;24796:6;;6048:5;;24806:13;24786:17;;-1:-1:-1;;;;;24796:6:0;24786:9;:17::i;:::-;:33;;;;:::i;:::-;24785:54;;;;:::i;:::-;24775:64;;24745:97;24896:7;24872:20;:31;24868:72;;24930:7;24907:30;;24868:72;24966:34;24979:20;24966:12;:34::i;:::-;24663:361;24620:404;24519:524;24494:549;25086:52;25103:4;25109:2;25113:6;25121:3;25126:4;25132:5;25086:16;:52::i;:::-;25079:59;22970:2176;-1:-1:-1;;;;;;;22970:2176:0:o;29385:1055::-;29504:4;29525:20;29536:4;29542:2;29525:10;:20::i;:::-;29521:228;;;29580:11;;:39;;-1:-1:-1;;;29580:39:0;;-1:-1:-1;;;;;37443:15:1;;;29580:39:0;;;37425:34:1;37495:15;;;37475:18;;;37468:43;37527:18;;;37520:34;;;29549:12:0;;29580:11;;;;;:21;;37360:18:1;;29580:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;29580:39:0;;;;;;;;-1:-1:-1;;29580:39:0;;;;;;;;;;;;:::i;:::-;;;29576:122;;29687:8;;;29576:122;29670:5;-1:-1:-1;29716:7:0;29712:26;;29727:8;;;29712:26;29547:202;29521:228;-1:-1:-1;;;;;29793:25:0;;29759:12;29793:25;;;:19;:25;;;;;;29774:4;;29793:25;;;:52;;-1:-1:-1;;;;;;29822:23:0;;;;;;:19;:23;;;;;;;;29793:52;29789:99;;;-1:-1:-1;29871:5:0;29789:99;-1:-1:-1;;;;;29898:13:0;;:7;:13;;;;;;;;;;:23;;29915:6;;29898:7;:23;;29915:6;;29898:23;:::i;:::-;;;;-1:-1:-1;29932:22:0;;-1:-1:-1;29958:7:0;29957:55;;30006:6;29957:55;;;29969:34;29979:4;29985:6;29993:3;29998:4;29969:9;:34::i;:::-;29932:80;;30038:14;30023:7;:11;30031:2;-1:-1:-1;;;;;30023:11:0;-1:-1:-1;;;;;30023:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;30083:2;-1:-1:-1;;;;;30068:34:0;30077:4;-1:-1:-1;;;;;30068:34:0;;30087:14;30068:34;;;;368:25:1;;356:2;341:18;;222:177;30068:34:0;;;;;;;;30118:16;;;;;;;30113:298;;30151:28;30170:4;30176:2;30151:18;:28::i;:::-;30199:16;;;;;;;30198:17;:41;;;;;30219:20;30230:4;30236:2;30219:10;:20::i;:::-;30198:77;;;;-1:-1:-1;;;;;;30244:31:0;;;;;;:25;:31;;;;;;;;30243:32;30198:77;:111;;;;-1:-1:-1;;;;;;30280:29:0;;;;;;:25;:29;;;;;;;;30279:30;30198:111;:121;;;;;30314:5;30313:6;30198:121;30194:206;;;30340:44;;-1:-1:-1;;;30340:44:0;;37767:2:1;30340:44:0;;;37749:21:1;37806:2;37786:18;;;37779:30;37845:34;37825:18;;;37818:62;-1:-1:-1;;;37896:18:1;;;37889:32;37938:19;;30340:44:0;37565:398:1;30194:206:0;-1:-1:-1;30428:4:0;;29385:1055;-1:-1:-1;;;;;;;;29385:1055:0:o;22516:446::-;22617:6;;22585:4;;-1:-1:-1;;;;;22609:14:0;;;22617:6;;;;;22609:14;;;;:43;;-1:-1:-1;22646:6:0;;-1:-1:-1;;;;;22640:12:0;;;22646:6;;;;;22640:12;;22609:43;:79;;;;-1:-1:-1;22682:6:0;;;;;-1:-1:-1;;;;;22682:6:0;22669:9;:19;;22609:79;:118;;;;-1:-1:-1;;;;;;22706:21:0;;;;;;:17;:21;;;;;;;;22705:22;22609:118;:159;;;;-1:-1:-1;;;;;;22745:23:0;;;;;;:17;:23;;;;;;;;22744:24;22609:159;:186;;;;-1:-1:-1;;;;;;22785:10:0;;6187:42;22785:10;;22609:186;:219;;;;-1:-1:-1;;;;;;22812:16:0;;;;22609:219;:257;;;;-1:-1:-1;;;;;;22845:21:0;;22861:4;22845:21;;22609:257;:302;;;;-1:-1:-1;22899:11:0;;-1:-1:-1;;;;;22883:28:0;;;22899:11;;;;;22883:28;;22609:302;:345;;;;-1:-1:-1;22942:11:0;;-1:-1:-1;;;;;22928:26:0;;;22942:11;;;;;22928:26;;22609:345;22602:352;22516:446;-1:-1:-1;;;22516:446:0:o;25154:2000::-;7468:6;:13;;-1:-1:-1;;7468:13:0;7477:4;7468:13;;;25237:30:::1;::::0;;::::1;::::0;::::1;::::0;;25260:7:::1;25237:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;25237:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25237:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25237:30:0;::::1;::::0;;::::1;::::0;;;;;;7468:6;25282:21;25278:60:::1;;25320:7;;;25278:60;25374:4;25354:26;::::0;;;:11:::1;:26;::::0;;;;;;;25389:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;25389:9:0::1;25354:46:::0;;;;;;;;-1:-1:-1;;25354:67:0::1;25350:166;;25458:4;25438:26;::::0;;;:11:::1;:26;::::0;;;;;;;25473:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;25473:9:0::1;25438:46:::0;;;;;;;-1:-1:-1;;25438:66:0;;25350:166:::1;25560:16;::::0;;25574:1:::1;25560:16:::0;;;;;::::1;::::0;;25536:21:::1;::::0;25560:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25560:16:0::1;25536:40;;25605:4;25587;25592:1;25587:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;25587:23:0::1;;;-1:-1:-1::0;;;;;25587:23:0::1;;;::::0;::::1;25631:9;;;;;;;;;-1:-1:-1::0;;;;;25631:9:0::1;-1:-1:-1::0;;;;;25631:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25621:4;25626:1;25621:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25621:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25664:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;25664:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;25739:20;;25774:1:::1;::::0;25790:4;;25817::::1;::::0;25837:15:::1;::::0;25664:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25660:246;;25888:7;;;;25660:246;25918:18;25939:21;25918:42;;25971:12;25994:26:::0;26059:6:::1;:16;;;26023:52;;26037:6;:18;;;26024:31;;:10;:31;;;;:::i;:::-;26023:52;;;;:::i;:::-;25994:81;;26086:23;26145:6;:16;;;26112:49;;26126:6;:15;;;26113:28;;:10;:28;;;;:::i;:::-;26112:49;;;;:::i;:::-;26086:75;;26172:19;26223:6;:16;;;26194:45;;26208:6;:11;;;26195:24;;:10;:24;;;;:::i;:::-;26194:45;;;;:::i;:::-;26172:67;;26250:23;26309:6;:16;;;26276:49;;26290:6;:15;;;26277:28;;:10;:28;;;;:::i;:::-;26276:49;;;;:::i;:::-;26250:75:::0;-1:-1:-1;26336:24:0::1;26250:75:::0;26416:11;26377:36:::1;26398:15:::0;26377:18;:36:::1;:::i;:::-;:50;;;;:::i;:::-;:68;;;;:::i;:::-;26363:83;::::0;:10;:83:::1;:::i;:::-;26461:16:::0;;26336:110;;-1:-1:-1;26461:20:0::1;;::::0;26457:133:::1;;26511:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;26511:21:0;;::::1;::::0;26568:5:::1;::::0;26545:16;;26511:67:::1;::::0;;;26545:16;26511:21;26568:5;26511:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26498:80:0;;-1:-1:-1;;26457:133:0::1;26604:18;::::0;::::1;::::0;:22:::1;;::::0;26600:139:::1;;26656:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;26656:23:0;;::::1;::::0;26717:5:::1;::::0;26692:18;;26656:71:::1;::::0;;;26692:18;26656:23;26717:5;26656:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26643:84:0;;-1:-1:-1;;26600:139:0::1;26753:15;::::0;::::1;::::0;:19:::1;;::::0;26749:130:::1;;26802:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;26802:20:0;;::::1;::::0;26857:5:::1;::::0;26835:15;;26802:65:::1;::::0;;;26835:15;26802:20;26857:5;26802:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26789:78:0;;-1:-1:-1;;26749:130:0::1;26893:11;::::0;::::1;::::0;:15:::1;;::::0;26889:118:::1;;26938:16:::0;;:57:::1;::::0;-1:-1:-1;;;;;26938:16:0;;::::1;::::0;26985:5:::1;::::0;26967:11;;26938:57:::1;::::0;;;26967:11;26938:16;26985:5;26938:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26925:70:0;;-1:-1:-1;;26889:118:0::1;27021:15;::::0;::::1;::::0;:19:::1;;::::0;27017:130:::1;;27070:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;27070:20:0;;::::1;::::0;27125:5:::1;::::0;27103:15;;27070:65:::1;::::0;;;27103:15;27070:20;27125:5;27070:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;27057:78:0;;-1:-1:-1;;27017:130:0::1;25226:1928;;;;;;;;;7492:1;-1:-1:-1::0;7504:6:0;:14;;-1:-1:-1;;7504:14:0;;;25154:2000::o;30448:767::-;30536:7;30556:18;30589:3;30585:205;;;-1:-1:-1;30622:9:0;:16;;;30585:205;;;30660:4;30656:134;;;-1:-1:-1;30694:9:0;:17;;;;;;30656:134;;;-1:-1:-1;30757:9:0;:21;;;;;;30656:134;30812:11;;;;;-1:-1:-1;;;;;30812:11:0;30836:4;30804:37;:73;;;;;30858:13;30875:2;30858:19;;30804:73;30800:101;;;-1:-1:-1;30894:4:0;30800:101;30915:10;30929:1;30915:15;30911:39;;30941:6;30934:13;;;;;30911:39;30960:17;6048:5;30980:19;30989:10;30980:6;:19;:::i;:::-;:38;;;;:::i;:::-;30960:58;-1:-1:-1;31033:13:0;;31029:141;;31079:4;31063:7;:22;;;;;;;;;;:35;;31089:9;;31063:7;:35;;31089:9;;31063:35;:::i;:::-;;;;-1:-1:-1;;31118:40:0;;368:25:1;;;31141:4:0;;-1:-1:-1;;;;;31118:40:0;;;;;356:2:1;341:18;31118:40:0;;;;;;;31029:141;31189:18;31198:9;31189:6;:18;:::i;27162:563::-;27245:16;;;;;;;27244:17;27236:65;;;;-1:-1:-1;;;27236:65:0;;39223:2:1;27236:65:0;;;39205:21:1;39262:2;39242:18;;;39235:30;39301:34;39281:18;;;39274:62;-1:-1:-1;;;39352:18:1;;;39345:33;39395:19;;27236:65:0;39021:399:1;27236:65:0;27317:20;27328:4;27334:2;27317:10;:20::i;:::-;27316:21;:37;;;;-1:-1:-1;27347:6:0;;-1:-1:-1;;;;;27341:12:0;;;27347:6;;27341:12;27316:37;27312:406;;;-1:-1:-1;;;;;27370:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;27370:30:0;;;27396:4;27370:30;;;;;;27415:19;:25;;;;;:32;;;;;;;;;;27462:16;:23;;-1:-1:-1;;27462:23:0;27370:30;27462:23;;;;;27512:11;;;;27500:114;;27558:11;:40;;-1:-1:-1;;;;;;27558:40:0;27592:4;27558:40;;;;;27500:114;27628:19;:26;;-1:-1:-1;;27628:26:0;;;;;27674:32;;-1:-1:-1;4259:41:1;;27674:32:0;;4247:2:1;4232:18;27674:32:0;4119:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;1211:18;1196:34;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;1413:18;1405:6;1402:30;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2593:9;2580:23;2626:18;2618:6;2615:30;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:250::-;3323:1;3333:113;3347:6;3344:1;3341:13;3333:113;;;3423:11;;;3417:18;3404:11;;;3397:39;3369:2;3362:10;3333:113;;;-1:-1:-1;;3480:1:1;3462:16;;3455:27;3238:250::o;3493:396::-;3642:2;3631:9;3624:21;3605:4;3674:6;3668:13;3717:6;3712:2;3701:9;3697:18;3690:34;3733:79;3805:6;3800:2;3789:9;3785:18;3780:2;3772:6;3768:15;3733:79;:::i;:::-;3873:2;3852:15;-1:-1:-1;;3848:29:1;3833:45;;;;3880:2;3829:54;;3493:396;-1:-1:-1;;3493:396:1:o;4311:315::-;4379:6;4387;4440:2;4428:9;4419:7;4415:23;4411:32;4408:52;;;4456:1;4453;4446:12;4408:52;4495:9;4482:23;4514:31;4539:5;4514:31;:::i;:::-;4564:5;4616:2;4601:18;;;;4588:32;;-1:-1:-1;;;4311:315:1:o;4631:247::-;4690:6;4743:2;4731:9;4722:7;4718:23;4714:32;4711:52;;;4759:1;4756;4749:12;4711:52;4798:9;4785:23;4817:31;4842:5;4817:31;:::i;4883:456::-;4960:6;4968;4976;5029:2;5017:9;5008:7;5004:23;5000:32;4997:52;;;5045:1;5042;5035:12;4997:52;5084:9;5071:23;5103:31;5128:5;5103:31;:::i;:::-;5153:5;-1:-1:-1;5210:2:1;5195:18;;5182:32;5223:33;5182:32;5223:33;:::i;:::-;4883:456;;5275:7;;-1:-1:-1;;;5329:2:1;5314:18;;;;5301:32;;4883:456::o;5344:248::-;5412:6;5420;5473:2;5461:9;5452:7;5448:23;5444:32;5441:52;;;5489:1;5486;5479:12;5441:52;-1:-1:-1;;5512:23:1;;;5582:2;5567:18;;;5554:32;;-1:-1:-1;5344:248:1:o;5597:1138::-;5715:6;5723;5776:2;5764:9;5755:7;5751:23;5747:32;5744:52;;;5792:1;5789;5782:12;5744:52;5832:9;5819:23;5861:18;5902:2;5894:6;5891:14;5888:34;;;5918:1;5915;5908:12;5888:34;5941:61;5994:7;5985:6;5974:9;5970:22;5941:61;:::i;:::-;5931:71;;6021:2;6011:12;;6076:2;6065:9;6061:18;6048:32;6105:2;6095:8;6092:16;6089:36;;;6121:1;6118;6111:12;6089:36;6144:24;;;-1:-1:-1;6199:4:1;6191:13;;6187:27;-1:-1:-1;6177:55:1;;6228:1;6225;6218:12;6177:55;6264:2;6251:16;6287:60;6303:43;6343:2;6303:43;:::i;6287:60::-;6381:15;;;6463:1;6459:10;;;;6451:19;;6447:28;;;6412:12;;;;6487:19;;;6484:39;;;6519:1;6516;6509:12;6484:39;6543:11;;;;6563:142;6579:6;6574:3;6571:15;6563:142;;;6645:17;;6633:30;;6596:12;;;;6683;;;;6563:142;;;6724:5;6714:15;;;;;;;5597:1138;;;;;:::o;6929:159::-;6996:20;;7056:6;7045:18;;7035:29;;7025:57;;7078:1;7075;7068:12;7025:57;6929:159;;;:::o;7093:328::-;7167:6;7175;7183;7236:2;7224:9;7215:7;7211:23;7207:32;7204:52;;;7252:1;7249;7242:12;7204:52;7275:28;7293:9;7275:28;:::i;:::-;7265:38;;7322:37;7355:2;7344:9;7340:18;7322:37;:::i;:::-;7312:47;;7378:37;7411:2;7400:9;7396:18;7378:37;:::i;:::-;7368:47;;7093:328;;;;;:::o;7426:382::-;7491:6;7499;7552:2;7540:9;7531:7;7527:23;7523:32;7520:52;;;7568:1;7565;7558:12;7520:52;7607:9;7594:23;7626:31;7651:5;7626:31;:::i;7813:180::-;7872:6;7925:2;7913:9;7904:7;7900:23;7896:32;7893:52;;;7941:1;7938;7931:12;7893:52;-1:-1:-1;7964:23:1;;7813:180;-1:-1:-1;7813:180:1:o;7998:853::-;8133:6;8141;8149;8157;8165;8218:3;8206:9;8197:7;8193:23;8189:33;8186:53;;;8235:1;8232;8225:12;8186:53;8274:9;8261:23;8293:31;8318:5;8293:31;:::i;:::-;8343:5;-1:-1:-1;8400:2:1;8385:18;;8372:32;8413:33;8372:32;8413:33;:::i;:::-;8465:7;-1:-1:-1;8524:2:1;8509:18;;8496:32;8537:33;8496:32;8537:33;:::i;:::-;8589:7;-1:-1:-1;8648:2:1;8633:18;;8620:32;8661:33;8620:32;8661:33;:::i;:::-;8713:7;-1:-1:-1;8772:3:1;8757:19;;8744:33;8786;8744;8786;:::i;:::-;8838:7;8828:17;;;7998:853;;;;;;;;:::o;9463:388::-;9531:6;9539;9592:2;9580:9;9571:7;9567:23;9563:32;9560:52;;;9608:1;9605;9598:12;9560:52;9647:9;9634:23;9666:31;9691:5;9666:31;:::i;:::-;9716:5;-1:-1:-1;9773:2:1;9758:18;;9745:32;9786:33;9745:32;9786:33;:::i;9856:367::-;9919:8;9929:6;9983:3;9976:4;9968:6;9964:17;9960:27;9950:55;;10001:1;9998;9991:12;9950:55;-1:-1:-1;10024:20:1;;10067:18;10056:30;;10053:50;;;10099:1;10096;10089:12;10053:50;10136:4;10128:6;10124:17;10112:29;;10196:3;10189:4;10179:6;10176:1;10172:14;10164:6;10160:27;10156:38;10153:47;10150:67;;;10213:1;10210;10203:12;10150:67;9856:367;;;;;:::o;10228:908::-;10359:6;10367;10375;10383;10391;10444:2;10432:9;10423:7;10419:23;10415:32;10412:52;;;10460:1;10457;10450:12;10412:52;10500:9;10487:23;10529:18;10570:2;10562:6;10559:14;10556:34;;;10586:1;10583;10576:12;10556:34;10625:70;10687:7;10678:6;10667:9;10663:22;10625:70;:::i;:::-;10714:8;;-1:-1:-1;10599:96:1;-1:-1:-1;10802:2:1;10787:18;;10774:32;;-1:-1:-1;10818:16:1;;;10815:36;;;10847:1;10844;10837:12;10815:36;;10886:72;10950:7;10939:8;10928:9;10924:24;10886:72;:::i;:::-;10977:8;;-1:-1:-1;10860:98:1;-1:-1:-1;;11062:2:1;11047:18;;11034:32;11075:31;11034:32;11075:31;:::i;11141:474::-;11231:6;11239;11247;11255;11263;11316:3;11304:9;11295:7;11291:23;11287:33;11284:53;;;11333:1;11330;11323:12;11284:53;11356:28;11374:9;11356:28;:::i;:::-;11346:38;;11403:37;11436:2;11425:9;11421:18;11403:37;:::i;:::-;11393:47;;11459:37;11492:2;11481:9;11477:18;11459:37;:::i;:::-;11449:47;;11515:37;11548:2;11537:9;11533:18;11515:37;:::i;:::-;11505:47;;11571:38;11604:3;11593:9;11589:19;11571:38;:::i;:::-;11561:48;;11141:474;;;;;;;;:::o;12251:385::-;12337:6;12345;12353;12361;12414:3;12402:9;12393:7;12389:23;12385:33;12382:53;;;12431:1;12428;12421:12;12382:53;-1:-1:-1;;12454:23:1;;;12524:2;12509:18;;12496:32;;-1:-1:-1;12575:2:1;12560:18;;12547:32;;12626:2;12611:18;12598:32;;-1:-1:-1;12251:385:1;-1:-1:-1;12251:385:1:o;12641:341::-;12843:2;12825:21;;;12882:2;12862:18;;;12855:30;-1:-1:-1;;;12916:2:1;12901:18;;12894:47;12973:2;12958:18;;12641:341::o;13606:461::-;13659:3;13697:5;13691:12;13724:6;13719:3;13712:19;13750:4;13779:2;13774:3;13770:12;13763:19;;13816:2;13809:5;13805:14;13837:1;13847:195;13861:6;13858:1;13855:13;13847:195;;;13926:13;;-1:-1:-1;;;;;13922:39:1;13910:52;;13982:12;;;;14017:15;;;;13958:1;13876:9;13847:195;;;-1:-1:-1;14058:3:1;;13606:461;-1:-1:-1;;;;;13606:461:1:o;14072:342::-;14273:2;14262:9;14255:21;14236:4;14293:56;14345:2;14334:9;14330:18;14322:6;14293:56;:::i;:::-;14285:64;;14399:6;14392:14;14385:22;14380:2;14369:9;14365:18;14358:50;14072:342;;;;;:::o;14419:380::-;14498:1;14494:12;;;;14541;;;14562:61;;14616:4;14608:6;14604:17;14594:27;;14562:61;14669:2;14661:6;14658:14;14638:18;14635:38;14632:161;;14715:10;14710:3;14706:20;14703:1;14696:31;14750:4;14747:1;14740:15;14778:4;14775:1;14768:15;14632:161;;14419:380;;;:::o;14804:127::-;14865:10;14860:3;14856:20;14853:1;14846:31;14896:4;14893:1;14886:15;14920:4;14917:1;14910:15;14936:422;15025:1;15068:5;15025:1;15082:270;15103:7;15093:8;15090:21;15082:270;;;15162:4;15158:1;15154:6;15150:17;15144:4;15141:27;15138:53;;;15171:18;;:::i;:::-;15221:7;15211:8;15207:22;15204:55;;;15241:16;;;;15204:55;15320:22;;;;15280:15;;;;15082:270;;;15086:3;14936:422;;;;;:::o;15363:806::-;15412:5;15442:8;15432:80;;-1:-1:-1;15483:1:1;15497:5;;15432:80;15531:4;15521:76;;-1:-1:-1;15568:1:1;15582:5;;15521:76;15613:4;15631:1;15626:59;;;;15699:1;15694:130;;;;15606:218;;15626:59;15656:1;15647:10;;15670:5;;;15694:130;15731:3;15721:8;15718:17;15715:43;;;15738:18;;:::i;:::-;-1:-1:-1;;15794:1:1;15780:16;;15809:5;;15606:218;;15908:2;15898:8;15895:16;15889:3;15883:4;15880:13;15876:36;15870:2;15860:8;15857:16;15852:2;15846:4;15843:12;15839:35;15836:77;15833:159;;;-1:-1:-1;15945:19:1;;;15977:5;;15833:159;16024:34;16049:8;16043:4;16024:34;:::i;:::-;16094:6;16090:1;16086:6;16082:19;16073:7;16070:32;16067:58;;;16105:18;;:::i;:::-;16143:20;;15363:806;-1:-1:-1;;;15363:806:1:o;16174:140::-;16232:5;16261:47;16302:4;16292:8;16288:19;16282:4;16261:47;:::i;16319:217::-;16359:1;16385;16375:132;;16429:10;16424:3;16420:20;16417:1;16410:31;16464:4;16461:1;16454:15;16492:4;16489:1;16482:15;16375:132;-1:-1:-1;16521:9:1;;16319:217::o;16541:168::-;16614:9;;;16645;;16662:15;;;16656:22;;16642:37;16632:71;;16683:18;;:::i;16714:128::-;16781:9;;;16802:11;;;16799:37;;;16816:18;;:::i;17614:127::-;17675:10;17670:3;17666:20;17663:1;17656:31;17706:4;17703:1;17696:15;17730:4;17727:1;17720:15;18093:197;18131:3;18159:6;18200:2;18193:5;18189:14;18227:2;18218:7;18215:15;18212:41;;18233:18;;:::i;:::-;18282:1;18269:15;;18093:197;-1:-1:-1;;;18093:197:1:o;18295:125::-;18360:9;;;18381:10;;;18378:36;;;18394:18;;:::i;20601:385::-;20680:6;20688;20741:2;20729:9;20720:7;20716:23;20712:32;20709:52;;;20757:1;20754;20747:12;20709:52;20789:9;20783:16;20808:31;20833:5;20808:31;:::i;:::-;20908:2;20893:18;;20887:25;20858:5;;-1:-1:-1;20921:33:1;20887:25;20921:33;:::i;23921:245::-;24000:6;24008;24061:2;24049:9;24040:7;24036:23;24032:32;24029:52;;;24077:1;24074;24067:12;24029:52;-1:-1:-1;;24100:16:1;;24156:2;24141:18;;;24135:25;24100:16;;24135:25;;-1:-1:-1;23921:245:1:o;24527:184::-;24597:6;24650:2;24638:9;24629:7;24625:23;24621:32;24618:52;;;24666:1;24663;24656:12;24618:52;-1:-1:-1;24689:16:1;;24527:184;-1:-1:-1;24527:184:1:o;24995:245::-;25062:6;25115:2;25103:9;25094:7;25090:23;25086:32;25083:52;;;25131:1;25128;25121:12;25083:52;25163:9;25157:16;25182:28;25204:5;25182:28;:::i;26255:510::-;26309:5;26362:3;26355:4;26347:6;26343:17;26339:27;26329:55;;26380:1;26377;26370:12;26329:55;26409:6;26403:13;26435:18;26431:2;26428:26;26425:52;;;26457:18;;:::i;:::-;26501:55;26544:2;26525:13;;-1:-1:-1;;26521:27:1;26550:4;26517:38;26501:55;:::i;:::-;26581:2;26572:7;26565:19;26627:3;26620:4;26615:2;26607:6;26603:15;26599:26;26596:35;26593:55;;;26644:1;26641;26634:12;26593:55;26657:77;26731:2;26724:4;26715:7;26711:18;26704:4;26696:6;26692:17;26657:77;:::i;26770:809::-;26905:6;26913;26921;26929;26937;26945;26998:3;26986:9;26977:7;26973:23;26969:33;26966:53;;;27015:1;27012;27005:12;26966:53;27048:9;27042:16;27077:18;27118:2;27110:6;27107:14;27104:34;;;27134:1;27131;27124:12;27104:34;27157:61;27210:7;27201:6;27190:9;27186:22;27157:61;:::i;:::-;27147:71;;27264:2;27253:9;27249:18;27243:25;27227:41;;27293:2;27283:8;27280:16;27277:36;;;27309:1;27306;27299:12;27277:36;;27332:63;27387:7;27376:8;27365:9;27361:24;27332:63;:::i;:::-;27322:73;;;27435:2;27424:9;27420:18;27414:25;27404:35;;27479:2;27468:9;27464:18;27458:25;27448:35;;27523:3;27512:9;27508:19;27502:26;27492:36;;27568:3;27557:9;27553:19;27547:26;27537:36;;26770:809;;;;;;;;:::o;28039:545::-;28141:2;28136:3;28133:11;28130:448;;;28177:1;28202:5;28198:2;28191:17;28247:4;28243:2;28233:19;28317:2;28305:10;28301:19;28298:1;28294:27;28288:4;28284:38;28353:4;28341:10;28338:20;28335:47;;;-1:-1:-1;28376:4:1;28335:47;28431:2;28426:3;28422:12;28419:1;28415:20;28409:4;28405:31;28395:41;;28486:82;28504:2;28497:5;28494:13;28486:82;;;28549:17;;;28530:1;28519:13;28486:82;;28760:1352;28886:3;28880:10;28913:18;28905:6;28902:30;28899:56;;;28935:18;;:::i;:::-;28964:97;29054:6;29014:38;29046:4;29040:11;29014:38;:::i;:::-;29008:4;28964:97;:::i;:::-;29116:4;;29180:2;29169:14;;29197:1;29192:663;;;;29899:1;29916:6;29913:89;;;-1:-1:-1;29968:19:1;;;29962:26;29913:89;-1:-1:-1;;28717:1:1;28713:11;;;28709:24;28705:29;28695:40;28741:1;28737:11;;;28692:57;30015:81;;29162:944;;29192:663;27986:1;27979:14;;;28023:4;28010:18;;-1:-1:-1;;29228:20:1;;;29346:236;29360:7;29357:1;29354:14;29346:236;;;29449:19;;;29443:26;29428:42;;29541:27;;;;29509:1;29497:14;;;;29376:19;;29346:236;;;29350:3;29610:6;29601:7;29598:19;29595:201;;;29671:19;;;29665:26;-1:-1:-1;;29754:1:1;29750:14;;;29766:3;29746:24;29742:37;29738:42;29723:58;29708:74;;29595:201;-1:-1:-1;;;;;29842:1:1;29826:14;;;29822:22;29809:36;;-1:-1:-1;28760:1352:1:o;30464:135::-;30503:3;30524:17;;;30521:43;;30544:18;;:::i;:::-;-1:-1:-1;30591:1:1;30580:13;;30464:135::o;31216:306::-;31304:6;31312;31320;31373:2;31361:9;31352:7;31348:23;31344:32;31341:52;;;31389:1;31386;31379:12;31341:52;31418:9;31412:16;31402:26;;31468:2;31457:9;31453:18;31447:25;31437:35;;31512:2;31501:9;31497:18;31491:25;31481:35;;31216:306;;;;;:::o;32229:168::-;32296:6;32322:10;;;32334;;;32318:27;;32357:11;;;32354:37;;;32371:18;;:::i;:::-;32354:37;32229:168;;;;:::o;33616:409::-;33818:2;33800:21;;;33857:2;33837:18;;;33830:30;33896:34;33891:2;33876:18;;33869:62;-1:-1:-1;;;33962:2:1;33947:18;;33940:43;34015:3;34000:19;;33616:409::o;37968:251::-;38038:6;38091:2;38079:9;38070:7;38066:23;38062:32;38059:52;;;38107:1;38104;38097:12;38059:52;38139:9;38133:16;38158:31;38183:5;38158:31;:::i;38224:582::-;38523:6;38512:9;38505:25;38566:6;38561:2;38550:9;38546:18;38539:34;38609:3;38604:2;38593:9;38589:18;38582:31;38486:4;38630:57;38682:3;38671:9;38667:19;38659:6;38630:57;:::i;:::-;-1:-1:-1;;;;;38723:32:1;;;;38718:2;38703:18;;38696:60;-1:-1:-1;38787:3:1;38772:19;38765:35;38622:65;38224:582;-1:-1:-1;;;38224:582:1:o

Swarm Source

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