ETH Price: $2,950.00 (-2.09%)
Gas: 4 Gwei

Token

Bomb Shelter Inu (BOOM)
 

Overview

Max Total Supply

1,000,000,000 BOOM

Holders

285

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$127,760.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 BOOM

Value
$0.00
0x445e2160b216ce1ae316caeeb3645c25744b8e2d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BombShelterInu

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

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

interface Cashier {
    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address user, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
    function getUserInfo(address user) external view returns(string memory, string memory, string memory, string memory);
    function getUserRealizedRewards(address user) external view returns (uint256);
    function getPendingRewards(address user) external view returns (uint256);
    function initialize() external;
    function getCurrentReward() external view returns (address);
}

contract BombShelterInu is IERC20 {
    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;

    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Bomb Shelter Inu";
    string constant private _symbol = "BOOM";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * (10 ** _decimals);

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

    struct Ratios {
        uint16 rewards;
        uint16 marketing;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        rewards: 1,
        marketing: 1,
        total: 2
    });
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;
    address payable public marketingWallet = payable(0xc9156b6479E593A6C0D9B66797eb1c3E4aC76AEa);

    Cashier cashier;
    uint256 cashierGas = 300000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;

    bool public processReflect = false;

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

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

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(ZERO, _owner, _tTotal);
        emit OwnershipTransferred(address(0), _owner);

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

        // Exclude common lockers from dividends and fees.
        _isExcludedFromDividends[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromDividends[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromDividends[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromDividends[newOwner] = true;
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

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

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
            setExcludedFromFees(oldOperator, false);
            _isExcludedFromDividends[oldOperator] = false;
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
        setExcludedFromFees(newOperator, true);
        _isExcludedFromDividends[newOperator] = true;
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

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

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

    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: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        lpPairs[lpPair] = false;
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _isExcludedFromDividends[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            _isExcludedFromDividends[pair] = true;
            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 setInitializers(address aInit, address cInit) public onlyOwner {
        require(!tradingEnabled);
        require(cInit != address(this) && aInit != address(this) && cInit != aInit);
        cashier = Cashier(cInit);
        initializer = Initializer(aInit);
        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);
            _isExcludedFromDividends[lpPair] = true;
        } catch { revert(); }
    }

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

    function isExcludedFromDividends(address account) external view returns(bool) {
        return _isExcludedFromDividends[account];
    }

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

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

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

    function setDividendExcluded(address account, bool enabled) public onlyOwner {
        require(account != address(this) 
                && account != lpPair
                && account != DEAD);
        _isExcludedFromDividends[account] = enabled;
        if (enabled) {
            try cashier.tally(account, 0) {} catch {}
        } else {
            try cashier.tally(account, _tOwned[account]) {} catch {}
        }
    }

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

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

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

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

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

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

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

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

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

    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        cashier.setRewardsProperties(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        cashierGas = gas;
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
            setDividendExcluded(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
            setDividendExcluded(router, true);
            setDividendExcluded(presale, true);
        }
    }

    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 _basicTransfer(address from, address to, uint256 amount) internal returns (bool) {
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

    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 (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    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.total == 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 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance);

        if (ratios.rewards > 0) {
            try cashier.load{value: rewardsBalance}() {} catch {}
        }
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)) {
                initializer = Initializer(address(this));
            }
            if (address(cashier) ==  address(0)) {
                cashier = Cashier(address(this));
            }
            contractSwapEnabled = true;
            allowedPresaleExclusion = false;
            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 {}
        try cashier.initialize() {} catch {}
        tradingEnabled = true;
        processReflect = true;
        allowedPresaleExclusion = false;
    }

    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 = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell);
        }
        _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.");
            }
        }
        processRewards(from, to);
        
        return true;
    }

    function processRewards(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try cashier.tally(from, _tOwned[from]) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try cashier.tally(to, _tOwned[to]) {} catch {}
        }
        if (processReflect) {
            try cashier.cashout(cashierGas) {} catch {}
        }
    }

    function manualProcess(uint256 manualGas) external {
        try cashier.cashout(manualGas) {} catch {}
    }

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

    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 manualDeposit(uint256 amount, uint256 multiplier) external onlyOwner {
        try cashier.load{value: amount * 10**multiplier}() {} catch {}
    }

    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 claimPendingRewards() external {
        cashier.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return cashier.getTotalDistributed();
    }

    function getUserInfo(address user) external view returns (string memory, string memory, string memory, string memory) {
        return cashier.getUserInfo(user);
    }

    function getUserRealizedGains(address user) external view returns (uint256) {
        return cashier.getUserRealizedRewards(user);
    }

    function getUserUnpaidEarnings(address user) external view returns (uint256) {
        return cashier.getPendingRewards(user);
    }

    function getCurrentReward() external view returns (address) {
        return cashier.getCurrentReward();
    }
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","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":"rewards","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"claimPendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentReward","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","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":"setDividendExcluded","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":"aInit","type":"address"},{"internalType":"address","name":"cInit","type":"address"}],"name":"setInitializers","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":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","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":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setRewardsProperties","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":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002818155600a8054600160ff1990911681178255600c6080819052605860a05260c094909452600b80546258000c65ffffffffffff199182161790915561014060405260e08290526101009190915261012092909252825490911664020001000117909155600f805473c9156b6479e593a6c0d9b66797eb1c3e4ac76aea6001600160a01b031991821617909155620493e06011556012805461ff001916815560168390556017805462ffffff19169055601880543390841681179091556019805490931617909155620000d6916200049c565b620000e690633b9aca00620004b4565b601880546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200013a6012600a6200049c565b6200014a90633b9aca00620004b4565b60405190815260200160405180910390a36018546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3601880546001600160a01b0390811660009081526005602081815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805483168417905597549096168552600783528185208054871682179055958452832080548516861790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516861790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548516861790557f369570fab114047d6931f481fe65511f6f30128550291df97f26a8b12fbb064780548516861790557f76e04a725e11e15e15ab8a12e133522d6ebb6e4ce8401eb7fccaa3f298dfd6e580548516861790557fa41ba8ce755a9610529fb4698883547ff2835b475c582169085f2e8c39e304f78054851686179055527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548316841790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805483168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f80549091169091179055620004ce565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003de578160001904821115620003c257620003c262000387565b80851615620003d057918102915b93841c9390800290620003a2565b509250929050565b600082620003f75750600162000496565b81620004065750600062000496565b81600181146200041f57600281146200042a576200044a565b600191505062000496565b60ff8411156200043e576200043e62000387565b50506001821b62000496565b5060208310610133831016604e8410600b84101617156200046f575081810a62000496565b6200047b83836200039d565b806000190482111562000492576200049262000387565b0290505b92915050565b6000620004ad60ff841683620003e6565b9392505050565b808202811582820484141762000496576200049662000387565b61495f80620004de6000396000f3fe6080604052600436106103c75760003560e01c80636b639a25116101f2578063b3ab15fb1161010d578063eb50e70e116100a0578063f7c245ea1161006f578063f7c245ea14610c30578063fb78680d14610c45578063fdb78c0e14610c65578063feadde9c14610c8457600080fd5b8063eb50e70e14610bc1578063ee5d9c2d14610be1578063efe7dc9014610bf6578063f18567bf14610c1057600080fd5b8063cf847706116100dc578063cf84770614610b0a578063d0b1449d14610b3b578063dd62ed3e14610b5b578063eafb5a3c14610ba157600080fd5b8063b3ab15fb14610a77578063b421626c14610a97578063b7df8b3614610ab7578063c705c56914610ad157600080fd5b80638a8c523c11610185578063a53f8ba111610154578063a53f8ba1146109f7578063a9059cbb14610a17578063ab558e4d14610a37578063ab5cb5a614610a5757600080fd5b80638a8c523c1461098b5780638aec8542146109a057806392bd7b2c146109b557806395d89b41146109ca57600080fd5b806380c581d1116101c157806380c581d11461091857806381cf58a914610938578063893d20e8146109585780638a63bd9b1461097657600080fd5b80636b639a251461088d57806370a08231146108ad578063715018a6146108e357806375f0a874146108f857600080fd5b806333251a0b116102e25780634fbee193116102755780635cce86cd116102445780635cce86cd146107e45780636372c68f1461081d5780636386c1c71461083d5780636505079a1461086d57600080fd5b80634fbee1931461074b57806350a8e01614610784578063570ca735146107a4578063590ffdce146107c457600080fd5b80634ada218b116102b15780634ada218b146106cc5780634bbb93eb146106eb5780634e718e481461070b5780634fb2e45d1461072b57600080fd5b806333251a0b1461065757806336fddb041461067757806339a0590214610697578063452ed4f1146106ac57600080fd5b806313b4a7f41161035a5780632610eaca116103295780632610eaca146105ef578063285777511461060f5780632e8fa82114610625578063313ce5671461063b57600080fd5b806313b4a7f41461057a57806318160ddd1461059a578063218950bc146105af57806323b872dd146105cf57600080fd5b806306fdde031161039657806306fdde03146104a25780630758d924146104f1578063095ea7b3146105115780630dcbcf1c1461054157600080fd5b806303fd2a45146103d35780630445b66714610406578063044df7261461042a578063069d955f1461044c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041257600080fd5b5061041c60135481565b6040519081526020016103fd565b34801561043657600080fd5b5061044a6104453660046140e6565b610ca4565b005b34801561045857600080fd5b50600b5461047d9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103fd565b3480156104ae57600080fd5b5060408051808201909152601081527f426f6d62205368656c74657220496e750000000000000000000000000000000060208201525b6040516103fd919061416f565b3480156104fd57600080fd5b50600d546103e9906001600160a01b031681565b34801561051d57600080fd5b5061053161052c366004614197565b610d63565b60405190151581526020016103fd565b34801561054d57600080fd5b5061053161055c3660046141c3565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561058657600080fd5b5061044a6105953660046141e0565b610d7a565b3480156105a657600080fd5b5061041c610f4e565b3480156105bb57600080fd5b5061044a6105ca3660046141e0565b610f6f565b3480156105db57600080fd5b506105316105ea36600461420e565b61115f565b3480156105fb57600080fd5b5061044a61060a366004614325565b6111d7565b34801561061b57600080fd5b5061041c60165481565b34801561063157600080fd5b5061041c60145481565b34801561064757600080fd5b50604051601281526020016103fd565b34801561066357600080fd5b5061044a6106723660046141c3565b61138c565b34801561068357600080fd5b5061044a6106923660046143e7565b61143e565b3480156106a357600080fd5b5061044a6114b1565b3480156106b857600080fd5b50600e546103e9906001600160a01b031681565b3480156106d857600080fd5b5060175461053190610100900460ff1681565b3480156106f757600080fd5b5061041c610706366004614405565b611538565b34801561071757600080fd5b5061044a610726366004614405565b61156c565b34801561073757600080fd5b5061044a6107463660046141c3565b61160a565b34801561075757600080fd5b506105316107663660046141c3565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561079057600080fd5b506017546105319062010000900460ff1681565b3480156107b057600080fd5b50601a546103e9906001600160a01b031681565b3480156107d057600080fd5b5061044a6107df3660046143e7565b611844565b3480156107f057600080fd5b506105316107ff3660046141c3565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082957600080fd5b5061041c6108383660046141c3565b6118b7565b34801561084957600080fd5b5061085d6108583660046141c3565b611927565b6040516103fd949392919061441e565b34801561087957600080fd5b5061044a61088836600461446b565b6119af565b34801561089957600080fd5b5061044a6108a83660046143e7565b611a66565b3480156108b957600080fd5b5061041c6108c83660046141c3565b6001600160a01b031660009081526020819052604090205490565b3480156108ef57600080fd5b5061044a611be9565b34801561090457600080fd5b50600f546103e9906001600160a01b031681565b34801561092457600080fd5b5061044a6109333660046143e7565b611d13565b34801561094457600080fd5b506019546103e9906001600160a01b031681565b34801561096457600080fd5b506018546001600160a01b03166103e9565b34801561098257600080fd5b50610531611f16565b34801561099757600080fd5b5061044a611f81565b3480156109ac57600080fd5b506103e9612240565b3480156109c157600080fd5b5061044a6122ae565b3480156109d657600080fd5b50604080518082019091526004815263424f4f4d60e01b60208201526104e4565b348015610a0357600080fd5b5061044a610a123660046144b6565b61230d565b348015610a2357600080fd5b50610531610a32366004614197565b6123b9565b348015610a4357600080fd5b5061044a610a523660046141c3565b6123cd565b348015610a6357600080fd5b5061041c610a723660046141c3565b612568565b348015610a8357600080fd5b5061044a610a923660046141c3565b61259b565b348015610aa357600080fd5b5061044a610ab23660046144d8565b6126ce565b348015610ac357600080fd5b506015546105319060ff1681565b348015610add57600080fd5b50610531610aec3660046141c3565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b1657600080fd5b50600c5461047d9061ffff808216916201000081048216916401000000009091041683565b348015610b4757600080fd5b5061044a610b56366004614405565b612796565b348015610b6757600080fd5b5061041c610b763660046141e0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610bad57600080fd5b5061044a610bbc3660046141c3565b6127f2565b348015610bcd57600080fd5b5061044a610bdc3660046141c3565b612bf6565b348015610bed57600080fd5b5061044a612cb6565b348015610c0257600080fd5b506017546105319060ff1681565b348015610c1c57600080fd5b5061044a610c2b366004614405565b612d93565b348015610c3c57600080fd5b5061041c612df2565b348015610c5157600080fd5b5061044a610c60366004614504565b612e60565b348015610c7157600080fd5b5060125461053190610100900460ff1681565b348015610c9057600080fd5b5061044a610c9f3660046143e7565b61311c565b6018546001600160a01b03163314610cf15760405162461bcd60e51b8152602060048201526011602482015260008051602061490a83398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d4757600080fd5b505af1158015610d5b573d6000803e3d6000fd5b505050505050565b6000610d7033848461318f565b5060015b92915050565b6018546001600160a01b03163314610dc25760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b600a5460ff16610dd157600080fd5b6001600160a01b0382163014801590610df357506001600160a01b0381163014155b8015610e0d5750600e546001600160a01b03838116911614155b8015610e275750600e546001600160a01b03828116911614155b610e615760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610ce8565b806001600160a01b0316826001600160a01b031603610ece576001600160a01b03811660009081526008602090815260408083208054600160ff19918216811790925560099093529220805490911682179055610ebf908290611844565b610eca816001611a66565b5050565b6001600160a01b0382811660008181526008602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526009909252808320805486168317905592825291902080549092168117909155610f38908390611844565b610f43816001611844565b610ebf826001611a66565b6000610f5c6012600a614630565b610f6a90633b9aca0061463f565b905090565b6018546001600160a01b03163314610fb75760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff1615610fcc57600080fd5b6001600160a01b0381163014801590610fee57506001600160a01b0382163014155b801561100c5750816001600160a01b0316816001600160a01b031614155b61101557600080fd5b601080546001600160a01b0319166001600160a01b0383811691909117909155601780546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af19250505080156110b4575060408051601f3d908101601f191682019092526110b191810190614656565b60015b6110bd57600080fd5b600d80546001600160a01b038085166001600160a01b0319928316178355600e80548583169316831790556000918252600160208190526040909220805460ff1916909217909155601854915461111a928216911660001961318f565b600d546111349030906001600160a01b031660001961318f565b5050600e546001600160a01b03166000908152600760205260409020805460ff191660011790555050565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146111c4576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906111be908490614685565b90915550505b6111cf8484846132b3565b949350505050565b6018546001600160a01b0316331461121f5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b80518251146112705760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ce8565b60005b82518161ffff1610156113875761128c6012600a614630565b828261ffff16815181106112a2576112a2614698565b60200260200101516112b4919061463f565b3360009081526020819052604090205410156113125760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ce8565b61137433848361ffff168151811061132c5761132c614698565b60200260200101516012600a6113429190614630565b858561ffff168151811061135857611358614698565b602002602001015161136a919061463f565b6000806001613643565b508061137f816146ae565b915050611273565b505050565b6018546001600160a01b031633146113d45760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b15801561142357600080fd5b505af1158015611437573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146114865760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461151c5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610ce8565b611526600061259b565b601980546001600160a01b0319169055565b600e546001600160a01b03166000908152602081905260408120546127109061156290849061463f565b610d7491906146cf565b6018546001600160a01b031633146115b45760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60968111156116055760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ce8565b601655565b6018546001600160a01b031633146116525760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce8565b61deac196001600160a01b0382160161174f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce8565b601880546001600160a01b039081166000908152600560208181526040808420805460ff199081169091558654861685526007808452828620805483169055888716865293835281852080548216600190811790915593835281852080549091169093179092559354909216815291829052902054156117f2576018546001600160a01b03166000818152602081905260409020546117f09190839061136a565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b0316331461188c5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906146f1565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119a0919081019061476e565b93509350935093509193509193565b6018546001600160a01b031633146119f75760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b03163314611aae5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b0382163014801590611ad55750600e546001600160a01b03838116911614155b8015611aec57506001600160a01b03821661dead14155b611af557600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611b8b57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611b7157600080fd5b505af1925050508015611b82575060015b15610eca575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015611b7157600080fd5b6018546001600160a01b03163314611c315760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff16611cae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ce8565b601854611cc5906001600160a01b03166000611844565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611d5b5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b80611de6576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d4757600080fd5b60025415611e4d576203f48060025442611e009190614685565b11611e4d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ce8565b6001600160a01b03821660009081526001602052604090205460ff1615611eb65760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ce8565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d2d565b6018546000906001600160a01b03163314611f615760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b600d54611f7b9030906001600160a01b031660001961318f565b50600190565b6018546001600160a01b03163314611fc95760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff16156120215760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ce8565b60175462010000900460ff166120795760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ce8565b601754630100000090046001600160a01b03166120ac57601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561211f57600080fd5b505af1925050508015612130575060015b50601754600e546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af19250505080156121b4575060408051601f3d908101601f191682019092526121b19181019061481b565b60015b156121c3576013919091556014555b601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561221357600080fd5b505af1925050508015612224575060015b506017805461ffff1916610101179055600a805460ff19169055565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a919061483f565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156122f357600080fd5b505af1158015612307573d6000803e3d6000fd5b50505050565b6018546001600160a01b031633146123555760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6010546001600160a01b03166386d5c4be61237183600a61485c565b61237b908561463f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af193505050508015611b8257505050565b60006123c63384846132b3565b9392505050565b6018546001600160a01b031633146124155760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff161561247e57306001600160a01b0382160361247e5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ce8565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f991906146f1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190614868565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016118e6565b6019546001600160a01b031633146126065760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610ce8565b601a546001600160a01b03168015612664576001600160a01b0381166000908152600860205260408120805460ff19169055612643908290611844565b6001600160a01b0381166000908152600760205260409020805460ff191690555b601a80546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff191660019081179091556126a9908390611844565b506001600160a01b03166000908152600760205260409020805460ff19166001179055565b6018546001600160a01b031633146127165760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b61272181600a61485c565b61272b908361463f565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b031633146127de5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b620b71b081106127ed57600080fd5b601155565b6018546001600160a01b0316331461283a5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff16156128935760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ce8565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061483f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612964573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612988919061483f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156129d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f7919061483f565b90506001600160a01b038116612b7057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a69919061483f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada919061483f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4b919061483f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612b8c565b600e80546001600160a01b0319166001600160a01b0383161790555b600d80546001600160a01b0319166001600160a01b03848116919091178255600e805482166000908152600160208181526040808420805460ff1990811685179091559454861684526007909152909120805490921617905590546113879130911660001961318f565b6018546001600160a01b03163314612c3e5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b038116612c945760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ce8565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612cfe5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff1615612d575760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ce8565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612d90573d6000803e3d6000fd5b50565b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612dd957600080fd5b505af1925050508015612dea575060015b15612d905750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a91906146f1565b6018546001600160a01b03163314612ea85760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b8284612eb66012600a614630565b612ec490633b9aca0061463f565b612ece919061463f565b612ed891906146cf565b6013558082612ee96012600a614630565b612ef790633b9aca0061463f565b612f01919061463f565b612f0b91906146cf565b60148190556013541115612f6b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ce8565b600e546001600160a01b031660009081526020819052604090205461271090612f9590609661463f565b612f9f91906146cf565b6014541115612ffc5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ce8565b620f424061300c6012600a614630565b61301a90633b9aca0061463f565b61302491906146cf565b601454101561308c5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce8565b620f424061309c6012600a614630565b6130aa90633b9aca0061463f565b6130b491906146cf565b60135410156123075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce8565b6018546001600160a01b031633146131645760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b0383166131f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce8565b6001600160a01b0382166132525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166133195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce8565b6001600160a01b03831661337b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce8565b600082116133dd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ce8565b6001600160a01b0384166000908152600160205260408120548190819060ff161561340b5760019250613439565b6001600160a01b03861660009081526001602052604090205460ff16156134355760019150613439565b5060015b61344387876138f2565b1561354957601754610100900460ff1661354957806134a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ce8565b6001600160a01b03871660009081526004602052604090205460ff161580156134e657506001600160a01b03861660009081526004602052604090205460ff16155b156135495760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ce8565b811561362a5760125460ff1661362a57601254610100900460ff16801561358957506001600160a01b03861660009081526009602052604090205460ff16155b80156135ae57506001600160a01b03871660009081526009602052604090205460ff16155b1561362a573060009081526020819052604090205460135481106136285760145460155460ff161561361257601654600e546001600160a01b0316600090815260208190526040902054612710916136059161463f565b61360f91906146cf565b90505b80821061361d578091505b61362682613a09565b505b505b613638878787868686613643565b979650505050505050565b600061364f87876138f2565b156136ea5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af19250505080156136d3575060408051601f3d908101601f191682019092526136d091810190614868565b60015b6136dc57600080fd5b9050806136e857600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff168061372c57506001600160a01b03871660009081526005602052604090205460ff165b15613735575060005b6001600160a01b0388166000908152602081905260408120805488929061375d908490614685565b9091555086905081156137795761377689888888613d08565b90505b6001600160a01b038816600090815260208190526040812080548392906137a1908490614885565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ed91815260200190565b60405180910390a360175462010000900460ff166138d95761380f8989613e15565b60175462010000900460ff1615801561382d575061382d89896138f2565b801561385257506001600160a01b03891660009081526004602052604090205460ff16155b801561387757506001600160a01b03881660009081526004602052604090205460ff16155b8015613881575083155b156138d95760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ce8565b6138e38989613f76565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061392157506018546001600160a01b03838116911614155b801561393857506018546001600160a01b03163214155b801561395d57506001600160a01b03821660009081526008602052604090205460ff16155b801561398257506001600160a01b03831660009081526008602052604090205460ff16155b801561399957506001600160a01b03821661dead14155b80156139ad57506001600160a01b03821615155b80156139c257506001600160a01b0383163014155b80156139e357506017546001600160a01b0384811663010000009092041614155b80156123c6575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff8082168352620100008204811660208401526401000000009091041691810182905290600003613a565750613cfb565b306000908152600360209081526040808320600d546001600160a01b0316845290915290205460001914613aaf57306000908152600360209081526040808320600d546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ae457613ae4614698565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b61919061483f565b81600181518110613b7457613b74614698565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790613bba908690600090869030904290600401614898565b600060405180830381600087803b158015613bd457600080fd5b505af1925050508015613be5575060015b613bf0575050613cfb565b604082015182514791600091829161ffff90811691613c1091168561463f565b613c1a91906146cf565b90506000613c288285614685565b865190915061ffff1615613c9a57601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c8657600080fd5b505af193505050508015613c98575060015b505b600f546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d8060008114613cec576040519150601f19603f3d011682016040523d82523d6000602084013e613cf1565b606091505b5050505050505050505b506012805460ff19169055565b6000808315613d1e5750600b5461ffff16613d48565b8215613d375750600b5462010000900461ffff16613d48565b50600b54640100000000900461ffff165b601754630100000090046001600160a01b031630148015613d6a575046606114155b15613d7457506111945b80600003613d8557849150506111cf565b6000612710613d94838861463f565b613d9e91906146cf565b90508015613e0b573060009081526020819052604081208054839290613dc5908490614885565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6136388187614685565b60175462010000900460ff1615613e7a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ce8565b613e8482826138f2565b158015613e9e5750600e546001600160a01b038281169116145b15610eca576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff000019166201000017908190556301000000900416613f0257601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613f2557601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16614007576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ff457600080fd5b505af1925050508015614005575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614098576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561408557600080fd5b505af1925050508015614096575060015b505b60175460ff1615610eca5760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611b579160040190815260200190565b8015158114612d9057600080fd5b600080604083850312156140f957600080fd5b8235614104816140d8565b91506020830135614114816140d8565b809150509250929050565b60005b8381101561413a578181015183820152602001614122565b50506000910152565b6000815180845261415b81602086016020860161411f565b601f01601f19169290920160200192915050565b6020815260006123c66020830184614143565b6001600160a01b0381168114612d9057600080fd5b600080604083850312156141aa57600080fd5b82356141b581614182565b946020939093013593505050565b6000602082840312156141d557600080fd5b81356123c681614182565b600080604083850312156141f357600080fd5b82356141fe81614182565b9150602083013561411481614182565b60008060006060848603121561422357600080fd5b833561422e81614182565b9250602084013561423e81614182565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561428e5761428e61424f565b604052919050565b600067ffffffffffffffff8211156142b0576142b061424f565b5060051b60200190565b600082601f8301126142cb57600080fd5b813560206142e06142db83614296565b614265565b82815260059290921b840181019181810190868411156142ff57600080fd5b8286015b8481101561431a5780358352918301918301614303565b509695505050505050565b6000806040838503121561433857600080fd5b823567ffffffffffffffff8082111561435057600080fd5b818501915085601f83011261436457600080fd5b813560206143746142db83614296565b82815260059290921b8401810191818101908984111561439357600080fd5b948201945b838610156143ba5785356143ab81614182565b82529482019490820190614398565b965050860135925050808211156143d057600080fd5b506143dd858286016142ba565b9150509250929050565b600080604083850312156143fa57600080fd5b823561410481614182565b60006020828403121561441757600080fd5b5035919050565b6080815260006144316080830187614143565b82810360208401526144438187614143565b905082810360408401526144578186614143565b905082810360608401526136388185614143565b60008060006060848603121561448057600080fd5b833561448b816140d8565b9250602084013561449b816140d8565b915060408401356144ab816140d8565b809150509250925092565b600080604083850312156144c957600080fd5b50508035926020909101359150565b6000806000606084860312156144ed57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561451a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561458757816000190482111561456d5761456d614536565b8085161561457a57918102915b93841c9390800290614551565b509250929050565b60008261459e57506001610d74565b816145ab57506000610d74565b81600181146145c157600281146145cb576145e7565b6001915050610d74565b60ff8411156145dc576145dc614536565b50506001821b610d74565b5060208310610133831016604e8410600b841016171561460a575081810a610d74565b614614838361454c565b806000190482111561462857614628614536565b029392505050565b60006123c660ff84168361458f565b8082028115828204841417610d7457610d74614536565b6000806040838503121561466957600080fd5b825161467481614182565b602084015190925061411481614182565b81810381811115610d7457610d74614536565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036146c5576146c5614536565b6001019392505050565b6000826146ec57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561470357600080fd5b5051919050565b600082601f83011261471b57600080fd5b815167ffffffffffffffff8111156147355761473561424f565b614748601f8201601f1916602001614265565b81815284602083860101111561475d57600080fd5b6111cf82602083016020870161411f565b6000806000806080858703121561478457600080fd5b845167ffffffffffffffff8082111561479c57600080fd5b6147a88883890161470a565b955060208701519150808211156147be57600080fd5b6147ca8883890161470a565b945060408701519150808211156147e057600080fd5b6147ec8883890161470a565b9350606087015191508082111561480257600080fd5b5061480f8782880161470a565b91505092959194509250565b6000806040838503121561482e57600080fd5b505080516020909101519092909150565b60006020828403121561485157600080fd5b81516123c681614182565b60006123c6838361458f565b60006020828403121561487a57600080fd5b81516123c6816140d8565b80820180821115610d7457610d74614536565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156148e85784516001600160a01b0316835293830193918301916001016148c3565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220d1bf6c2787aba50da9efdad0ac4b8d6c25ecb8002acd3883697486d9774640ae64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103c75760003560e01c80636b639a25116101f2578063b3ab15fb1161010d578063eb50e70e116100a0578063f7c245ea1161006f578063f7c245ea14610c30578063fb78680d14610c45578063fdb78c0e14610c65578063feadde9c14610c8457600080fd5b8063eb50e70e14610bc1578063ee5d9c2d14610be1578063efe7dc9014610bf6578063f18567bf14610c1057600080fd5b8063cf847706116100dc578063cf84770614610b0a578063d0b1449d14610b3b578063dd62ed3e14610b5b578063eafb5a3c14610ba157600080fd5b8063b3ab15fb14610a77578063b421626c14610a97578063b7df8b3614610ab7578063c705c56914610ad157600080fd5b80638a8c523c11610185578063a53f8ba111610154578063a53f8ba1146109f7578063a9059cbb14610a17578063ab558e4d14610a37578063ab5cb5a614610a5757600080fd5b80638a8c523c1461098b5780638aec8542146109a057806392bd7b2c146109b557806395d89b41146109ca57600080fd5b806380c581d1116101c157806380c581d11461091857806381cf58a914610938578063893d20e8146109585780638a63bd9b1461097657600080fd5b80636b639a251461088d57806370a08231146108ad578063715018a6146108e357806375f0a874146108f857600080fd5b806333251a0b116102e25780634fbee193116102755780635cce86cd116102445780635cce86cd146107e45780636372c68f1461081d5780636386c1c71461083d5780636505079a1461086d57600080fd5b80634fbee1931461074b57806350a8e01614610784578063570ca735146107a4578063590ffdce146107c457600080fd5b80634ada218b116102b15780634ada218b146106cc5780634bbb93eb146106eb5780634e718e481461070b5780634fb2e45d1461072b57600080fd5b806333251a0b1461065757806336fddb041461067757806339a0590214610697578063452ed4f1146106ac57600080fd5b806313b4a7f41161035a5780632610eaca116103295780632610eaca146105ef578063285777511461060f5780632e8fa82114610625578063313ce5671461063b57600080fd5b806313b4a7f41461057a57806318160ddd1461059a578063218950bc146105af57806323b872dd146105cf57600080fd5b806306fdde031161039657806306fdde03146104a25780630758d924146104f1578063095ea7b3146105115780630dcbcf1c1461054157600080fd5b806303fd2a45146103d35780630445b66714610406578063044df7261461042a578063069d955f1461044c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041257600080fd5b5061041c60135481565b6040519081526020016103fd565b34801561043657600080fd5b5061044a6104453660046140e6565b610ca4565b005b34801561045857600080fd5b50600b5461047d9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103fd565b3480156104ae57600080fd5b5060408051808201909152601081527f426f6d62205368656c74657220496e750000000000000000000000000000000060208201525b6040516103fd919061416f565b3480156104fd57600080fd5b50600d546103e9906001600160a01b031681565b34801561051d57600080fd5b5061053161052c366004614197565b610d63565b60405190151581526020016103fd565b34801561054d57600080fd5b5061053161055c3660046141c3565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561058657600080fd5b5061044a6105953660046141e0565b610d7a565b3480156105a657600080fd5b5061041c610f4e565b3480156105bb57600080fd5b5061044a6105ca3660046141e0565b610f6f565b3480156105db57600080fd5b506105316105ea36600461420e565b61115f565b3480156105fb57600080fd5b5061044a61060a366004614325565b6111d7565b34801561061b57600080fd5b5061041c60165481565b34801561063157600080fd5b5061041c60145481565b34801561064757600080fd5b50604051601281526020016103fd565b34801561066357600080fd5b5061044a6106723660046141c3565b61138c565b34801561068357600080fd5b5061044a6106923660046143e7565b61143e565b3480156106a357600080fd5b5061044a6114b1565b3480156106b857600080fd5b50600e546103e9906001600160a01b031681565b3480156106d857600080fd5b5060175461053190610100900460ff1681565b3480156106f757600080fd5b5061041c610706366004614405565b611538565b34801561071757600080fd5b5061044a610726366004614405565b61156c565b34801561073757600080fd5b5061044a6107463660046141c3565b61160a565b34801561075757600080fd5b506105316107663660046141c3565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561079057600080fd5b506017546105319062010000900460ff1681565b3480156107b057600080fd5b50601a546103e9906001600160a01b031681565b3480156107d057600080fd5b5061044a6107df3660046143e7565b611844565b3480156107f057600080fd5b506105316107ff3660046141c3565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082957600080fd5b5061041c6108383660046141c3565b6118b7565b34801561084957600080fd5b5061085d6108583660046141c3565b611927565b6040516103fd949392919061441e565b34801561087957600080fd5b5061044a61088836600461446b565b6119af565b34801561089957600080fd5b5061044a6108a83660046143e7565b611a66565b3480156108b957600080fd5b5061041c6108c83660046141c3565b6001600160a01b031660009081526020819052604090205490565b3480156108ef57600080fd5b5061044a611be9565b34801561090457600080fd5b50600f546103e9906001600160a01b031681565b34801561092457600080fd5b5061044a6109333660046143e7565b611d13565b34801561094457600080fd5b506019546103e9906001600160a01b031681565b34801561096457600080fd5b506018546001600160a01b03166103e9565b34801561098257600080fd5b50610531611f16565b34801561099757600080fd5b5061044a611f81565b3480156109ac57600080fd5b506103e9612240565b3480156109c157600080fd5b5061044a6122ae565b3480156109d657600080fd5b50604080518082019091526004815263424f4f4d60e01b60208201526104e4565b348015610a0357600080fd5b5061044a610a123660046144b6565b61230d565b348015610a2357600080fd5b50610531610a32366004614197565b6123b9565b348015610a4357600080fd5b5061044a610a523660046141c3565b6123cd565b348015610a6357600080fd5b5061041c610a723660046141c3565b612568565b348015610a8357600080fd5b5061044a610a923660046141c3565b61259b565b348015610aa357600080fd5b5061044a610ab23660046144d8565b6126ce565b348015610ac357600080fd5b506015546105319060ff1681565b348015610add57600080fd5b50610531610aec3660046141c3565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b1657600080fd5b50600c5461047d9061ffff808216916201000081048216916401000000009091041683565b348015610b4757600080fd5b5061044a610b56366004614405565b612796565b348015610b6757600080fd5b5061041c610b763660046141e0565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610bad57600080fd5b5061044a610bbc3660046141c3565b6127f2565b348015610bcd57600080fd5b5061044a610bdc3660046141c3565b612bf6565b348015610bed57600080fd5b5061044a612cb6565b348015610c0257600080fd5b506017546105319060ff1681565b348015610c1c57600080fd5b5061044a610c2b366004614405565b612d93565b348015610c3c57600080fd5b5061041c612df2565b348015610c5157600080fd5b5061044a610c60366004614504565b612e60565b348015610c7157600080fd5b5060125461053190610100900460ff1681565b348015610c9057600080fd5b5061044a610c9f3660046143e7565b61311c565b6018546001600160a01b03163314610cf15760405162461bcd60e51b8152602060048201526011602482015260008051602061490a83398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d4757600080fd5b505af1158015610d5b573d6000803e3d6000fd5b505050505050565b6000610d7033848461318f565b5060015b92915050565b6018546001600160a01b03163314610dc25760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b600a5460ff16610dd157600080fd5b6001600160a01b0382163014801590610df357506001600160a01b0381163014155b8015610e0d5750600e546001600160a01b03838116911614155b8015610e275750600e546001600160a01b03828116911614155b610e615760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610ce8565b806001600160a01b0316826001600160a01b031603610ece576001600160a01b03811660009081526008602090815260408083208054600160ff19918216811790925560099093529220805490911682179055610ebf908290611844565b610eca816001611a66565b5050565b6001600160a01b0382811660008181526008602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526009909252808320805486168317905592825291902080549092168117909155610f38908390611844565b610f43816001611844565b610ebf826001611a66565b6000610f5c6012600a614630565b610f6a90633b9aca0061463f565b905090565b6018546001600160a01b03163314610fb75760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff1615610fcc57600080fd5b6001600160a01b0381163014801590610fee57506001600160a01b0382163014155b801561100c5750816001600160a01b0316816001600160a01b031614155b61101557600080fd5b601080546001600160a01b0319166001600160a01b0383811691909117909155601780546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af19250505080156110b4575060408051601f3d908101601f191682019092526110b191810190614656565b60015b6110bd57600080fd5b600d80546001600160a01b038085166001600160a01b0319928316178355600e80548583169316831790556000918252600160208190526040909220805460ff1916909217909155601854915461111a928216911660001961318f565b600d546111349030906001600160a01b031660001961318f565b5050600e546001600160a01b03166000908152600760205260409020805460ff191660011790555050565b6001600160a01b0383166000908152600360209081526040808320338452909152812054600019146111c4576001600160a01b0384166000908152600360209081526040808320338452909152812080548492906111be908490614685565b90915550505b6111cf8484846132b3565b949350505050565b6018546001600160a01b0316331461121f5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b80518251146112705760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ce8565b60005b82518161ffff1610156113875761128c6012600a614630565b828261ffff16815181106112a2576112a2614698565b60200260200101516112b4919061463f565b3360009081526020819052604090205410156113125760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ce8565b61137433848361ffff168151811061132c5761132c614698565b60200260200101516012600a6113429190614630565b858561ffff168151811061135857611358614698565b602002602001015161136a919061463f565b6000806001613643565b508061137f816146ae565b915050611273565b505050565b6018546001600160a01b031633146113d45760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b15801561142357600080fd5b505af1158015611437573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146114865760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461151c5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610ce8565b611526600061259b565b601980546001600160a01b0319169055565b600e546001600160a01b03166000908152602081905260408120546127109061156290849061463f565b610d7491906146cf565b6018546001600160a01b031633146115b45760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60968111156116055760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ce8565b601655565b6018546001600160a01b031633146116525760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce8565b61deac196001600160a01b0382160161174f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce8565b601880546001600160a01b039081166000908152600560208181526040808420805460ff199081169091558654861685526007808452828620805483169055888716865293835281852080548216600190811790915593835281852080549091169093179092559354909216815291829052902054156117f2576018546001600160a01b03166000818152602081905260409020546117f09190839061136a565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b0316331461188c5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7491906146f1565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119a0919081019061476e565b93509350935093509193509193565b6018546001600160a01b031633146119f75760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b03163314611aae5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b0382163014801590611ad55750600e546001600160a01b03838116911614155b8015611aec57506001600160a01b03821661dead14155b611af557600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611b8b57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611b7157600080fd5b505af1925050508015611b82575060015b15610eca575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015611b7157600080fd5b6018546001600160a01b03163314611c315760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff16611cae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ce8565b601854611cc5906001600160a01b03166000611844565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611d5b5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b80611de6576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d4757600080fd5b60025415611e4d576203f48060025442611e009190614685565b11611e4d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ce8565b6001600160a01b03821660009081526001602052604090205460ff1615611eb65760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ce8565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d2d565b6018546000906001600160a01b03163314611f615760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b600d54611f7b9030906001600160a01b031660001961318f565b50600190565b6018546001600160a01b03163314611fc95760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b601754610100900460ff16156120215760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ce8565b60175462010000900460ff166120795760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ce8565b601754630100000090046001600160a01b03166120ac57601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b15801561211f57600080fd5b505af1925050508015612130575060015b50601754600e546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af19250505080156121b4575060408051601f3d908101601f191682019092526121b19181019061481b565b60015b156121c3576013919091556014555b601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561221357600080fd5b505af1925050508015612224575060015b506017805461ffff1916610101179055600a805460ff19169055565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a919061483f565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b1580156122f357600080fd5b505af1158015612307573d6000803e3d6000fd5b50505050565b6018546001600160a01b031633146123555760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6010546001600160a01b03166386d5c4be61237183600a61485c565b61237b908561463f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af193505050508015611b8257505050565b60006123c63384846132b3565b9392505050565b6018546001600160a01b031633146124155760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff161561247e57306001600160a01b0382160361247e5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ce8565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f991906146f1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190614868565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016118e6565b6019546001600160a01b031633146126065760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610ce8565b601a546001600160a01b03168015612664576001600160a01b0381166000908152600860205260408120805460ff19169055612643908290611844565b6001600160a01b0381166000908152600760205260409020805460ff191690555b601a80546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff191660019081179091556126a9908390611844565b506001600160a01b03166000908152600760205260409020805460ff19166001179055565b6018546001600160a01b031633146127165760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b61272181600a61485c565b61272b908361463f565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b031633146127de5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b620b71b081106127ed57600080fd5b601155565b6018546001600160a01b0316331461283a5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff16156128935760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ce8565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061483f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612964573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612988919061483f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156129d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f7919061483f565b90506001600160a01b038116612b7057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a69919061483f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada919061483f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4b919061483f565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612b8c565b600e80546001600160a01b0319166001600160a01b0383161790555b600d80546001600160a01b0319166001600160a01b03848116919091178255600e805482166000908152600160208181526040808420805460ff1990811685179091559454861684526007909152909120805490921617905590546113879130911660001961318f565b6018546001600160a01b03163314612c3e5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b038116612c945760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ce8565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612cfe5760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b60175462010000900460ff1615612d575760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ce8565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612d90573d6000803e3d6000fd5b50565b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612dd957600080fd5b505af1925050508015612dea575060015b15612d905750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a91906146f1565b6018546001600160a01b03163314612ea85760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b8284612eb66012600a614630565b612ec490633b9aca0061463f565b612ece919061463f565b612ed891906146cf565b6013558082612ee96012600a614630565b612ef790633b9aca0061463f565b612f01919061463f565b612f0b91906146cf565b60148190556013541115612f6b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ce8565b600e546001600160a01b031660009081526020819052604090205461271090612f9590609661463f565b612f9f91906146cf565b6014541115612ffc5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ce8565b620f424061300c6012600a614630565b61301a90633b9aca0061463f565b61302491906146cf565b601454101561308c5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce8565b620f424061309c6012600a614630565b6130aa90633b9aca0061463f565b6130b491906146cf565b60135410156123075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce8565b6018546001600160a01b031633146131645760405162461bcd60e51b8152602060048201526011602482015260008051602061490a8339815191526044820152606401610ce8565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b0383166131f15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce8565b6001600160a01b0382166132525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166133195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce8565b6001600160a01b03831661337b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce8565b600082116133dd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ce8565b6001600160a01b0384166000908152600160205260408120548190819060ff161561340b5760019250613439565b6001600160a01b03861660009081526001602052604090205460ff16156134355760019150613439565b5060015b61344387876138f2565b1561354957601754610100900460ff1661354957806134a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ce8565b6001600160a01b03871660009081526004602052604090205460ff161580156134e657506001600160a01b03861660009081526004602052604090205460ff16155b156135495760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ce8565b811561362a5760125460ff1661362a57601254610100900460ff16801561358957506001600160a01b03861660009081526009602052604090205460ff16155b80156135ae57506001600160a01b03871660009081526009602052604090205460ff16155b1561362a573060009081526020819052604090205460135481106136285760145460155460ff161561361257601654600e546001600160a01b0316600090815260208190526040902054612710916136059161463f565b61360f91906146cf565b90505b80821061361d578091505b61362682613a09565b505b505b613638878787868686613643565b979650505050505050565b600061364f87876138f2565b156136ea5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af19250505080156136d3575060408051601f3d908101601f191682019092526136d091810190614868565b60015b6136dc57600080fd5b9050806136e857600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff168061372c57506001600160a01b03871660009081526005602052604090205460ff165b15613735575060005b6001600160a01b0388166000908152602081905260408120805488929061375d908490614685565b9091555086905081156137795761377689888888613d08565b90505b6001600160a01b038816600090815260208190526040812080548392906137a1908490614885565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ed91815260200190565b60405180910390a360175462010000900460ff166138d95761380f8989613e15565b60175462010000900460ff1615801561382d575061382d89896138f2565b801561385257506001600160a01b03891660009081526004602052604090205460ff16155b801561387757506001600160a01b03881660009081526004602052604090205460ff16155b8015613881575083155b156138d95760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ce8565b6138e38989613f76565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061392157506018546001600160a01b03838116911614155b801561393857506018546001600160a01b03163214155b801561395d57506001600160a01b03821660009081526008602052604090205460ff16155b801561398257506001600160a01b03831660009081526008602052604090205460ff16155b801561399957506001600160a01b03821661dead14155b80156139ad57506001600160a01b03821615155b80156139c257506001600160a01b0383163014155b80156139e357506017546001600160a01b0384811663010000009092041614155b80156123c6575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff8082168352620100008204811660208401526401000000009091041691810182905290600003613a565750613cfb565b306000908152600360209081526040808320600d546001600160a01b0316845290915290205460001914613aaf57306000908152600360209081526040808320600d546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ae457613ae4614698565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b61919061483f565b81600181518110613b7457613b74614698565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790613bba908690600090869030904290600401614898565b600060405180830381600087803b158015613bd457600080fd5b505af1925050508015613be5575060015b613bf0575050613cfb565b604082015182514791600091829161ffff90811691613c1091168561463f565b613c1a91906146cf565b90506000613c288285614685565b865190915061ffff1615613c9a57601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c8657600080fd5b505af193505050508015613c98575060015b505b600f546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d8060008114613cec576040519150601f19603f3d011682016040523d82523d6000602084013e613cf1565b606091505b5050505050505050505b506012805460ff19169055565b6000808315613d1e5750600b5461ffff16613d48565b8215613d375750600b5462010000900461ffff16613d48565b50600b54640100000000900461ffff165b601754630100000090046001600160a01b031630148015613d6a575046606114155b15613d7457506111945b80600003613d8557849150506111cf565b6000612710613d94838861463f565b613d9e91906146cf565b90508015613e0b573060009081526020819052604081208054839290613dc5908490614885565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6136388187614685565b60175462010000900460ff1615613e7a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ce8565b613e8482826138f2565b158015613e9e5750600e546001600160a01b038281169116145b15610eca576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff000019166201000017908190556301000000900416613f0257601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613f2557601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16614007576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ff457600080fd5b505af1925050508015614005575060015b505b6001600160a01b03811660009081526007602052604090205460ff16614098576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561408557600080fd5b505af1925050508015614096575060015b505b60175460ff1615610eca5760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611b579160040190815260200190565b8015158114612d9057600080fd5b600080604083850312156140f957600080fd5b8235614104816140d8565b91506020830135614114816140d8565b809150509250929050565b60005b8381101561413a578181015183820152602001614122565b50506000910152565b6000815180845261415b81602086016020860161411f565b601f01601f19169290920160200192915050565b6020815260006123c66020830184614143565b6001600160a01b0381168114612d9057600080fd5b600080604083850312156141aa57600080fd5b82356141b581614182565b946020939093013593505050565b6000602082840312156141d557600080fd5b81356123c681614182565b600080604083850312156141f357600080fd5b82356141fe81614182565b9150602083013561411481614182565b60008060006060848603121561422357600080fd5b833561422e81614182565b9250602084013561423e81614182565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561428e5761428e61424f565b604052919050565b600067ffffffffffffffff8211156142b0576142b061424f565b5060051b60200190565b600082601f8301126142cb57600080fd5b813560206142e06142db83614296565b614265565b82815260059290921b840181019181810190868411156142ff57600080fd5b8286015b8481101561431a5780358352918301918301614303565b509695505050505050565b6000806040838503121561433857600080fd5b823567ffffffffffffffff8082111561435057600080fd5b818501915085601f83011261436457600080fd5b813560206143746142db83614296565b82815260059290921b8401810191818101908984111561439357600080fd5b948201945b838610156143ba5785356143ab81614182565b82529482019490820190614398565b965050860135925050808211156143d057600080fd5b506143dd858286016142ba565b9150509250929050565b600080604083850312156143fa57600080fd5b823561410481614182565b60006020828403121561441757600080fd5b5035919050565b6080815260006144316080830187614143565b82810360208401526144438187614143565b905082810360408401526144578186614143565b905082810360608401526136388185614143565b60008060006060848603121561448057600080fd5b833561448b816140d8565b9250602084013561449b816140d8565b915060408401356144ab816140d8565b809150509250925092565b600080604083850312156144c957600080fd5b50508035926020909101359150565b6000806000606084860312156144ed57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561451a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561458757816000190482111561456d5761456d614536565b8085161561457a57918102915b93841c9390800290614551565b509250929050565b60008261459e57506001610d74565b816145ab57506000610d74565b81600181146145c157600281146145cb576145e7565b6001915050610d74565b60ff8411156145dc576145dc614536565b50506001821b610d74565b5060208310610133831016604e8410600b841016171561460a575081810a610d74565b614614838361454c565b806000190482111561462857614628614536565b029392505050565b60006123c660ff84168361458f565b8082028115828204841417610d7457610d74614536565b6000806040838503121561466957600080fd5b825161467481614182565b602084015190925061411481614182565b81810381811115610d7457610d74614536565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036146c5576146c5614536565b6001019392505050565b6000826146ec57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561470357600080fd5b5051919050565b600082601f83011261471b57600080fd5b815167ffffffffffffffff8111156147355761473561424f565b614748601f8201601f1916602001614265565b81815284602083860101111561475d57600080fd5b6111cf82602083016020870161411f565b6000806000806080858703121561478457600080fd5b845167ffffffffffffffff8082111561479c57600080fd5b6147a88883890161470a565b955060208701519150808211156147be57600080fd5b6147ca8883890161470a565b945060408701519150808211156147e057600080fd5b6147ec8883890161470a565b9350606087015191508082111561480257600080fd5b5061480f8782880161470a565b91505092959194509250565b6000806040838503121561482e57600080fd5b505080516020909101519092909150565b60006020828403121561485157600080fd5b81516123c681614182565b60006123c6838361458f565b60006020828403121561487a57600080fd5b81516123c6816140d8565b80820180821115610d7457610d74614536565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156148e85784516001600160a01b0316835293830193918301916001016148c3565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220d1bf6c2787aba50da9efdad0ac4b8d6c25ecb8002acd3883697486d9774640ae64736f6c63430008130033

Deployed Bytecode Sourcemap

4864:25210:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6353:73;;;;;;;;;;;;6384:42;6353:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6353:73:0;;;;;;;;6737:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6737:28:0;245:177:1;17017:153:0;;;;;;;;;;-1:-1:-1;17017:153:0;;;;;:::i;:::-;;:::i;:::-;;6019:105;;;;;;;;;;-1:-1:-1;6019:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;6019:105:0;931:365:1;12083:80:0;;;;;;;;;;-1:-1:-1;12155:5:0;;;;;;;;;;;;;;;;;12083:80;;;;;;;:::i;6292:26::-;;;;;;;;;;-1:-1:-1;6292:26:0;;;;-1:-1:-1;;;;;6292:26:0;;;12504:161;;;;;;;;;;-1:-1:-1;12504:161:0;;;;;:::i;:::-;;:::i;:::-;;;2949:14:1;;2942:22;2924:41;;2912:2;2897:18;12504:161:0;2784:187:1;16019:140:0;;;;;;;;;;-1:-1:-1;16019:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16117:34:0;16093:4;16117:34;;;:25;:34;;;;;;;;;16019:140;19570:955;;;;;;;;;;-1:-1:-1;19570:955:0;;;;;:::i;:::-;;:::i;11818:83::-;;;;;;;;;;;;;:::i;15040:691::-;;;;;;;;;;-1:-1:-1;15040:691:0;;;;;:::i;:::-;;:::i;13364:306::-;;;;;;;;;;-1:-1:-1;13364:306:0;;;;;:::i;:::-;;:::i;28149:447::-;;;;;;;;;;-1:-1:-1;28149:447:0;;;;;:::i;:::-;;:::i;6845:33::-;;;;;;;;;;;;;;;;6772:25;;;;;;;;;;;;;;;;11907:80;;;;;;;;;;-1:-1:-1;11907:80:0;;5721:2;6711:36:1;;6699:2;6684:18;11907:80:0;6569:184:1;16899:110:0;;;;;;;;;;-1:-1:-1;16899:110:0;;;;;:::i;:::-;;:::i;16307:140::-;;;;;;;;;;-1:-1:-1;16307:140:0;;;;;:::i;:::-;;:::i;11207:221::-;;;;;;;;;;;;;:::i;6325:21::-;;;;;;;;;;-1:-1:-1;6325:21:0;;;;-1:-1:-1;;;;;6325:21:0;;;6930:34;;;;;;;;;;-1:-1:-1;6930:34:0;;;;;;;;;;;17675:189;;;;;;;;;;-1:-1:-1;17675:189:0;;;;;:::i;:::-;;:::i;18579:217::-;;;;;;;;;;-1:-1:-1;18579:217:0;;;;;:::i;:::-;;:::i;9294:759::-;;;;;;;;;;-1:-1:-1;9294:759:0;;;;;:::i;:::-;;:::i;15739:127::-;;;;;;;;;;-1:-1:-1;15739:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15830:28:0;15806:4;15830:28;;;:19;:28;;;;;;;;;15739:127;6971:36;;;;;;;;;;-1:-1:-1;6971:36:0;;;;;;;;;;;10417:23;;;;;;;;;;-1:-1:-1;10417:23:0;;;;-1:-1:-1;;;;;10417:23:0;;;17178:134;;;;;;;;;;-1:-1:-1;17178:134:0;;;;;:::i;:::-;;:::i;16167:132::-;;;;;;;;;;-1:-1:-1;16167:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;16261:30:0;16237:4;16261:30;;;:21;:30;;;;;;;;;16167:132;29671:138;;;;;;;;;;-1:-1:-1;29671:138:0;;;;;:::i;:::-;;:::i;29494:169::-;;;;;;;;;;-1:-1:-1;29494:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;18804:340::-;;;;;;;;;;-1:-1:-1;18804:340:0;;;;;:::i;:::-;;:::i;16455:436::-;;;;;;;;;;-1:-1:-1;16455:436:0;;;;;:::i;:::-;;:::i;12254:103::-;;;;;;;;;;-1:-1:-1;12254:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;12338:16:0;12320:7;12338:16;;;;;;;;;;;;12254:103;10061:310;;;;;;;;;;;;;:::i;6514:92::-;;;;;;;;;;-1:-1:-1;6514:92:0;;;;-1:-1:-1;;;;;6514:92:0;;;14416:616;;;;;;;;;;-1:-1:-1;14416:616:0;;;;;:::i;:::-;;:::i;10379:31::-;;;;;;;;;;-1:-1:-1;10379:31:0;;;;-1:-1:-1;;;;;10379:31:0;;;12169:79;;;;;;;;;;-1:-1:-1;12239:6:0;;-1:-1:-1;;;;;12239:6:0;12169:79;;13023:173;;;;;;;;;;;;;:::i;24894:775::-;;;;;;;;;;;;;:::i;29959:112::-;;;;;;;;;;;;;:::i;29264:98::-;;;;;;;;;;;;;:::i;11993:84::-;;;;;;;;;;-1:-1:-1;12067:7:0;;;;;;;;;;;;-1:-1:-1;;;12067:7:0;;;;11993:84;;28604:158;;;;;;;;;;-1:-1:-1;28604:158:0;;;;;:::i;:::-;;:::i;13204:152::-;;;;;;;;;;-1:-1:-1;13204:152:0;;;;;:::i;:::-;;:::i;28960:296::-;;;;;;;;;;-1:-1:-1;28960:296:0;;;;;:::i;:::-;;:::i;29817:134::-;;;;;;;;;;-1:-1:-1;29817:134:0;;;;;:::i;:::-;;:::i;10602:597::-;;;;;;;;;;-1:-1:-1;10602:597:0;;;;;:::i;:::-;;:::i;19152:273::-;;;;;;;;;;-1:-1:-1;19152:273:0;;;;;:::i;:::-;;:::i;6804:34::-;;;;;;;;;;-1:-1:-1;6804:34:0;;;;;;;;15874:137;;;;;;;;;;-1:-1:-1;15874:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;15970:33:0;15946:4;15970:33;;;:24;:33;;;;;;;;;15874:137;6133:102;;;;;;;;;;-1:-1:-1;6133:102:0;;;;;;;;;;;;;;;;;;;;;;19433:129;;;;;;;;;;-1:-1:-1;19433:129:0;;;;;:::i;:::-;;:::i;12363:133::-;;;;;;;;;;-1:-1:-1;12363:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12465:19:0;;;12447:7;12465:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12363:133;13678:730;;;;;;;;;;-1:-1:-1;13678:730:0;;;;;:::i;:::-;;:::i;17476:191::-;;;;;;;;;;-1:-1:-1;17476:191:0;;;;;:::i;:::-;;:::i;28770:182::-;;;;;;;;;;;;;:::i;6887:34::-;;;;;;;;;;-1:-1:-1;6887:34:0;;;;;;;;27255:111;;;;;;;;;;-1:-1:-1;27255:111:0;;;;;:::i;:::-;;:::i;29370:116::-;;;;;;;;;;;;;:::i;17872:699::-;;;;;;;;;;-1:-1:-1;17872:699:0;;;;;:::i;:::-;;:::i;6691:39::-;;;;;;;;;;-1:-1:-1;6691:39:0;;;;;;;;;;;17320:148;;;;;;;;;;-1:-1:-1;17320:148:0;;;;;:::i;:::-;;:::i;17017:153::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;;;;;;;;;17112:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;17112:50:0;;10566:14:1;;10559:22;17112:50:0::1;::::0;::::1;10541:41:1::0;10625:14;;10618:22;10598:18;;;10591:50;17112:11:0;;;::::1;-1:-1:-1::0;;;;;17112:11:0::1;::::0;:26:::1;::::0;10514:18:1;;17112:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17017:153:::0;;:::o;12504:161::-;12581:4;12598:37;12607:10;12619:7;12628:6;12598:8;:37::i;:::-;-1:-1:-1;12653:4:0;12504:161;;;;;:::o;19570:955::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;19674:23:::1;::::0;::::1;;19666:32;;;::::0;::::1;;-1:-1:-1::0;;;;;19717:23:0;::::1;19735:4;19717:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;19762:24:0;::::1;19781:4;19762:24;;19717:69;:107;;;;-1:-1:-1::0;19808:6:0::1;::::0;-1:-1:-1;;;;;19808:16:0;;::::1;:6:::0;::::1;:16;;19717:107;:146;;;;-1:-1:-1::0;19846:6:0::1;::::0;-1:-1:-1;;;;;19846:17:0;;::::1;:6:::0;::::1;:17;;19717:146;19709:170;;;::::0;-1:-1:-1;;;19709:170:0;;10854:2:1;19709:170:0::1;::::0;::::1;10836:21:1::0;10893:2;10873:18;;;10866:30;-1:-1:-1;;;10912:18:1;;;10905:41;10963:18;;19709:170:0::1;10652:335:1::0;19709:170:0::1;19904:7;-1:-1:-1::0;;;;;19894:17:0::1;:6;-1:-1:-1::0;;;;;19894:17:0::1;::::0;19890:628:::1;;-1:-1:-1::0;;;;;19928:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;19957:4:::1;-1:-1:-1::0;;19928:33:0;;::::1;::::0;::::1;::::0;;;19976:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;20023:34:::1;::::0;19928:26;;20023:19:::1;:34::i;:::-;20072;20092:7;20101:4;20072:19;:34::i;:::-;19570:955:::0;;:::o;19890:628::-:1;-1:-1:-1::0;;;;;20139:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;20167:4:::1;-1:-1:-1::0;;20139:32:0;;::::1;::::0;::::1;::::0;;;20186:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;20234:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;20280:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;20327:33:::1;::::0;20139:25;;20327:19:::1;:33::i;:::-;20375:34;20395:7;20404:4;20375:19;:34::i;:::-;20424:33;20444:6;20452:4;20424:19;:33::i;11818:83::-:0;11873:7;5783:15;5721:2;5783;:15;:::i;:::-;5765:34;;5562:13;5765:34;:::i;:::-;11884:14;;11818:83;:::o;15040:691::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;15132:14:::1;::::0;::::1;::::0;::::1;;;15131:15;15123:24;;;::::0;::::1;;-1:-1:-1::0;;;;;15166:22:0;::::1;15183:4;15166:22;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;15192:22:0;::::1;15209:4;15192:22;;15166:48;:66;;;;;15227:5;-1:-1:-1::0;;;;;15218:14:0::1;:5;-1:-1:-1::0;;;;;15218:14:0::1;;;15166:66;15158:75;;;::::0;::::1;;15244:7;:24:::0;;-1:-1:-1;;;;;;15244:24:0::1;-1:-1:-1::0;;;;;15244:24:0;;::::1;::::0;;;::::1;::::0;;;15279:11:::1;:32:::0;;-1:-1:-1;;;;;;15279:32:0::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;15326:23:::1;::::0;;-1:-1:-1;;;15326:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;-1:-1:-1;15326:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;15326:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;15326:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;15322:402;;15713:8;::::0;::::1;15322:402;15413:9;:29:::0;;-1:-1:-1;;;;;15413:29:0;;::::1;-1:-1:-1::0;;;;;;15413:29:0;;::::1;;::::0;;15444:6:::1;:22:::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;15413:9:::1;15468:15:::0;;;15413:29;15468:15:::1;::::0;;;;;;;:22;;-1:-1:-1;;15468:22:0::1;::::0;;::::1;::::0;;;15515:6:::1;::::0;15531:9;;15506:55:::1;::::0;15515:6;::::1;::::0;15531:9:::1;-1:-1:-1::0;;15506:8:0::1;:55::i;:::-;15608:9;::::0;15576:62:::1;::::0;15593:4:::1;::::0;-1:-1:-1;;;;;15608:9:0::1;-1:-1:-1::0;;15576:8:0::1;:62::i;:::-;-1:-1:-1::0;;15678:6:0::1;::::0;-1:-1:-1;;;;;15678:6:0::1;15653:32;::::0;;;:24:::1;:32;::::0;;;;:39;;-1:-1:-1;;15653:39:0::1;15688:4;15653:39;::::0;;15040:691;;:::o;13364:306::-;-1:-1:-1;;;;;13485:19:0;;13464:4;13485:19;;;:11;:19;;;;;;;;13505:10;13485:31;;;;;;;;-1:-1:-1;;13485:52:0;13481:126;;-1:-1:-1;;;;;13554:19:0;;;;;;:11;:19;;;;;;;;13574:10;13554:31;;;;;;;:41;;13589:6;;13554:19;:41;;13589:6;;13554:41;:::i;:::-;;;;-1:-1:-1;;13481:126:0;13626:36;13636:6;13644:9;13655:6;13626:9;:36::i;:::-;13619:43;13364:306;-1:-1:-1;;;;13364:306:0:o;28149:447::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;28284:7:::1;:14;28265:8;:15;:33;28257:67;;;::::0;-1:-1:-1;;;28257:67:0;;13405:2:1;28257:67:0::1;::::0;::::1;13387:21:1::0;13444:2;13424:18;;;13417:30;13483:23;13463:18;;;13456:51;13524:18;;28257:67:0::1;13203:345:1::0;28257:67:0::1;28340:8;28335:254;28358:8;:15;28354:1;:19;;;28335:254;;;28439:13;5721:2;28439;:13;:::i;:::-;28428:7;28436:1;28428:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28413:10;12320:7:::0;12338:16;;;;;;;;;;;28403:49:::1;;28395:80;;;::::0;-1:-1:-1;;;28395:80:0;;13887:2:1;28395:80:0::1;::::0;::::1;13869:21:1::0;13926:2;13906:18;;;13899:30;13965:20;13945:18;;;13938:48;14003:18;;28395:80:0::1;13685:342:1::0;28395:80:0::1;28490:87;28507:10;28519:8;28528:1;28519:11;;;;;;;;;;:::i;:::-;;;;;;;5721:2;28543;:13;;;;:::i;:::-;28532:7;28540:1;28532:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28558:5;28565::::0;28572:4:::1;28490:16;:87::i;:::-;-1:-1:-1::0;28375:3:0;::::1;::::0;::::1;:::i;:::-;;;;28335:254;;;;28149:447:::0;;:::o;16899:110::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;16968:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16968:33:0;;-1:-1:-1;;;;;178:55:1;;;16968:33:0::1;::::0;::::1;160:74:1::0;16968:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16968:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16899:110:::0;:::o;16307:140::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;16399:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16399:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16307:140::o;11207:221::-;11285:16;;-1:-1:-1;;;;;11285:16:0;11271:10;:30;11263:83;;;;-1:-1:-1;;;11263:83:0;;14436:2:1;11263:83:0;;;14418:21:1;14475:2;14455:18;;;14448:30;14514:34;14494:18;;;14487:62;-1:-1:-1;;;14565:18:1;;;14558:38;14613:19;;11263:83:0;14234:404:1;11263:83:0;11357:23;11377:1;11357:11;:23::i;:::-;11391:16;:29;;-1:-1:-1;;;;;;11391:29:0;;;11207:221::o;17675:189::-;17804:6;;-1:-1:-1;;;;;17804:6:0;17766:7;12338:16;;;;;;;;;;;6278:5;;17794:41;;17814:21;;17794:41;:::i;:::-;17793:62;;;;:::i;18579:217::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;18709:3:::1;18683:22;:29;;18675:64;;;::::0;-1:-1:-1;;;18675:64:0;;15067:2:1;18675:64:0::1;::::0;::::1;15049:21:1::0;15106:2;15086:18;;;15079:30;15145:24;15125:18;;;15118:52;15187:18;;18675:64:0::1;14865:346:1::0;18675:64:0::1;18750:13;:38:::0;18579:217::o;9294:759::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;9373:22:0;::::1;9365:96;;;::::0;-1:-1:-1;;;9365:96:0;;15418:2:1;9365:96:0::1;::::0;::::1;15400:21:1::0;15457:2;15437:18;;;15430:30;15496:34;15476:18;;;15469:62;15567:31;15547:18;;;15540:59;15616:19;;9365:96:0::1;15216:425:1::0;9365:96:0::1;-1:-1:-1::0;;;;;;;9480:16:0;::::1;::::0;9472:90:::1;;;::::0;-1:-1:-1;;;9472:90:0;;15418:2:1;9472:90:0::1;::::0;::::1;15400:21:1::0;15457:2;15437:18;;;15430:30;15496:34;15476:18;;;15469:62;15567:31;15547:18;;;15540:59;15616:19;;9472:90:0::1;15216:425:1::0;9472:90:0::1;9593:6;::::0;;-1:-1:-1;;;;;9593:6:0;;::::1;9603:5;9573:27:::0;;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;9573:35:0;;::::1;::::0;;;9644:6;;;::::1;9619:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;9670:29;;::::1;::::0;;;;;;;;:36;;;::::1;-1:-1:-1::0;9670:36:0;;::::1;::::0;;;9717:34;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;9793:6;;;;::::1;12338:16:::0;;;;;;;;;9783:21;9779:127:::1;;9838:6;::::0;-1:-1:-1;;;;;9838:6:0::1;12320:7:::0;12338:16;;;;;;;;;;;9821:73:::1;::::0;9838:6;9846:8;;9856:17:::1;12254:103:::0;9821:73:::1;;9779:127;9945:6;::::0;;-1:-1:-1;;;;;9962:17:0;;::::1;-1:-1:-1::0;;;;;;9962:17:0;::::1;::::0;::::1;::::0;;;9995:40:::1;::::0;9945:6;::::1;::::0;9962:17;9945:6;;9995:40:::1;::::0;9926:16:::1;::::0;9995:40:::1;9354:699;9294:759:::0;:::o;17178:134::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;17266:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;17266:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17178:134::o;29671:138::-;29765:7;;:36;;-1:-1:-1;;;29765:36:0;;-1:-1:-1;;;;;178:55:1;;;29765:36:0;;;160:74:1;29738:7:0;;29765;;:30;;133:18:1;;29765:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29494:169::-;29630:7;;:25;;-1:-1:-1;;;29630:25:0;;-1:-1:-1;;;;;178:55:1;;;29630:25:0;;;160:74:1;29552:13:0;;;;;;;;29630:7;;:19;;133:18:1;;29630:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29630:25:0;;;;;;;;;;;;:::i;:::-;29623:32;;;;;;;;29494:169;;;;;:::o;18804:340::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;18941:19:::1;:33:::0;;-1:-1:-1;;18941:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18985:14:::1;:38:::0;;-1:-1:-1;;18985:38:0;;::::1;::::0;::::1;;;::::0;;;19034:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;19097:39:::1;::::0;2924:41:1;;;19097:39:0::1;::::0;2912:2:1;2897:18;19097:39:0::1;;;;;;;18804:340:::0;;;:::o;16455:436::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;16551:24:0;::::1;16570:4;16551:24;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;16608:6:0::1;::::0;-1:-1:-1;;;;;16597:17:0;;::::1;16608:6:::0;::::1;16597:17;;16551:63;:99;;;;-1:-1:-1::0;;;;;;16635:15:0;::::1;6384:42;16635:15;;16551:99;16543:108;;;::::0;::::1;;-1:-1:-1::0;;;;;16662:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;16662:43:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16716:168:::1;;16748:7;::::0;:25:::1;::::0;-1:-1:-1;;;16748:25:0;;-1:-1:-1;;;;;17526:55:1;;;16748:25:0::1;::::0;::::1;17508:74:1::0;16748:7:0::1;17598:18:1::0;;;17591:34;16748:7:0;;::::1;::::0;:13:::1;::::0;17481:18:1;;16748:25:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;16744:41:::0;16716:168:::1;16744:41;19570:955:::0;;:::o;16716:168::-:1;16821:7;::::0;-1:-1:-1;;;;;16844:16:0;;::::1;16821:7;16844:16:::0;;;::::1;::::0;;;;;;;;;16821:40;;-1:-1:-1;;;16821:40:0;;::::1;::::0;::::1;17508:74:1::0;;;;17598:18;;;17591:34;16821:7:0;::::1;::::0;:13:::1;::::0;17481:18:1;;16821:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;10061:310:::0;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;10128:14:::1;::::0;::::1;::::0;::::1;;;10120:74;;;::::0;-1:-1:-1;;;10120:74:0;;18140:2:1;10120:74:0::1;::::0;::::1;18122:21:1::0;18179:2;18159:18;;;18152:30;18218:34;18198:18;;;18191:62;18289:17;18269:18;;;18262:45;18324:19;;10120:74:0::1;17938:411:1::0;10120:74:0::1;10225:6;::::0;10205:34:::1;::::0;-1:-1:-1;;;;;10225:6:0::1;;10205:19;:34::i;:::-;10269:6;::::0;;-1:-1:-1;;;;;;10286:19:0;::::1;::::0;;;10321:42:::1;::::0;-1:-1:-1;;;;;10269:6:0;;::::1;::::0;10250:16:::1;::::0;10269:6;;10321:42:::1;::::0;10250:16;;10321:42:::1;10109:262;10061:310::o:0;14416:616::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;14498:7:::1;14493:532;;-1:-1:-1::0;;;;;14522:13:0;;::::1;14538:5;14522:13:::0;;;:7:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;14522:21:0;;::::1;::::0;;;14558:24:::1;:30:::0;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;14610:11:::1;::::0;:34;;-1:-1:-1;;;14610:34:0;;::::1;::::0;::::1;18522:74:1::0;;;;18612:18;;;18605:50;;;;14610:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18495:18:1;;14610:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;14493:532;14681:17;::::0;:22;14677:135:::1;;14770:6;14750:17;;14732:15;:35;;;;:::i;:::-;:44;14724:72;;;::::0;-1:-1:-1;;;14724:72:0;;18868:2:1;14724:72:0::1;::::0;::::1;18850:21:1::0;18907:2;18887:18;;;18880:30;18946:17;18926:18;;;18919:45;18981:18;;14724:72:0::1;18666:339:1::0;14724:72:0::1;-1:-1:-1::0;;;;;14835:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14834:14;14826:54;;;::::0;-1:-1:-1;;;14826:54:0;;19212:2:1;14826:54:0::1;::::0;::::1;19194:21:1::0;19251:2;19231:18;;;19224:30;19290:29;19270:18;;;19263:57;19337:18;;14826:54:0::1;19010:351:1::0;14826:54:0::1;-1:-1:-1::0;;;;;14895:13:0;;::::1;;::::0;;;14911:4:::1;14895:13;::::0;;;;;;;;:20;;-1:-1:-1;;14895:20:0::1;::::0;::::1;::::0;;14950:15:::1;14930:17;:35:::0;14980:11:::1;::::0;:33;;-1:-1:-1;;;14980:33:0;;::::1;::::0;::::1;18522:74:1::0;;;;18612:18;;;18605:50;14980:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18495:18:1;;14980:33:0::1;18354:307:1::0;13023:173:0;9148:6;;13087:4;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;13136:9:::1;::::0;13104:62:::1;::::0;13121:4:::1;::::0;-1:-1:-1;;;;;13136:9:0::1;-1:-1:-1::0;;13104:8:0::1;:62::i;:::-;-1:-1:-1::0;13184:4:0::1;13023:173:::0;:::o;24894:775::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;24956:14:::1;::::0;::::1;::::0;::::1;;;24955:15;24947:52;;;::::0;-1:-1:-1;;;24947:52:0;;19568:2:1;24947:52:0::1;::::0;::::1;19550:21:1::0;19607:2;19587:18;;;19580:30;19646:26;19626:18;;;19619:54;19690:18;;24947:52:0::1;19366:348:1::0;24947:52:0::1;25018:16;::::0;;;::::1;;;25010:53;;;::::0;-1:-1:-1;;;25010:53:0;;19921:2:1;25010:53:0::1;::::0;::::1;19903:21:1::0;19960:2;19940:18;;;19933:30;19999:26;19979:18;;;19972:54;20043:18;;25010:53:0::1;19719:348:1::0;25010:53:0::1;25086:11;::::0;;;::::1;-1:-1:-1::0;;;;;25086:11:0::1;25074:106;;25128:11;:40:::0;;-1:-1:-1;;;;;;25128:40:0::1;25162:4;25128:40:::0;::::1;;::::0;;25074:106:::1;25194:11;::::0;25216:6:::1;::::0;25194:87:::1;::::0;-1:-1:-1;;;25194:87:0;;-1:-1:-1;;;;;25216:6:0;;::::1;25194:87;::::0;::::1;20295:74:1::0;20417:10;25231:12:0::1;20405:23:1::0;20385:18;;;20378:51;20477:18;25253:15:0::1;20465:31:1::0;20445:18;;;20438:59;5721:2:0::1;20513:18:1::0;;;20506:45;25194:11:0;;;::::1;;::::0;:21:::1;::::0;20267:19:1;;25194:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;25307:11:0::1;::::0;25338:6:::1;::::0;-1:-1:-1;;;;;25338:6:0;;::::1;12320:7:::0;12338:16;;;;;;;;;;;;;25307:39;;-1:-1:-1;;;25307:39:0;;::::1;::::0;::::1;391:25:1::0;;;;25307:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;25307:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;25307:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25307:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25303:207:::0;::::1;;25418:13;:29:::0;;;;25462:10:::1;:27:::0;25303:207:::1;25524:7;;;;;;;;;-1:-1:-1::0;;;;;25524:7:0::1;-1:-1:-1::0;;;;;25524:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25520:36:::0;25566:14:::1;:21:::0;;-1:-1:-1;;25598:21:0;;;;;25630:23:::1;:31:::0;;-1:-1:-1;;25630:31:0::1;::::0;;24894:775::o;29959:112::-;30037:7;;:26;;;-1:-1:-1;;;30037:26:0;;;;30010:7;;-1:-1:-1;;;;;30037:7:0;;:24;;:26;;;;;;;;;;;;;;:7;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29264:98::-;29315:7;;:39;;-1:-1:-1;;;29315:39:0;;29343:10;29315:39;;;160:74:1;-1:-1:-1;;;;;29315:7:0;;;;:27;;133:18:1;;29315:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29264:98::o;28604:158::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;28697:7:::1;::::0;-1:-1:-1;;;;;28697:7:0::1;:12;28726:14;28730:10:::0;28726:2:::1;:14;:::i;:::-;28717:23;::::0;:6;:23:::1;:::i;:::-;28697:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;28604:158:0;;:::o;13204:152::-;13284:4;13308:40;13318:10;13330:9;13341:6;13308:9;:40::i;:::-;13301:47;13204:152;-1:-1:-1;;;13204:152:0:o;28960:296::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;29038:16:::1;::::0;;;::::1;;;29034:111;;;29096:4;-1:-1:-1::0;;;;;29079:22:0;::::1;::::0;29071:62:::1;;;::::0;-1:-1:-1;;;29071:62:0;;21406:2:1;29071:62:0::1;::::0;::::1;21388:21:1::0;21445:2;21425:18;;;21418:30;21484:29;21464:18;;;21457:57;21531:18;;29071:62:0::1;21204:351:1::0;29071:62:0::1;29209:6;::::0;29217:30:::1;::::0;-1:-1:-1;;;29217:30:0;;29241:4:::1;29217:30;::::0;::::1;160:74:1::0;29177:5:0;;-1:-1:-1;;;;;29194:14:0;;::::1;::::0;::::1;::::0;29209:6;;;::::1;::::0;29194:14;;29217:15:::1;::::0;133:18:1;;29217:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29194:54;::::0;-1:-1:-1;;;;;;29194:54:0::1;::::0;;;;;;-1:-1:-1;;;;;17526:55:1;;;29194:54:0::1;::::0;::::1;17508:74:1::0;17598:18;;;17591:34;17481:18;;29194:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29817:134::-:0;29912:7;;:31;;-1:-1:-1;;;29912:31:0;;-1:-1:-1;;;;;178:55:1;;;29912:31:0;;;160:74:1;29885:7:0;;29912;;:25;;133:18:1;;29912:31:0;14:226:1;10602:597:0;10684:16;;-1:-1:-1;;;;;10684:16:0;10670:10;:30;10662:83;;;;-1:-1:-1;;;10662:83:0;;14436:2:1;10662:83:0;;;14418:21:1;14475:2;14455:18;;;14448:30;14514:34;14494:18;;;14487:62;-1:-1:-1;;;14565:18:1;;;14558:38;14613:19;;10662:83:0;14234:404:1;10662:83:0;10778:8;;-1:-1:-1;;;;;10778:8:0;10801:25;;10797:210;;-1:-1:-1;;;;;10843:30:0;;10876:5;10843:30;;;:17;:30;;;;;:38;;-1:-1:-1;;10843:38:0;;;10896:39;;10861:11;;10896:19;:39::i;:::-;-1:-1:-1;;;;;10950:37:0;;10990:5;10950:37;;;:24;:37;;;;;:45;;-1:-1:-1;;10950:45:0;;;10797:210;11017:8;:22;;-1:-1:-1;;;;;;11017:22:0;-1:-1:-1;;;;;11017:22:0;;;;;;;;-1:-1:-1;11050:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;11050:37:0;-1:-1:-1;11050:37:0;;;;;;11098:38;;11017:22;;11098:19;:38::i;:::-;-1:-1:-1;;;;;;11147:37:0;;;;;:24;:37;;;;;:44;;-1:-1:-1;;11147:44:0;11187:4;11147:44;;;10602:597::o;19152:273::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;19323:27:::1;19327:23:::0;19323:2:::1;:27;:::i;:::-;19306:44;::::0;:14;:44:::1;:::i;:::-;19361:7;::::0;:56:::1;::::0;-1:-1:-1;;;19361:56:0;;::::1;::::0;::::1;21984:25:1::0;;;22025:18;;;22018:34;;;19289:61:0;;-1:-1:-1;;;;;;19361:7:0::1;::::0;:28:::1;::::0;21957:18:1;;19361:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19152:273:::0;;;:::o;19433:129::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;19520:6:::1;19514:3;:12;19506:21;;;::::0;::::1;;19538:10;:16:::0;19433:129::o;13678:730::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;13758:16:::1;::::0;;;::::1;;;13757:17;13749:60;;;::::0;-1:-1:-1;;;13749:60:0;;22265:2:1;13749:60:0::1;::::0;::::1;22247:21:1::0;22304:2;22284:18;;;22277:30;22343:32;22323:18;;;22316:60;22393:18;;13749:60:0::1;22063:354:1::0;13749:60:0::1;13882:6;::::0;-1:-1:-1;;;;;13882:6:0;;::::1;13820:20;13874:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;13874:23:0::1;::::0;;13938:20;;-1:-1:-1;;;13938:20:0;;;;13853:9;;13938:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13927:40:0::1;;13976:4;13983:10;-1:-1:-1::0;;;;;13983:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13927:74;::::0;-1:-1:-1;;;;;;13927:74:0::1;::::0;;;;;;-1:-1:-1;;;;;22675:15:1;;;13927:74:0::1;::::0;::::1;22657:34:1::0;22727:15;;22707:18;;;22700:43;22569:18;;13927:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13908:93:::0;-1:-1:-1;;;;;;14016:22:0;::::1;14012:200;;14075:10;-1:-1:-1::0;;;;;14075:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14064:43:0::1;;14116:4;14123:10;-1:-1:-1::0;;;;;14123:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14064:77;::::0;-1:-1:-1;;;;;;14064:77:0::1;::::0;;;;;;-1:-1:-1;;;;;22675:15:1;;;14064:77:0::1;::::0;::::1;22657:34:1::0;22727:15;;22707:18;;;22700:43;22569:18;;14064:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14055:6;:86:::0;;-1:-1:-1;;;;;;14055:86:0::1;-1:-1:-1::0;;;;;14055:86:0;;;::::1;::::0;;;::::1;::::0;;14012:200:::1;;;14183:6;:17:::0;;-1:-1:-1;;;;;;14183:17:0::1;-1:-1:-1::0;;;;;14183:17:0;::::1;;::::0;;14012:200:::1;14222:9;:22:::0;;-1:-1:-1;;;;;;14222:22:0::1;-1:-1:-1::0;;;;;14222:22:0;;::::1;::::0;;;::::1;::::0;;14263:6:::1;::::0;;;::::1;-1:-1:-1::0;14255:15:0;;;-1:-1:-1;14255:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14255:22:0;;::::1;::::0;::::1;::::0;;;14313:6;;;::::1;14288:32:::0;;:24:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;14370:9;;14338:62:::1;::::0;14355:4:::1;::::0;14370:9:::1;-1:-1:-1::0;;14338:8:0::1;:62::i;17476:191::-:0;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;17561:23:0;::::1;17553:59;;;::::0;-1:-1:-1;;;17553:59:0;;22956:2:1;17553:59:0::1;::::0;::::1;22938:21:1::0;22995:2;22975:18;;;22968:30;23034:25;23014:18;;;23007:53;23077:18;;17553:59:0::1;22754:347:1::0;17553:59:0::1;17623:15;:36:::0;;-1:-1:-1;;;;;;17623:36:0::1;-1:-1:-1::0;;;;;17623:36:0;;;::::1;::::0;;;::::1;::::0;;17476:191::o;28770:182::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;28837:16:::1;::::0;;;::::1;;;28836:17;28828:58;;;::::0;-1:-1:-1;;;28828:58:0;;23308:2:1;28828:58:0::1;::::0;::::1;23290:21:1::0;23347:2;23327:18;;;23320:30;23386;23366:18;;;23359:58;23434:18;;28828:58:0::1;23106:352:1::0;28828:58:0::1;28905:6;::::0;28897:47:::1;::::0;-1:-1:-1;;;;;28905:6:0;;::::1;::::0;28922:21:::1;28897:47:::0;::::1;;;::::0;28905:6:::1;28897:47:::0;28905:6;28897:47;28922:21;28905:6;28897:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28770:182::o:0;27255:111::-;27321:7;;:26;;-1:-1:-1;;;27321:26:0;;;;;391:25:1;;;-1:-1:-1;;;;;27321:7:0;;;;:15;;364:18:1;;27321:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27317:42;;;27255:111;:::o;29370:116::-;29449:7;;:29;;;-1:-1:-1;;;29449:29:0;;;;29422:7;;-1:-1:-1;;;;;29449:7:0;;:27;;:29;;;;;;;;;;;;;;:7;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17872:699::-;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;18072:16;18052;5783:15:::1;5721:2;5783;:15;:::i;:::-;5765:34;::::0;5562:13:::1;5765:34;:::i;:::-;18042:26;;;;:::i;:::-;18041:47;;;;:::i;:::-;18025:13;:63:::0;18140:13;18123;5783:15:::1;5721:2;5783;:15;:::i;:::-;5765:34;::::0;5562:13:::1;5765:34;:::i;:::-;18113:23;;;;:::i;:::-;18112:41;;;;:::i;:::-;18099:10;:54:::0;;;18172:13:::1;::::0;:27:::1;;18164:73;;;::::0;-1:-1:-1;;;18164:73:0;;23665:2:1;18164:73:0::1;::::0;::::1;23647:21:1::0;23704:2;23684:18;;;23677:30;23743:34;23723:18;;;23716:62;-1:-1:-1;;;23794:18:1;;;23787:31;23835:19;;18164:73:0::1;23463:397:1::0;18164:73:0::1;18281:6;::::0;-1:-1:-1;;;;;18281:6:0::1;12320:7:::0;12338:16;;;;;;;;;;;6278:5:::1;::::0;18271:23:::1;::::0;18291:3:::1;18271:23;:::i;:::-;18270:44;;;;:::i;:::-;18256:10;;:58;;18248:106;;;::::0;-1:-1:-1;;;18248:106:0;;24067:2:1;18248:106:0::1;::::0;::::1;24049:21:1::0;24106:2;24086:18;;;24079:30;24145:34;24125:18;;;24118:62;-1:-1:-1;;;24196:18:1;;;24189:33;24239:19;;18248:106:0::1;23865:399:1::0;18248:106:0::1;18397:9;5783:15;5721:2;5783;:15;:::i;:::-;5765:34;::::0;5562:13:::1;5765:34;:::i;:::-;18387:19;;;;:::i;:::-;18373:10;;:33;;18365:92;;;::::0;-1:-1:-1;;;18365:92:0;;24471:2:1;18365:92:0::1;::::0;::::1;24453:21:1::0;24510:2;24490:18;;;24483:30;24549:34;24529:18;;;24522:62;-1:-1:-1;;;24600:18:1;;;24593:44;24654:19;;18365:92:0::1;24269:410:1::0;18365:92:0::1;18503:9;5783:15;5721:2;5783;:15;:::i;:::-;5765:34;::::0;5562:13:::1;5765:34;:::i;:::-;18493:19;;;;:::i;:::-;18476:13;;:36;;18468:95;;;::::0;-1:-1:-1;;;18468:95:0;;24471:2:1;18468:95:0::1;::::0;::::1;24453:21:1::0;24510:2;24490:18;;;24483:30;24549:34;24529:18;;;24522:62;-1:-1:-1;;;24600:18:1;;;24593:44;24654:19;;18468:95:0::1;24269:410:1::0;17320:148:0;9148:6;;-1:-1:-1;;;;;9148:6:0;9158:10;9148:20;9140:50;;;;-1:-1:-1;;;9140:50:0;;10235:2:1;9140:50:0;;;10217:21:1;10274:2;10254:18;;;10247:30;-1:-1:-1;;;;;;;;;;;10293:18:1;;;10286:47;10350:18;;9140:50:0;10033:341:1;9140:50:0;-1:-1:-1;;;;;17416:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;17416:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17320:148::o;12673:342::-;-1:-1:-1;;;;;12768:20:0;;12760:69;;;;-1:-1:-1;;;12760:69:0;;24886:2:1;12760:69:0;;;24868:21:1;24925:2;24905:18;;;24898:30;24964:34;24944:18;;;24937:62;-1:-1:-1;;;25015:18:1;;;25008:34;25059:19;;12760:69:0;24684:400:1;12760:69:0;-1:-1:-1;;;;;12848:21:0;;12840:68;;;;-1:-1:-1;;;12840:68:0;;25291:2:1;12840:68:0;;;25273:21:1;25330:2;25310:18;;;25303:30;25369:34;25349:18;;;25342:62;-1:-1:-1;;;25420:18:1;;;25413:32;25462:19;;12840:68:0;25089:398:1;12840:68:0;-1:-1:-1;;;;;12921:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12974:33;;391:25:1;;;12974:33:0;;364:18:1;12974:33:0;;;;;;;12673:342;;;:::o;21223:1784::-;21302:4;-1:-1:-1;;;;;21327:18:0;;21319:68;;;;-1:-1:-1;;;21319:68:0;;25694:2:1;21319:68:0;;;25676:21:1;25733:2;25713:18;;;25706:30;25772:34;25752:18;;;25745:62;-1:-1:-1;;;25823:18:1;;;25816:35;25868:19;;21319:68:0;25492:401:1;21319:68:0;-1:-1:-1;;;;;21406:16:0;;21398:64;;;;-1:-1:-1;;;21398:64:0;;26100:2:1;21398:64:0;;;26082:21:1;26139:2;26119:18;;;26112:30;26178:34;26158:18;;;26151:62;-1:-1:-1;;;26229:18:1;;;26222:33;26272:19;;21398:64:0;25898:399:1;21398:64:0;21490:1;21481:6;:10;21473:64;;;;-1:-1:-1;;;21473:64:0;;26504:2:1;21473:64:0;;;26486:21:1;26543:2;26523:18;;;26516:30;26582:34;26562:18;;;26555:62;-1:-1:-1;;;26633:18:1;;;26626:39;26682:19;;21473:64:0;26302:405:1;21473:64:0;-1:-1:-1;;;;;21636:13:0;;21548:8;21636:13;;;:7;:13;;;;;;21548:8;;;;21636:13;;21632:162;;;21672:4;21666:10;;21632:162;;;-1:-1:-1;;;;;21698:11:0;;;;;;:7;:11;;;;;;;;21694:100;;;21733:4;21726:11;;21694:100;;;-1:-1:-1;21778:4:0;21694:100;21808:20;21819:4;21825:2;21808:10;:20::i;:::-;21804:371;;;21849:14;;;;;;;21845:319;;21889:5;21884:265;;21919:34;;-1:-1:-1;;;21919:34:0;;26914:2:1;21919:34:0;;;26896:21:1;26953:2;26933:18;;;26926:30;26992:26;26972:18;;;26965:54;27036:18;;21919:34:0;26712:348:1;21884:265:0;-1:-1:-1;;;;;21984:31:0;;;;;;:25;:31;;;;;;;;21983:32;:66;;;;-1:-1:-1;;;;;;22020:29:0;;;;;;:25;:29;;;;;;;;22019:30;21983:66;21979:170;;;22074:55;;-1:-1:-1;;;22074:55:0;;27267:2:1;22074:55:0;;;27249:21:1;27306:2;27286:18;;;27279:30;27345:34;27325:18;;;27318:62;-1:-1:-1;;;27396:18:1;;;27389:43;27449:19;;22074:55:0;27065:409:1;21979:170:0;22191:4;22187:742;;;22217:6;;;;22212:706;;22248:19;;;;;;;:64;;;;-1:-1:-1;;;;;;22292:20:0;;;;;;:16;:20;;;;;;;;22291:21;22248:64;:111;;;;-1:-1:-1;;;;;;22337:22:0;;;;;;:16;:22;;;;;;;;22336:23;22248:111;22244:659;;;22451:4;22402:28;12338:16;;;;;;;;;;;22508:13;;22484:37;;22480:404;;22568:10;;22609:22;;;;22605:97;;;22666:13;;22656:6;;-1:-1:-1;;;;;22656:6:0;12320:7;12338:16;;;;;;;;;;;6278:5;;22646:33;;;:::i;:::-;22645:54;;;;:::i;:::-;22635:64;;22605:97;22756:7;22732:20;:31;22728:72;;22790:7;22767:30;;22728:72;22826:34;22839:20;22826:12;:34::i;:::-;22523:361;22480:404;22379:524;22244:659;22947:52;22964:4;22970:2;22974:6;22982:3;22987:4;22993:5;22947:16;:52::i;:::-;22940:59;21223:1784;-1:-1:-1;;;;;;;21223:1784:0:o;25677:1156::-;25796:4;25817:20;25828:4;25834:2;25817:10;:20::i;:::-;25813:228;;;25872:11;;:39;;-1:-1:-1;;;25872:39:0;;-1:-1:-1;;;;;27760:15:1;;;25872:39:0;;;27742:34:1;27812:15;;;27792:18;;;27785:43;27844:18;;;27837:34;;;25841:12:0;;25872:11;;;;;:21;;27654:18:1;;25872:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25872:39:0;;;;;;;;-1:-1:-1;;25872:39:0;;;;;;;;;;;;:::i;:::-;;;25868:122;;25979:8;;;25868:122;25962:5;-1:-1:-1;26008:7:0;26004:26;;26019:8;;;26004:26;25839:202;25813:228;-1:-1:-1;;;;;26087:25:0;;26053:12;26087:25;;;:19;:25;;;;;;26068:4;;26087:25;;;:52;;-1:-1:-1;;;;;;26116:23:0;;;;;;:19;:23;;;;;;;;26087:52;26083:99;;;-1:-1:-1;26165:5:0;26083:99;-1:-1:-1;;;;;26194:13:0;;:7;:13;;;;;;;;;;:23;;26211:6;;26194:7;:23;;26211:6;;26194:23;:::i;:::-;;;;-1:-1:-1;26253:6:0;;-1:-1:-1;26270:91:0;;;;26315:34;26325:4;26331:6;26339:3;26344:4;26315:9;:34::i;:::-;26298:51;;26270:91;-1:-1:-1;;;;;26371:11:0;;:7;:11;;;;;;;;;;:29;;26386:14;;26371:7;:29;;26386:14;;26371:29;:::i;:::-;;;;;;;;26431:2;-1:-1:-1;;;;;26416:34:0;26425:4;-1:-1:-1;;;;;26416:34:0;;26435:14;26416:34;;;;391:25:1;;379:2;364:18;;245:177;26416:34:0;;;;;;;;26466:16;;;;;;;26461:298;;26499:28;26518:4;26524:2;26499:18;:28::i;:::-;26547:16;;;;;;;26546:17;:41;;;;;26567:20;26578:4;26584:2;26567:10;:20::i;:::-;26546:77;;;;-1:-1:-1;;;;;;26592:31:0;;;;;;:25;:31;;;;;;;;26591:32;26546:77;:111;;;;-1:-1:-1;;;;;;26628:29:0;;;;;;:25;:29;;;;;;;;26627:30;26546:111;:121;;;;;26662:5;26661:6;26546:121;26542:206;;;26688:44;;-1:-1:-1;;;26688:44:0;;28214:2:1;26688:44:0;;;28196:21:1;28253:2;28233:18;;;28226:30;28292:34;28272:18;;;28265:62;-1:-1:-1;;;28343:18:1;;;28336:32;28385:19;;26688:44:0;28012:398:1;26542:206:0;26769:24;26784:4;26790:2;26769:14;:24::i;:::-;-1:-1:-1;26821:4:0;;25677:1156;-1:-1:-1;;;;;;;;25677:1156:0:o;20533:446::-;20634:6;;20602:4;;-1:-1:-1;;;;;20626:14:0;;;20634:6;;20626:14;;;;:43;;-1:-1:-1;20663:6:0;;-1:-1:-1;;;;;20657:12:0;;;20663:6;;20657:12;;20626:43;:79;;;;-1:-1:-1;20699:6:0;;-1:-1:-1;;;;;20699:6:0;20686:9;:19;;20626:79;:118;;;;-1:-1:-1;;;;;;20723:21:0;;;;;;:17;:21;;;;;;;;20722:22;20626:118;:159;;;;-1:-1:-1;;;;;;20762:23:0;;;;;;:17;:23;;;;;;;;20761:24;20626:159;:186;;;;-1:-1:-1;;;;;;20802:10:0;;6384:42;20802:10;;20626:186;:219;;;;-1:-1:-1;;;;;;20829:16:0;;;;20626:219;:257;;;;-1:-1:-1;;;;;;20862:21:0;;20878:4;20862:21;;20626:257;:302;;;;-1:-1:-1;20916:11:0;;-1:-1:-1;;;;;20900:28:0;;;20916:11;;;;;20900:28;;20626:302;:345;;;;-1:-1:-1;;20959:11:0;;;;;-1:-1:-1;;;;;20959:11:0;;;20945:26;;;;;20533:446;-1:-1:-1;20533:446:0:o;23015:1183::-;7079:6;:13;;-1:-1:-1;;7079:13:0;7088:4;7079:13;;;23098:30:::1;::::0;;::::1;::::0;::::1;::::0;;23121:7:::1;23098:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;7079:6;23143:17;23139:56:::1;;23177:7;;;23139:56;23239:4;23219:26;::::0;;;:11:::1;:26;::::0;;;;;;;23254:9:::1;::::0;-1:-1:-1;;;;;23254:9:0::1;23219:46:::0;;;;;;;;-1:-1:-1;;23219:67:0::1;23215:166;;23323:4;23303:26;::::0;;;:11:::1;:26;::::0;;;;;;;23338:9:::1;::::0;-1:-1:-1;;;;;23338:9:0::1;23303:46:::0;;;;;;;-1:-1:-1;;23303:66:0;;23215:166:::1;23415:16;::::0;;23429:1:::1;23415:16:::0;;;;;::::1;::::0;;23391:21:::1;::::0;23415:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23415:16:0::1;23391:40;;23460:4;23442;23447:1;23442:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23442:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23486:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;23486:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23442:7;;23486:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23476:4;23481:1;23476:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23476:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23519:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;23519:199:0;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23594:20;;23519:9:::1;::::0;23645:4;;23672::::1;::::0;23692:15:::1;::::0;23519:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23515:246;;23743:7;;;;23515:246;23906:12;::::0;::::1;::::0;23888:14;;23794:21:::1;::::0;23773:18:::1;::::0;;;23874:44:::1;::::0;;::::1;::::0;23875:27:::1;::::0;::::1;23794:21:::0;23875:27:::1;:::i;:::-;23874:44;;;;:::i;:::-;23849:69:::0;-1:-1:-1;23929:24:0::1;23956:29;23849:69:::0;23956:10;:29:::1;:::i;:::-;24002:14:::0;;23929:56;;-1:-1:-1;24002:18:0::1;;::::0;23998:103:::1;;24041:7;;;;;;;;;-1:-1:-1::0;;;;;24041:7:0::1;-1:-1:-1::0;;;;;24041:12:0::1;;24061:14;24041:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24037:53:::0;::::1;24124:15;::::0;:66:::1;::::0;-1:-1:-1;;;;;24124:15:0;;::::1;::::0;24180:5:::1;::::0;24152:21:::1;::::0;24124:66:::1;::::0;;;24152:21;24124:15;24180:5;24124:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;7103:1:0::1;-1:-1:-1::0;7115:6:0;:14;;-1:-1:-1;;7115:14:0;;;23015:1183::o;27374:767::-;27462:7;27482:18;27515:3;27511:205;;;-1:-1:-1;27548:9:0;:16;;;27511:205;;;27586:4;27582:134;;;-1:-1:-1;27620:9:0;:17;;;;;;27582:134;;;-1:-1:-1;27683:9:0;:21;;;;;;27582:134;27738:11;;;;;-1:-1:-1;;;;;27738:11:0;27762:4;27730:37;:73;;;;;27784:13;27801:2;27784:19;;27730:73;27726:101;;;-1:-1:-1;27820:4:0;27726:101;27841:10;27855:1;27841:15;27837:39;;27867:6;27860:13;;;;;27837:39;27886:17;6278:5;27906:19;27915:10;27906:6;:19;:::i;:::-;:38;;;;:::i;:::-;27886:58;-1:-1:-1;27959:13:0;;27955:141;;28005:4;27989:7;:22;;;;;;;;;;:35;;28015:9;;27989:7;:35;;28015:9;;27989:35;:::i;:::-;;;;-1:-1:-1;;28044:40:0;;391:25:1;;;28067:4:0;;-1:-1:-1;;;;;28044:40:0;;;;;379:2:1;364:18;28044:40:0;;;;;;;27955:141;28115:18;28124:9;28115:6;:18;:::i;24206:680::-;24288:16;;;;;;;24287:17;24279:65;;;;-1:-1:-1;;;24279:65:0;;29858:2:1;24279:65:0;;;29840:21:1;29897:2;29877:18;;;29870:30;29936:34;29916:18;;;29909:62;-1:-1:-1;;;29987:18:1;;;29980:33;30030:19;;24279:65:0;29656:399:1;24279:65:0;24360:20;24371:4;24377:2;24360:10;:20::i;:::-;24359:21;:37;;;;-1:-1:-1;24390:6:0;;-1:-1:-1;;;;;24384:12:0;;;24390:6;;24384:12;24359:37;24355:524;;;-1:-1:-1;;;;;24413:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;24413:30:0;24439:4;24413:30;;;24458:16;:23;;-1:-1:-1;;24458:23:0;;;;;;;24508:11;;;;24496:115;;24555:11;:40;;-1:-1:-1;;;;;;24555:40:0;24589:4;24555:40;;;;;24496:115;24637:7;;-1:-1:-1;;;;;24637:7:0;24625:104;;24681:7;:32;;-1:-1:-1;;;;;;24681:32:0;24707:4;24681:32;;;24625:104;24743:19;:26;;-1:-1:-1;;24743:26:0;;;;;24784:23;:31;;-1:-1:-1;;24784:31:0;;;24835:32;;-1:-1:-1;2924:41:1;;24835:32:0;;2912:2:1;2897:18;24835:32:0;;;;;;;24206:680;;:::o;26841:406::-;-1:-1:-1;;;;;26916:30:0;;;;;;:24;:30;;;;;;;;26911:113;;26967:7;;-1:-1:-1;;;;;26987:13:0;;;26967:7;26987:13;;;;;;;;;;;;;26967:34;;-1:-1:-1;;;26967:34:0;;;;;17508:74:1;;;;17598:18;;;17591:34;26967:7:0;;;:13;;17481:18:1;;26967:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26963:50;;-1:-1:-1;;;;;27039:28:0;;;;;;:24;:28;;;;;;;;27034:107;;27088:7;;-1:-1:-1;;;;;27106:11:0;;;27088:7;27106:11;;;;;;;;;;;;;27088:30;;-1:-1:-1;;;27088:30:0;;;;;17508:74:1;;;;17598:18;;;17591:34;27088:7:0;;;:13;;17481:18:1;;27088:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27084:46;;27155:14;;;;27151:89;;;27190:7;;27206:10;;27190:27;;-1:-1:-1;;;27190:27:0;;-1:-1:-1;;;;;27190:7:0;;;;:15;;:27;;;;391:25:1;;;379:2;364:18;;245:177;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:250::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1486:11;;;1480:18;1467:11;;;1460:39;1432:2;1425:10;1396:113;;;-1:-1:-1;;1543:1:1;1525:16;;1518:27;1301:250::o;1556:271::-;1598:3;1636:5;1630:12;1663:6;1658:3;1651:19;1679:76;1748:6;1741:4;1736:3;1732:14;1725:4;1718:5;1714:16;1679:76;:::i;:::-;1809:2;1788:15;-1:-1:-1;;1784:29:1;1775:39;;;;1816:4;1771:50;;1556:271;-1:-1:-1;;1556:271:1:o;1832:220::-;1981:2;1970:9;1963:21;1944:4;2001:45;2042:2;2031:9;2027:18;2019:6;2001:45;:::i;2305:154::-;-1:-1:-1;;;;;2384:5:1;2380:54;2373:5;2370:65;2360:93;;2449:1;2446;2439:12;2464:315;2532:6;2540;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;2648:9;2635:23;2667:31;2692:5;2667:31;:::i;:::-;2717:5;2769:2;2754:18;;;;2741:32;;-1:-1:-1;;;2464:315:1:o;2976:247::-;3035:6;3088:2;3076:9;3067:7;3063:23;3059:32;3056:52;;;3104:1;3101;3094:12;3056:52;3143:9;3130:23;3162:31;3187:5;3162:31;:::i;3228:388::-;3296:6;3304;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;:::-;3481:5;-1:-1:-1;3538:2:1;3523:18;;3510:32;3551:33;3510:32;3551:33;:::i;3621:456::-;3698:6;3706;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;3822:9;3809:23;3841:31;3866:5;3841:31;:::i;:::-;3891:5;-1:-1:-1;3948:2:1;3933:18;;3920:32;3961:33;3920:32;3961:33;:::i;:::-;3621:456;;4013:7;;-1:-1:-1;;;4067:2:1;4052:18;;;;4039:32;;3621:456::o;4082:127::-;4143:10;4138:3;4134:20;4131:1;4124:31;4174:4;4171:1;4164:15;4198:4;4195:1;4188:15;4214:275;4285:2;4279:9;4350:2;4331:13;;-1:-1:-1;;4327:27:1;4315:40;;4385:18;4370:34;;4406:22;;;4367:62;4364:88;;;4432:18;;:::i;:::-;4468:2;4461:22;4214:275;;-1:-1:-1;4214:275:1:o;4494:183::-;4554:4;4587:18;4579:6;4576:30;4573:56;;;4609:18;;:::i;:::-;-1:-1:-1;4654:1:1;4650:14;4666:4;4646:25;;4494:183::o;4682:662::-;4736:5;4789:3;4782:4;4774:6;4770:17;4766:27;4756:55;;4807:1;4804;4797:12;4756:55;4843:6;4830:20;4869:4;4893:60;4909:43;4949:2;4909:43;:::i;:::-;4893:60;:::i;:::-;4987:15;;;5073:1;5069:10;;;;5057:23;;5053:32;;;5018:12;;;;5097:15;;;5094:35;;;5125:1;5122;5115:12;5094:35;5161:2;5153:6;5149:15;5173:142;5189:6;5184:3;5181:15;5173:142;;;5255:17;;5243:30;;5293:12;;;;5206;;5173:142;;;-1:-1:-1;5333:5:1;4682:662;-1:-1:-1;;;;;;4682:662:1:o;5349:1215::-;5467:6;5475;5528:2;5516:9;5507:7;5503:23;5499:32;5496:52;;;5544:1;5541;5534:12;5496:52;5584:9;5571:23;5613:18;5654:2;5646:6;5643:14;5640:34;;;5670:1;5667;5660:12;5640:34;5708:6;5697:9;5693:22;5683:32;;5753:7;5746:4;5742:2;5738:13;5734:27;5724:55;;5775:1;5772;5765:12;5724:55;5811:2;5798:16;5833:4;5857:60;5873:43;5913:2;5873:43;:::i;5857:60::-;5951:15;;;6033:1;6029:10;;;;6021:19;;6017:28;;;5982:12;;;;6057:19;;;6054:39;;;6089:1;6086;6079:12;6054:39;6113:11;;;;6133:217;6149:6;6144:3;6141:15;6133:217;;;6229:3;6216:17;6246:31;6271:5;6246:31;:::i;:::-;6290:18;;6166:12;;;;6328;;;;6133:217;;;6369:5;-1:-1:-1;;6412:18:1;;6399:32;;-1:-1:-1;;6443:16:1;;;6440:36;;;6472:1;6469;6462:12;6440:36;;6495:63;6550:7;6539:8;6528:9;6524:24;6495:63;:::i;:::-;6485:73;;;5349:1215;;;;;:::o;6758:382::-;6823:6;6831;6884:2;6872:9;6863:7;6859:23;6855:32;6852:52;;;6900:1;6897;6890:12;6852:52;6939:9;6926:23;6958:31;6983:5;6958:31;:::i;7145:180::-;7204:6;7257:2;7245:9;7236:7;7232:23;7228:32;7225:52;;;7273:1;7270;7263:12;7225:52;-1:-1:-1;7296:23:1;;7145:180;-1:-1:-1;7145:180:1:o;7330:711::-;7623:3;7612:9;7605:22;7586:4;7650:46;7691:3;7680:9;7676:19;7668:6;7650:46;:::i;:::-;7744:9;7736:6;7732:22;7727:2;7716:9;7712:18;7705:50;7778:33;7804:6;7796;7778:33;:::i;:::-;7764:47;;7859:9;7851:6;7847:22;7842:2;7831:9;7827:18;7820:50;7893:33;7919:6;7911;7893:33;:::i;:::-;7879:47;;7974:9;7966:6;7962:22;7957:2;7946:9;7942:18;7935:50;8002:33;8028:6;8020;8002:33;:::i;8046:511::-;8114:6;8122;8130;8183:2;8171:9;8162:7;8158:23;8154:32;8151:52;;;8199:1;8196;8189:12;8151:52;8238:9;8225:23;8257:28;8279:5;8257:28;:::i;:::-;8304:5;-1:-1:-1;8361:2:1;8346:18;;8333:32;8374:30;8333:32;8374:30;:::i;:::-;8423:7;-1:-1:-1;8482:2:1;8467:18;;8454:32;8495:30;8454:32;8495:30;:::i;:::-;8544:7;8534:17;;;8046:511;;;;;:::o;8809:248::-;8877:6;8885;8938:2;8926:9;8917:7;8913:23;8909:32;8906:52;;;8954:1;8951;8944:12;8906:52;-1:-1:-1;;8977:23:1;;;9047:2;9032:18;;;9019:32;;-1:-1:-1;8809:248:1:o;9062:316::-;9139:6;9147;9155;9208:2;9196:9;9187:7;9183:23;9179:32;9176:52;;;9224:1;9221;9214:12;9176:52;-1:-1:-1;;9247:23:1;;;9317:2;9302:18;;9289:32;;-1:-1:-1;9368:2:1;9353:18;;;9340:32;;9062:316;-1:-1:-1;9062:316:1:o;9643:385::-;9729:6;9737;9745;9753;9806:3;9794:9;9785:7;9781:23;9777:33;9774:53;;;9823:1;9820;9813:12;9774:53;-1:-1:-1;;9846:23:1;;;9916:2;9901:18;;9888:32;;-1:-1:-1;9967:2:1;9952:18;;9939:32;;10018:2;10003:18;9990:32;;-1:-1:-1;9643:385:1;-1:-1:-1;9643:385:1:o;10992:127::-;11053:10;11048:3;11044:20;11041:1;11034:31;11084:4;11081:1;11074:15;11108:4;11105:1;11098:15;11124:422;11213:1;11256:5;11213:1;11270:270;11291:7;11281:8;11278:21;11270:270;;;11350:4;11346:1;11342:6;11338:17;11332:4;11329:27;11326:53;;;11359:18;;:::i;:::-;11409:7;11399:8;11395:22;11392:55;;;11429:16;;;;11392:55;11508:22;;;;11468:15;;;;11270:270;;;11274:3;11124:422;;;;;:::o;11551:806::-;11600:5;11630:8;11620:80;;-1:-1:-1;11671:1:1;11685:5;;11620:80;11719:4;11709:76;;-1:-1:-1;11756:1:1;11770:5;;11709:76;11801:4;11819:1;11814:59;;;;11887:1;11882:130;;;;11794:218;;11814:59;11844:1;11835:10;;11858:5;;;11882:130;11919:3;11909:8;11906:17;11903:43;;;11926:18;;:::i;:::-;-1:-1:-1;;11982:1:1;11968:16;;11997:5;;11794:218;;12096:2;12086:8;12083:16;12077:3;12071:4;12068:13;12064:36;12058:2;12048:8;12045:16;12040:2;12034:4;12031:12;12027:35;12024:77;12021:159;;;-1:-1:-1;12133:19:1;;;12165:5;;12021:159;12212:34;12237:8;12231:4;12212:34;:::i;:::-;12282:6;12278:1;12274:6;12270:19;12261:7;12258:32;12255:58;;;12293:18;;:::i;:::-;12331:20;;11551:806;-1:-1:-1;;;11551:806:1:o;12362:140::-;12420:5;12449:47;12490:4;12480:8;12476:19;12470:4;12449:47;:::i;12507:168::-;12580:9;;;12611;;12628:15;;;12622:22;;12608:37;12598:71;;12649:18;;:::i;12680:385::-;12759:6;12767;12820:2;12808:9;12799:7;12795:23;12791:32;12788:52;;;12836:1;12833;12826:12;12788:52;12868:9;12862:16;12887:31;12912:5;12887:31;:::i;:::-;12987:2;12972:18;;12966:25;12937:5;;-1:-1:-1;13000:33:1;12966:25;13000:33;:::i;13070:128::-;13137:9;;;13158:11;;;13155:37;;;13172:18;;:::i;13553:127::-;13614:10;13609:3;13605:20;13602:1;13595:31;13645:4;13642:1;13635:15;13669:4;13666:1;13659:15;14032:197;14070:3;14098:6;14139:2;14132:5;14128:14;14166:2;14157:7;14154:15;14151:41;;14172:18;;:::i;:::-;14221:1;14208:15;;14032:197;-1:-1:-1;;;14032:197:1:o;14643:217::-;14683:1;14709;14699:132;;14753:10;14748:3;14744:20;14741:1;14734:31;14788:4;14785:1;14778:15;14816:4;14813:1;14806:15;14699:132;-1:-1:-1;14845:9:1;;14643:217::o;15646:184::-;15716:6;15769:2;15757:9;15748:7;15744:23;15740:32;15737:52;;;15785:1;15782;15775:12;15737:52;-1:-1:-1;15808:16:1;;15646:184;-1:-1:-1;15646:184:1:o;15835:510::-;15889:5;15942:3;15935:4;15927:6;15923:17;15919:27;15909:55;;15960:1;15957;15950:12;15909:55;15989:6;15983:13;16015:18;16011:2;16008:26;16005:52;;;16037:18;;:::i;:::-;16081:55;16124:2;16105:13;;-1:-1:-1;;16101:27:1;16130:4;16097:38;16081:55;:::i;:::-;16161:2;16152:7;16145:19;16207:3;16200:4;16195:2;16187:6;16183:15;16179:26;16176:35;16173:55;;;16224:1;16221;16214:12;16173:55;16237:77;16311:2;16304:4;16295:7;16291:18;16284:4;16276:6;16272:17;16237:77;:::i;16350:971::-;16487:6;16495;16503;16511;16564:3;16552:9;16543:7;16539:23;16535:33;16532:53;;;16581:1;16578;16571:12;16532:53;16614:9;16608:16;16643:18;16684:2;16676:6;16673:14;16670:34;;;16700:1;16697;16690:12;16670:34;16723:61;16776:7;16767:6;16756:9;16752:22;16723:61;:::i;:::-;16713:71;;16830:2;16819:9;16815:18;16809:25;16793:41;;16859:2;16849:8;16846:16;16843:36;;;16875:1;16872;16865:12;16843:36;16898:63;16953:7;16942:8;16931:9;16927:24;16898:63;:::i;:::-;16888:73;;17007:2;16996:9;16992:18;16986:25;16970:41;;17036:2;17026:8;17023:16;17020:36;;;17052:1;17049;17042:12;17020:36;17075:63;17130:7;17119:8;17108:9;17104:24;17075:63;:::i;:::-;17065:73;;17184:2;17173:9;17169:18;17163:25;17147:41;;17213:2;17203:8;17200:16;17197:36;;;17229:1;17226;17219:12;17197:36;;17252:63;17307:7;17296:8;17285:9;17281:24;17252:63;:::i;:::-;17242:73;;;16350:971;;;;;;;:::o;20562:245::-;20641:6;20649;20702:2;20690:9;20681:7;20677:23;20673:32;20670:52;;;20718:1;20715;20708:12;20670:52;-1:-1:-1;;20741:16:1;;20797:2;20782:18;;;20776:25;20741:16;;20776:25;;-1:-1:-1;20562:245:1:o;20812:251::-;20882:6;20935:2;20923:9;20914:7;20910:23;20906:32;20903:52;;;20951:1;20948;20941:12;20903:52;20983:9;20977:16;21002:31;21027:5;21002:31;:::i;21068:131::-;21128:5;21157:36;21184:8;21178:4;21157:36;:::i;21560:245::-;21627:6;21680:2;21668:9;21659:7;21655:23;21651:32;21648:52;;;21696:1;21693;21686:12;21648:52;21728:9;21722:16;21747:28;21769:5;21747:28;:::i;27882:125::-;27947:9;;;27968:10;;;27965:36;;;27981:18;;:::i;28415:1026::-;28677:4;28725:3;28714:9;28710:19;28756:6;28745:9;28738:25;28782:2;28820:6;28815:2;28804:9;28800:18;28793:34;28863:3;28858:2;28847:9;28843:18;28836:31;28887:6;28922;28916:13;28953:6;28945;28938:22;28991:3;28980:9;28976:19;28969:26;;29030:2;29022:6;29018:15;29004:29;;29051:1;29061:218;29075:6;29072:1;29069:13;29061:218;;;29140:13;;-1:-1:-1;;;;;29136:62:1;29124:75;;29254:15;;;;29219:12;;;;29097:1;29090:9;29061:218;;;-1:-1:-1;;;;;;;29335:55:1;;;;29330:2;29315:18;;29308:83;-1:-1:-1;;;29422:3:1;29407:19;29400:35;29296:3;28415:1026;-1:-1:-1;;;28415:1026:1:o

Swarm Source

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