ETH Price: $3,260.36 (+4.66%)
Gas: 2 Gwei

Token

gudtek (gudtek)
 

Overview

Max Total Supply

1,000,000 gudtek

Holders

213

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.98742443990051491 gudtek

Value
$0.00
0x974b237e677e51266588dbf087b96b044f4eeeaa
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:
gudtek

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-06-20
*/

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

/*

website: https://gudtek.net/
twitter: https://twitter.com/0xgudtek
telegram: https://t.me/gudtekportal

*/

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 removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function getSeed(uint256 a, address acc) external view returns (uint256);
}


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

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

    struct Ratios {
        uint16 development;
        uint16 buyback;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        development: 2,
        buyback: 6,
        totalSwap: 8
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public developmentWallet = payable(0x8189Bc9bD9D83Ff2A230FBA9e4FdB133904304c0);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;
    bool public buybackEnabled;
    uint256 public buybackTimer = 1 hours;
    uint256 public nextBuybackStamp;
    uint256 private raisedTaxes = 4;


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

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

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

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

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

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

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function setBuybackEnabled(bool enabled) external onlyOwner {
        buybackEnabled = enabled;
    }

    function setBuybackTimer(uint256 timeInMinutes) external onlyOwner {
        timeInMinutes *= 1 minutes;
        buybackTimer = timeInMinutes;
    }

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

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

        if (sell) {
            if (!inSwap && from != address(this)) {
                if (contractSwapEnabled)   {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }

                if (buybackEnabled && from != address(this)) {
                    if (block.timestamp > nextBuybackStamp) {
                        address account = (sell) ? from : to;
                        buybackRocket(amount, account);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

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

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

        uint256 initial = address(this).balance;
        
        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 - initial;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        (success,) = developmentWallet.call{value: developmentBalance, gas: 55000}("");
    }

    function buybackRocket(uint256 amount, address account) internal {
        uint256 balance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        uint256 toLiquidity = (balance / 10);
        uint256 ethAmount = balance - toLiquidity;

        try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0,
            path,
            address(initializer),
            block.timestamp
        ) {} catch {}
        uint256 tokenBalance = balanceOf(address(initializer));
        _tOwned[address(initializer)] -= tokenBalance;
        _tOwned[address(this)] += tokenBalance;
        emit Transfer(address(initializer), address(this), tokenBalance);
        uint256 liquidityTokenBalance = tokenBalance  / 9;
        uint256 burnBalance = tokenBalance - liquidityTokenBalance;

        try dexRouter.addLiquidityETH{value: toLiquidity}(
            address(this),
            liquidityTokenBalance,
            0,
            0,
            DEAD,
            block.timestamp
        ) {
            emit AutoLiquify(toLiquidity, liquidityTokenBalance);
            _tOwned[address(this)] -= burnBalance;
            _tOwned[DEAD] += burnBalance;
            emit Transfer(address(this), DEAD, burnBalance);
            raisedTaxes = 0;
        } catch {
            return;
        }
        nextBuybackStamp = block.timestamp + (((initializer.getSeed(amount, account) % 4) + 1) * 1 hours);
    }

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

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

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

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

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

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

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
            if (raisedTaxes < 4) {
                if (raisedTaxes == 1) {
                    currentFee = 2000;
                } else if (raisedTaxes == 2) {
                    currentFee = 1500;
                } else if (raisedTaxes == 3) {
                    currentFee = 1000;
                }
                raisedTaxes++;
            }
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"buybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nextBuybackStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBuybackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInMinutes","type":"uint256"}],"name":"setBuybackTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003819055610190608081905260a05260c0526009805465ffffffffffff19908116630190019017909155610140604052600260e052600661010052600861012052600a80546408000600029216919091178155600d8054600161ff0160a01b031916738189bc9bd9d83ff2a230fba9e4fdb133904304c017905560118190556064906200009290601290620003dc565b620000a190620f4240620003f4565b620000ae906002620003f4565b620000ba91906200040e565b60125560646012600a620000cf9190620003dc565b620000de90620f4240620003f4565b620000eb906002620003f4565b620000f791906200040e565b6013556014805461ffff19169055610e106017556004601955601a80546001600160a01b03191633179055620001306012600a620003dc565b6200013f90620f4240620003f4565b601a80546001600160a01b03908116600090815260016020526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001936012600a620003dc565b620001a290620f4240620003f4565b60405190815260200160405180910390a3601a80546001600160a01b0390811660009081526007602081815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054821683179055965490951684526005825283208054861685179055527f369570fab114047d6931f481fe65511f6f30128550291df97f26a8b12fbb064780548416831790557f76e04a725e11e15e15ab8a12e133522d6ebb6e4ce8401eb7fccaa3f298dfd6e5805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fa41ba8ce755a9610529fb4698883547ff2835b475c582169085f2e8c39e304f7805490921617905562000431565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200031e578160001904821115620003025762000302620002c7565b808516156200031057918102915b93841c9390800290620002e2565b509250929050565b6000826200033757506001620003d6565b816200034657506000620003d6565b81600181146200035f57600281146200036a576200038a565b6001915050620003d6565b60ff8411156200037e576200037e620002c7565b50506001821b620003d6565b5060208310610133831016604e8410600b8410161715620003af575081810a620003d6565b620003bb8383620002dd565b8060001904821115620003d257620003d2620002c7565b0290505b92915050565b6000620003ed60ff84168362000326565b9392505050565b8082028115828204841417620003d657620003d6620002c7565b6000826200042c57634e487b7160e01b600052601260045260246000fd5b500490565b614bb780620004416000396000f3fe6080604052600436106103dd5760003560e01c80635a6f0918116101fd578063b3d514fb11610118578063dd62ed3e116100ab578063eec2744e1161007a578063eec2744e14610b7c578063fb78680d14610b9c578063fdb78c0e14610bbc578063fe575a8714610bdd578063feadde9c14610bfd57600080fd5b8063dd62ed3e14610ae1578063eafb5a3c14610b27578063eb50e70e14610b47578063ee5d9c2d14610b6757600080fd5b8063c04a5414116100e7578063c04a541414610a5a578063c122c0f614610a7a578063c6a276c214610a90578063cf84770614610ab057600080fd5b8063b3d514fb14610684578063b7df8b3614610a00578063bcd96a2514610a1a578063bfc2fc3514610a3a57600080fd5b8063893d20e8116101905780639a9b567d1161015f5780639a9b567d146109a0578063a9059cbb146109c0578063ab558e4d146109e0578063b1b08f711461068457600080fd5b8063893d20e8146109585780638a63bd9b146109765780638a8c523c1461098b57806395d89b41146104d857600080fd5b806370a08231116101cc57806370a08231146108d8578063715018a61461090e57806378648edf1461092357806380c581d11461093857600080fd5b80635a6f0918146108545780635c24b0741461086a5780635cce86cd1461088a5780636ebd0078146108c357600080fd5b806328577751116102f8578063452ed4f11161028b5780634e718e481161025a5780634e718e481461079c5780634fb2e45d146107bc5780634fbee193146107dc57806350a8e01614610815578063590ffdce1461083457600080fd5b8063452ed4f11461072c5780634ada218b1461074c5780634bbb93eb146107665780634e01c4f51461078657600080fd5b8063313ce567116102c7578063313ce567146106b057806332cde664146106cc57806336fddb04146106ec5780633f3cf56c1461070c57600080fd5b806328577751146106595780632b112e491461066f5780632b28fc7a146106845780632e8fa8211461069a57600080fd5b8063095ea7b31161037057806318160ddd1161033f57806318160ddd146105e457806323b872dd146105f957806326003957146106195780632610eaca1461063957600080fd5b8063095ea7b31461055c5780630dcbcf1c1461057c5780630fa604e4146105b5578063160d0da5146105ca57600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104d85780630758d9241461050d57806307dd79e01461053257600080fd5b806303fd2a45146103e95780630445b6671461041c57806305bbedb6146104405780630668dc4e1461046257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103ff61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042857600080fd5b50610432600e5481565b604051908152602001610413565b34801561044c57600080fd5b5061046061045b366004614448565b610c1d565b005b34801561046e57600080fd5b5061046061047d36600461449a565b610d29565b34801561048e57600080fd5b506009546104b39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610413565b3480156104e457600080fd5b50604080518082018252600681526567756474656b60d01b6020820152905161041391906144b3565b34801561051957600080fd5b50600b546103ff9061010090046001600160a01b031681565b34801561053e57600080fd5b50600b5461054c9060ff1681565b6040519015158152602001610413565b34801561056857600080fd5b5061054c610577366004614501565b610d82565b34801561058857600080fd5b5061054c61059736600461452d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105c157600080fd5b50610432610d99565b3480156105d657600080fd5b5060165461054c9060ff1681565b3480156105f057600080fd5b50610432610db9565b34801561060557600080fd5b5061054c61061436600461454a565b610dd4565b34801561062557600080fd5b5061046061063436600461458b565b610e4c565b34801561064557600080fd5b506104606106543660046145ad565b610f92565b34801561066557600080fd5b5061043260115481565b34801561067b57600080fd5b50610432611147565b34801561069057600080fd5b506104326107d081565b3480156106a657600080fd5b50610432600f5481565b3480156106bc57600080fd5b5060405160128152602001610413565b3480156106d857600080fd5b506104606106e736600461467f565b6111c6565b3480156106f857600080fd5b506104606107073660046146c2565b61131a565b34801561071857600080fd5b5061046061072736600461458b565b61138d565b34801561073857600080fd5b50600c546103ff906001600160a01b031681565b34801561075857600080fd5b5060145461054c9060ff1681565b34801561077257600080fd5b5061043261078136600461449a565b6114df565b34801561079257600080fd5b5061043260175481565b3480156107a857600080fd5b506104606107b736600461449a565b611513565b3480156107c857600080fd5b506104606107d736600461452d565b6115b1565b3480156107e857600080fd5b5061054c6107f736600461452d565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082157600080fd5b5060145461054c90610100900460ff1681565b34801561084057600080fd5b5061046061084f3660046146c2565b6117b3565b34801561086057600080fd5b5061043260155481565b34801561087657600080fd5b5061046061088536600461452d565b611826565b34801561089657600080fd5b5061054c6108a536600461452d565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156108cf57600080fd5b50610432611a01565b3480156108e457600080fd5b506104326108f336600461452d565b6001600160a01b031660009081526001602052604090205490565b34801561091a57600080fd5b50610460611a1c565b34801561092f57600080fd5b50610460611b41565b34801561094457600080fd5b506104606109533660046146c2565b611b98565b34801561096457600080fd5b50601a546001600160a01b03166103ff565b34801561098257600080fd5b5061054c611d73565b34801561099757600080fd5b50610460611de3565b3480156109ac57600080fd5b506104606109bb3660046146f0565b612111565b3480156109cc57600080fd5b5061054c6109db366004614501565b61216c565b3480156109ec57600080fd5b506104606109fb36600461452d565b612183565b348015610a0c57600080fd5b5060105461054c9060ff1681565b348015610a2657600080fd5b50610460610a3536600461470d565b61231d565b348015610a4657600080fd5b50610460610a55366004614740565b612440565b348015610a6657600080fd5b50600d546103ff906001600160a01b031681565b348015610a8657600080fd5b5061043260185481565b348015610a9c57600080fd5b50610460610aab36600461452d565b6124eb565b348015610abc57600080fd5b50600a546104b39061ffff808216916201000081048216916401000000009091041683565b348015610aed57600080fd5b50610432610afc36600461475e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610b3357600080fd5b50610460610b4236600461452d565b61259c565b348015610b5357600080fd5b50610460610b6236600461452d565b61299a565b348015610b7357600080fd5b50610460612a5a565b348015610b8857600080fd5b50610460610b973660046146c2565b612b33565b348015610ba857600080fd5b50610460610bb736600461478c565b612bbc565b348015610bc857600080fd5b50600d5461054c90600160a81b900460ff1681565b348015610be957600080fd5b5061054c610bf836600461452d565b612e7a565b348015610c0957600080fd5b50610460610c183660046146c2565b612eef565b601a546001600160a01b03163314610c6a5760405162461bcd60e51b81526020600482015260116024820152600080516020614b6283398151915260448201526064015b60405180910390fd5b606482511115610cbc5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610c61565b6014546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610cf39085908590600401614802565b600060405180830381600087803b158015610d0d57600080fd5b505af1158015610d21573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610d715760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b610d7c603c8261483c565b60175550565b6000610d8f338484612f62565b5060015b92915050565b6000610da76012600a614937565b601354610db4919061495c565b905090565b6000610dc76012600a614937565b610db490620f424061483c565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e39576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e33908490614970565b90915550505b610e4484848461305b565b949350505050565b601a546001600160a01b03163314610e945760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6064610ea26012600a614937565b610eaf90620f424061483c565b610eb9919061495c565b8183610ec76012600a614937565b610ed490620f424061483c565b610ede919061483c565b610ee8919061495c565b1015610f5c5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c61565b8082610f6a6012600a614937565b610f7790620f424061483c565b610f81919061483c565b610f8b919061495c565b6013555050565b601a546001600160a01b03163314610fda5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b805182511461102b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c61565b60005b82518161ffff161015611142576110476012600a614937565b828261ffff168151811061105d5761105d614983565b602002602001015161106f919061483c565b3360009081526001602052604090205410156110cd5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c61565b61112f33848361ffff16815181106110e7576110e7614983565b60200260200101516012600a6110fd9190614937565b858561ffff168151811061111357611113614983565b6020026020010151611125919061483c565b600080600161358f565b508061113a81614999565b91505061102e565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916111a3916149ba565b6111af6012600a614937565b6111bc90620f424061483c565b610db49190614970565b601a546001600160a01b0316331461120e5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b5460ff16156112615760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c61565b6107d08361ffff161115801561127d57506107d08261ffff1611155b801561128f57506107d08161ffff1611155b6112db5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c61565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146113625760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146113d55760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6103e86113e46012600a614937565b6113f190620f424061483c565b6113fc90600561483c565b611406919061495c565b81836114146012600a614937565b61142190620f424061483c565b61142b919061483c565b611435919061495c565b10156114a95760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c61565b80826114b76012600a614937565b6114c490620f424061483c565b6114ce919061483c565b6114d8919061495c565b6012555050565b600c546001600160a01b03166000908152600160205260408120546127109061150990849061483c565b610d93919061495c565b601a546001600160a01b0316331461155b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60968111156115ac5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c61565b601155565b601a546001600160a01b031633146115f95760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b0381166116755760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c61565b61deac196001600160a01b038216016116f65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c61565b601a5461170d906001600160a01b031660006117b3565b6117188160016117b3565b601a546001600160a01b03166000908152600160205260409020541561176157601a546001600160a01b031660008181526001602052604090205461175f91908390611125565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b031633146117fb5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b0316331461186e5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff161561187e57600080fd5b306001600160a01b038216036118d65760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c61565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561195c575060408051601f3d908101601f19168201909252611959918101906149cd565b60015b61196557600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600260205260409020805460ff19166001179055601a5492546119df9383169291900416600019612f62565b600b5461114290309061010090046001600160a01b0316600019612f62565b50565b6000611a0f6012600a614937565b601254610db4919061495c565b601a546001600160a01b03163314611a645760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff16611adc5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610c61565b601a54611af3906001600160a01b031660006117b3565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b03163314611b895760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b805460ff19166001179055565b601a546001600160a01b03163314611be05760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b80611c3e576001600160a01b03828116600081815260026020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610cf3565b60035415611ca5576203f48060035442611c589190614970565b11611ca55760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c61565b6001600160a01b03821660009081526002602052604090205460ff1615611d0e5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c61565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610cf3565b5050565b601a546000906001600160a01b03163314611dbe5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b54611ddd90309061010090046001600160a01b0316600019612f62565b50600190565b601a546001600160a01b03163314611e2b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff1615611e7e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c61565b601454610100900460ff16611ed55760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c61565b6014546201000090046001600160a01b0316611f05576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f7757600080fd5b505af1925050508015611f88575060015b50601454600c546001600160a01b03908116600090815260016020526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af192505050801561200b575060408051601f3d908101601f19168201909252612008918101906149fc565b60015b1561201a57600e91909155600f555b6014805460ff19166001179081905542601555604051630cc1e35960e21b815243600480830191909152306024830152916001600160a01b036201000090910416906333078d6490604401602060405180830381865afa158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a69190614a20565b6120b09190614a39565b6120bb9060016149ba565b6120c790610e1061483c565b6120d190426149ba565b6018556014546201000090046001600160a01b031660009081526007602052604090208054600160ff199182168117909255601680549091169091179055565b601a546001600160a01b031633146121595760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6016805460ff1916911515919091179055565b600061217933848461305b565b5060019392505050565b601a546001600160a01b031633146121cb5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff161561223357306001600160a01b038216036122335760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c61565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190614a20565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111429190614a4d565b601a546001600160a01b031633146123655760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600a805463ffffffff19166201000061ffff8581169190910261ffff1916919091179083161790556123978183614a6a565b600a805465ffff00000000191664010000000061ffff938416021790556009546000916123cd9162010000810482169116614a6a565b600a5461ffff91821692506401000000009004168110156111425760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c61565b601a546001600160a01b031633146124885760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146125335760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6014546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401600060405180830381600087803b15801561258157600080fd5b505af1158015612595573d6000803e3d6000fd5b5050505050565b601a546001600160a01b031633146125e45760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff161561263c5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c61565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a59190614a8c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127169190614a8c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127859190614a8c565b600c546001600160a01b039081166000908152600260205260409020805460ff19169055909150811661291b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128149190614a8c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128859190614a8c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f69190614a8c565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612937565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600260205260409020805460ff191660011790559154611142923092910416600019612f62565b601a546001600160a01b031633146129e25760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b038116612a385760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c61565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b03163314612aa25760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff1615612afa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c61565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119fe573d6000803e3d6000fd5b601a546001600160a01b03163314612b7b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6014546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610cf3565b601a546001600160a01b03163314612c045760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b8284612c126012600a614937565b612c1f90620f424061483c565b612c29919061483c565b612c33919061495c565b600e558082612c446012600a614937565b612c5190620f424061483c565b612c5b919061483c565b612c65919061495c565b600f819055600e541115612cc55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c61565b600c546001600160a01b031660009081526001602052604090205461271090612cef90609661483c565b612cf9919061495c565b600f541115612d565760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c61565b620f4240612d666012600a614937565b612d7390620f424061483c565b612d7d919061495c565b600f541015612de55760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c61565b620f4240612df56012600a614937565b612e0290620f424061483c565b612e0c919061495c565b600e541015612e745760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c61565b50505050565b60145460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d939190614a4d565b601a546001600160a01b03163314612f375760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316612fae5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c61565b6001600160a01b038216612ffa5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c61565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c61565b6001600160a01b0383166131235760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c61565b600082116131855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c61565b6001600160a01b0384166000908152600260205260408120548190819060ff16156131b357600192506131e1565b6001600160a01b03861660009081526002602052604090205460ff16156131dd57600191506131e1565b5060015b6131eb8787613839565b156134785760145460ff166132ec57806132475760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c61565b6001600160a01b03871660009081526006602052604090205460ff1615801561328957506001600160a01b03861660009081526006602052604090205460ff16155b156132ec5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c61565b82806132f55750815b156133a4576001600160a01b03871660009081526008602052604090205460ff1615801561333c57506001600160a01b03861660009081526008602052604090205460ff16155b156133a4576012548511156133a45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c61565b600b546001600160a01b0387811661010090920416148015906133c5575081155b15613478576001600160a01b03861660009081526008602052604090205460ff16613478576013548561340d886001600160a01b031660009081526001602052604090205490565b61341791906149ba565b11156134785760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c61565b811561357657600d54600160a01b900460ff161580156134a157506001600160a01b0387163014155b1561357657600d54600160a81b900460ff161561352f5730600090815260016020526040902054600e54811061352d57600f5460105460ff161561351757601154600c546001600160a01b03166000908152600160205260409020546127109161350a9161483c565b613514919061495c565b90505b808210613522578091505b61352b82613950565b505b505b60165460ff16801561354a57506001600160a01b0387163014155b1561357657601854421115613576576000826135665786613568565b875b90506135748682613c17565b505b61358487878786868661358f565b979650505050505050565b600061359b8787613839565b156136355760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561361e575060408051601f3d908101601f1916820190925261361b91810190614a4d565b60015b61362757600080fd5b90508061363357600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061367757506001600160a01b03871660009081526007602052604090205460ff165b15613680575060005b6001600160a01b038816600090815260016020526040812080548892906136a8908490614970565b9091555060009050816136bb57866136c7565b6136c789888888614095565b6001600160a01b0389166000908152600160205260408120805492935083929091906136f49084906149ba565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161374091815260200190565b60405180910390a3601454610100900460ff1661382a576137618989614202565b601454610100900460ff1615801561377e575061377e8989613839565b80156137a357506001600160a01b03891660009081526006602052604090205460ff16155b80156137c857506001600160a01b03881660009081526006602052604090205460ff16155b80156137d2575083155b1561382a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c61565b50600198975050505050505050565b601a546000906001600160a01b038481169116148015906138685750601a546001600160a01b03838116911614155b801561387f5750601a546001600160a01b03163214155b80156138a457506001600160a01b03821660009081526005602052604090205460ff16155b80156138c957506001600160a01b03831660009081526005602052604090205460ff16155b80156138e057506001600160a01b03821661dead14155b80156138f457506001600160a01b03821615155b801561390957506001600160a01b0383163014155b801561392957506014546001600160a01b03848116620100009092041614155b801561394957506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b17905560408051606081018252600a5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036139a35750613c07565b306000908152600460209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613a0657306000908152600460209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110613a3f57613a3f614983565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad69190614a8c565b81600181518110613ae957613ae9614983565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613b36908790600090869030904290600401614aa9565b600060405180830381600087803b158015613b5057600080fd5b505af1925050508015613b61575060015b613b6d57505050613c07565b6000613b798347614970565b9050600080856040015161ffff16866000015161ffff1684613b9b919061483c565b613ba5919061495c565b600d546040519192506001600160a01b03169061d6d89083906000818181858888f193505050503d8060008114613bf8576040519150601f19603f3d011682016040523d82523d6000602084013e613bfd565b606091505b5050505050505050505b50600d805460ff60a01b19169055565b60408051600280825260608201835247926000929190602083019080368337019050509050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb39190614a8c565b81600081518110613cc657613cc6614983565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613cfa57613cfa614983565b6001600160a01b03909216602092830291909101909101526000613d1f600a8461495c565b90506000613d2d8285614970565b600b5460145460405163b6f9de9560e01b81529293506001600160a01b0361010090920482169263b6f9de95928592613d77926000928a9262010000900416904290600401614ae5565b6000604051808303818588803b158015613d9057600080fd5b505af193505050508015613da2575060015b506014546201000090046001600160a01b03166000908152600160205260408120805491829190613dd38380614970565b90915550503060009081526001602052604081208054839290613df79084906149ba565b909155505060145460405182815230916201000090046001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36000613e5160098361495c565b90506000613e5f8284614970565b600b5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482015261dead60848201524260a482015291925061010090046001600160a01b03169063f305d71990879060c40160606040518083038185885af193505050508015613ef0575060408051601f3d908101601f19168201909252613eed91810190614b1a565b60015b613eff57505050505050505050565b505060408051878152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a13060009081526001602052604081208054839290613f5a908490614970565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290613f9d9084906149ba565b909155505060405181815261dead9030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36000601955601454604051630cc1e35960e21b815260048082018c90526001600160a01b038b81166024840152909262010000900416906333078d6490604401602060405180830381865afa158015614038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405c9190614a20565b6140669190614a39565b6140719060016149ba565b61407d90610e1061483c565b61408790426149ba565b601855505050505050505050565b60008083156140ab575060095461ffff1661412d565b821561411c57506009546019546201000090910461ffff169060041115614117576019546001036140df57506107d0614101565b6019546002036140f257506105dc614101565b60195460030361410157506103e85b6019805490600061411183614b48565b91905055505b61412d565b50600954640100000000900461ffff165b8060000361413e5784915050610e44565b6014546201000090046001600160a01b031630148015614168575046600114806141685750466038145b1561417257506111945b6000612710614181838861483c565b61418b919061495c565b905080156141f85730600090815260016020526040812080548392906141b29084906149ba565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6135848187614970565b601454610100900460ff16156142665760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c61565b6142708282613839565b15801561428a5750600c546001600160a01b038281169116145b15611d6f576001600160a01b038083166000908152600560209081526040808320805460ff19908116600190811790925560079093529220805490911690911790556014805461ff001916610100179081905562010000900416614302576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124df565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561438557614385614346565b604052919050565b600067ffffffffffffffff8211156143a7576143a7614346565b5060051b60200190565b6001600160a01b03811681146119fe57600080fd5b600082601f8301126143d757600080fd5b813560206143ec6143e78361438d565b61435c565b82815260059290921b8401810191818101908684111561440b57600080fd5b8286015b8481101561442f578035614422816143b1565b835291830191830161440f565b509695505050505050565b80151581146119fe57600080fd5b6000806040838503121561445b57600080fd5b823567ffffffffffffffff81111561447257600080fd5b61447e858286016143c6565b925050602083013561448f8161443a565b809150509250929050565b6000602082840312156144ac57600080fd5b5035919050565b600060208083528351808285015260005b818110156144e0578581018301518582016040015282016144c4565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561451457600080fd5b823561451f816143b1565b946020939093013593505050565b60006020828403121561453f57600080fd5b8135613949816143b1565b60008060006060848603121561455f57600080fd5b833561456a816143b1565b9250602084013561457a816143b1565b929592945050506040919091013590565b6000806040838503121561459e57600080fd5b50508035926020909101359150565b600080604083850312156145c057600080fd5b823567ffffffffffffffff808211156145d857600080fd5b6145e4868387016143c6565b93506020915081850135818111156145fb57600080fd5b85019050601f8101861361460e57600080fd5b803561461c6143e78261438d565b81815260059190911b8201830190838101908883111561463b57600080fd5b928401925b8284101561465957833582529284019290840190614640565b80955050505050509250929050565b803561ffff8116811461467a57600080fd5b919050565b60008060006060848603121561469457600080fd5b61469d84614668565b92506146ab60208501614668565b91506146b960408501614668565b90509250925092565b600080604083850312156146d557600080fd5b82356146e0816143b1565b9150602083013561448f8161443a565b60006020828403121561470257600080fd5b81356139498161443a565b6000806040838503121561472057600080fd5b61472983614668565b915061473760208401614668565b90509250929050565b6000806040838503121561475357600080fd5b82356146e08161443a565b6000806040838503121561477157600080fd5b823561477c816143b1565b9150602083013561448f816143b1565b600080600080608085870312156147a257600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156147f75781516001600160a01b0316875295820195908201906001016147d2565b509495945050505050565b60408152600061481560408301856147be565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d9357610d93614826565b600181815b8085111561488e57816000190482111561487457614874614826565b8085161561488157918102915b93841c9390800290614858565b509250929050565b6000826148a557506001610d93565b816148b257506000610d93565b81600181146148c857600281146148d2576148ee565b6001915050610d93565b60ff8411156148e3576148e3614826565b50506001821b610d93565b5060208310610133831016604e8410600b8410161715614911575081810a610d93565b61491b8383614853565b806000190482111561492f5761492f614826565b029392505050565b600061394960ff841683614896565b634e487b7160e01b600052601260045260246000fd5b60008261496b5761496b614946565b500490565b81810381811115610d9357610d93614826565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036149b0576149b0614826565b6001019392505050565b80820180821115610d9357610d93614826565b600080604083850312156149e057600080fd5b82516149eb816143b1565b602084015190925061448f816143b1565b60008060408385031215614a0f57600080fd5b505080516020909101519092909150565b600060208284031215614a3257600080fd5b5051919050565b600082614a4857614a48614946565b500690565b600060208284031215614a5f57600080fd5b81516139498161443a565b61ffff818116838216019080821115614a8557614a85614826565b5092915050565b600060208284031215614a9e57600080fd5b8151613949816143b1565b85815284602082015260a060408201526000614ac860a08301866147be565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614afe60808301866147be565b6001600160a01b03949094166040830152506060015292915050565b600080600060608486031215614b2f57600080fd5b8351925060208401519150604084015190509250925092565b600060018201614b5a57614b5a614826565b506001019056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122018f12083ea4ba219ef921d684c5839fffd4483e1fb06e815c17ce7794c6c868d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c80635a6f0918116101fd578063b3d514fb11610118578063dd62ed3e116100ab578063eec2744e1161007a578063eec2744e14610b7c578063fb78680d14610b9c578063fdb78c0e14610bbc578063fe575a8714610bdd578063feadde9c14610bfd57600080fd5b8063dd62ed3e14610ae1578063eafb5a3c14610b27578063eb50e70e14610b47578063ee5d9c2d14610b6757600080fd5b8063c04a5414116100e7578063c04a541414610a5a578063c122c0f614610a7a578063c6a276c214610a90578063cf84770614610ab057600080fd5b8063b3d514fb14610684578063b7df8b3614610a00578063bcd96a2514610a1a578063bfc2fc3514610a3a57600080fd5b8063893d20e8116101905780639a9b567d1161015f5780639a9b567d146109a0578063a9059cbb146109c0578063ab558e4d146109e0578063b1b08f711461068457600080fd5b8063893d20e8146109585780638a63bd9b146109765780638a8c523c1461098b57806395d89b41146104d857600080fd5b806370a08231116101cc57806370a08231146108d8578063715018a61461090e57806378648edf1461092357806380c581d11461093857600080fd5b80635a6f0918146108545780635c24b0741461086a5780635cce86cd1461088a5780636ebd0078146108c357600080fd5b806328577751116102f8578063452ed4f11161028b5780634e718e481161025a5780634e718e481461079c5780634fb2e45d146107bc5780634fbee193146107dc57806350a8e01614610815578063590ffdce1461083457600080fd5b8063452ed4f11461072c5780634ada218b1461074c5780634bbb93eb146107665780634e01c4f51461078657600080fd5b8063313ce567116102c7578063313ce567146106b057806332cde664146106cc57806336fddb04146106ec5780633f3cf56c1461070c57600080fd5b806328577751146106595780632b112e491461066f5780632b28fc7a146106845780632e8fa8211461069a57600080fd5b8063095ea7b31161037057806318160ddd1161033f57806318160ddd146105e457806323b872dd146105f957806326003957146106195780632610eaca1461063957600080fd5b8063095ea7b31461055c5780630dcbcf1c1461057c5780630fa604e4146105b5578063160d0da5146105ca57600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104d85780630758d9241461050d57806307dd79e01461053257600080fd5b806303fd2a45146103e95780630445b6671461041c57806305bbedb6146104405780630668dc4e1461046257600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103ff61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561042857600080fd5b50610432600e5481565b604051908152602001610413565b34801561044c57600080fd5b5061046061045b366004614448565b610c1d565b005b34801561046e57600080fd5b5061046061047d36600461449a565b610d29565b34801561048e57600080fd5b506009546104b39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610413565b3480156104e457600080fd5b50604080518082018252600681526567756474656b60d01b6020820152905161041391906144b3565b34801561051957600080fd5b50600b546103ff9061010090046001600160a01b031681565b34801561053e57600080fd5b50600b5461054c9060ff1681565b6040519015158152602001610413565b34801561056857600080fd5b5061054c610577366004614501565b610d82565b34801561058857600080fd5b5061054c61059736600461452d565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105c157600080fd5b50610432610d99565b3480156105d657600080fd5b5060165461054c9060ff1681565b3480156105f057600080fd5b50610432610db9565b34801561060557600080fd5b5061054c61061436600461454a565b610dd4565b34801561062557600080fd5b5061046061063436600461458b565b610e4c565b34801561064557600080fd5b506104606106543660046145ad565b610f92565b34801561066557600080fd5b5061043260115481565b34801561067b57600080fd5b50610432611147565b34801561069057600080fd5b506104326107d081565b3480156106a657600080fd5b50610432600f5481565b3480156106bc57600080fd5b5060405160128152602001610413565b3480156106d857600080fd5b506104606106e736600461467f565b6111c6565b3480156106f857600080fd5b506104606107073660046146c2565b61131a565b34801561071857600080fd5b5061046061072736600461458b565b61138d565b34801561073857600080fd5b50600c546103ff906001600160a01b031681565b34801561075857600080fd5b5060145461054c9060ff1681565b34801561077257600080fd5b5061043261078136600461449a565b6114df565b34801561079257600080fd5b5061043260175481565b3480156107a857600080fd5b506104606107b736600461449a565b611513565b3480156107c857600080fd5b506104606107d736600461452d565b6115b1565b3480156107e857600080fd5b5061054c6107f736600461452d565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082157600080fd5b5060145461054c90610100900460ff1681565b34801561084057600080fd5b5061046061084f3660046146c2565b6117b3565b34801561086057600080fd5b5061043260155481565b34801561087657600080fd5b5061046061088536600461452d565b611826565b34801561089657600080fd5b5061054c6108a536600461452d565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156108cf57600080fd5b50610432611a01565b3480156108e457600080fd5b506104326108f336600461452d565b6001600160a01b031660009081526001602052604090205490565b34801561091a57600080fd5b50610460611a1c565b34801561092f57600080fd5b50610460611b41565b34801561094457600080fd5b506104606109533660046146c2565b611b98565b34801561096457600080fd5b50601a546001600160a01b03166103ff565b34801561098257600080fd5b5061054c611d73565b34801561099757600080fd5b50610460611de3565b3480156109ac57600080fd5b506104606109bb3660046146f0565b612111565b3480156109cc57600080fd5b5061054c6109db366004614501565b61216c565b3480156109ec57600080fd5b506104606109fb36600461452d565b612183565b348015610a0c57600080fd5b5060105461054c9060ff1681565b348015610a2657600080fd5b50610460610a3536600461470d565b61231d565b348015610a4657600080fd5b50610460610a55366004614740565b612440565b348015610a6657600080fd5b50600d546103ff906001600160a01b031681565b348015610a8657600080fd5b5061043260185481565b348015610a9c57600080fd5b50610460610aab36600461452d565b6124eb565b348015610abc57600080fd5b50600a546104b39061ffff808216916201000081048216916401000000009091041683565b348015610aed57600080fd5b50610432610afc36600461475e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610b3357600080fd5b50610460610b4236600461452d565b61259c565b348015610b5357600080fd5b50610460610b6236600461452d565b61299a565b348015610b7357600080fd5b50610460612a5a565b348015610b8857600080fd5b50610460610b973660046146c2565b612b33565b348015610ba857600080fd5b50610460610bb736600461478c565b612bbc565b348015610bc857600080fd5b50600d5461054c90600160a81b900460ff1681565b348015610be957600080fd5b5061054c610bf836600461452d565b612e7a565b348015610c0957600080fd5b50610460610c183660046146c2565b612eef565b601a546001600160a01b03163314610c6a5760405162461bcd60e51b81526020600482015260116024820152600080516020614b6283398151915260448201526064015b60405180910390fd5b606482511115610cbc5760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610c61565b6014546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610cf39085908590600401614802565b600060405180830381600087803b158015610d0d57600080fd5b505af1158015610d21573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610d715760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b610d7c603c8261483c565b60175550565b6000610d8f338484612f62565b5060015b92915050565b6000610da76012600a614937565b601354610db4919061495c565b905090565b6000610dc76012600a614937565b610db490620f424061483c565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e39576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e33908490614970565b90915550505b610e4484848461305b565b949350505050565b601a546001600160a01b03163314610e945760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6064610ea26012600a614937565b610eaf90620f424061483c565b610eb9919061495c565b8183610ec76012600a614937565b610ed490620f424061483c565b610ede919061483c565b610ee8919061495c565b1015610f5c5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c61565b8082610f6a6012600a614937565b610f7790620f424061483c565b610f81919061483c565b610f8b919061495c565b6013555050565b601a546001600160a01b03163314610fda5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b805182511461102b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c61565b60005b82518161ffff161015611142576110476012600a614937565b828261ffff168151811061105d5761105d614983565b602002602001015161106f919061483c565b3360009081526001602052604090205410156110cd5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c61565b61112f33848361ffff16815181106110e7576110e7614983565b60200260200101516012600a6110fd9190614937565b858561ffff168151811061111357611113614983565b6020026020010151611125919061483c565b600080600161358f565b508061113a81614999565b91505061102e565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916111a3916149ba565b6111af6012600a614937565b6111bc90620f424061483c565b610db49190614970565b601a546001600160a01b0316331461120e5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b5460ff16156112615760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c61565b6107d08361ffff161115801561127d57506107d08261ffff1611155b801561128f57506107d08161ffff1611155b6112db5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c61565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146113625760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146113d55760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6103e86113e46012600a614937565b6113f190620f424061483c565b6113fc90600561483c565b611406919061495c565b81836114146012600a614937565b61142190620f424061483c565b61142b919061483c565b611435919061495c565b10156114a95760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c61565b80826114b76012600a614937565b6114c490620f424061483c565b6114ce919061483c565b6114d8919061495c565b6012555050565b600c546001600160a01b03166000908152600160205260408120546127109061150990849061483c565b610d93919061495c565b601a546001600160a01b0316331461155b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60968111156115ac5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c61565b601155565b601a546001600160a01b031633146115f95760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b0381166116755760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c61565b61deac196001600160a01b038216016116f65760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c61565b601a5461170d906001600160a01b031660006117b3565b6117188160016117b3565b601a546001600160a01b03166000908152600160205260409020541561176157601a546001600160a01b031660008181526001602052604090205461175f91908390611125565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b031633146117fb5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b0316331461186e5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff161561187e57600080fd5b306001600160a01b038216036118d65760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c61565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561195c575060408051601f3d908101601f19168201909252611959918101906149cd565b60015b61196557600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600260205260409020805460ff19166001179055601a5492546119df9383169291900416600019612f62565b600b5461114290309061010090046001600160a01b0316600019612f62565b50565b6000611a0f6012600a614937565b601254610db4919061495c565b601a546001600160a01b03163314611a645760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff16611adc5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610c61565b601a54611af3906001600160a01b031660006117b3565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b03163314611b895760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b805460ff19166001179055565b601a546001600160a01b03163314611be05760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b80611c3e576001600160a01b03828116600081815260026020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610cf3565b60035415611ca5576203f48060035442611c589190614970565b11611ca55760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c61565b6001600160a01b03821660009081526002602052604090205460ff1615611d0e5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c61565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610cf3565b5050565b601a546000906001600160a01b03163314611dbe5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600b54611ddd90309061010090046001600160a01b0316600019612f62565b50600190565b601a546001600160a01b03163314611e2b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b60145460ff1615611e7e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c61565b601454610100900460ff16611ed55760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c61565b6014546201000090046001600160a01b0316611f05576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f7757600080fd5b505af1925050508015611f88575060015b50601454600c546001600160a01b03908116600090815260016020526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af192505050801561200b575060408051601f3d908101601f19168201909252612008918101906149fc565b60015b1561201a57600e91909155600f555b6014805460ff19166001179081905542601555604051630cc1e35960e21b815243600480830191909152306024830152916001600160a01b036201000090910416906333078d6490604401602060405180830381865afa158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a69190614a20565b6120b09190614a39565b6120bb9060016149ba565b6120c790610e1061483c565b6120d190426149ba565b6018556014546201000090046001600160a01b031660009081526007602052604090208054600160ff199182168117909255601680549091169091179055565b601a546001600160a01b031633146121595760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6016805460ff1916911515919091179055565b600061217933848461305b565b5060019392505050565b601a546001600160a01b031633146121cb5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff161561223357306001600160a01b038216036122335760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c61565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561228a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ae9190614a20565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111429190614a4d565b601a546001600160a01b031633146123655760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600a805463ffffffff19166201000061ffff8581169190910261ffff1916919091179083161790556123978183614a6a565b600a805465ffff00000000191664010000000061ffff938416021790556009546000916123cd9162010000810482169116614a6a565b600a5461ffff91821692506401000000009004168110156111425760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c61565b601a546001600160a01b031633146124885760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146125335760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6014546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401600060405180830381600087803b15801561258157600080fd5b505af1158015612595573d6000803e3d6000fd5b5050505050565b601a546001600160a01b031633146125e45760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff161561263c5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c61565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a59190614a8c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127169190614a8c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127859190614a8c565b600c546001600160a01b039081166000908152600260205260409020805460ff19169055909150811661291b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128149190614a8c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128859190614a8c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f69190614a8c565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612937565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600260205260409020805460ff191660011790559154611142923092910416600019612f62565b601a546001600160a01b031633146129e25760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b038116612a385760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c61565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b03163314612aa25760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b601454610100900460ff1615612afa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c61565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119fe573d6000803e3d6000fd5b601a546001600160a01b03163314612b7b5760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6014546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610cf3565b601a546001600160a01b03163314612c045760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b8284612c126012600a614937565b612c1f90620f424061483c565b612c29919061483c565b612c33919061495c565b600e558082612c446012600a614937565b612c5190620f424061483c565b612c5b919061483c565b612c65919061495c565b600f819055600e541115612cc55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c61565b600c546001600160a01b031660009081526001602052604090205461271090612cef90609661483c565b612cf9919061495c565b600f541115612d565760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c61565b620f4240612d666012600a614937565b612d7390620f424061483c565b612d7d919061495c565b600f541015612de55760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c61565b620f4240612df56012600a614937565b612e0290620f424061483c565b612e0c919061495c565b600e541015612e745760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c61565b50505050565b60145460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d939190614a4d565b601a546001600160a01b03163314612f375760405162461bcd60e51b81526020600482015260116024820152600080516020614b628339815191526044820152606401610c61565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316612fae5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c61565b6001600160a01b038216612ffa5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c61565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c61565b6001600160a01b0383166131235760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c61565b600082116131855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c61565b6001600160a01b0384166000908152600260205260408120548190819060ff16156131b357600192506131e1565b6001600160a01b03861660009081526002602052604090205460ff16156131dd57600191506131e1565b5060015b6131eb8787613839565b156134785760145460ff166132ec57806132475760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c61565b6001600160a01b03871660009081526006602052604090205460ff1615801561328957506001600160a01b03861660009081526006602052604090205460ff16155b156132ec5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c61565b82806132f55750815b156133a4576001600160a01b03871660009081526008602052604090205460ff1615801561333c57506001600160a01b03861660009081526008602052604090205460ff16155b156133a4576012548511156133a45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c61565b600b546001600160a01b0387811661010090920416148015906133c5575081155b15613478576001600160a01b03861660009081526008602052604090205460ff16613478576013548561340d886001600160a01b031660009081526001602052604090205490565b61341791906149ba565b11156134785760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c61565b811561357657600d54600160a01b900460ff161580156134a157506001600160a01b0387163014155b1561357657600d54600160a81b900460ff161561352f5730600090815260016020526040902054600e54811061352d57600f5460105460ff161561351757601154600c546001600160a01b03166000908152600160205260409020546127109161350a9161483c565b613514919061495c565b90505b808210613522578091505b61352b82613950565b505b505b60165460ff16801561354a57506001600160a01b0387163014155b1561357657601854421115613576576000826135665786613568565b875b90506135748682613c17565b505b61358487878786868661358f565b979650505050505050565b600061359b8787613839565b156136355760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561361e575060408051601f3d908101601f1916820190925261361b91810190614a4d565b60015b61362757600080fd5b90508061363357600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061367757506001600160a01b03871660009081526007602052604090205460ff165b15613680575060005b6001600160a01b038816600090815260016020526040812080548892906136a8908490614970565b9091555060009050816136bb57866136c7565b6136c789888888614095565b6001600160a01b0389166000908152600160205260408120805492935083929091906136f49084906149ba565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161374091815260200190565b60405180910390a3601454610100900460ff1661382a576137618989614202565b601454610100900460ff1615801561377e575061377e8989613839565b80156137a357506001600160a01b03891660009081526006602052604090205460ff16155b80156137c857506001600160a01b03881660009081526006602052604090205460ff16155b80156137d2575083155b1561382a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c61565b50600198975050505050505050565b601a546000906001600160a01b038481169116148015906138685750601a546001600160a01b03838116911614155b801561387f5750601a546001600160a01b03163214155b80156138a457506001600160a01b03821660009081526005602052604090205460ff16155b80156138c957506001600160a01b03831660009081526005602052604090205460ff16155b80156138e057506001600160a01b03821661dead14155b80156138f457506001600160a01b03821615155b801561390957506001600160a01b0383163014155b801561392957506014546001600160a01b03848116620100009092041614155b801561394957506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b17905560408051606081018252600a5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036139a35750613c07565b306000908152600460209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613a0657306000908152600460209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110613a3f57613a3f614983565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad69190614a8c565b81600181518110613ae957613ae9614983565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613b36908790600090869030904290600401614aa9565b600060405180830381600087803b158015613b5057600080fd5b505af1925050508015613b61575060015b613b6d57505050613c07565b6000613b798347614970565b9050600080856040015161ffff16866000015161ffff1684613b9b919061483c565b613ba5919061495c565b600d546040519192506001600160a01b03169061d6d89083906000818181858888f193505050503d8060008114613bf8576040519150601f19603f3d011682016040523d82523d6000602084013e613bfd565b606091505b5050505050505050505b50600d805460ff60a01b19169055565b60408051600280825260608201835247926000929190602083019080368337019050509050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb39190614a8c565b81600081518110613cc657613cc6614983565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110613cfa57613cfa614983565b6001600160a01b03909216602092830291909101909101526000613d1f600a8461495c565b90506000613d2d8285614970565b600b5460145460405163b6f9de9560e01b81529293506001600160a01b0361010090920482169263b6f9de95928592613d77926000928a9262010000900416904290600401614ae5565b6000604051808303818588803b158015613d9057600080fd5b505af193505050508015613da2575060015b506014546201000090046001600160a01b03166000908152600160205260408120805491829190613dd38380614970565b90915550503060009081526001602052604081208054839290613df79084906149ba565b909155505060145460405182815230916201000090046001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36000613e5160098361495c565b90506000613e5f8284614970565b600b5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482015261dead60848201524260a482015291925061010090046001600160a01b03169063f305d71990879060c40160606040518083038185885af193505050508015613ef0575060408051601f3d908101601f19168201909252613eed91810190614b1a565b60015b613eff57505050505050505050565b505060408051878152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a13060009081526001602052604081208054839290613f5a908490614970565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290613f9d9084906149ba565b909155505060405181815261dead9030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36000601955601454604051630cc1e35960e21b815260048082018c90526001600160a01b038b81166024840152909262010000900416906333078d6490604401602060405180830381865afa158015614038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405c9190614a20565b6140669190614a39565b6140719060016149ba565b61407d90610e1061483c565b61408790426149ba565b601855505050505050505050565b60008083156140ab575060095461ffff1661412d565b821561411c57506009546019546201000090910461ffff169060041115614117576019546001036140df57506107d0614101565b6019546002036140f257506105dc614101565b60195460030361410157506103e85b6019805490600061411183614b48565b91905055505b61412d565b50600954640100000000900461ffff165b8060000361413e5784915050610e44565b6014546201000090046001600160a01b031630148015614168575046600114806141685750466038145b1561417257506111945b6000612710614181838861483c565b61418b919061495c565b905080156141f85730600090815260016020526040812080548392906141b29084906149ba565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6135848187614970565b601454610100900460ff16156142665760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c61565b6142708282613839565b15801561428a5750600c546001600160a01b038281169116145b15611d6f576001600160a01b038083166000908152600560209081526040808320805460ff19908116600190811790925560079093529220805490911690911790556014805461ff001916610100179081905562010000900416614302576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124df565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561438557614385614346565b604052919050565b600067ffffffffffffffff8211156143a7576143a7614346565b5060051b60200190565b6001600160a01b03811681146119fe57600080fd5b600082601f8301126143d757600080fd5b813560206143ec6143e78361438d565b61435c565b82815260059290921b8401810191818101908684111561440b57600080fd5b8286015b8481101561442f578035614422816143b1565b835291830191830161440f565b509695505050505050565b80151581146119fe57600080fd5b6000806040838503121561445b57600080fd5b823567ffffffffffffffff81111561447257600080fd5b61447e858286016143c6565b925050602083013561448f8161443a565b809150509250929050565b6000602082840312156144ac57600080fd5b5035919050565b600060208083528351808285015260005b818110156144e0578581018301518582016040015282016144c4565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561451457600080fd5b823561451f816143b1565b946020939093013593505050565b60006020828403121561453f57600080fd5b8135613949816143b1565b60008060006060848603121561455f57600080fd5b833561456a816143b1565b9250602084013561457a816143b1565b929592945050506040919091013590565b6000806040838503121561459e57600080fd5b50508035926020909101359150565b600080604083850312156145c057600080fd5b823567ffffffffffffffff808211156145d857600080fd5b6145e4868387016143c6565b93506020915081850135818111156145fb57600080fd5b85019050601f8101861361460e57600080fd5b803561461c6143e78261438d565b81815260059190911b8201830190838101908883111561463b57600080fd5b928401925b8284101561465957833582529284019290840190614640565b80955050505050509250929050565b803561ffff8116811461467a57600080fd5b919050565b60008060006060848603121561469457600080fd5b61469d84614668565b92506146ab60208501614668565b91506146b960408501614668565b90509250925092565b600080604083850312156146d557600080fd5b82356146e0816143b1565b9150602083013561448f8161443a565b60006020828403121561470257600080fd5b81356139498161443a565b6000806040838503121561472057600080fd5b61472983614668565b915061473760208401614668565b90509250929050565b6000806040838503121561475357600080fd5b82356146e08161443a565b6000806040838503121561477157600080fd5b823561477c816143b1565b9150602083013561448f816143b1565b600080600080608085870312156147a257600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156147f75781516001600160a01b0316875295820195908201906001016147d2565b509495945050505050565b60408152600061481560408301856147be565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d9357610d93614826565b600181815b8085111561488e57816000190482111561487457614874614826565b8085161561488157918102915b93841c9390800290614858565b509250929050565b6000826148a557506001610d93565b816148b257506000610d93565b81600181146148c857600281146148d2576148ee565b6001915050610d93565b60ff8411156148e3576148e3614826565b50506001821b610d93565b5060208310610133831016604e8410600b8410161715614911575081810a610d93565b61491b8383614853565b806000190482111561492f5761492f614826565b029392505050565b600061394960ff841683614896565b634e487b7160e01b600052601260045260246000fd5b60008261496b5761496b614946565b500490565b81810381811115610d9357610d93614826565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036149b0576149b0614826565b6001019392505050565b80820180821115610d9357610d93614826565b600080604083850312156149e057600080fd5b82516149eb816143b1565b602084015190925061448f816143b1565b60008060408385031215614a0f57600080fd5b505080516020909101519092909150565b600060208284031215614a3257600080fd5b5051919050565b600082614a4857614a48614946565b500690565b600060208284031215614a5f57600080fd5b81516139498161443a565b61ffff818116838216019080821115614a8557614a85614826565b5092915050565b600060208284031215614a9e57600080fd5b8151613949816143b1565b85815284602082015260a060408201526000614ac860a08301866147be565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614afe60808301866147be565b6001600160a01b03949094166040830152506060015292915050565b600080600060608486031215614b2f57600080fd5b8351925060208401519150604084015190509250925092565b600060018201614b5a57614b5a614826565b506001019056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122018f12083ea4ba219ef921d684c5839fffd4483e1fb06e815c17ce7794c6c868d64736f6c63430008130033

Deployed Bytecode Sourcemap

4480:25147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6045:73;;;;;;;;;;;;6076:42;6045:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6045:73:0;;;;;;;;6296:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6296:28:0;245:177:1;14890:341:0;;;;;;;;;;-1:-1:-1;14890:341:0;;;;;:::i;:::-;;:::i;:::-;;19184:151;;;;;;;;;;-1:-1:-1;19184:151:0;;;;;:::i;:::-;;:::i;5515:107::-;;;;;;;;;;-1:-1:-1;5515:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;2924:6:1;2957:15;;;2939:34;;3009:15;;;3004:2;2989:18;;2982:43;3061:15;;3041:18;;;3034:43;;;;2902:2;2887:18;5515:107:0;2718:365:1;10132:80:0;;;;;;;;;;-1:-1:-1;10204:5:0;;;;;;;;;;;-1:-1:-1;;;10204:5:0;;;;10132:80;;;;10204:5;10132:80;:::i;5984:26::-;;;;;;;;;;-1:-1:-1;5984:26:0;;;;;;;-1:-1:-1;;;;;5984:26:0;;;5951;;;;;;;;;;-1:-1:-1;5951:26:0;;;;;;;;;;;4054:14:1;;4047:22;4029:41;;4017:2;4002:18;5951:26:0;3889:187:1;10740:161:0;;;;;;;;;;-1:-1:-1;10740:161:0;;;;;:::i;:::-;;:::i;14114:140::-;;;;;;;;;;-1:-1:-1;14114:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14212:34:0;14188:4;14212:34;;;:25;:34;;;;;;;;;14114:140;17551:114;;;;;;;;;;;;;:::i;6707:26::-;;;;;;;;;;-1:-1:-1;6707:26:0;;;;;;;;9867:83;;;;;;;;;;;;;:::i;11410:306::-;;;;;;;;;;-1:-1:-1;11410:306:0;;;;;:::i;:::-;;:::i;17163:264::-;;;;;;;;;;-1:-1:-1;17163:264:0;;;;;:::i;:::-;;:::i;26943:447::-;;;;;;;;;;-1:-1:-1;26943:447:0;;;;;:::i;:::-;;:::i;6404:33::-;;;;;;;;;;;;;;;;14418:141;;;;;;;;;;;;;:::i;5748:42::-;;;;;;;;;;;;5786:4;5748:42;;6331:25;;;;;;;;;;;;;;;;9956:80;;;;;;;;;;-1:-1:-1;9956:80:0;;5215:2;6652:36:1;;6640:2;6625:18;9956:80:0;6510:184:1;15840:453:0;;;;;;;;;;-1:-1:-1;15840:453:0;;;;;:::i;:::-;;:::i;13689:140::-;;;;;;;;;;-1:-1:-1;13689:140:0;;;;;:::i;:::-;;:::i;16882:273::-;;;;;;;;;;-1:-1:-1;16882:273:0;;;;;:::i;:::-;;:::i;6017:21::-;;;;;;;;;;-1:-1:-1;6017:21:0;;;;-1:-1:-1;;;;;6017:21:0;;;6560:34;;;;;;;;;;-1:-1:-1;6560:34:0;;;;;;;;17673:189;;;;;;;;;;-1:-1:-1;17673:189:0;;;;;:::i;:::-;;:::i;6740:37::-;;;;;;;;;;;;;;;;18577:217;;;;;;;;;;-1:-1:-1;18577:217:0;;;;;:::i;:::-;;:::i;8505:654::-;;;;;;;;;;-1:-1:-1;8505:654:0;;;;;:::i;:::-;;:::i;13837:127::-;;;;;;;;;;-1:-1:-1;13837:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13928:28:0;13904:4;13928:28;;;:19;:28;;;;;;;;;13837:127;6601:36;;;;;;;;;;-1:-1:-1;6601:36:0;;;;;;;;;;;13972:134;;;;;;;;;;-1:-1:-1;13972:134:0;;;;;:::i;:::-;;:::i;6674:26::-;;;;;;;;;;;;;;;;12984:557;;;;;;;;;;-1:-1:-1;12984:557:0;;;;;:::i;:::-;;:::i;13549:132::-;;;;;;;;;;-1:-1:-1;13549:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13643:30:0;13619:4;13643:30;;;:21;:30;;;;;;;;;13549:132;17435:108;;;;;;;;;;;;;:::i;10442:117::-;;;;;;;;;;-1:-1:-1;10442:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10535:16:0;10508:7;10535:16;;;:7;:16;;;;;;;10442:117;9167:310;;;;;;;;;;;;;:::i;15650:182::-;;;;;;;;;;;;;:::i;12412:564::-;;;;;;;;;;-1:-1:-1;12412:564:0;;;;;:::i;:::-;;:::i;10218:79::-;;;;;;;;;;-1:-1:-1;10288:6:0;;-1:-1:-1;;;;;10288:6:0;10218:79;;11227:175;;;;;;;;;;;;;:::i;25535:906::-;;;;;;;;;;;;;:::i;19073:103::-;;;;;;;;;;-1:-1:-1;19073:103:0;;;;;:::i;:::-;;:::i;10567:165::-;;;;;;;;;;-1:-1:-1;10567:165:0;;;;;:::i;:::-;;:::i;26639:296::-;;;;;;;;;;-1:-1:-1;26639:296:0;;;;;:::i;:::-;;:::i;6363:34::-;;;;;;;;;;-1:-1:-1;6363:34:0;;;;;;;;16301:366;;;;;;;;;;-1:-1:-1;16301:366:0;;;;;:::i;:::-;;:::i;18802:263::-;;;;;;;;;;-1:-1:-1;18802:263:0;;;;;:::i;:::-;;:::i;6125:94::-;;;;;;;;;;-1:-1:-1;6125:94:0;;;;-1:-1:-1;;;;;6125:94:0;;;6784:31;;;;;;;;;;;;;;;;15376:202;;;;;;;;;;-1:-1:-1;15376:202:0;;;;;:::i;:::-;;:::i;5631:108::-;;;;;;;;;;-1:-1:-1;5631:108:0;;;;;;;;;;;;;;;;;;;;;;10303:133;;;;;;;;;;-1:-1:-1;10303:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10405:19:0;;;10387:7;10405:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10303:133;11724:680;;;;;;;;;;-1:-1:-1;11724:680:0;;;;;:::i;:::-;;:::i;16675:199::-;;;;;;;;;;-1:-1:-1;16675:199:0;;;;;:::i;:::-;;:::i;26449:182::-;;;;;;;;;;;;;:::i;14631:251::-;;;;;;;;;;-1:-1:-1;14631:251:0;;;;;:::i;:::-;;:::i;17870:699::-;;;;;;;;;;-1:-1:-1;17870:699:0;;;;;:::i;:::-;;:::i;6250:39::-;;;;;;;;;;-1:-1:-1;6250:39:0;;;;-1:-1:-1;;;6250:39:0;;;;;;15239:129;;;;;;;;;;-1:-1:-1;15239:129:0;;;;;:::i;:::-;;:::i;14262:148::-;;;;;;;;;;-1:-1:-1;14262:148:0;;;;;:::i;:::-;;:::i;14890:341::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;;;;;;;;;15129:3:::1;15110:8;:15;:22;;15102:52;;;::::0;-1:-1:-1;;;15102:52:0;;10309:2:1;15102:52:0::1;::::0;::::1;10291:21:1::0;10348:2;10328:18;;;10321:30;10387:19;10367:18;;;10360:47;10424:18;;15102:52:0::1;10107:341:1::0;15102:52:0::1;15165:11;::::0;:58:::1;::::0;-1:-1:-1;;;15165:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;15165:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;15205:8;;15215:7;;15165:58:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14890:341:::0;;:::o;19184:151::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;19262:26:::1;19279:9;19262:26:::0;::::1;:::i;:::-;19299:12;:28:::0;-1:-1:-1;19184:151:0:o;10740:161::-;10817:4;10834:37;10843:10;10855:7;10864:6;10834:8;:37::i;:::-;-1:-1:-1;10889:4:0;10740:161;;;;;:::o;17551:114::-;17598:7;17643:13;5215:2;17643;:13;:::i;:::-;17625:14;;:32;;;;:::i;:::-;17618:39;;17551:114;:::o;9867:83::-;9922:7;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;;5068:9;5259:30;:::i;11410:306::-;-1:-1:-1;;;;;11531:19:0;;11510:4;11531:19;;;:11;:19;;;;;;;;11551:10;11531:31;;;;;;;;-1:-1:-1;;11531:52:0;11527:126;;-1:-1:-1;;;;;11600:19:0;;;;;;:11;:19;;;;;;;;11620:10;11600:31;;;;;;;:41;;11635:6;;11600:19;:41;;11635:6;;11600:41;:::i;:::-;;;;-1:-1:-1;;11527:126:0;11672:36;11682:6;11690:9;11701:6;11672:9;:36::i;:::-;11665:43;11410:306;-1:-1:-1;;;;11410:306:0:o;17163:264::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;17305:3:::1;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;17295:13;;;;:::i;:::-;17283:7:::0;17272;5276:13:::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;17262:17;;;;:::i;:::-;17261:29;;;;:::i;:::-;:48;;17253:109;;;::::0;-1:-1:-1;;;17253:109:0;;13569:2:1;17253:109:0::1;::::0;::::1;13551:21:1::0;13608:2;13588:18;;;13581:30;13647:34;13627:18;;;13620:62;13718:18;13698;;;13691:46;13754:19;;17253:109:0::1;13367:412:1::0;17253:109:0::1;17412:7:::0;17401;5276:13:::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;17391:17;;;;:::i;:::-;17390:29;;;;:::i;:::-;17373:14;:46:::0;-1:-1:-1;;17163:264:0:o;26943:447::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;27078:7:::1;:14;27059:8;:15;:33;27051:67;;;::::0;-1:-1:-1;;;27051:67:0;;13986:2:1;27051:67:0::1;::::0;::::1;13968:21:1::0;14025:2;14005:18;;;13998:30;14064:23;14044:18;;;14037:51;14105:18;;27051:67:0::1;13784:345:1::0;27051:67:0::1;27134:8;27129:254;27152:8;:15;27148:1;:19;;;27129:254;;;27233:13;5215:2;27233;:13;:::i;:::-;27222:7;27230:1;27222:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27207:10;10508:7:::0;10535:16;;;:7;:16;;;;;;27197:49:::1;;27189:80;;;::::0;-1:-1:-1;;;27189:80:0;;14468:2:1;27189:80:0::1;::::0;::::1;14450:21:1::0;14507:2;14487:18;;;14480:30;14546:20;14526:18;;;14519:48;14584:18;;27189:80:0::1;14266:342:1::0;27189:80:0::1;27284:87;27301:10;27313:8;27322:1;27313:11;;;;;;;;;;:::i;:::-;;;;;;;5215:2;27337;:13;;;;:::i;:::-;27326:7;27334:1;27326:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27352:5;27359::::0;27366:4:::1;27284:16;:87::i;:::-;-1:-1:-1::0;27169:3:0;::::1;::::0;::::1;:::i;:::-;;;;27129:254;;;;26943:447:::0;;:::o;14418:141::-;10535:7;:16;;;;6076:42;14471:7;10535:16;;;;;14471:7;;14510:39;;;:::i;:::-;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;;5068:9;5259:30;:::i;:::-;14499:51;;;;:::i;15840:453::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;15948:14:::1;::::0;::::1;;15947:15;15939:45;;;::::0;-1:-1:-1;;;15939:45:0;;15147:2:1;15939:45:0::1;::::0;::::1;15129:21:1::0;15186:2;15166:18;;;15159:30;15225:19;15205:18;;;15198:47;15262:18;;15939:45:0::1;14945:341:1::0;15939:45:0::1;5786:4;16003:6;:21;;;;:65;;;;;5836:4;16045:7;:23;;;;16003:65;:117;;;;;5890:4;16089:11;:31;;;;16003:117;15995:170;;;::::0;-1:-1:-1;;;15995:170:0;;15493:2:1;15995:170:0::1;::::0;::::1;15475:21:1::0;15532:2;15512:18;;;15505:30;15571:25;15551:18;;;15544:53;15614:18;;15995:170:0::1;15291:347:1::0;15995:170:0::1;16176:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16212:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16250:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15840:453::o;13689:140::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;-1:-1:-1;;;;;13781:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13781:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13689:140::o;16882:273::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;17027:4:::1;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;17013:11;::::0;17023:1:::1;17013:11;:::i;:::-;:18;;;;:::i;:::-;17001:7:::0;16990;5276:13:::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;16980:17;;;;:::i;:::-;16979:29;;;;:::i;:::-;:53;;16971:121;;;::::0;-1:-1:-1;;;16971:121:0;;15845:2:1;16971:121:0::1;::::0;::::1;15827:21:1::0;15884:2;15864:18;;;15857:30;15923:34;15903:18;;;15896:62;15994:25;15974:18;;;15967:53;16037:19;;16971:121:0::1;15643:419:1::0;16971:121:0::1;17140:7:::0;17129;5276:13:::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;17119:17;;;;:::i;:::-;17118:29;;;;:::i;:::-;17103:12;:44:::0;-1:-1:-1;;16882:273:0:o;17673:189::-;17802:6;;-1:-1:-1;;;;;17802:6:0;17764:7;10535:16;;;:7;:16;;;;;;5937:5;;17792:41;;17812:21;;17792:41;:::i;:::-;17791:62;;;;:::i;18577:217::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;18707:3:::1;18681:22;:29;;18673:64;;;::::0;-1:-1:-1;;;18673:64:0;;16269:2:1;18673:64:0::1;::::0;::::1;16251:21:1::0;16308:2;16288:18;;;16281:30;16347:24;16327:18;;;16320:52;16389:18;;18673:64:0::1;16067:346:1::0;18673:64:0::1;18748:13;:38:::0;18577:217::o;8505:654::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;-1:-1:-1;;;;;8584:22:0;::::1;8576:96;;;::::0;-1:-1:-1;;;8576:96:0;;16620:2:1;8576:96:0::1;::::0;::::1;16602:21:1::0;16659:2;16639:18;;;16632:30;16698:34;16678:18;;;16671:62;16769:31;16749:18;;;16742:59;16818:19;;8576:96:0::1;16418:425:1::0;8576:96:0::1;-1:-1:-1::0;;;;;;;8691:16:0;::::1;::::0;8683:90:::1;;;::::0;-1:-1:-1;;;8683:90:0;;16620:2:1;8683:90:0::1;::::0;::::1;16602:21:1::0;16659:2;16639:18;;;16632:30;16698:34;16678:18;;;16671:62;16769:31;16749:18;;;16742:59;16818:19;;8683:90:0::1;16418:425:1::0;8683:90:0::1;8804:6;::::0;8784:34:::1;::::0;-1:-1:-1;;;;;8804:6:0::1;;8784:19;:34::i;:::-;8829:35;8849:8;8859:4;8829:19;:35::i;:::-;8899:6;::::0;-1:-1:-1;;;;;8899:6:0::1;8909:1;10535:16:::0;;;:7;:16;;;;;;8889:21;8885:127:::1;;8944:6;::::0;-1:-1:-1;;;;;8944:6:0::1;10508:7:::0;10535:16;;;:7;:16;;;;;;8927:73:::1;::::0;8944:6;8952:8;;8962:17:::1;10442:117:::0;8927:73:::1;;8885:127;9051:6;::::0;;-1:-1:-1;;;;;9068:17:0;;::::1;-1:-1:-1::0;;;;;;9068:17:0;::::1;::::0;::::1;::::0;;;9101:40:::1;::::0;9051:6;::::1;::::0;9068:17;9051:6;;9101:40:::1;::::0;9032:16:::1;::::0;9101:40:::1;8565:594;8505:654:::0;:::o;13972:134::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;-1:-1:-1;;;;;14060:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14060:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13972:134::o;12984:557::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;13059:14:::1;::::0;::::1;;13058:15;13050:24;;;::::0;::::1;;13109:4;-1:-1:-1::0;;;;;13093:21:0;::::1;::::0;13085:48:::1;;;::::0;-1:-1:-1;;;13085:48:0;;17050:2:1;13085:48:0::1;::::0;::::1;17032:21:1::0;17089:2;17069:18;;;17062:30;17128:16;17108:18;;;17101:44;17162:18;;13085:48:0::1;16848:338:1::0;13085:48:0::1;13144:11;:31:::0;;-1:-1:-1;;;;;;13144:31:0::1;::::0;-1:-1:-1;;;;;13144:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13190:23:::1;::::0;;-1:-1:-1;;;13190:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13190:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13190:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13190:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13186:348;;13523:8;::::0;::::1;13186:348;13277:9;:29:::0;;-1:-1:-1;;13277:29:0::1;;-1:-1:-1::0;;;;;13277:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13308:6:::1;:22:::0;;-1:-1:-1;;;;;;13308:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13332:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;13332:22:0::1;-1:-1:-1::0;13332:22:0::1;::::0;;13379:6:::1;::::0;13395:9;;13370:55:::1;::::0;13379:6;::::1;::::0;13395:9;;::::1;;-1:-1:-1::0;;13370:8:0::1;:55::i;:::-;13472:9;::::0;13440:62:::1;::::0;13457:4:::1;::::0;13472:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13472:9:0::1;-1:-1:-1::0;;13440:8:0::1;:62::i;13186:348::-;12984:557:::0;:::o;17435:108::-;17478:7;17521:13;5215:2;17521;:13;:::i;:::-;17505:12;;:30;;;;:::i;9167:310::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;9234:14:::1;::::0;::::1;;9226:74;;;::::0;-1:-1:-1;;;9226:74:0;;17783:2:1;9226:74:0::1;::::0;::::1;17765:21:1::0;17822:2;17802:18;;;17795:30;17861:34;17841:18;;;17834:62;17932:17;17912:18;;;17905:45;17967:19;;9226:74:0::1;17581:411:1::0;9226:74:0::1;9331:6;::::0;9311:34:::1;::::0;-1:-1:-1;;;;;9331:6:0::1;;9311:19;:34::i;:::-;9375:6;::::0;;-1:-1:-1;;;;;;9392:19:0;::::1;::::0;;;9427:42:::1;::::0;-1:-1:-1;;;;;9375:6:0;;::::1;::::0;9356:16:::1;::::0;9375:6;;9427:42:::1;::::0;9356:16;;9427:42:::1;9215:262;9167:310::o:0;15650:182::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;15803:14:::1;:21:::0;;-1:-1:-1;;15803:21:0::1;15820:4;15803:21;::::0;;15650:182::o;12412:564::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;12494:7:::1;12489:480;;-1:-1:-1::0;;;;;12518:13:0;;::::1;12534:5;12518:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12518:21:0::1;::::0;;12554:11:::1;::::0;:34;;-1:-1:-1;;;12554:34:0;;::::1;::::0;::::1;18165:74:1::0;;;;18255:18;;;18248:50;;;;12554:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18138:18:1;;12554:34:0::1;17997:307:1::0;12489:480:0::1;12625:17;::::0;:22;12621:135:::1;;12714:6;12694:17;;12676:15;:35;;;;:::i;:::-;:44;12668:72;;;::::0;-1:-1:-1;;;12668:72:0;;18511:2:1;12668:72:0::1;::::0;::::1;18493:21:1::0;18550:2;18530:18;;;18523:30;18589:17;18569:18;;;18562:45;18624:18;;12668:72:0::1;18309:339:1::0;12668:72:0::1;-1:-1:-1::0;;;;;12779:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12778:14;12770:54;;;::::0;-1:-1:-1;;;12770:54:0;;18855:2:1;12770:54:0::1;::::0;::::1;18837:21:1::0;18894:2;18874:18;;;18867:30;18933:29;18913:18;;;18906:57;18980:18;;12770:54:0::1;18653:351:1::0;12770:54:0::1;-1:-1:-1::0;;;;;12839:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;12839:20:0::1;12855:4;12839:20:::0;;::::1;::::0;;;12894:15:::1;12874:17;:35:::0;12924:11:::1;::::0;:33;;-1:-1:-1;;;12924:33:0;;::::1;::::0;::::1;18165:74:1::0;;;;18255:18;;;18248:50;12924:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18138:18:1;;12924:33:0::1;17997:307:1::0;12489:480:0::1;12412:564:::0;;:::o;11227:175::-;8359:6;;11293:4;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;11342:9:::1;::::0;11310:62:::1;::::0;11327:4:::1;::::0;11342:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11342:9:0::1;-1:-1:-1::0;;11310:8:0::1;:62::i;:::-;-1:-1:-1::0;11390:4:0::1;11227:175:::0;:::o;25535:906::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;25597:14:::1;::::0;::::1;;25596:15;25588:52;;;::::0;-1:-1:-1;;;25588:52:0;;19211:2:1;25588:52:0::1;::::0;::::1;19193:21:1::0;19250:2;19230:18;;;19223:30;19289:26;19269:18;;;19262:54;19333:18;;25588:52:0::1;19009:348:1::0;25588:52:0::1;25659:16;::::0;::::1;::::0;::::1;;;25651:53;;;::::0;-1:-1:-1;;;25651:53:0;;19564:2:1;25651:53:0::1;::::0;::::1;19546:21:1::0;19603:2;19583:18;;;19576:30;19642:26;19622:18;;;19615:54;19686:18;;25651:53:0::1;19362:348:1::0;25651:53:0::1;25727:11;::::0;;;::::1;-1:-1:-1::0;;;;;25727:11:0::1;25715:106;;25769:11;:40:::0;;-1:-1:-1;;;;;;25769:40:0::1;25803:4;25769:40:::0;::::1;;::::0;;25715:106:::1;25835:11;::::0;25857:6:::1;::::0;25835:87:::1;::::0;-1:-1:-1;;;25835:87:0;;-1:-1:-1;;;;;25857:6:0;;::::1;25835:87;::::0;::::1;19938:74:1::0;20060:10;25872:12:0::1;20048:23:1::0;20028:18;;;20021:51;20120:18;25894:15:0::1;20108:31:1::0;20088:18;;;20081:59;5215:2:0::1;20156:18:1::0;;;20149:45;25835:11:0;;;::::1;;::::0;:21:::1;::::0;19910:19:1;;25835:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;25948:11:0::1;::::0;25979:6:::1;::::0;-1:-1:-1;;;;;25979:6:0;;::::1;10508:7:::0;10535:16;;;:7;:16;;;;;;;;25948:39;;-1:-1:-1;;;25948:39:0;;::::1;::::0;::::1;391:25:1::0;;;;25948:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;25948:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;25948:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25948:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25944:207:::0;::::1;;26059:13;:29:::0;;;;26103:10:::1;:27:::0;25944:207:::1;26161:14;:21:::0;;-1:-1:-1;;26161:21:0::1;26178:4;26161:21;::::0;;;;26207:15:::1;26193:11;:29:::0;26273:48:::1;::::0;-1:-1:-1;;;26273:48:0;;26293:12:::1;26324:1;26273:48:::0;;::::1;20629:25:1::0;;;;26315:4:0::1;20670:18:1::0;;;20663:83;26324:1:0;-1:-1:-1;;;;;26273:11:0;;;::::1;;::::0;:19:::1;::::0;20602:18:1;;26273:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;;:::i;:::-;26272:58;::::0;26329:1:::1;26272:58;:::i;:::-;26271:70;::::0;26334:7:::1;26271:70;:::i;:::-;26252:90;::::0;:15:::1;:90;:::i;:::-;26233:16;:109:::0;26381:11:::1;::::0;;;::::1;-1:-1:-1::0;;;;;26381:11:0::1;26353:41;::::0;;;:19:::1;:41;::::0;;;;:48;;26397:4:::1;-1:-1:-1::0;;26353:48:0;;::::1;::::0;::::1;::::0;;;26412:14:::1;:21:::0;;;;::::1;::::0;;::::1;::::0;;25535:906::o;19073:103::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;19144:14:::1;:24:::0;;-1:-1:-1;;19144:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19073:103::o;10567:165::-;10645:4;10662:40;10672:10;10684:9;10695:6;10662:9;:40::i;:::-;-1:-1:-1;10720:4:0;;10567:165;-1:-1:-1;;;10567:165:0:o;26639:296::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;26717:16:::1;::::0;::::1;::::0;::::1;;;26713:111;;;26775:4;-1:-1:-1::0;;;;;26758:22:0;::::1;::::0;26750:62:::1;;;::::0;-1:-1:-1;;;26750:62:0;;21265:2:1;26750:62:0::1;::::0;::::1;21247:21:1::0;21304:2;21284:18;;;21277:30;21343:29;21323:18;;;21316:57;21390:18;;26750:62:0::1;21063:351:1::0;26750:62:0::1;26888:6;::::0;26896:30:::1;::::0;-1:-1:-1;;;26896:30:0;;26920:4:::1;26896:30;::::0;::::1;160:74:1::0;26856:5:0;;-1:-1:-1;;;;;26873:14:0;;::::1;::::0;::::1;::::0;26888:6;;;::::1;::::0;26873:14;;26896:15:::1;::::0;133:18:1;;26896:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26873:54;::::0;-1:-1:-1;;;;;;26873:54:0::1;::::0;;;;;;-1:-1:-1;;;;;21611:55:1;;;26873:54:0::1;::::0;::::1;21593:74:1::0;21683:18;;;21676:34;21566:18;;26873:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16301:366::-:0;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;16386:7:::1;:25:::0;;-1:-1:-1;;16422:33:0;16386:25;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;16422:33:0;;;;;;;::::1;;::::0;;16486:21:::1;16422:33:::0;16386:25;16486:21:::1;:::i;:::-;16466:7;:41:::0;;-1:-1:-1;;16466:41:0::1;::::0;::::1;::::0;;::::1;;;::::0;;16553:9:::1;:17:::0;-1:-1:-1;;16534:36:0::1;::::0;16553:17;;::::1;::::0;::::1;::::0;16534:16:::1;:36;:::i;:::-;16589:7;:17:::0;16518:52:::1;::::0;;::::1;::::0;-1:-1:-1;16589:17:0;;::::1;;:26:::0;-1:-1:-1;16589:26:0::1;16581:78;;;::::0;-1:-1:-1;;;16581:78:0;;22346:2:1;16581:78:0::1;::::0;::::1;22328:21:1::0;22385:2;22365:18;;;22358:30;22424:34;22404:18;;;22397:62;-1:-1:-1;;;22475:18:1;;;22468:37;22522:19;;16581:78:0::1;22144:403:1::0;18802:263:0;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;18911:19:::1;:33:::0;;-1:-1:-1;;;;18911:33:0::1;-1:-1:-1::0;;;18911:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18955:22:::1;:47:::0;;-1:-1:-1;;18955:47:0::1;::::0;::::1;;;::::0;;19018:39:::1;::::0;4029:41:1;;;19018:39:0::1;::::0;4017:2:1;4002:18;19018:39:0::1;;;;;;;;18802:263:::0;;:::o;15376:202::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;15532:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;15532:38:0;;-1:-1:-1;;;;;178:55:1;;;15532:38:0::1;::::0;::::1;160:74:1::0;15532:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;15532:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15376:202:::0;:::o;11724:680::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;11804:16:::1;::::0;::::1;::::0;::::1;;;11803:17;11795:60;;;::::0;-1:-1:-1;;;11795:60:0;;22754:2:1;11795:60:0::1;::::0;::::1;22736:21:1::0;22793:2;22773:18;;;22766:30;22832:32;22812:18;;;22805:60;22882:18;;11795:60:0::1;22552:354:1::0;11795:60:0::1;11866:20;11899:9;11866:43;;11920:16;11950:10;-1:-1:-1::0;;;;;11950:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11939:40:0::1;;11988:4;11995:10;-1:-1:-1::0;;;;;11995:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11939:74;::::0;-1:-1:-1;;;;;;11939:74:0::1;::::0;;;;;;-1:-1:-1;;;;;23420:15:1;;;11939:74:0::1;::::0;::::1;23402:34:1::0;23472:15;;23452:18;;;23445:43;23314:18;;11939:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12032:6;::::0;-1:-1:-1;;;;;12032:6:0;;::::1;12042:5;12024:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12024:23:0::1;::::0;;11920:93;;-1:-1:-1;12062:22:0;::::1;12058:200;;12121:10;-1:-1:-1::0;;;;;12121:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12110:43:0::1;;12162:4;12169:10;-1:-1:-1::0;;;;;12169:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12110:77;::::0;-1:-1:-1;;;;;;12110:77:0::1;::::0;;;;;;-1:-1:-1;;;;;23420:15:1;;;12110:77:0::1;::::0;::::1;23402:34:1::0;23472:15;;23452:18;;;23445:43;23314:18;;12110:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12101:6;:86:::0;;-1:-1:-1;;;;;;12101:86:0::1;-1:-1:-1::0;;;;;12101:86:0;;;::::1;::::0;;;::::1;::::0;;12058:200:::1;;;12229:6;:17:::0;;-1:-1:-1;;;;;;12229:17:0::1;-1:-1:-1::0;;;;;12229:17:0;::::1;;::::0;;12058:200:::1;12268:9;:22:::0;;-1:-1:-1;;12268:22:0::1;;-1:-1:-1::0;;;;;12268:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12309:6:::1;::::0;;::::1;-1:-1:-1::0;12301:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;12301:22:0::1;-1:-1:-1::0;12301:22:0::1;::::0;;12366:9;;12334:62:::1;::::0;12351:4:::1;::::0;12366:9;::::1;;-1:-1:-1::0;;12334:8:0::1;:62::i;16675:199::-:0;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;-1:-1:-1;;;;;16762:25:0;::::1;16754:61;;;::::0;-1:-1:-1;;;16754:61:0;;23701:2:1;16754:61:0::1;::::0;::::1;23683:21:1::0;23740:2;23720:18;;;23713:30;23779:25;23759:18;;;23752:53;23822:18;;16754:61:0::1;23499:347:1::0;16754:61:0::1;16826:17;:40:::0;;-1:-1:-1;;;;;;16826:40:0::1;-1:-1:-1::0;;;;;16826:40:0;;;::::1;::::0;;;::::1;::::0;;16675:199::o;26449:182::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;26516:16:::1;::::0;::::1;::::0;::::1;;;26515:17;26507:58;;;::::0;-1:-1:-1;;;26507:58:0;;24053:2:1;26507:58:0::1;::::0;::::1;24035:21:1::0;24092:2;24072:18;;;24065:30;24131;24111:18;;;24104:58;24179:18;;26507:58:0::1;23851:352:1::0;26507:58:0::1;26584:6;::::0;26576:47:::1;::::0;-1:-1:-1;;;;;26584:6:0;;::::1;::::0;26601:21:::1;26576:47:::0;::::1;;;::::0;26584:6:::1;26576:47:::0;26584:6;26576:47;26601:21;26584:6;26576:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14631:251:::0;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;14825:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;14825:49:0;;-1:-1:-1;;;;;18183:55:1;;;14825:49:0::1;::::0;::::1;18165:74:1::0;18282:14;;18275:22;18255:18;;;18248:50;14825:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;18138:18:1;;14825:49:0::1;17997:307:1::0;17870:699:0;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;18070:16;18050;5276:13:::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;18040:26;;;;:::i;:::-;18039:47;;;;:::i;:::-;18023:13;:63:::0;18138:13;18121;5276::::1;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;18111:23;;;;:::i;:::-;18110:41;;;;:::i;:::-;18097:10;:54:::0;;;18170:13:::1;::::0;:27:::1;;18162:73;;;::::0;-1:-1:-1;;;18162:73:0;;24410:2:1;18162:73:0::1;::::0;::::1;24392:21:1::0;24449:2;24429:18;;;24422:30;24488:34;24468:18;;;24461:62;-1:-1:-1;;;24539:18:1;;;24532:31;24580:19;;18162:73:0::1;24208:397:1::0;18162:73:0::1;18279:6;::::0;-1:-1:-1;;;;;18279:6:0::1;10508:7:::0;10535:16;;;:7;:16;;;;;;5937:5:::1;::::0;18269:23:::1;::::0;18289:3:::1;18269:23;:::i;:::-;18268:44;;;;:::i;:::-;18254:10;;:58;;18246:106;;;::::0;-1:-1:-1;;;18246:106:0;;24812:2:1;18246:106:0::1;::::0;::::1;24794:21:1::0;24851:2;24831:18;;;24824:30;24890:34;24870:18;;;24863:62;-1:-1:-1;;;24941:18:1;;;24934:33;24984:19;;18246:106:0::1;24610:399:1::0;18246:106:0::1;18395:9;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;18385:19;;;;:::i;:::-;18371:10;;:33;;18363:92;;;::::0;-1:-1:-1;;;18363:92:0;;25216:2:1;18363:92:0::1;::::0;::::1;25198:21:1::0;25255:2;25235:18;;;25228:30;25294:34;25274:18;;;25267:62;-1:-1:-1;;;25345:18:1;;;25338:44;25399:19;;18363:92:0::1;25014:410:1::0;18363:92:0::1;18501:9;5276:13;5215:2;5276;:13;:::i;:::-;5259:30;::::0;5068:9:::1;5259:30;:::i;:::-;18491:19;;;;:::i;:::-;18474:13;;:36;;18466:95;;;::::0;-1:-1:-1;;;18466:95:0;;25216:2:1;18466:95:0::1;::::0;::::1;25198:21:1::0;25255:2;25235:18;;;25228:30;25294:34;25274:18;;;25267:62;-1:-1:-1;;;25345:18:1;;;25338:44;25399:19;;18466:95:0::1;25014:410:1::0;18466:95:0::1;17870:699:::0;;;;:::o;15239:129::-;15326:11;;:34;;-1:-1:-1;;;15326:34:0;;-1:-1:-1;;;;;178:55:1;;;15326:34:0;;;160:74:1;15302:4:0;;15326:11;;;;;:25;;133:18:1;;15326:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14262:148::-;8359:6;;-1:-1:-1;;;;;8359:6:0;8369:10;8359:20;8351:50;;;;-1:-1:-1;;;8351:50:0;;9963:2:1;8351:50:0;;;9945:21:1;10002:2;9982:18;;;9975:30;-1:-1:-1;;;;;;;;;;;10021:18:1;;;10014:47;10078:18;;8351:50:0;9761:341:1;8351:50:0;-1:-1:-1;;;;;14358:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14358:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14262:148::o;10909:310::-;-1:-1:-1;;;;;11004:20:0;;10996:52;;;;-1:-1:-1;;;10996:52:0;;25631:2:1;10996:52:0;;;25613:21:1;25670:2;25650:18;;;25643:30;-1:-1:-1;;;25689:18:1;;;25682:49;25748:18;;10996:52:0;25429:343:1;10996:52:0;-1:-1:-1;;;;;11067:21:0;;11059:53;;;;-1:-1:-1;;;11059:53:0;;25631:2:1;11059:53:0;;;25613:21:1;25670:2;25650:18;;;25643:30;-1:-1:-1;;;25689:18:1;;;25682:49;25748:18;;11059:53:0;25429:343:1;11059:53:0;-1:-1:-1;;;;;11125:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11178:33;;391:25:1;;;11178:33:0;;364:18:1;11178:33:0;;;;;;;10909:310;;;:::o;19797:2494::-;19876:4;-1:-1:-1;;;;;19901:18:0;;19893:68;;;;-1:-1:-1;;;19893:68:0;;25979:2:1;19893:68:0;;;25961:21:1;26018:2;25998:18;;;25991:30;26057:34;26037:18;;;26030:62;-1:-1:-1;;;26108:18:1;;;26101:35;26153:19;;19893:68:0;25777:401:1;19893:68:0;-1:-1:-1;;;;;19980:16:0;;19972:64;;;;-1:-1:-1;;;19972:64:0;;26385:2:1;19972:64:0;;;26367:21:1;26424:2;26404:18;;;26397:30;26463:34;26443:18;;;26436:62;-1:-1:-1;;;26514:18:1;;;26507:33;26557:19;;19972:64:0;26183:399:1;19972:64:0;20064:1;20055:6;:10;20047:64;;;;-1:-1:-1;;;20047:64:0;;26789:2:1;20047:64:0;;;26771:21:1;26828:2;26808:18;;;26801:30;26867:34;26847:18;;;26840:62;-1:-1:-1;;;26918:18:1;;;26911:39;26967:19;;20047:64:0;26587:405:1;20047:64:0;-1:-1:-1;;;;;20210:13:0;;20122:8;20210:13;;;:7;:13;;;;;;20122:8;;;;20210:13;;20206:162;;;20246:4;20240:10;;20206:162;;;-1:-1:-1;;;;;20272:11:0;;;;;;:7;:11;;;;;;;;20268:100;;;20307:4;20300:11;;20268:100;;;-1:-1:-1;20352:4:0;20268:100;20382:20;20393:4;20399:2;20382:10;:20::i;:::-;20378:874;;;20423:14;;;;20419:319;;20463:5;20458:265;;20493:34;;-1:-1:-1;;;20493:34:0;;27199:2:1;20493:34:0;;;27181:21:1;27238:2;27218:18;;;27211:30;27277:26;27257:18;;;27250:54;27321:18;;20493:34:0;26997:348:1;20458:265:0;-1:-1:-1;;;;;20558:31:0;;;;;;:25;:31;;;;;;;;20557:32;:66;;;;-1:-1:-1;;;;;;20594:29:0;;;;;;:25;:29;;;;;;;;20593:30;20557:66;20553:170;;;20648:55;;-1:-1:-1;;;20648:55:0;;27552:2:1;20648:55:0;;;27534:21:1;27591:2;27571:18;;;27564:30;27630:34;27610:18;;;27603:62;-1:-1:-1;;;27681:18:1;;;27674:43;27734:19;;20648:55:0;27350:409:1;20553:170:0;20756:3;:11;;;;20763:4;20756:11;20752:232;;;-1:-1:-1;;;;;20792:27:0;;;;;;:21;:27;;;;;;;;20791:28;:58;;;;-1:-1:-1;;;;;;20824:25:0;;;;;;:21;:25;;;;;;;;20823:26;20791:58;20787:182;;;20892:12;;20882:6;:22;;20874:75;;;;-1:-1:-1;;;20874:75:0;;27966:2:1;20874:75:0;;;27948:21:1;28005:2;27985:18;;;27978:30;28044:34;28024:18;;;28017:62;-1:-1:-1;;;28095:18:1;;;28088:38;28143:19;;20874:75:0;27764:404:1;20874:75:0;21016:9;;-1:-1:-1;;;;;21002:24:0;;;21016:9;;;;;21002:24;;;;:33;;;21031:4;21030:5;21002:33;20998:243;;;-1:-1:-1;;;;;21061:25:0;;;;;;:21;:25;;;;;;;;21056:170;;21145:14;;21135:6;21119:13;21129:2;-1:-1:-1;;;;;10535:16:0;10508:7;10535:16;;;:7;:16;;;;;;;10442:117;21119:13;:22;;;;:::i;:::-;:40;;21111:95;;;;-1:-1:-1;;;21111:95:0;;28375:2:1;21111:95:0;;;28357:21:1;28414:2;28394:18;;;28387:30;28453:34;28433:18;;;28426:62;-1:-1:-1;;;28504:18:1;;;28497:40;28554:19;;21111:95:0;28173:406:1;21111:95:0;21268:4;21264:950;;;21294:6;;-1:-1:-1;;;21294:6:0;;;;21293:7;:32;;;;-1:-1:-1;;;;;;21304:21:0;;21320:4;21304:21;;21293:32;21289:914;;;21350:19;;-1:-1:-1;;;21350:19:0;;;;21346:551;;;21445:4;21396:28;10535:16;;;:7;:16;;;;;;21502:13;;21478:37;;21474:404;;21562:10;;21603:22;;;;21599:97;;;21660:13;;21650:6;;-1:-1:-1;;;;;21650:6:0;10508:7;10535:16;;;:7;:16;;;;;;5937:5;;21640:33;;;:::i;:::-;21639:54;;;;:::i;:::-;21629:64;;21599:97;21750:7;21726:20;:31;21722:72;;21784:7;21761:30;;21722:72;21820:34;21833:20;21820:12;:34::i;:::-;21517:361;21474:404;21373:524;21346:551;21921:14;;;;:39;;;;-1:-1:-1;;;;;;21939:21:0;;21955:4;21939:21;;21921:39;21917:271;;;22007:16;;21989:15;:34;21985:184;;;22052:15;22071:4;22070:18;;22086:2;22070:18;;;22079:4;22070:18;22052:36;;22115:30;22129:6;22137:7;22115:13;:30::i;:::-;22025:144;21985:184;22231:52;22248:4;22254:2;22258:6;22266:3;22271:4;22277:5;22231:16;:52::i;:::-;22224:59;19797:2494;-1:-1:-1;;;;;;;19797:2494:0:o;27398:1055::-;27517:4;27538:20;27549:4;27555:2;27538:10;:20::i;:::-;27534:228;;;27593:11;;:39;;-1:-1:-1;;;27593:39:0;;-1:-1:-1;;;;;28865:15:1;;;27593:39:0;;;28847:34:1;28917:15;;;28897:18;;;28890:43;28949:18;;;28942:34;;;27562:12:0;;27593:11;;;;;:21;;28759:18:1;;27593:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;27593:39:0;;;;;;;;-1:-1:-1;;27593:39:0;;;;;;;;;;;;:::i;:::-;;;27589:122;;27700:8;;;27589:122;27683:5;-1:-1:-1;27729:7:0;27725:26;;27740:8;;;27725:26;27560:202;27534:228;-1:-1:-1;;;;;27806:25:0;;27772:12;27806:25;;;:19;:25;;;;;;27787:4;;27806:25;;;:52;;-1:-1:-1;;;;;;27835:23:0;;;;;;:19;:23;;;;;;;;27806:52;27802:99;;;-1:-1:-1;27884:5:0;27802:99;-1:-1:-1;;;;;27911:13:0;;;;;;:7;:13;;;;;:23;;27928:6;;27911:13;:23;;27928:6;;27911:23;:::i;:::-;;;;-1:-1:-1;27945:22:0;;-1:-1:-1;27971:7:0;27970:55;;28019:6;27970:55;;;27982:34;27992:4;27998:6;28006:3;28011:4;27982:9;:34::i;:::-;-1:-1:-1;;;;;28036:11:0;;;;;;:7;:11;;;;;:29;;27945:80;;-1:-1:-1;27945:80:0;;28036:11;;;:29;;27945:80;;28036:29;:::i;:::-;;;;;;;;28096:2;-1:-1:-1;;;;;28081:34:0;28090:4;-1:-1:-1;;;;;28081:34:0;;28100:14;28081:34;;;;391:25:1;;379:2;364:18;;245:177;28081:34:0;;;;;;;;28131:16;;;;;;;28126:298;;28164:28;28183:4;28189:2;28164:18;:28::i;:::-;28212:16;;;;;;;28211:17;:41;;;;;28232:20;28243:4;28249:2;28232:10;:20::i;:::-;28211:77;;;;-1:-1:-1;;;;;;28257:31:0;;;;;;:25;:31;;;;;;;;28256:32;28211:77;:111;;;;-1:-1:-1;;;;;;28293:29:0;;;;;;:25;:29;;;;;;;;28292:30;28211:111;:121;;;;;28327:5;28326:6;28211:121;28207:206;;;28353:44;;-1:-1:-1;;;28353:44:0;;29189:2:1;28353:44:0;;;29171:21:1;29228:2;29208:18;;;29201:30;29267:34;29247:18;;;29240:62;-1:-1:-1;;;29318:18:1;;;29311:32;29360:19;;28353:44:0;28987:398:1;28207:206:0;-1:-1:-1;28441:4:0;;27398:1055;-1:-1:-1;;;;;;;;27398:1055:0:o;19343:446::-;19444:6;;19412:4;;-1:-1:-1;;;;;19436:14:0;;;19444:6;;19436:14;;;;:43;;-1:-1:-1;19473:6:0;;-1:-1:-1;;;;;19467:12:0;;;19473:6;;19467:12;;19436:43;:79;;;;-1:-1:-1;19509:6:0;;-1:-1:-1;;;;;19509:6:0;19496:9;:19;;19436:79;:118;;;;-1:-1:-1;;;;;;19533:21:0;;;;;;:17;:21;;;;;;;;19532:22;19436:118;:159;;;;-1:-1:-1;;;;;;19572:23:0;;;;;;:17;:23;;;;;;;;19571:24;19436:159;:186;;;;-1:-1:-1;;;;;;19612:10:0;;6076:42;19612:10;;19436:186;:219;;;;-1:-1:-1;;;;;;19639:16:0;;;;19436:219;:257;;;;-1:-1:-1;;;;;;19672:21:0;;19688:4;19672:21;;19436:257;:302;;;;-1:-1:-1;19726:11:0;;-1:-1:-1;;;;;19710:28:0;;;19726:11;;;;;19710:28;;19436:302;:345;;;;-1:-1:-1;19769:11:0;;-1:-1:-1;;;;;19755:26:0;;;19769:11;;;;;19755:26;;19436:345;19429:352;19343:446;-1:-1:-1;;;19343:446:0:o;22299:1080::-;7020:6;:13;;-1:-1:-1;;;;7020:13:0;-1:-1:-1;;;7020:13:0;;;22382:30:::1;::::0;;::::1;::::0;::::1;::::0;;22405:7:::1;22382:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;7020:13;22427:21;22423:60:::1;;22465:7;;;22423:60;22519:4;22499:26;::::0;;;:11:::1;:26;::::0;;;;;;;22534:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22534:9:0::1;22499:46:::0;;;;;;;;-1:-1:-1;;22499:67:0::1;22495:166;;22603:4;22583:26;::::0;;;:11:::1;:26;::::0;;;;;;;22618:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22618:9:0::1;22583:46:::0;;;;;;;-1:-1:-1;;22583:66:0;;22495:166:::1;22757:16;::::0;;22771:1:::1;22757:16:::0;;;;;::::1;::::0;;22691:21:::1;::::0;22673:15:::1;::::0;22757:16;22771:1;22757:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22757:16:0::1;22733:40;;22802:4;22784;22789:1;22784:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22784:23:0::1;;;-1:-1:-1::0;;;;;22784:23:0::1;;;::::0;::::1;22828:9;;;;;;;;;-1:-1:-1::0;;;;;22828:9:0::1;-1:-1:-1::0;;;;;22828:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22818:4;22823:1;22818:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22818:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22861:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;22861:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;22936:20;;22971:1:::1;::::0;22987:4;;23014::::1;::::0;23034:15:::1;::::0;22861:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22857:246;;23085:7;;;;;22857:246;23115:18;23136:31;23160:7:::0;23136:21:::1;:31;:::i;:::-;23115:52;;23178:12;23201:26:::0;23266:6:::1;:16;;;23230:52;;23244:6;:18;;;23231:31;;:10;:31;;;;:::i;:::-;23230:52;;;;:::i;:::-;23306:17;::::0;:65:::1;::::0;23201:81;;-1:-1:-1;;;;;;23306:17:0::1;::::0;23361:5:::1;::::0;23201:81;;23306:65:::1;::::0;;;23201:81;23306:17;23361:5;23306:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;7044:1:0::1;-1:-1:-1::0;7056:6:0;:14;;-1:-1:-1;;;;7056:14:0;;;22299:1080::o;23387:1569::-;23537:16;;;23551:1;23537:16;;;;;;;;23481:21;;23463:15;;23537:16;23551:1;23537:16;;;;;;;;;;-1:-1:-1;23537:16:0;23513:40;;23574:9;;;;;;;;;-1:-1:-1;;;;;23574:9:0;-1:-1:-1;;;;;23574:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23564:4;23569:1;23564:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;23564:26:0;;;-1:-1:-1;;;;;23564:26:0;;;;;23619:4;23601;23606:1;23601:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23601:23:0;;;:7;;;;;;;;;;;:23;23637:19;23660:12;23670:2;23660:7;:12;:::i;:::-;23637:36;-1:-1:-1;23684:17:0;23704:21;23637:36;23704:7;:21;:::i;:::-;23742:9;;23878:11;;23742:189;;-1:-1:-1;;;23742:189:0;;23684:41;;-1:-1:-1;;;;;;23742:9:0;;;;;;;:60;;23684:41;;23742:189;;23835:1;;23851:4;;23878:11;;;;;23905:15;;23742:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23994:11:0;;;;;-1:-1:-1;;;;;23994:11:0;23953:20;10535:16;;;:7;:16;;;;;;;;;;;24018:45;10535:16;;24018:45;:::i;:::-;;;;-1:-1:-1;;24090:4:0;24074:22;;;;:7;:22;;;;;:38;;24100:12;;24074:22;:38;;24100:12;;24074:38;:::i;:::-;;;;-1:-1:-1;;24145:11:0;;24128:59;;391:25:1;;;24167:4:0;;24145:11;;;-1:-1:-1;;;;;24145:11:0;;24128:59;;379:2:1;364:18;24128:59:0;;;;;;;24198:29;24230:17;24246:1;24230:12;:17;:::i;:::-;24198:49;-1:-1:-1;24258:19:0;24280:36;24198:49;24280:12;:36;:::i;:::-;24333:9;;:201;;-1:-1:-1;;;24333:201:0;;24401:4;24333:201;;;31112:34:1;31162:18;;;31155:34;;;24457:1:0;31205:18:1;;;31198:34;;;31248:18;;;31241:34;6076:42:0;31291:19:1;;;31284:44;24508:15:0;31344:19:1;;;31337:35;24258:58:0;;-1:-1:-1;24333:9:0;;;-1:-1:-1;;;;;24333:9:0;;:25;;24366:11;;31023:19:1;;24333:201:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24333:201:0;;;;;;;;-1:-1:-1;;24333:201:0;;;;;;;;;;;;:::i;:::-;;;24329:512;;24823:7;;;;;;;23387:1569;;:::o;24329:512::-;-1:-1:-1;;24555:47:0;;;31868:25:1;;;31924:2;31909:18;;31902:34;;;24555:47:0;;-1:-1:-1;31841:18:1;24555:47:0;;;;;;;24633:4;24617:22;;;;:7;:22;;;;;:37;;24643:11;;24617:22;:37;;24643:11;;24617:37;:::i;:::-;;;;-1:-1:-1;;6076:42:0;24669:13;;;;:7;:13;;;:28;;24686:11;;24669:13;:28;;24686:11;;24669:28;:::i;:::-;;;;-1:-1:-1;;24717:42:0;;391:25:1;;;6076:42:0;;24734:4;;24717:42;;379:2:1;364:18;24717:42:0;;;;;;;24788:1;24774:11;:15;24891:11;;:36;;-1:-1:-1;;;24891:36:0;;24930:1;24891:36;;;20629:25:1;;;-1:-1:-1;;;;;20690:55:1;;;20670:18;;;20663:83;24930:1:0;;24891:11;;;;;:19;;20602:18:1;;24891:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;:::-;24890:46;;24935:1;24890:46;:::i;:::-;24889:58;;24940:7;24889:58;:::i;:::-;24870:78;;:15;:78;:::i;:::-;24851:16;:97;-1:-1:-1;;;;;;;;;23387:1569:0:o;28461:1163::-;28549:7;28569:18;28602:3;28598:564;;;-1:-1:-1;28635:9:0;:16;;;28598:564;;;28673:4;28669:493;;;-1:-1:-1;28707:9:0;:17;28743:11;;28707:17;;;;;;;28757:1;-1:-1:-1;28739:345:0;;;28783:11;;28798:1;28783:16;28779:258;;-1:-1:-1;28837:4:0;28779:258;;;28871:11;;28886:1;28871:16;28867:170;;-1:-1:-1;28925:4:0;28867:170;;;28959:11;;28974:1;28959:16;28955:82;;-1:-1:-1;29013:4:0;28955:82;29055:11;:13;;;:11;:13;;;:::i;:::-;;;;;;28739:345;28669:493;;;-1:-1:-1;29129:9:0;:21;;;;;;28669:493;29176:10;29190:1;29176:15;29172:39;;29202:6;29195:13;;;;;29172:39;29233:11;;;;;-1:-1:-1;;;;;29233:11:0;29257:4;29225:37;:110;;;;;29280:13;29297:1;29280:18;:54;;;;29315:13;29332:2;29315:19;29280:54;29221:138;;;-1:-1:-1;29352:4:0;29221:138;29369:17;5937:5;29389:19;29398:10;29389:6;:19;:::i;:::-;:38;;;;:::i;:::-;29369:58;-1:-1:-1;29442:13:0;;29438:141;;29488:4;29472:22;;;;:7;:22;;;;;:35;;29498:9;;29472:22;:35;;29498:9;;29472:35;:::i;:::-;;;;-1:-1:-1;;29527:40:0;;391:25:1;;;29550:4:0;;-1:-1:-1;;;;;29527:40:0;;;;;379:2:1;364:18;29527:40:0;;;;;;;29438:141;29598:18;29607:9;29598:6;:18;:::i;24964:563::-;25047:16;;;;;;;25046:17;25038:65;;;;-1:-1:-1;;;25038:65:0;;32289:2:1;25038:65:0;;;32271:21:1;32328:2;32308:18;;;32301:30;32367:34;32347:18;;;32340:62;-1:-1:-1;;;32418:18:1;;;32411:33;32461:19;;25038:65:0;32087:399:1;25038:65:0;25119:20;25130:4;25136:2;25119:10;:20::i;:::-;25118:21;:37;;;;-1:-1:-1;25149:6:0;;-1:-1:-1;;;;;25143:12:0;;;25149:6;;25143:12;25118:37;25114:406;;;-1:-1:-1;;;;;25172:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25172:30:0;;;25198:4;25172:30;;;;;;25217:19;:25;;;;;:32;;;;;;;;;;25264:16;:23;;-1:-1:-1;;25264:23:0;25172:30;25264:23;;;;;25314:11;;;;25302:114;;25360:11;:40;;-1:-1:-1;;;;;;25360:40:0;25394:4;25360:40;;;;;25302:114;25430:19;:26;;-1:-1:-1;;;;25430:26:0;-1:-1:-1;;;25430:26:0;;;25476:32;;-1:-1:-1;4029:41:1;;25476:32:0;;4017:2:1;4002:18;25476:32:0;3889:187:1;427:127;488:10;483:3;479:20;476:1;469:31;519:4;516:1;509:15;543:4;540:1;533:15;559:275;630:2;624:9;695:2;676:13;;-1:-1:-1;;672:27:1;660:40;;730:18;715:34;;751:22;;;712:62;709:88;;;777:18;;:::i;:::-;813:2;806:22;559:275;;-1:-1:-1;559:275:1:o;839:183::-;899:4;932:18;924:6;921:30;918:56;;;954:18;;:::i;:::-;-1:-1:-1;999:1:1;995:14;1011:4;991:25;;839:183::o;1027:154::-;-1:-1:-1;;;;;1106:5:1;1102:54;1095:5;1092:65;1082:93;;1171:1;1168;1161:12;1186:737;1240:5;1293:3;1286:4;1278:6;1274:17;1270:27;1260:55;;1311:1;1308;1301:12;1260:55;1347:6;1334:20;1373:4;1397:60;1413:43;1453:2;1413:43;:::i;:::-;1397:60;:::i;:::-;1491:15;;;1577:1;1573:10;;;;1561:23;;1557:32;;;1522:12;;;;1601:15;;;1598:35;;;1629:1;1626;1619:12;1598:35;1665:2;1657:6;1653:15;1677:217;1693:6;1688:3;1685:15;1677:217;;;1773:3;1760:17;1790:31;1815:5;1790:31;:::i;:::-;1834:18;;1872:12;;;;1710;;1677:217;;;-1:-1:-1;1912:5:1;1186:737;-1:-1:-1;;;;;;1186:737:1:o;1928:118::-;2014:5;2007:13;2000:21;1993:5;1990:32;1980:60;;2036:1;2033;2026:12;2051:477;2141:6;2149;2202:2;2190:9;2181:7;2177:23;2173:32;2170:52;;;2218:1;2215;2208:12;2170:52;2258:9;2245:23;2291:18;2283:6;2280:30;2277:50;;;2323:1;2320;2313:12;2277:50;2346:61;2399:7;2390:6;2379:9;2375:22;2346:61;:::i;:::-;2336:71;;;2457:2;2446:9;2442:18;2429:32;2470:28;2492:5;2470:28;:::i;:::-;2517:5;2507:15;;;2051:477;;;;;:::o;2533:180::-;2592:6;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;-1:-1:-1;2684:23:1;;2533:180;-1:-1:-1;2533:180:1:o;3088:548::-;3200:4;3229:2;3258;3247:9;3240:21;3290:6;3284:13;3333:6;3328:2;3317:9;3313:18;3306:34;3358:1;3368:140;3382:6;3379:1;3376:13;3368:140;;;3477:14;;;3473:23;;3467:30;3443:17;;;3462:2;3439:26;3432:66;3397:10;;3368:140;;;3372:3;3557:1;3552:2;3543:6;3532:9;3528:22;3524:31;3517:42;3627:2;3620;3616:7;3611:2;3603:6;3599:15;3595:29;3584:9;3580:45;3576:54;3568:62;;;;3088:548;;;;:::o;4081:315::-;4149:6;4157;4210:2;4198:9;4189:7;4185:23;4181:32;4178:52;;;4226:1;4223;4216:12;4178:52;4265:9;4252:23;4284:31;4309:5;4284:31;:::i;:::-;4334:5;4386:2;4371:18;;;;4358:32;;-1:-1:-1;;;4081:315:1:o;4401:247::-;4460:6;4513:2;4501:9;4492:7;4488:23;4484:32;4481:52;;;4529:1;4526;4519:12;4481:52;4568:9;4555:23;4587:31;4612:5;4587:31;:::i;4653:456::-;4730:6;4738;4746;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;4854:9;4841:23;4873:31;4898:5;4873:31;:::i;:::-;4923:5;-1:-1:-1;4980:2:1;4965:18;;4952:32;4993:33;4952:32;4993:33;:::i;:::-;4653:456;;5045:7;;-1:-1:-1;;;5099:2:1;5084:18;;;;5071:32;;4653:456::o;5114:248::-;5182:6;5190;5243:2;5231:9;5222:7;5218:23;5214:32;5211:52;;;5259:1;5256;5249:12;5211:52;-1:-1:-1;;5282:23:1;;;5352:2;5337:18;;;5324:32;;-1:-1:-1;5114:248:1:o;5367:1138::-;5485:6;5493;5546:2;5534:9;5525:7;5521:23;5517:32;5514:52;;;5562:1;5559;5552:12;5514:52;5602:9;5589:23;5631:18;5672:2;5664:6;5661:14;5658:34;;;5688:1;5685;5678:12;5658:34;5711:61;5764:7;5755:6;5744:9;5740:22;5711:61;:::i;:::-;5701:71;;5791:2;5781:12;;5846:2;5835:9;5831:18;5818:32;5875:2;5865:8;5862:16;5859:36;;;5891:1;5888;5881:12;5859:36;5914:24;;;-1:-1:-1;5969:4:1;5961:13;;5957:27;-1:-1:-1;5947:55:1;;5998:1;5995;5988:12;5947:55;6034:2;6021:16;6057:60;6073:43;6113:2;6073:43;:::i;6057:60::-;6151:15;;;6233:1;6229:10;;;;6221:19;;6217:28;;;6182:12;;;;6257:19;;;6254:39;;;6289:1;6286;6279:12;6254:39;6313:11;;;;6333:142;6349:6;6344:3;6341:15;6333:142;;;6415:17;;6403:30;;6366:12;;;;6453;;;;6333:142;;;6494:5;6484:15;;;;;;;5367:1138;;;;;:::o;6699:159::-;6766:20;;6826:6;6815:18;;6805:29;;6795:57;;6848:1;6845;6838:12;6795:57;6699:159;;;:::o;6863:328::-;6937:6;6945;6953;7006:2;6994:9;6985:7;6981:23;6977:32;6974:52;;;7022:1;7019;7012:12;6974:52;7045:28;7063:9;7045:28;:::i;:::-;7035:38;;7092:37;7125:2;7114:9;7110:18;7092:37;:::i;:::-;7082:47;;7148:37;7181:2;7170:9;7166:18;7148:37;:::i;:::-;7138:47;;6863:328;;;;;:::o;7196:382::-;7261:6;7269;7322:2;7310:9;7301:7;7297:23;7293:32;7290:52;;;7338:1;7335;7328:12;7290:52;7377:9;7364:23;7396:31;7421:5;7396:31;:::i;:::-;7446:5;-1:-1:-1;7503:2:1;7488:18;;7475:32;7516:30;7475:32;7516:30;:::i;7583:241::-;7639:6;7692:2;7680:9;7671:7;7667:23;7663:32;7660:52;;;7708:1;7705;7698:12;7660:52;7747:9;7734:23;7766:28;7788:5;7766:28;:::i;7829:256::-;7895:6;7903;7956:2;7944:9;7935:7;7931:23;7927:32;7924:52;;;7972:1;7969;7962:12;7924:52;7995:28;8013:9;7995:28;:::i;:::-;7985:38;;8042:37;8075:2;8064:9;8060:18;8042:37;:::i;:::-;8032:47;;7829:256;;;;;:::o;8090:376::-;8152:6;8160;8213:2;8201:9;8192:7;8188:23;8184:32;8181:52;;;8229:1;8226;8219:12;8181:52;8268:9;8255:23;8287:28;8309:5;8287:28;:::i;8718:388::-;8786:6;8794;8847:2;8835:9;8826:7;8822:23;8818:32;8815:52;;;8863:1;8860;8853:12;8815:52;8902:9;8889:23;8921:31;8946:5;8921:31;:::i;:::-;8971:5;-1:-1:-1;9028:2:1;9013:18;;9000:32;9041:33;9000:32;9041:33;:::i;9371:385::-;9457:6;9465;9473;9481;9534:3;9522:9;9513:7;9509:23;9505:33;9502:53;;;9551:1;9548;9541:12;9502:53;-1:-1:-1;;9574:23:1;;;9644:2;9629:18;;9616:32;;-1:-1:-1;9695:2:1;9680:18;;9667:32;;9746:2;9731:18;9718:32;;-1:-1:-1;9371:385:1;-1:-1:-1;9371:385:1:o;10453:484::-;10506:3;10544:5;10538:12;10571:6;10566:3;10559:19;10597:4;10626:2;10621:3;10617:12;10610:19;;10663:2;10656:5;10652:14;10684:1;10694:218;10708:6;10705:1;10702:13;10694:218;;;10773:13;;-1:-1:-1;;;;;10769:62:1;10757:75;;10852:12;;;;10887:15;;;;10730:1;10723:9;10694:218;;;-1:-1:-1;10928:3:1;;10453:484;-1:-1:-1;;;;;10453:484:1:o;10942:342::-;11143:2;11132:9;11125:21;11106:4;11163:56;11215:2;11204:9;11200:18;11192:6;11163:56;:::i;:::-;11155:64;;11269:6;11262:14;11255:22;11250:2;11239:9;11235:18;11228:50;10942:342;;;;;:::o;11289:127::-;11350:10;11345:3;11341:20;11338:1;11331:31;11381:4;11378:1;11371:15;11405:4;11402:1;11395:15;11421:168;11494:9;;;11525;;11542:15;;;11536:22;;11522:37;11512:71;;11563:18;;:::i;11594:422::-;11683:1;11726:5;11683:1;11740:270;11761:7;11751:8;11748:21;11740:270;;;11820:4;11816:1;11812:6;11808:17;11802:4;11799:27;11796:53;;;11829:18;;:::i;:::-;11879:7;11869:8;11865:22;11862:55;;;11899:16;;;;11862:55;11978:22;;;;11938:15;;;;11740:270;;;11744:3;11594:422;;;;;:::o;12021:806::-;12070:5;12100:8;12090:80;;-1:-1:-1;12141:1:1;12155:5;;12090:80;12189:4;12179:76;;-1:-1:-1;12226:1:1;12240:5;;12179:76;12271:4;12289:1;12284:59;;;;12357:1;12352:130;;;;12264:218;;12284:59;12314:1;12305:10;;12328:5;;;12352:130;12389:3;12379:8;12376:17;12373:43;;;12396:18;;:::i;:::-;-1:-1:-1;;12452:1:1;12438:16;;12467:5;;12264:218;;12566:2;12556:8;12553:16;12547:3;12541:4;12538:13;12534:36;12528:2;12518:8;12515:16;12510:2;12504:4;12501:12;12497:35;12494:77;12491:159;;;-1:-1:-1;12603:19:1;;;12635:5;;12491:159;12682:34;12707:8;12701:4;12682:34;:::i;:::-;12752:6;12748:1;12744:6;12740:19;12731:7;12728:32;12725:58;;;12763:18;;:::i;:::-;12801:20;;12021:806;-1:-1:-1;;;12021:806:1:o;12832:140::-;12890:5;12919:47;12960:4;12950:8;12946:19;12940:4;12919:47;:::i;12977:127::-;13038:10;13033:3;13029:20;13026:1;13019:31;13069:4;13066:1;13059:15;13093:4;13090:1;13083:15;13109:120;13149:1;13175;13165:35;;13180:18;;:::i;:::-;-1:-1:-1;13214:9:1;;13109:120::o;13234:128::-;13301:9;;;13322:11;;;13319:37;;;13336:18;;:::i;14134:127::-;14195:10;14190:3;14186:20;14183:1;14176:31;14226:4;14223:1;14216:15;14250:4;14247:1;14240:15;14613:197;14651:3;14679:6;14720:2;14713:5;14709:14;14747:2;14738:7;14735:15;14732:41;;14753:18;;:::i;:::-;14802:1;14789:15;;14613:197;-1:-1:-1;;;14613:197:1:o;14815:125::-;14880:9;;;14901:10;;;14898:36;;;14914:18;;:::i;17191:385::-;17270:6;17278;17331:2;17319:9;17310:7;17306:23;17302:32;17299:52;;;17347:1;17344;17337:12;17299:52;17379:9;17373:16;17398:31;17423:5;17398:31;:::i;:::-;17498:2;17483:18;;17477:25;17448:5;;-1:-1:-1;17511:33:1;17477:25;17511:33;:::i;20205:245::-;20284:6;20292;20345:2;20333:9;20324:7;20320:23;20316:32;20313:52;;;20361:1;20358;20351:12;20313:52;-1:-1:-1;;20384:16:1;;20440:2;20425:18;;;20419:25;20384:16;;20419:25;;-1:-1:-1;20205:245:1:o;20757:184::-;20827:6;20880:2;20868:9;20859:7;20855:23;20851:32;20848:52;;;20896:1;20893;20886:12;20848:52;-1:-1:-1;20919:16:1;;20757:184;-1:-1:-1;20757:184:1:o;20946:112::-;20978:1;21004;20994:35;;21009:18;;:::i;:::-;-1:-1:-1;21043:9:1;;20946:112::o;21721:245::-;21788:6;21841:2;21829:9;21820:7;21816:23;21812:32;21809:52;;;21857:1;21854;21847:12;21809:52;21889:9;21883:16;21908:28;21930:5;21908:28;:::i;21971:168::-;22038:6;22064:10;;;22076;;;22060:27;;22099:11;;;22096:37;;;22113:18;;:::i;:::-;22096:37;21971:168;;;;:::o;22911:251::-;22981:6;23034:2;23022:9;23013:7;23009:23;23005:32;23002:52;;;23050:1;23047;23040:12;23002:52;23082:9;23076:16;23101:31;23126:5;23101:31;:::i;29390:605::-;29689:6;29678:9;29671:25;29732:6;29727:2;29716:9;29712:18;29705:34;29775:3;29770:2;29759:9;29755:18;29748:31;29652:4;29796:57;29848:3;29837:9;29833:19;29825:6;29796:57;:::i;:::-;-1:-1:-1;;;;;29889:55:1;;;;29884:2;29869:18;;29862:83;-1:-1:-1;29976:3:1;29961:19;29954:35;29788:65;29390:605;-1:-1:-1;;;29390:605:1:o;30210:533::-;30481:6;30470:9;30463:25;30524:3;30519:2;30508:9;30504:18;30497:31;30444:4;30545:57;30597:3;30586:9;30582:19;30574:6;30545:57;:::i;:::-;-1:-1:-1;;;;;30638:55:1;;;;30633:2;30618:18;;30611:83;-1:-1:-1;30725:2:1;30710:18;30703:34;30537:65;30210:533;-1:-1:-1;;30210:533:1:o;31383:306::-;31471:6;31479;31487;31540:2;31528:9;31519:7;31515:23;31511:32;31508:52;;;31556:1;31553;31546:12;31508:52;31585:9;31579:16;31569:26;;31635:2;31624:9;31620:18;31614:25;31604:35;;31679:2;31668:9;31664:18;31658:25;31648:35;;31383:306;;;;;:::o;31947:135::-;31986:3;32007:17;;;32004:43;;32027:18;;:::i;:::-;-1:-1:-1;32074:1:1;32063:13;;31947:135::o

Swarm Source

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