ETH Price: $3,456.26 (+1.22%)
Gas: 15 Gwei

Token

Sharity ($Shari)
 

Overview

Max Total Supply

50,000,000,000,000,000 $Shari

Holders

717 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
42,971,943,245.209136138 $Shari

Value
$0.00
0xaf9390ae0c19975a8062638b6bd0c24f35694a7c
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Sharity aims to build a crypto currency donation platform.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Sharity

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-19
*/

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

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  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);
}

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 quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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;
}

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

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

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

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply = 50_000_000_000_000_000;

    string constant private _name = "Sharity";
    string constant private _symbol = "$Shari";
    uint8 private _decimals = 9;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

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

    struct StaticValuesStruct {
        uint16 maxBuyTaxes;
        uint16 maxSellTaxes;
        uint16 maxTransferTaxes;
        uint16 masterTaxDivisor;
    }

    struct Ratios {
        uint16 marketing;
        uint16 charity;
        uint16 dev;
        uint16 burn;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 3,
        charity: 3,
        dev: 3,
        burn: 1,
        total: 9
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 1000,
        maxSellTaxes: 1000,
        maxTransferTaxes: 1000,
        masterTaxDivisor: 10000
        });

    IRouter02 public dexRouter;
    address public lpPair;

    address public currentRouter;
    // PCS ROUTER
    address private pcsV2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    // UNI ROUTER
    address private uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable charity;
        address payable dev;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x2911Ba7f2417cD15b9A430c62460763d6A86f3Ed),
        charity: payable(0xE34Cf4d6A8499cb9406Cf2C851cd7aE4928E7CD0),
        dev: payable(0xD84d657e4f5116c93df0A91614C60B1FFF41DBC7)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;

    uint256 private _maxWalletSize = (_tTotal * 5) / 1000;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 25) / 10000;

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

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

        if (block.chainid == 56 || block.chainid == 97) {
            currentRouter = pcsV2Router;
        } else if (block.chainid == 1) {
            currentRouter = uniswapV2Router;
        }

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

        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);

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

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    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) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view 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(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function changeRouterContingency(address router) external onlyOwner {
        require(!_hasLiqBeenAdded);
        currentRouter = router;
    }

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

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

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

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

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

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

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

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

    function getSniperAmt() public view returns (uint256) {
        return antiSnipe.getSniperAmt();
    }

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

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

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

    function getCooldownTime() public view returns (uint256) {
        return antiSnipe.getCooldownTime();
    }

    function setCooldownEnabled(bool enabled) external onlyOwner {
        antiSnipe.setCooldownEnabled(enabled);
    }

    function setCooldownTime(uint256 time) external onlyOwner {
        require(time <= 5 minutes);
        antiSnipe.setCooldownTime(time);
    }

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

    function setRatios(uint16 marketing, uint16 charity, uint16 dev, uint16 burn) external onlyOwner {
        _ratios.marketing = marketing;
        _ratios.charity = charity;
        _ratios.dev = dev;
        _ratios.burn = burn;
        _ratios.total = marketing + charity + dev;
    }

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

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

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

    function setWallets(address payable marketing, address payable charity, address payable dev) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.charity = payable(charity);
        _taxWallets.dev = payable(dev);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

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

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

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        if (_ratios.total == 0)
            return;

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        if (address(this).balance > 0) {
            _taxWallets.charity.transfer(_ratios.charity * amountETH / (_ratios.total));
            _taxWallets.dev.transfer(_ratios.dev * amountETH / (_ratios.total));
            _taxWallets.marketing.transfer(address(this).balance);
        }
    }

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

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

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

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

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

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

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

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _tOwned[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

        if (currentFee == 0) {
            return amount;
        }

        uint256 burnAmount = (((amount * currentFee) / staticVals.masterTaxDivisor) * _ratios.burn) / (_ratios.total + _ratios.burn);
        uint256 feeAmount = ((amount * currentFee) / staticVals.masterTaxDivisor) - burnAmount;

        _tOwned[address(this)] += feeAmount;
        if (burnAmount > 0) {
            _basicTransfer(from, address(DEAD), burnAmount);
        }
        emit Transfer(from, address(this), feeAmount);

        return amount - (feeAmount + burnAmount);
    }
}

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":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"charity","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"charity","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"getCooldownTime","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":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setCooldownTime","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"charity","type":"uint16"},{"internalType":"uint16","name":"dev","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"charity","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060035566b1a2bc2ec500006009908155600a805460ff1916821781556200002e919062000800565b6009546200003d919062000818565b600b819055620000509060001962000850565b6200005e9060001962000867565b600c5560408051606080820183526103e88083526020808401829052600093850193909352600d80546303e803e865ffffffffffff19909116179055835160a0810185526003808252818501819052818601526001818401526009608091820152600e80546001600160501b031916680900010003000300031790558451908101855281815280840182905280850182905261271090830152600f80546001600160401b03191667271003e803e803e8179055601380547310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03199182161790915560148054737a250d5630b4cf539739df2c5dacb4c659f2488d90831617905584519283018552732911ba7f2417cd15b9a430c62460763d6a86f3ed80845273e34cf4d6a8499cb9406cf2c851cd7ae4928e7cd094840185905273d84d657e4f5116c93df0a91614c60b1fff41dbc79390950183905260158054821690951790945560168054851690931790925560178054909316179091556018805461ff0019169055600b54620001ed90600562000818565b620001f9919062000881565b601955612710600b54600562000210919062000818565b6200021c919062000881565b601a55612710600b54601962000233919062000818565b6200023f919062000881565b601b55601c805461ffff19169055600b543360008181526001602052604081209290925581546001600160a01b0319161790554660381480620002825750466061145b15620002b057601354601280546001600160a01b0319166001600160a01b03909216919091179055620002dd565b4660011415620002dd57601454601280546001600160a01b0319166001600160a01b039092169190911790555b601254601080546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000360919062000898565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000898565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b919062000898565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601254620004a791339116600019620005ea565b601254620004c39030906001600160a01b0316600019620005ea565b600160056000620004dc6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600890620005646000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005943390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620005dc91815260200190565b60405180910390a3620008c3565b6001600160a01b0383166200063c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200068a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000633565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000742578160001904821115620007265762000726620006eb565b808516156200073457918102915b93841c939080029062000706565b509250929050565b6000826200075b57506001620007fa565b816200076a57506000620007fa565b81600181146200078357600281146200078e57620007ae565b6001915050620007fa565b60ff841115620007a257620007a2620006eb565b50506001821b620007fa565b5060208310610133831016604e8410600b8410161715620007d3575081810a620007fa565b620007df838362000701565b8060001904821115620007f657620007f6620006eb565b0290505b92915050565b60006200081160ff8416836200074a565b9392505050565b6000816000190483118215151615620008355762000835620006eb565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200086257620008626200083a565b500690565b6000828210156200087c576200087c620006eb565b500390565b6000826200089357620008936200083a565b500490565b600060208284031215620008ab57600080fd5b81516001600160a01b03811681146200081157600080fd5b613d9780620008d36000396000f3fe6080604052600436106103595760003560e01c8063590ffdce116101bb57806395d89b41116100f7578063eafb5a3c11610095578063f94aa1b41161006f578063f94aa1b414610adb578063fb78680d14610b32578063fdb78c0e14610b52578063fe575a8714610b7157600080fd5b8063eafb5a3c14610a86578063ee5d9c2d14610aa6578063eec2744e14610abb57600080fd5b8063c6a276c2116100d1578063c6a276c21461097e578063cab5ebea1461099e578063cf847706146109be578063dd62ed3e14610a4057600080fd5b806395d89b41146108f8578063a457c2d71461093e578063a9059cbb1461095e57600080fd5b806375cb1bd1116101645780638a63bd9b1161013e5780638a63bd9b146108b95780638a8c523c146108ce5780638da5cb5b1461089b5780638f2a02b4146108e357600080fd5b806375cb1bd11461085b57806380c581d11461087b578063893d20e81461089b57600080fd5b80636ff73201116101955780636ff73201146107f057806370a0823114610810578063715018a61461084657600080fd5b8063590ffdce146107905780635932ead1146107b05780635c24b074146107d057600080fd5b8063260039571161029557806339509351116102335780634fb2e45d1161020d5780634fb2e45d146107035780634fbee1931461072357806350a8e0161461075c57806355dbc3691461077b57600080fd5b806339509351146106a9578063452ed4f1146106c95780634ada218b146106e957600080fd5b8063313ce5671161026f578063313ce5671461062757806332cde6641461064957806333251a0b14610669578063384f36b61461068957600080fd5b806326003957146105d257806329dd8798146105f25780632b112e491461061257600080fd5b80630923160211610302578063122fea3b116102dc578063122fea3b1461051257806318160ddd146105325780631b6afa2d1461054757806323b872dd146105b257600080fd5b8063092316021461049f578063095ea7b3146104bf5780630fa604e4146104ef57600080fd5b806306fdde031161033357806306fdde03146104105780630712d1651461045f5780630758d9241461047f57600080fd5b806303fd2a451461036557806305bbedb614610398578063069d955f146103ba57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103b86103b3366004613673565b610b91565b005b3480156103c657600080fd5b50600d546103eb9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561041c57600080fd5b5060408051808201909152600781527f536861726974790000000000000000000000000000000000000000000000000060208201525b60405161038f919061374a565b34801561046b57600080fd5b506103b861047a3660046137b1565b610c6a565b34801561048b57600080fd5b5060105461037b906001600160a01b031681565b3480156104ab57600080fd5b506103b86104ba366004613805565b610daf565b3480156104cb57600080fd5b506104df6104da36600461381e565b610ece565b604051901515815260200161038f565b3480156104fb57600080fd5b50610504610ee5565b60405190815260200161038f565b34801561051e57600080fd5b5060125461037b906001600160a01b031681565b34801561053e57600080fd5b50600b54610504565b34801561055357600080fd5b50600f546105849061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161038f565b3480156105be57600080fd5b506104df6105cd36600461384a565b610f0b565b3480156105de57600080fd5b506103b86105ed36600461388b565b610f85565b3480156105fe57600080fd5b506103b861060d3660046138ad565b611090565b34801561061e57600080fd5b50610504611179565b34801561063357600080fd5b50600a5460405160ff909116815260200161038f565b34801561065557600080fd5b506103b8610664366004613909565b6111e2565b34801561067557600080fd5b506103b861068436600461394c565b611337565b34801561069557600080fd5b506103b86106a436600461394c565b6113d7565b3480156106b557600080fd5b506104df6106c436600461381e565b611469565b3480156106d557600080fd5b5060115461037b906001600160a01b031681565b3480156106f557600080fd5b50601c546104df9060ff1681565b34801561070f57600080fd5b506103b861071e36600461394c565b6114a5565b34801561072f57600080fd5b506104df61073e36600461394c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561076857600080fd5b50601c546104df90610100900460ff1681565b34801561078757600080fd5b506105046116b3565b34801561079c57600080fd5b506103b86107ab366004613969565b61172c565b3480156107bc57600080fd5b506103b86107cb3660046139a2565b6117a5565b3480156107dc57600080fd5b506103b86107eb36600461394c565b611843565b3480156107fc57600080fd5b506103b861080b366004613805565b611982565b34801561081c57600080fd5b5061050461082b36600461394c565b6001600160a01b031660009081526001602052604090205490565b34801561085257600080fd5b506103b8611a2e565b34801561086757600080fd5b506103b86108763660046139bf565b611ade565b34801561088757600080fd5b506103b8610896366004613969565b611b78565b3480156108a757600080fd5b506000546001600160a01b031661037b565b3480156108c557600080fd5b506104df611d22565b3480156108da57600080fd5b506103b8611d91565b3480156108ef57600080fd5b50610504611f81565b34801561090457600080fd5b5060408051808201909152600681527f24536861726900000000000000000000000000000000000000000000000000006020820152610452565b34801561094a57600080fd5b506104df61095936600461381e565b611fd6565b34801561096a57600080fd5b506104df61097936600461381e565b61200d565b34801561098a57600080fd5b506103b861099936600461394c565b612024565b3480156109aa57600080fd5b506103b86109b93660046139a2565b6120c4565b3480156109ca57600080fd5b50600e54610a0b9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161038f565b348015610a4c57600080fd5b50610504610a5b366004613a0a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a9257600080fd5b506103b8610aa136600461394c565b612166565b348015610ab257600080fd5b506103b861251a565b348015610ac757600080fd5b506103b8610ad6366004613969565b6125fd565b348015610ae757600080fd5b50601554601654601754610b08926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161038f565b348015610b3e57600080fd5b506103b8610b4d366004613a38565b6126a5565b348015610b5e57600080fd5b506018546104df90610100900460ff1681565b348015610b7d57600080fd5b506104df610b8c36600461394c565b612732565b6000546001600160a01b03163314610be45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c349085908590600401613aae565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b600e805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff161766010000000000009184169190910217905581610d5f8486613b01565b610d699190613b01565b600e805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b604b811015610e4e5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bdb565b601c546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b5050505050565b6000610edb3384846127c0565b5060015b92915050565b600a8054600091610ef99160ff1690613c0b565b601954610f069190613c1a565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610f70576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610f6a908490613c55565b90915550505b610f7b8484846128cd565b90505b9392505050565b6000546001600160a01b03163314610fd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6103e8600b54610fe39190613c1a565b8183600b54610ff29190613c6c565b610ffc9190613c1a565b10156110705760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bdb565b8082600b5461107f9190613c6c565b6110899190613c1a565b6019555050565b6000546001600160a01b031633146110de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561115b57600080fd5b505af115801561116f573d6000803e3d6000fd5b5050505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916111d591613c8b565b600b54610f069190613c55565b6000546001600160a01b031633146112305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b600f5461ffff9081169084161180159061125a5750600f5461ffff62010000909104811690831611155b80156112785750600f5461ffff640100000000909104811690821611155b6112c45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bdb565b600d805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146113855760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610e99565b6000546001600160a01b031633146114255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff161561143a57600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610edb9185906114a0908690613c8b565b6127c0565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6001600160a01b03811661156f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bdb565b6001600160a01b03811661dead14156115f05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bdb565b60008054611609916001600160a01b039091169061172c565b61161481600161172c565b600080546001600160a01b03168152600160205260409020541561165b57600080546001600160a01b03168082526001602052604090912054611659919083906128cd565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601c60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613ca3565b6000546001600160a01b0316331461177a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f5932ead10000000000000000000000000000000000000000000000000000000081528215156004820152620100009091046001600160a01b031690635932ead190602401610e99565b6000546001600160a01b031633146118915760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff16156118e95760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bdb565b6001600160a01b0381163014156119425760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bdb565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000546001600160a01b031633146119d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b61012c8111156119df57600080fd5b601c546040517f6ff7320100000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b031690636ff7320190602401610e99565b6000546001600160a01b03163314611a7c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b60008054611a95916001600160a01b039091169061172c565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b2c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601580546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601680549385169382169390931790925560178054919093169116179055565b6000546001600160a01b03163314611bc65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b80611c3d576001600160a01b03828116600081815260026020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c34565b60035415611ca4576203f48060035442611c579190613c55565b11611ca45760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bdb565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601c5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c34565b5050565b600080546001600160a01b03163314611d715760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601054611d8b9030906001600160a01b03166000196127c0565b50600190565b6000546001600160a01b03163314611ddf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c5460ff1615611e325760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bdb565b601c54610100900460ff16611e895760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bdb565b601c546201000090046001600160a01b0316611ecf57601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c54601154600a546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f6057600080fd5b505af1925050508015611f71575060015b50601c805460ff19166001179055565b6000601c60029054906101000a90046001600160a01b03166001600160a01b0316638f2a02b46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610edb9185906114a0908690613c55565b600061201a3384846128cd565b5060019392505050565b6000546001600160a01b031633146120725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610e99565b6000546001600160a01b031633146121125760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601880548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061215b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146121b45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221d9190613cbc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190613cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613cbc565b90506001600160a01b0381166124b357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123879190613cbc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190613cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561245d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124819190613cbc565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556124dc565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556125159030906000196127c0565b505050565b6000546001600160a01b031633146125685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff16156125c05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bdb565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156125fa573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461264b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c34565b6000546001600160a01b031633146126f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b8284600b546127029190613c6c565b61270c9190613c1a565b601a55600b54819061271f908490613c6c565b6127299190613c1a565b601b5550505050565b601c546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf9190613cd9565b6001600160a01b0383166128165760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bdb565b6001600160a01b03821661286c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bdb565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661294b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6001600160a01b0383166129c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bdb565b60008211612a3d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bdb565b612a478484612c4d565b15612b7b57601c5460ff16612a9e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bdb565b6012546001600160a01b03848116911614801590612ad557506001600160a01b03831660009081526002602052604090205460ff16155b15612b7b5760195482612afd856001600160a01b031660009081526001602052604090205490565b612b079190613c8b565b1115612b7b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bdb565b6001600160a01b03841660009081526005602052604090205460019060ff1680612bbd57506001600160a01b03841660009081526005602052604090205460ff165b15612bc6575060005b6001600160a01b03841660009081526002602052604090205460ff1615612c385760185460ff16158015612c015750601854610100900460ff165b15612c385730600090815260016020526040902054601a548110612c3657601b548110612c2d5750601b545b612c3681612d0a565b505b612c448585858461302c565b95945050505050565b600080546001600160a01b03848116911614801590612c7a57506000546001600160a01b03838116911614155b8015612c9f57506001600160a01b03821660009081526008602052604090205460ff16155b8015612cc457506001600160a01b03831660009081526008602052604090205460ff16155b8015612cdb57506001600160a01b03821661dead14155b8015612cef57506001600160a01b03821615155b8015610f7e57506001600160a01b0383163014159392505050565b6018805460ff19166001179055600e5461ffff6801000000000000000090910416612d345761301f565b3060009081526004602090815260408083206010546001600160a01b0316845290915290205460001914612d8d573060009081526004602090815260408083206010546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dc257612dc2613cf6565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e589190613cbc565b81600181518110612e6b57612e6b613cf6565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612eca908590600090869030904290600401613d25565b600060405180830381600087803b158015612ee457600080fd5b505af1158015612ef8573d6000803e3d6000fd5b50479250504715905061301c57601654600e546001600160a01b03909116906108fc9061ffff680100000000000000008204811691612f3f91869162010000900416613c6c565b612f499190613c1a565b6040518115909202916000818181858888f19350505050158015612f71573d6000803e3d6000fd5b50601754600e546001600160a01b03909116906108fc9061ffff680100000000000000008204811691612fae918691640100000000900416613c6c565b612fb89190613c1a565b6040518115909202916000818181858888f19350505050158015612fe0573d6000803e3d6000fd5b506015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561301a573d6000803e3d6000fd5b505b50505b506018805460ff19169055565b601c54600090610100900460ff166130d8576130488585613268565b601c54610100900460ff1615801561306557506130658585612c4d565b156130d85760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6130e28585612c4d565b1561319557601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561317e575060408051601f3d908101601f1916820190925261317b91810190613cd9565b60015b61318757600080fd5b90508061319357600080fd5b505b6001600160a01b038516600090815260016020526040812080548592906131bd908490613c55565b9091555060009050826131d057836131db565b6131db8686866133c6565b6001600160a01b038616600090815260016020526040812080549293508392909190613208908490613c8b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161325491815260200190565b60405180910390a350600195945050505050565b601c54610100900460ff16156132e65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6132f08282612c4d565b15801561330a57506011546001600160a01b038281169116145b15611d1e576001600160a01b038083166000908152600860205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041661337f57601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6018805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60115460009081906001600160a01b03868116911614156133ee5750600d5461ffff16613428565b6011546001600160a01b03858116911614156134175750600d5462010000900461ffff16613428565b50600d54640100000000900461ffff165b806134365782915050610f7e565b600e546000906134629061ffff6601000000000000820481169168010000000000000000900416613b01565b600e54600f5461ffff928316926601000000000000928390048116929091041661348c8588613c6c565b6134969190613c1a565b6134a09190613c6c565b6134aa9190613c1a565b600f5490915060009082906601000000000000900461ffff166134cd8588613c6c565b6134d79190613c1a565b6134e19190613c55565b30600090815260016020526040812080549293508392909190613505908490613c8b565b9091555050811561351f5761351d8761dead8461357e565b505b60405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36135698282613c8b565b6135739086613c55565b979650505050505050565b6001600160a01b0382166000908152600160205260408120805483919083906135a8908490613c8b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135f491815260200190565b60405180910390a35060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146125fa57600080fd5b803561365581613635565b919050565b80151581146125fa57600080fd5b80356136558161365a565b6000806040838503121561368657600080fd5b823567ffffffffffffffff8082111561369e57600080fd5b818501915085601f8301126136b257600080fd5b81356020828211156136c6576136c6613606565b8160051b604051601f19603f830116810181811086821117156136eb576136eb613606565b60405292835281830193508481018201928984111561370957600080fd5b948201945b8386101561372e5761371f8661364a565b8552948201949382019361370e565b965061373d9050878201613668565b9450505050509250929050565b600060208083528351808285015260005b818110156137775785810183015185820160400152820161375b565b81811115613789576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461365557600080fd5b600080600080608085870312156137c757600080fd5b6137d08561379f565b93506137de6020860161379f565b92506137ec6040860161379f565b91506137fa6060860161379f565b905092959194509250565b60006020828403121561381757600080fd5b5035919050565b6000806040838503121561383157600080fd5b823561383c81613635565b946020939093013593505050565b60008060006060848603121561385f57600080fd5b833561386a81613635565b9250602084013561387a81613635565b929592945050506040919091013590565b6000806040838503121561389e57600080fd5b50508035926020909101359150565b600080600080608085870312156138c357600080fd5b84356138ce8161365a565b935060208501356138de8161365a565b925060408501356138ee8161365a565b915060608501356138fe8161365a565b939692955090935050565b60008060006060848603121561391e57600080fd5b6139278461379f565b92506139356020850161379f565b91506139436040850161379f565b90509250925092565b60006020828403121561395e57600080fd5b8135610f7e81613635565b6000806040838503121561397c57600080fd5b823561398781613635565b915060208301356139978161365a565b809150509250929050565b6000602082840312156139b457600080fd5b8135610f7e8161365a565b6000806000606084860312156139d457600080fd5b83356139df81613635565b925060208401356139ef81613635565b915060408401356139ff81613635565b809150509250925092565b60008060408385031215613a1d57600080fd5b8235613a2881613635565b9150602083013561399781613635565b60008060008060808587031215613a4e57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613aa35781516001600160a01b031687529582019590820190600101613a7e565b509495945050505050565b604081526000613ac16040830185613a6a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff808316818516808303821115613b1e57613b1e613ad2565b01949350505050565b600181815b80851115613b62578160001904821115613b4857613b48613ad2565b80851615613b5557918102915b93841c9390800290613b2c565b509250929050565b600082613b7957506001610edf565b81613b8657506000610edf565b8160018114613b9c5760028114613ba657613bc2565b6001915050610edf565b60ff841115613bb757613bb7613ad2565b50506001821b610edf565b5060208310610133831016604e8410600b8410161715613be5575081810a610edf565b613bef8383613b27565b8060001904821115613c0357613c03613ad2565b029392505050565b6000610f7e60ff841683613b6a565b600082613c50577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c6757613c67613ad2565b500390565b6000816000190483118215151615613c8657613c86613ad2565b500290565b60008219821115613c9e57613c9e613ad2565b500190565b600060208284031215613cb557600080fd5b5051919050565b600060208284031215613cce57600080fd5b8151610f7e81613635565b600060208284031215613ceb57600080fd5b8151610f7e8161365a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815284602082015260a060408201526000613d4460a0830186613a6a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212205fd6090f333cac6a5a99a70616ba652fccc8fec2fd29dfd5228de88bbc6f3d0f64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103595760003560e01c8063590ffdce116101bb57806395d89b41116100f7578063eafb5a3c11610095578063f94aa1b41161006f578063f94aa1b414610adb578063fb78680d14610b32578063fdb78c0e14610b52578063fe575a8714610b7157600080fd5b8063eafb5a3c14610a86578063ee5d9c2d14610aa6578063eec2744e14610abb57600080fd5b8063c6a276c2116100d1578063c6a276c21461097e578063cab5ebea1461099e578063cf847706146109be578063dd62ed3e14610a4057600080fd5b806395d89b41146108f8578063a457c2d71461093e578063a9059cbb1461095e57600080fd5b806375cb1bd1116101645780638a63bd9b1161013e5780638a63bd9b146108b95780638a8c523c146108ce5780638da5cb5b1461089b5780638f2a02b4146108e357600080fd5b806375cb1bd11461085b57806380c581d11461087b578063893d20e81461089b57600080fd5b80636ff73201116101955780636ff73201146107f057806370a0823114610810578063715018a61461084657600080fd5b8063590ffdce146107905780635932ead1146107b05780635c24b074146107d057600080fd5b8063260039571161029557806339509351116102335780634fb2e45d1161020d5780634fb2e45d146107035780634fbee1931461072357806350a8e0161461075c57806355dbc3691461077b57600080fd5b806339509351146106a9578063452ed4f1146106c95780634ada218b146106e957600080fd5b8063313ce5671161026f578063313ce5671461062757806332cde6641461064957806333251a0b14610669578063384f36b61461068957600080fd5b806326003957146105d257806329dd8798146105f25780632b112e491461061257600080fd5b80630923160211610302578063122fea3b116102dc578063122fea3b1461051257806318160ddd146105325780631b6afa2d1461054757806323b872dd146105b257600080fd5b8063092316021461049f578063095ea7b3146104bf5780630fa604e4146104ef57600080fd5b806306fdde031161033357806306fdde03146104105780630712d1651461045f5780630758d9241461047f57600080fd5b806303fd2a451461036557806305bbedb614610398578063069d955f146103ba57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103b86103b3366004613673565b610b91565b005b3480156103c657600080fd5b50600d546103eb9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561041c57600080fd5b5060408051808201909152600781527f536861726974790000000000000000000000000000000000000000000000000060208201525b60405161038f919061374a565b34801561046b57600080fd5b506103b861047a3660046137b1565b610c6a565b34801561048b57600080fd5b5060105461037b906001600160a01b031681565b3480156104ab57600080fd5b506103b86104ba366004613805565b610daf565b3480156104cb57600080fd5b506104df6104da36600461381e565b610ece565b604051901515815260200161038f565b3480156104fb57600080fd5b50610504610ee5565b60405190815260200161038f565b34801561051e57600080fd5b5060125461037b906001600160a01b031681565b34801561053e57600080fd5b50600b54610504565b34801561055357600080fd5b50600f546105849061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161038f565b3480156105be57600080fd5b506104df6105cd36600461384a565b610f0b565b3480156105de57600080fd5b506103b86105ed36600461388b565b610f85565b3480156105fe57600080fd5b506103b861060d3660046138ad565b611090565b34801561061e57600080fd5b50610504611179565b34801561063357600080fd5b50600a5460405160ff909116815260200161038f565b34801561065557600080fd5b506103b8610664366004613909565b6111e2565b34801561067557600080fd5b506103b861068436600461394c565b611337565b34801561069557600080fd5b506103b86106a436600461394c565b6113d7565b3480156106b557600080fd5b506104df6106c436600461381e565b611469565b3480156106d557600080fd5b5060115461037b906001600160a01b031681565b3480156106f557600080fd5b50601c546104df9060ff1681565b34801561070f57600080fd5b506103b861071e36600461394c565b6114a5565b34801561072f57600080fd5b506104df61073e36600461394c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561076857600080fd5b50601c546104df90610100900460ff1681565b34801561078757600080fd5b506105046116b3565b34801561079c57600080fd5b506103b86107ab366004613969565b61172c565b3480156107bc57600080fd5b506103b86107cb3660046139a2565b6117a5565b3480156107dc57600080fd5b506103b86107eb36600461394c565b611843565b3480156107fc57600080fd5b506103b861080b366004613805565b611982565b34801561081c57600080fd5b5061050461082b36600461394c565b6001600160a01b031660009081526001602052604090205490565b34801561085257600080fd5b506103b8611a2e565b34801561086757600080fd5b506103b86108763660046139bf565b611ade565b34801561088757600080fd5b506103b8610896366004613969565b611b78565b3480156108a757600080fd5b506000546001600160a01b031661037b565b3480156108c557600080fd5b506104df611d22565b3480156108da57600080fd5b506103b8611d91565b3480156108ef57600080fd5b50610504611f81565b34801561090457600080fd5b5060408051808201909152600681527f24536861726900000000000000000000000000000000000000000000000000006020820152610452565b34801561094a57600080fd5b506104df61095936600461381e565b611fd6565b34801561096a57600080fd5b506104df61097936600461381e565b61200d565b34801561098a57600080fd5b506103b861099936600461394c565b612024565b3480156109aa57600080fd5b506103b86109b93660046139a2565b6120c4565b3480156109ca57600080fd5b50600e54610a0b9061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161038f565b348015610a4c57600080fd5b50610504610a5b366004613a0a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a9257600080fd5b506103b8610aa136600461394c565b612166565b348015610ab257600080fd5b506103b861251a565b348015610ac757600080fd5b506103b8610ad6366004613969565b6125fd565b348015610ae757600080fd5b50601554601654601754610b08926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161038f565b348015610b3e57600080fd5b506103b8610b4d366004613a38565b6126a5565b348015610b5e57600080fd5b506018546104df90610100900460ff1681565b348015610b7d57600080fd5b506104df610b8c36600461394c565b612732565b6000546001600160a01b03163314610be45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c349085908590600401613aae565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b600e805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff161766010000000000009184169190910217905581610d5f8486613b01565b610d699190613b01565b600e805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550505050565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b604b811015610e4e5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bdb565b601c546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610eb357600080fd5b505af1158015610ec7573d6000803e3d6000fd5b5050505050565b6000610edb3384846127c0565b5060015b92915050565b600a8054600091610ef99160ff1690613c0b565b601954610f069190613c1a565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610f70576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610f6a908490613c55565b90915550505b610f7b8484846128cd565b90505b9392505050565b6000546001600160a01b03163314610fd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6103e8600b54610fe39190613c1a565b8183600b54610ff29190613c6c565b610ffc9190613c1a565b10156110705760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bdb565b8082600b5461107f9190613c6c565b6110899190613c1a565b6019555050565b6000546001600160a01b031633146110de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561115b57600080fd5b505af115801561116f573d6000803e3d6000fd5b5050505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916111d591613c8b565b600b54610f069190613c55565b6000546001600160a01b031633146112305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b600f5461ffff9081169084161180159061125a5750600f5461ffff62010000909104811690831611155b80156112785750600f5461ffff640100000000909104811690821611155b6112c45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bdb565b600d805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146113855760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610e99565b6000546001600160a01b031633146114255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff161561143a57600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610edb9185906114a0908690613c8b565b6127c0565b6000546001600160a01b031633146114f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6001600160a01b03811661156f5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bdb565b6001600160a01b03811661dead14156115f05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bdb565b60008054611609916001600160a01b039091169061172c565b61161481600161172c565b600080546001600160a01b03168152600160205260409020541561165b57600080546001600160a01b03168082526001602052604090912054611659919083906128cd565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601c60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190613ca3565b6000546001600160a01b0316331461177a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517f5932ead10000000000000000000000000000000000000000000000000000000081528215156004820152620100009091046001600160a01b031690635932ead190602401610e99565b6000546001600160a01b031633146118915760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff16156118e95760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bdb565b6001600160a01b0381163014156119425760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bdb565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000546001600160a01b031633146119d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b61012c8111156119df57600080fd5b601c546040517f6ff7320100000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b031690636ff7320190602401610e99565b6000546001600160a01b03163314611a7c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b60008054611a95916001600160a01b039091169061172c565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b2c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601580546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601680549385169382169390931790925560178054919093169116179055565b6000546001600160a01b03163314611bc65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b80611c3d576001600160a01b03828116600081815260026020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c34565b60035415611ca4576203f48060035442611c579190613c55565b11611ca45760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bdb565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601c5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c34565b5050565b600080546001600160a01b03163314611d715760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601054611d8b9030906001600160a01b03166000196127c0565b50600190565b6000546001600160a01b03163314611ddf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c5460ff1615611e325760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bdb565b601c54610100900460ff16611e895760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bdb565b601c546201000090046001600160a01b0316611ecf57601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c54601154600a546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f6057600080fd5b505af1925050508015611f71575060015b50601c805460ff19166001179055565b6000601c60029054906101000a90046001600160a01b03166001600160a01b0316638f2a02b46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611708573d6000803e3d6000fd5b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610edb9185906114a0908690613c55565b600061201a3384846128cd565b5060019392505050565b6000546001600160a01b031633146120725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610e99565b6000546001600160a01b031633146121125760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601880548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061215b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146121b45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221d9190613cbc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190613cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190613cbc565b90506001600160a01b0381166124b357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123879190613cbc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190613cbc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561245d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124819190613cbc565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556124dc565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556125159030906000196127c0565b505050565b6000546001600160a01b031633146125685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c54610100900460ff16156125c05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bdb565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156125fa573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461264b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b601c546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c34565b6000546001600160a01b031633146126f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bdb565b8284600b546127029190613c6c565b61270c9190613c1a565b601a55600b54819061271f908490613c6c565b6127299190613c1a565b601b5550505050565b601c546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf9190613cd9565b6001600160a01b0383166128165760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bdb565b6001600160a01b03821661286c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bdb565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661294b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6001600160a01b0383166129c75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bdb565b60008211612a3d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bdb565b612a478484612c4d565b15612b7b57601c5460ff16612a9e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bdb565b6012546001600160a01b03848116911614801590612ad557506001600160a01b03831660009081526002602052604090205460ff16155b15612b7b5760195482612afd856001600160a01b031660009081526001602052604090205490565b612b079190613c8b565b1115612b7b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bdb565b6001600160a01b03841660009081526005602052604090205460019060ff1680612bbd57506001600160a01b03841660009081526005602052604090205460ff165b15612bc6575060005b6001600160a01b03841660009081526002602052604090205460ff1615612c385760185460ff16158015612c015750601854610100900460ff165b15612c385730600090815260016020526040902054601a548110612c3657601b548110612c2d5750601b545b612c3681612d0a565b505b612c448585858461302c565b95945050505050565b600080546001600160a01b03848116911614801590612c7a57506000546001600160a01b03838116911614155b8015612c9f57506001600160a01b03821660009081526008602052604090205460ff16155b8015612cc457506001600160a01b03831660009081526008602052604090205460ff16155b8015612cdb57506001600160a01b03821661dead14155b8015612cef57506001600160a01b03821615155b8015610f7e57506001600160a01b0383163014159392505050565b6018805460ff19166001179055600e5461ffff6801000000000000000090910416612d345761301f565b3060009081526004602090815260408083206010546001600160a01b0316845290915290205460001914612d8d573060009081526004602090815260408083206010546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612dc257612dc2613cf6565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e589190613cbc565b81600181518110612e6b57612e6b613cf6565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612eca908590600090869030904290600401613d25565b600060405180830381600087803b158015612ee457600080fd5b505af1158015612ef8573d6000803e3d6000fd5b50479250504715905061301c57601654600e546001600160a01b03909116906108fc9061ffff680100000000000000008204811691612f3f91869162010000900416613c6c565b612f499190613c1a565b6040518115909202916000818181858888f19350505050158015612f71573d6000803e3d6000fd5b50601754600e546001600160a01b03909116906108fc9061ffff680100000000000000008204811691612fae918691640100000000900416613c6c565b612fb89190613c1a565b6040518115909202916000818181858888f19350505050158015612fe0573d6000803e3d6000fd5b506015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561301a573d6000803e3d6000fd5b505b50505b506018805460ff19169055565b601c54600090610100900460ff166130d8576130488585613268565b601c54610100900460ff1615801561306557506130658585612c4d565b156130d85760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6130e28585612c4d565b1561319557601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561317e575060408051601f3d908101601f1916820190925261317b91810190613cd9565b60015b61318757600080fd5b90508061319357600080fd5b505b6001600160a01b038516600090815260016020526040812080548592906131bd908490613c55565b9091555060009050826131d057836131db565b6131db8686866133c6565b6001600160a01b038616600090815260016020526040812080549293508392909190613208908490613c8b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161325491815260200190565b60405180910390a350600195945050505050565b601c54610100900460ff16156132e65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bdb565b6132f08282612c4d565b15801561330a57506011546001600160a01b038281169116145b15611d1e576001600160a01b038083166000908152600860205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041661337f57601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6018805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60115460009081906001600160a01b03868116911614156133ee5750600d5461ffff16613428565b6011546001600160a01b03858116911614156134175750600d5462010000900461ffff16613428565b50600d54640100000000900461ffff165b806134365782915050610f7e565b600e546000906134629061ffff6601000000000000820481169168010000000000000000900416613b01565b600e54600f5461ffff928316926601000000000000928390048116929091041661348c8588613c6c565b6134969190613c1a565b6134a09190613c6c565b6134aa9190613c1a565b600f5490915060009082906601000000000000900461ffff166134cd8588613c6c565b6134d79190613c1a565b6134e19190613c55565b30600090815260016020526040812080549293508392909190613505908490613c8b565b9091555050811561351f5761351d8761dead8461357e565b505b60405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36135698282613c8b565b6135739086613c55565b979650505050505050565b6001600160a01b0382166000908152600160205260408120805483919083906135a8908490613c8b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135f491815260200190565b60405180910390a35060019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b03811681146125fa57600080fd5b803561365581613635565b919050565b80151581146125fa57600080fd5b80356136558161365a565b6000806040838503121561368657600080fd5b823567ffffffffffffffff8082111561369e57600080fd5b818501915085601f8301126136b257600080fd5b81356020828211156136c6576136c6613606565b8160051b604051601f19603f830116810181811086821117156136eb576136eb613606565b60405292835281830193508481018201928984111561370957600080fd5b948201945b8386101561372e5761371f8661364a565b8552948201949382019361370e565b965061373d9050878201613668565b9450505050509250929050565b600060208083528351808285015260005b818110156137775785810183015185820160400152820161375b565b81811115613789576000604083870101525b50601f01601f1916929092016040019392505050565b803561ffff8116811461365557600080fd5b600080600080608085870312156137c757600080fd5b6137d08561379f565b93506137de6020860161379f565b92506137ec6040860161379f565b91506137fa6060860161379f565b905092959194509250565b60006020828403121561381757600080fd5b5035919050565b6000806040838503121561383157600080fd5b823561383c81613635565b946020939093013593505050565b60008060006060848603121561385f57600080fd5b833561386a81613635565b9250602084013561387a81613635565b929592945050506040919091013590565b6000806040838503121561389e57600080fd5b50508035926020909101359150565b600080600080608085870312156138c357600080fd5b84356138ce8161365a565b935060208501356138de8161365a565b925060408501356138ee8161365a565b915060608501356138fe8161365a565b939692955090935050565b60008060006060848603121561391e57600080fd5b6139278461379f565b92506139356020850161379f565b91506139436040850161379f565b90509250925092565b60006020828403121561395e57600080fd5b8135610f7e81613635565b6000806040838503121561397c57600080fd5b823561398781613635565b915060208301356139978161365a565b809150509250929050565b6000602082840312156139b457600080fd5b8135610f7e8161365a565b6000806000606084860312156139d457600080fd5b83356139df81613635565b925060208401356139ef81613635565b915060408401356139ff81613635565b809150509250925092565b60008060408385031215613a1d57600080fd5b8235613a2881613635565b9150602083013561399781613635565b60008060008060808587031215613a4e57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613aa35781516001600160a01b031687529582019590820190600101613a7e565b509495945050505050565b604081526000613ac16040830185613a6a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff808316818516808303821115613b1e57613b1e613ad2565b01949350505050565b600181815b80851115613b62578160001904821115613b4857613b48613ad2565b80851615613b5557918102915b93841c9390800290613b2c565b509250929050565b600082613b7957506001610edf565b81613b8657506000610edf565b8160018114613b9c5760028114613ba657613bc2565b6001915050610edf565b60ff841115613bb757613bb7613ad2565b50506001821b610edf565b5060208310610133831016604e8410600b8410161715613be5575081810a610edf565b613bef8383613b27565b8060001904821115613c0357613c03613ad2565b029392505050565b6000610f7e60ff841683613b6a565b600082613c50577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c6757613c67613ad2565b500390565b6000816000190483118215151615613c8657613c86613ad2565b500290565b60008219821115613c9e57613c9e613ad2565b500190565b600060208284031215613cb557600080fd5b5051919050565b600060208284031215613cce57600080fd5b8151610f7e81613635565b600060208284031215613ceb57600080fd5b8151610f7e8161365a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815284602082015260a060408201526000613d4460a0830186613a6a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212205fd6090f333cac6a5a99a70616ba652fccc8fec2fd29dfd5228de88bbc6f3d0f64736f6c634300080a0033

Deployed Bytecode Sourcemap

6210:19866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8330:73;;;;;;;;;;;;8361:42;8330:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8330:73:0;;;;;;;;16873:172;;;;;;;;;;-1:-1:-1;16873:172:0;;;;;:::i;:::-;;:::i;:::-;;7555:113;;;;;;;;;;-1:-1:-1;7555:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;2449:6:1;2482:15;;;2464:34;;2534:15;;;2529:2;2514:18;;2507:43;2586:15;;2566:18;;;2559:43;;;;2427:2;2412:18;7555:113:0;2243:365:1;12778:80:0;;;;;;;;;;-1:-1:-1;12850:5:0;;;;;;;;;;;;;;;;;12778:80;;;;;;;:::i;18734:291::-;;;;;;;;;;-1:-1:-1;18734:291:0;;;;;:::i;:::-;;:::i;8030:26::-;;;;;;;;;;-1:-1:-1;8030:26:0;;;;-1:-1:-1;;;;;8030:26:0;;;17743:149;;;;;;;;;;-1:-1:-1;17743:149:0;;;;;:::i;:::-;;:::i;13391:161::-;;;;;;;;;;-1:-1:-1;13391:161:0;;;;;:::i;:::-;;:::i;:::-;;;4762:14:1;;4755:22;4737:41;;4725:2;4710:18;13391:161:0;4597:187:1;19308:112:0;;;;;;;;;;;;;:::i;:::-;;;4935:25:1;;;4923:2;4908:18;19308:112:0;4789:177:1;8093:28:0;;;;;;;;;;-1:-1:-1;8093:28:0;;;;-1:-1:-1;;;;;8093:28:0;;;12513:83;;;;;;;;;;-1:-1:-1;12586:7:0;;12513:83;;7827:194;;;;;;;;;;-1:-1:-1;7827:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5204:6:1;5237:15;;;5219:34;;5289:15;;;5284:2;5269:18;;5262:43;5341:15;;;5321:18;;;5314:43;;;;5393:15;;;5388:2;5373:18;;5366:43;5181:3;5166:19;7827:194:0;4971:444:1;14058:306:0;;;;;;;;;;-1:-1:-1;14058:306:0;;;;;:::i;:::-;;:::i;19033:267::-;;;;;;;;;;-1:-1:-1;19033:267:0;;;;;:::i;:::-;;:::i;17540:195::-;;;;;;;;;;-1:-1:-1;17540:195:0;;;;;:::i;:::-;;:::i;16040:141::-;;;;;;;;;;;;;:::i;12602:80::-;;;;;;;;;;-1:-1:-1;12670:9:0;;12602:80;;12670:9;;;;6928:36:1;;6916:2;6901:18;12602:80:0;6786:184:1;18296:430:0;;;;;;;;;;-1:-1:-1;18296:430:0;;;;;:::i;:::-;;:::i;17424:108::-;;;;;;;;;;-1:-1:-1;17424:108:0;;;;;:::i;:::-;;:::i;15886:146::-;;;;;;;;;;-1:-1:-1;15886:146:0;;;;;:::i;:::-;;:::i;14372:215::-;;;;;;;;;;-1:-1:-1;14372:215:0;;;;;:::i;:::-;;:::i;8063:21::-;;;;;;;;;;-1:-1:-1;8063:21:0;;;;-1:-1:-1;;;;;8063:21:0;;;9073:34;;;;;;;;;;-1:-1:-1;9073:34:0;;;;;;;;11367:590;;;;;;;;;;-1:-1:-1;11367:590:0;;;;;:::i;:::-;;:::i;16189:125::-;;;;;;;;;;-1:-1:-1;16189:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;16278:28:0;16254:4;16278:28;;;:19;:28;;;;;;;;;16189:125;9114:36;;;;;;;;;;-1:-1:-1;9114:36:0;;;;;;;;;;;17312:104;;;;;;;;;;;;;:::i;16322:134::-;;;;;;;;;;-1:-1:-1;16322:134:0;;;;;:::i;:::-;;:::i;18018:117::-;;;;;;;;;;-1:-1:-1;18018:117:0;;;;;:::i;:::-;;:::i;16464:248::-;;;;;;;;;;-1:-1:-1;16464:248:0;;;;;:::i;:::-;;:::i;18143:145::-;;;;;;;;;;-1:-1:-1;18143:145:0;;;;;:::i;:::-;;:::i;13091:117::-;;;;;;;;;;-1:-1:-1;13091:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13184:16:0;13157:7;13184:16;;;:7;:16;;;;;;;13091:117;11965:195;;;;;;;;;;;;;:::i;19725:263::-;;;;;;;;;;-1:-1:-1;19725:263:0;;;;;:::i;:::-;;:::i;15378:500::-;;;;;;;;;;-1:-1:-1;15378:500:0;;;;;:::i;:::-;;:::i;12864:80::-;;;;;;;;;;-1:-1:-1;12916:7:0;11345:6;-1:-1:-1;;;;;11345:6:0;12864:80;19308:112;13877:173;;;;;;;;;;;;;:::i;23378:429::-;;;;;;;;;;;;;:::i;17900:110::-;;;;;;;;;;;;;:::i;12688:84::-;;;;;;;;;;-1:-1:-1;12762:7:0;;;;;;;;;;;;;;;;;12688:84;;14595:225;;;;;;;;;;-1:-1:-1;14595:225:0;;;;;:::i;:::-;;:::i;13216:167::-;;;;;;;;;;-1:-1:-1;13216:167:0;;;;;:::i;:::-;;:::i;17053:118::-;;;;;;;;;;-1:-1:-1;17053:118:0;;;;;:::i;:::-;;:::i;19996:165::-;;;;;;;;;;-1:-1:-1;19996:165:0;;;;;:::i;:::-;;:::i;7677:141::-;;;;;;;;;;-1:-1:-1;7677:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9010:6:1;9043:15;;;9025:34;;9095:15;;;9090:2;9075:18;;9068:43;9147:15;;;9127:18;;;9120:43;;;;9199:15;;9194:2;9179:18;;9172:43;9252:15;;;9246:3;9231:19;;9224:44;8987:3;8972:19;7677:141:0;8751:523:1;12950:133:0;;;;;;;;;;-1:-1:-1;12950:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13052:19:0;;;13034:7;13052:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12950:133;14828:542;;;;;;;;;;-1:-1:-1;14828:542:0;;;;;:::i;:::-;;:::i;23815:183::-;;;;;;;;;;;;;:::i;16720:145::-;;;;;;;;;;-1:-1:-1;16720:145:0;;;;;:::i;:::-;;:::i;8546:266::-;;;;;;;;;;-1:-1:-1;8546:266:0;;;;;;;;-1:-1:-1;;;;;8546:266:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10001:15:1;;;9983:34;;10053:15;;;10048:2;10033:18;;10026:43;10105:15;;10085:18;;;10078:43;;;;9910:2;9895:18;8546:266:0;9672:455:1;19428:289:0;;;;;;;;;;-1:-1:-1;19428:289:0;;;;;:::i;:::-;;:::i;8843:39::-;;;;;;;;;;-1:-1:-1;8843:39:0;;;;;;;;;;;17179:125;;;;;;;;;;-1:-1:-1;17179:125:0;;;;;:::i;:::-;;:::i;16873:172::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;;;;;;;;;16981:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;16981:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;17019:8;;17029:7;;16981:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16873:172:::0;;:::o;18734:291::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;18842:7:::1;:29:::0;;::::1;::::0;;::::1;18882:25:::0;;;;;;;;;;;::::1;;;18946:19:::0;;18918:17;;;::::1;;18946:19:::0;;;;;;::::1;::::0;;;::::1;;::::0;;18918:17;18992:19:::1;18882:25:::0;18842:29;18992:19:::1;:::i;:::-;:25;;;;:::i;:::-;18976:7;:41:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;18734:291:0:o;17743:149::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;17827:2:::1;17820:3;:9;;17812:30;;;::::0;-1:-1:-1;;;17812:30:0;;12324:2:1;17812:30:0::1;::::0;::::1;12306:21:1::0;12363:1;12343:18;;;12336:29;12401:10;12381:18;;;12374:38;12429:18;;17812:30:0::1;12122:331:1::0;17812:30:0::1;17853:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;4935:25:1::0;;;17853:9:0;;;::::1;-1:-1:-1::0;;;;;17853:9:0::1;::::0;:26:::1;::::0;4908:18:1;;17853:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17743:149:::0;:::o;13391:161::-;13466:4;13483:39;189:10;13506:7;13515:6;13483:8;:39::i;:::-;-1:-1:-1;13540:4:0;13391:161;;;;;:::o;19308:112::-;19402:9;;;19353:7;;19398:13;;19402:9;;;19398:13;:::i;:::-;19380:14;;:32;;;;:::i;:::-;19373:39;;19308:112;:::o;14058:306::-;-1:-1:-1;;;;;14179:19:0;;14158:4;14179:19;;;:11;:19;;;;;;;;14199:10;14179:31;;;;;;;;-1:-1:-1;;14179:52:0;14175:126;;-1:-1:-1;;;;;14248:19:0;;;;;;:11;:19;;;;;;;;14268:10;14248:31;;;;;;;:41;;14283:6;;14248:19;:41;;14283:6;;14248:41;:::i;:::-;;;;-1:-1:-1;;14175:126:0;14320:36;14330:6;14338:9;14349:6;14320:9;:36::i;:::-;14313:43;;14058:306;;;;;;:::o;19033:267::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;19175:4:::1;19165:7;;:14;;;;:::i;:::-;19153:7;19142;19132;;:17;;;;:::i;:::-;19131:29;;;;:::i;:::-;:49;;19123:112;;;::::0;-1:-1:-1;;;19123:112:0;;14805:2:1;19123:112:0::1;::::0;::::1;14787:21:1::0;14844:2;14824:18;;;14817:30;14883:34;14863:18;;;14856:62;14954:20;14934:18;;;14927:48;14992:19;;19123:112:0::1;14603:414:1::0;19123:112:0::1;19285:7;19274;19264;;:17;;;;:::i;:::-;19263:29;;;;:::i;:::-;19246:14;:46:::0;-1:-1:-1;;19033:267:0:o;17540:195::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;17662:9:::1;::::0;:65:::1;::::0;;;;15254:14:1;;15247:22;17662:65:0::1;::::0;::::1;15229:41:1::0;15313:14;;15306:22;15286:18;;;15279:50;15372:14;;15365:22;15345:18;;;15338:50;15431:14;;15424:22;15404:18;;;15397:50;17662:9:0;;;::::1;-1:-1:-1::0;;;;;17662:9:0::1;::::0;:24:::1;::::0;15201:19:1;;17662:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17540:195:::0;;;;:::o;16040:141::-;13184:7;:16;;;;8361:42;16093:7;13184:16;;;;;16093:7;;16132:39;;;:::i;:::-;16121:7;;:51;;;;:::i;18296:430::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;18413:10:::1;:22:::0;::::1;::::0;;::::1;18403:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;18466:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;18456:34:::0;;::::1;;;18403:87;:150;;;;-1:-1:-1::0;18526:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;18511:42:::0;;::::1;;;18403:150;18395:203;;;::::0;-1:-1:-1;;;18395:203:0;;15793:2:1;18395:203:0::1;::::0;::::1;15775:21:1::0;15832:2;15812:18;;;15805:30;15871:25;15851:18;;;15844:53;15914:18;;18395:203:0::1;15591:347:1::0;18395:203:0::1;18609:9;:25:::0;;::::1;::::0;;::::1;18645:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;18683:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;18296:430::o;17424:108::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;17493:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;17493:31:0::1;::::0;::::1;160:74:1::0;17493:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;17493:31:0::1;14:226:1::0;15886:146:0;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;15974:16:::1;::::0;::::1;::::0;::::1;;;15973:17;15965:26;;;::::0;::::1;;16002:13;:22:::0;;-1:-1:-1;;16002:22:0::1;-1:-1:-1::0;;;;;16002:22:0;;;::::1;::::0;;;::::1;::::0;;15886:146::o;14372:215::-;189:10;14460:4;14509:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14509:34:0;;;;;;;;;;14460:4;;14477:80;;14500:7;;14509:47;;14546:10;;14509:47;:::i;:::-;14477:8;:80::i;11367:590::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;-1:-1:-1;;;;;11448:22:0;::::1;11440:96;;;::::0;-1:-1:-1;;;11440:96:0;;16145:2:1;11440:96:0::1;::::0;::::1;16127:21:1::0;16184:2;16164:18;;;16157:30;16223:34;16203:18;;;16196:62;16294:31;16274:18;;;16267:59;16343:19;;11440:96:0::1;15943:425:1::0;11440:96:0::1;-1:-1:-1::0;;;;;11555:16:0;::::1;8361:42;11555:16;;11547:90;;;::::0;-1:-1:-1;;;11547:90:0;;16145:2:1;11547:90:0::1;::::0;::::1;16127:21:1::0;16184:2;16164:18;;;16157:30;16223:34;16203:18;;;16196:62;16294:31;16274:18;;;16267:59;16343:19;;11547:90:0::1;15943:425:1::0;11547:90:0::1;11668:6;::::0;;11648:34:::1;::::0;-1:-1:-1;;;;;11668:6:0;;::::1;::::0;11648:19:::1;:34::i;:::-;11693:35;11713:8;11723:4;11693:19;:35::i;:::-;11772:1;11762:6:::0;;-1:-1:-1;;;;;11762:6:0::1;13184:16:::0;;:7;:16;;;;;;11752:21;11749:99:::1;;11800:6;::::0;;-1:-1:-1;;;;;11800:6:0::1;13184:16:::0;;;:7;:16;;;;;;;11790:46:::1;::::0;11800:6;11808:8;;11790:9:::1;:46::i;:::-;;11749:99;11868:6;:17:::0;;-1:-1:-1;;11868:17:0::1;-1:-1:-1::0;;;;;11868:17:0;::::1;::::0;;::::1;::::0;;11901:38:::1;::::0;11868:17;;;;11901:38:::1;::::0;11868:6;11901:38:::1;11367:590:::0;:::o;17312:104::-;17357:7;17384:9;;;;;;;;;-1:-1:-1;;;;;17384:9:0;-1:-1:-1;;;;;17384:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16322:134::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;-1:-1:-1;;;;;16410:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16410:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16322:134::o;18018:117::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;18090:9:::1;::::0;:37:::1;::::0;;;;4762:14:1;;4755:22;18090:37:0::1;::::0;::::1;4737:41:1::0;18090:9:0;;;::::1;-1:-1:-1::0;;;;;18090:9:0::1;::::0;:28:::1;::::0;4710:18:1;;18090:37:0::1;4597:187:1::0;16464:248:0;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;16548:16:::1;::::0;::::1;::::0;::::1;;;16547:17;16539:54;;;::::0;-1:-1:-1;;;16539:54:0;;16764:2:1;16539:54:0::1;::::0;::::1;16746:21:1::0;16803:2;16783:18;;;16776:30;16842:26;16822:18;;;16815:54;16886:18;;16539:54:0::1;16562:348:1::0;16539:54:0::1;-1:-1:-1::0;;;;;16612:28:0;::::1;16635:4;16612:28;;16604:55;;;::::0;-1:-1:-1;;;16604:55:0;;17117:2:1;16604:55:0::1;::::0;::::1;17099:21:1::0;17156:2;17136:18;;;17129:30;17195:16;17175:18;;;17168:44;17229:18;;16604:55:0::1;16915:338:1::0;16604:55:0::1;16670:9;:34:::0;;-1:-1:-1;;;;;16670:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16464:248::o;18143:145::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;18228:9:::1;18220:4;:17;;18212:26;;;::::0;::::1;;18249:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;4935:25:1::0;;;18249:9:0;;;::::1;-1:-1:-1::0;;;;;18249:9:0::1;::::0;:25:::1;::::0;4908:18:1;;18249:31:0::1;4789:177:1::0;11965:195:0;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;12052:6:::1;::::0;;12032:34:::1;::::0;-1:-1:-1;;;;;12052:6:0;;::::1;::::0;12032:19:::1;:34::i;:::-;12094:1;12077:19:::0;;-1:-1:-1;;12077:19:0::1;::::0;;12112:40:::1;::::0;12094:1;;12112:40:::1;::::0;12094:1;;12112:40:::1;11965:195::o:0;19725:263::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;19848:11:::1;:42:::0;;-1:-1:-1;;;;;19848:42:0;;::::1;-1:-1:-1::0;;19848:42:0;;::::1;;::::0;;;19901:19;:38;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;19950:15;:30;;;;;::::1;::::0;::::1;;::::0;;19725:263::o;15378:500::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;15459:16;15455:416:::1;;-1:-1:-1::0;;;;;15492:13:0;;::::1;15508:5;15492:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15492:21:0::1;::::0;;15528:9:::1;::::0;:32;;;;;::::1;::::0;::::1;17426:74:1::0;;;;17516:18;;;17509:50;;;;15528:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17399:18:1;;15528:32:0::1;17258:307:1::0;15455:416:0::1;15597:17;::::0;:22;15593:136:::1;;15686:6;15666:17;;15648:15;:35;;;;:::i;:::-;:44;15640:73;;;::::0;-1:-1:-1;;;15640:73:0;;17772:2:1;15640:73:0::1;::::0;::::1;17754:21:1::0;17811:2;17791:18;;;17784:30;17850:18;17830;;;17823:46;17886:18;;15640:73:0::1;17570:340:1::0;15640:73:0::1;-1:-1:-1::0;;;;;15743:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15743:20:0::1;15759:4;15743:20:::0;;::::1;::::0;;;15798:15:::1;15778:17;:35:::0;15828:9:::1;::::0;:31;;;;;::::1;::::0;::::1;17426:74:1::0;;;;17516:18;;;17509:50;15828:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17399:18:1;;15828:31:0::1;17258:307:1::0;15455:416:0::1;15378:500:::0;;:::o;13877:173::-;13941:4;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;13990:9:::1;::::0;13958:62:::1;::::0;13975:4:::1;::::0;-1:-1:-1;;;;;13990:9:0::1;-1:-1:-1::0;;13958:8:0::1;:62::i;:::-;-1:-1:-1::0;14038:4:0::1;13877:173:::0;:::o;23378:429::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;23440:14:::1;::::0;::::1;;23439:15;23431:52;;;::::0;-1:-1:-1;;;23431:52:0;;18117:2:1;23431:52:0::1;::::0;::::1;18099:21:1::0;18156:2;18136:18;;;18129:30;18195:26;18175:18;;;18168:54;18239:18;;23431:52:0::1;17915:348:1::0;23431:52:0::1;23502:16;::::0;::::1;::::0;::::1;;;23494:53;;;::::0;-1:-1:-1;;;23494:53:0;;18470:2:1;23494:53:0::1;::::0;::::1;18452:21:1::0;18509:2;18489:18;;;18482:30;18548:26;18528:18;;;18521:54;18592:18;;23494:53:0::1;18268:348:1::0;23494:53:0::1;23569:9;::::0;;;::::1;-1:-1:-1::0;;;;;23569:9:0::1;23558:99;;23609:9;:36:::0;;;::::1;23639:4;23609:36:::0;::::1;;::::0;;23558:99:::1;23671:9;::::0;23691:6:::1;::::0;23746:9:::1;::::0;23671:85:::1;::::0;;;;-1:-1:-1;;;;;23691:6:0;;::::1;23671:85;::::0;::::1;18844:74:1::0;18966:10;23706:12:0::1;18954:23:1::0;18934:18;;;18927:51;19026:18;23728:15:0::1;19014:31:1::0;18994:18;;;18987:59;23746:9:0::1;::::0;;::::1;19062:18:1::0;;;19055:45;23671:9:0;;;::::1;;::::0;:19:::1;::::0;18816::1;;23671:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23667:101:::0;23778:14:::1;:21:::0;;-1:-1:-1;;23778:21:0::1;23795:4;23778:21;::::0;;23378:429::o;17900:110::-;17948:7;17975:9;;;;;;;;;-1:-1:-1;;;;;17975:9:0;-1:-1:-1;;;;;17975:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14595:225;189:10;14688:4;14737:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14737:34:0;;;;;;;;;;14688:4;;14705:85;;14728:7;;14737:52;;14774:15;;14737:52;:::i;13216:167::-;13294:4;13311:42;189:10;13335:9;13346:6;13311:9;:42::i;:::-;-1:-1:-1;13371:4:0;;13216:167;-1:-1:-1;;;13216:167:0:o;17053:118::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;17127:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;17127:36:0::1;::::0;::::1;160:74:1::0;17127:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;17127:36:0::1;14:226:1::0;19996:165:0;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;20071:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;20071:30:0;;::::1;;::::0;;20117:36:::1;::::0;::::1;::::0;::::1;::::0;20093:8;4762:14:1;4755:22;4737:41;;4725:2;4710:18;;4597:187;20117:36:0::1;;;;;;;;19996:165:::0;:::o;14828:542::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;14899:20:::1;14932:9;14899:43;;14953:16;14983:10;-1:-1:-1::0;;;;;14983:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14972:40:0::1;;15021:4;15028:10;-1:-1:-1::0;;;;;15028:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14972:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19620:15:1;;;14972:74:0::1;::::0;::::1;19602:34:1::0;19672:15;;19652:18;;;19645:43;19514:18;;14972:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14953:93:::0;-1:-1:-1;;;;;;15061:22:0;::::1;15057:200;;15120:10;-1:-1:-1::0;;;;;15120:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15109:43:0::1;;15161:4;15168:10;-1:-1:-1::0;;;;;15168:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15109:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19620:15:1;;;15109:77:0::1;::::0;::::1;19602:34:1::0;19672:15;;19652:18;;;19645:43;19514:18;;15109:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15100:6;:86:::0;;-1:-1:-1;;15100:86:0::1;-1:-1:-1::0;;;;;15100:86:0;;;::::1;::::0;;;::::1;::::0;;15057:200:::1;;;15228:6;:17:::0;;-1:-1:-1;;15228:17:0::1;-1:-1:-1::0;;;;;15228:17:0;::::1;;::::0;;15057:200:::1;15267:9;:22:::0;;-1:-1:-1;;15267:22:0::1;-1:-1:-1::0;;;;;15267:22:0;::::1;::::0;;::::1;::::0;;;15300:62:::1;::::0;15317:4:::1;::::0;-1:-1:-1;;15300:8:0::1;:62::i;:::-;14888:482;;14828:542:::0;:::o;23815:183::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;23882:16:::1;::::0;::::1;::::0;::::1;;;23881:17;23873:58;;;::::0;-1:-1:-1;;;23873:58:0;;19901:2:1;23873:58:0::1;::::0;::::1;19883:21:1::0;19940:2;19920:18;;;19913:30;19979;19959:18;;;19952:58;20027:18;;23873:58:0::1;19699:352:1::0;23873:58:0::1;11318:7:::0;11345:6;;23942:48:::1;::::0;-1:-1:-1;;;;;11345:6:0;;;;23968:21:::1;23942:48:::0;::::1;;;::::0;23968:21;;23942:48;11318:7;23942:48;23968:21;11345:6;23942:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23815:183::o:0;16720:145::-;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;16810:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;17444:55:1;;;16810:47:0::1;::::0;::::1;17426:74:1::0;17543:14;;17536:22;17516:18;;;17509:50;16810:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;17399:18:1;;16810:47:0::1;17258:307:1::0;19428:289:0;9721:6;;-1:-1:-1;;;;;9721:6:0;189:10;9721:22;9713:52;;;;-1:-1:-1;;;9713:52:0;;10724:2:1;9713:52:0;;;10706:21:1;10763:2;10743:18;;;10736:30;-1:-1:-1;;;10782:18:1;;;10775:47;10839:18;;9713:52:0;10522:341:1;9713:52:0;19628:16:::1;19608;19598:7;;:26;;;;:::i;:::-;19597:47;;;;:::i;:::-;19581:13;:63:::0;19669:7:::1;::::0;19696:13;;19669:23:::1;::::0;19679:13;;19669:23:::1;:::i;:::-;19668:41;;;;:::i;:::-;19655:10;:54:::0;-1:-1:-1;;;;19428:289:0:o;17179:125::-;17264:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;17264:32:0;;;160:74:1;17240:4:0;;17264:9;;;;;:23;;133:18:1;;17264:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13560:309::-;-1:-1:-1;;;;;13654:20:0;;13646:52;;;;-1:-1:-1;;;13646:52:0;;20508:2:1;13646:52:0;;;20490:21:1;20547:2;20527:18;;;20520:30;20586:21;20566:18;;;20559:49;20625:18;;13646:52:0;20306:343:1;13646:52:0;-1:-1:-1;;;;;13717:21:0;;13709:53;;;;-1:-1:-1;;;13709:53:0;;20508:2:1;13709:53:0;;;20490:21:1;20547:2;20527:18;;;20520:30;20586:21;20566:18;;;20559:49;20625:18;;13709:53:0;20306:343:1;13709:53:0;-1:-1:-1;;;;;13775:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13828:33;;4935:25:1;;;13828:33:0;;4908:18:1;13828:33:0;;;;;;;13560:309;;;:::o;20500:1314::-;20579:4;-1:-1:-1;;;;;20604:18:0;;20596:68;;;;-1:-1:-1;;;20596:68:0;;20856:2:1;20596:68:0;;;20838:21:1;20895:2;20875:18;;;20868:30;20934:34;20914:18;;;20907:62;21005:7;20985:18;;;20978:35;21030:19;;20596:68:0;20654:401:1;20596:68:0;-1:-1:-1;;;;;20683:16:0;;20675:64;;;;-1:-1:-1;;;20675:64:0;;21262:2:1;20675:64:0;;;21244:21:1;21301:2;21281:18;;;21274:30;21340:34;21320:18;;;21313:62;21411:5;21391:18;;;21384:33;21434:19;;20675:64:0;21060:399:1;20675:64:0;20767:1;20758:6;:10;20750:64;;;;-1:-1:-1;;;20750:64:0;;21666:2:1;20750:64:0;;;21648:21:1;21705:2;21685:18;;;21678:30;21744:34;21724:18;;;21717:62;21815:11;21795:18;;;21788:39;21844:19;;20750:64:0;21464:405:1;20750:64:0;20828:20;20839:4;20845:2;20828:10;:20::i;:::-;20825:324;;;20869:14;;;;20865:89;;20904:34;;-1:-1:-1;;;20904:34:0;;22076:2:1;20904:34:0;;;22058:21:1;22115:2;22095:18;;;22088:30;22154:26;22134:18;;;22127:54;22198:18;;20904:34:0;21874:348:1;20865:89:0;20977:13;;-1:-1:-1;;;;;20971:19:0;;;20977:13;;20971:19;;;;:35;;-1:-1:-1;;;;;;20995:11:0;;;;;;:7;:11;;;;;;;;20994:12;20971:35;20968:170;;;21061:14;;21051:6;21035:13;21045:2;-1:-1:-1;;;;;13184:16:0;13157:7;13184:16;;;:7;:16;;;;;;;13091:117;21035:13;:22;;;;:::i;:::-;:40;;21027:95;;;;-1:-1:-1;;;21027:95:0;;22429:2:1;21027:95:0;;;22411:21:1;22468:2;22448:18;;;22441:30;22507:34;22487:18;;;22480:62;22578:12;22558:18;;;22551:40;22608:19;;21027:95:0;22227:406:1;21027:95:0;-1:-1:-1;;;;;21194:25:0;;21161:12;21194:25;;;:19;:25;;;;;;21176:4;;21194:25;;;:52;;-1:-1:-1;;;;;;21223:23:0;;;;;;:19;:23;;;;;;;;21194:52;21191:98;;;-1:-1:-1;21272:5:0;21191:98;-1:-1:-1;;;;;21305:11:0;;;;;;:7;:11;;;;;;;;21301:443;;;21338:6;;;;21337:7;:47;;;;-1:-1:-1;21365:19:0;;;;;;;21337:47;21333:394;;;21468:4;21419:28;13184:16;;;:7;:16;;;;;;21521:13;;21497:37;;21493:219;;21586:10;;21562:20;:34;21559:77;;-1:-1:-1;21623:10:0;;21559:77;21658:34;21671:20;21658:12;:34::i;:::-;21400:327;21333:394;21762:44;21780:4;21786:2;21790:6;21798:7;21762:17;:44::i;:::-;21755:51;20500:1314;-1:-1:-1;;;;;20500:1314:0:o;20169:323::-;20237:4;11345:6;;-1:-1:-1;;;;;20261:15:0;;;11345:6;;20261:15;;;;:45;;-1:-1:-1;11318:7:0;11345:6;-1:-1:-1;;;;;20293:13:0;;;11345:6;;20293:13;;20261:45;:84;;;;-1:-1:-1;;;;;;20324:21:0;;;;;;:17;:21;;;;;;;;20323:22;20261:84;:125;;;;-1:-1:-1;;;;;;20363:23:0;;;;;;:17;:23;;;;;;;;20362:24;20261:125;:152;;;;-1:-1:-1;;;;;;20403:10:0;;8361:42;20403:10;;20261:152;:185;;;;-1:-1:-1;;;;;;20430:16:0;;;;20261:185;:223;;;;-1:-1:-1;;;;;;20463:21:0;;20479:4;20463:21;;20254:230;20169:323;-1:-1:-1;;;20169:323:0:o;21822:1032::-;9615:6;:13;;-1:-1:-1;;9615:13:0;9624:4;9615:13;;;21909:7:::1;:13:::0;::::1;::::0;;;::::1;;21905:44;;21942:7;;21905:44;21984:4;21964:26;::::0;;;:11:::1;:26;::::0;;;;;;;21999:9:::1;::::0;-1:-1:-1;;;;;21999:9:0::1;21964:46:::0;;;;;;;;-1:-1:-1;;21964:67:0::1;21961:165;;22068:4;22048:26;::::0;;;:11:::1;:26;::::0;;;;;;;22083:9:::1;::::0;-1:-1:-1;;;;;22083:9:0::1;22048:46:::0;;;;;;;-1:-1:-1;;22048:66:0;;21961:165:::1;22170:16;::::0;;22184:1:::1;22170:16:::0;;;;;::::1;::::0;;22146:21:::1;::::0;22170:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22170:16:0::1;22146:40;;22215:4;22197;22202:1;22197:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22197:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22241:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;22197:7;;22241:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22231:4;22236:1;22231:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22231:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22270:9:::1;::::0;:227:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:227:::1;::::0;22345:20;;22270:9:::1;::::0;22424:4;;22451::::1;::::0;22471:15:::1;::::0;22270:227:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22530:21:0::1;::::0;-1:-1:-1;;22568:21:0::1;:25:::0;;-1:-1:-1;22564:283:0::1;;22610:19:::0;;22670:7:::1;:13:::0;-1:-1:-1;;;;;22610:19:0;;::::1;::::0;:75:::1;::::0;22670:13:::1;::::0;;::::1;::::0;::::1;::::0;22639:27:::1;::::0;22657:9;;22639:15;;::::1;;:27;:::i;:::-;:45;;;;:::i;:::-;22610:75;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22700:15:0;;22752:7:::1;:13:::0;-1:-1:-1;;;;;22700:15:0;;::::1;::::0;:67:::1;::::0;22752:13:::1;::::0;;::::1;::::0;::::1;::::0;22725:23:::1;::::0;22739:9;;22725:11;;::::1;;:23;:::i;:::-;:41;;;;:::i;:::-;22700:67;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22782:11:0::1;:21:::0;:53:::1;::::0;-1:-1:-1;;;;;22782:21:0;;::::1;::::0;22813::::1;22782:53:::0;::::1;;;::::0;:21:::1;:53:::0;:21;:53;22813:21;22782;:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22564:283;21894:960;;9639:1;-1:-1:-1::0;9651:6:0;:14;;-1:-1:-1;;9651:14:0;;;21822:1032::o;24006:905::-;24128:16;;24106:4;;24128:16;;;;;24123:221;;24161:28;24180:4;24186:2;24161:18;:28::i;:::-;24209:16;;;;;;;24208:17;:41;;;;;24229:20;24240:4;24246:2;24229:10;:20::i;:::-;24204:129;;;24270:47;;-1:-1:-1;;;24270:47:0;;23639:2:1;24270:47:0;;;23621:21:1;23678:2;23658:18;;;23651:30;23717:34;23697:18;;;23690:62;23788:7;23768:18;;;23761:35;23813:19;;24270:47:0;23437:401:1;24204:129:0;24360:20;24371:4;24377:2;24360:10;:20::i;:::-;24356:314;;;24428:9;;:37;;;;;-1:-1:-1;;;;;24124:15:1;;;24428:37:0;;;24106:34:1;24176:15;;;24156:18;;;24149:43;24208:18;;;24201:34;;;24397:12:0;;24428:9;;;;;:19;;24018:18:1;;24428:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24428:37:0;;;;;;;;-1:-1:-1;;24428:37:0;;;;;;;;;;;;:::i;:::-;;;24424:163;;24563:8;;;24424:163;24516:5;-1:-1:-1;24607:7:0;24603:56;;24635:8;;;24603:56;24382:288;24356:314;-1:-1:-1;;;;;24682:13:0;;;;;;:7;:13;;;;;:23;;24699:6;;24682:13;:23;;24699:6;;24682:23;:::i;:::-;;;;-1:-1:-1;24716:22:0;;-1:-1:-1;24742:7:0;24741:48;;24783:6;24741:48;;;24753:27;24763:4;24769:2;24773:6;24753:9;:27::i;:::-;-1:-1:-1;;;;;24800:11:0;;;;;;:7;:11;;;;;:29;;24716:73;;-1:-1:-1;24716:73:0;;24800:11;;;:29;;24716:73;;24800:29;:::i;:::-;;;;;;;;24862:2;-1:-1:-1;;;;;24847:34:0;24856:4;-1:-1:-1;;;;;24847:34:0;;24866:14;24847:34;;;;4935:25:1;;4923:2;4908:18;;4789:177;24847:34:0;;;;;;;;-1:-1:-1;24899:4:0;;24006:905;-1:-1:-1;;;;;24006:905:0:o;22862:508::-;22944:16;;;;;;;22943:17;22935:65;;;;-1:-1:-1;;;22935:65:0;;24448:2:1;22935:65:0;;;24430:21:1;24487:2;24467:18;;;24460:30;24526:34;24506:18;;;24499:62;24597:5;24577:18;;;24570:33;24620:19;;22935:65:0;24246:399:1;22935:65:0;23016:20;23027:4;23033:2;23016:10;:20::i;:::-;23015:21;:37;;;;-1:-1:-1;23046:6:0;;-1:-1:-1;;;;;23040:12:0;;;23046:6;;23040:12;23015:37;23011:352;;;-1:-1:-1;;;;;23069:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23069:30:0;23095:4;23069:30;;;23114:16;:23;;-1:-1:-1;;23114:23:0;23069:30;23114:23;;;;;23163:9;;;;23152:107;;23207:9;:36;;;;23237:4;23207:36;;;;;23152:107;23273:19;:26;;-1:-1:-1;;23273:26:0;;;;;23319:32;;-1:-1:-1;4737:41:1;;23319:32:0;;4725:2:1;4710:18;23319:32:0;;;;;;;22862:508;;:::o;25146:927::-;25286:6;;25225:7;;;;-1:-1:-1;;;;;25278:14:0;;;25286:6;;25278:14;25274:224;;;-1:-1:-1;25322:9:0;:16;;;25274:224;;;25366:6;;-1:-1:-1;;;;;25360:12:0;;;25366:6;;25360:12;25356:142;;;-1:-1:-1;25402:9:0;:17;;;;;;25356:142;;;-1:-1:-1;25465:9:0;:21;;;;;;25356:142;25514:15;25510:61;;25553:6;25546:13;;;;;25510:61;25694:7;:12;25583:18;;25678:28;;25694:12;;;;;;;25678:13;;;;:28;:::i;:::-;25661:7;:12;25630:10;:27;25604:103;;;;;25661:12;;;;;;;;25630:27;;;;25607:19;25616:10;25607:6;:19;:::i;:::-;25606:51;;;;:::i;:::-;25605:68;;;;:::i;:::-;25604:103;;;;:::i;:::-;25763:10;:27;25583:124;;-1:-1:-1;25718:17:0;;25583:124;;25763:27;;;;;25740:19;25749:10;25740:6;:19;:::i;:::-;25739:51;;;;:::i;:::-;25738:66;;;;:::i;:::-;25833:4;25817:22;;;;:7;:22;;;;;:35;;25718:86;;-1:-1:-1;25718:86:0;;25817:22;;;:35;;25718:86;;25817:35;:::i;:::-;;;;-1:-1:-1;;25867:14:0;;25863:94;;25898:47;25913:4;8361:42;25934:10;25898:14;:47::i;:::-;;25863:94;25972:40;;4935:25:1;;;25995:4:0;;-1:-1:-1;;;;;25972:40:0;;;;;4923:2:1;4908:18;25972:40:0;;;;;;;26042:22;26054:10;26042:9;:22;:::i;:::-;26032:33;;:6;:33;:::i;:::-;26025:40;25146:927;-1:-1:-1;;;;;;;25146:927:0:o;24919:219::-;-1:-1:-1;;;;;25029:18:0;;25012:4;25029:18;;;:7;:18;;;;;:28;;25051:6;;25029:18;25012:4;;25029:28;;25051:6;;25029:28;:::i;:::-;;;;;;;;25090:9;-1:-1:-1;;;;;25073:35:0;25082:6;-1:-1:-1;;;;;25073:35:0;;25101:6;25073:35;;;;4935:25:1;;4923:2;4908:18;;4789:177;25073:35:0;;;;;;;;-1:-1:-1;25126:4:0;24919:219;;;;;:::o;245:184:1:-;297:77;294:1;287:88;394:4;391:1;384:15;418:4;415:1;408:15;434:154;-1:-1:-1;;;;;513:5:1;509:54;502:5;499:65;489:93;;578:1;575;568:12;593:134;661:20;;690:31;661:20;690:31;:::i;:::-;593:134;;;:::o;732:118::-;818:5;811:13;804:21;797:5;794:32;784:60;;840:1;837;830:12;855:128;920:20;;949:28;920:20;949:28;:::i;988:1250::-;1078:6;1086;1139:2;1127:9;1118:7;1114:23;1110:32;1107:52;;;1155:1;1152;1145:12;1107:52;1195:9;1182:23;1224:18;1265:2;1257:6;1254:14;1251:34;;;1281:1;1278;1271:12;1251:34;1319:6;1308:9;1304:22;1294:32;;1364:7;1357:4;1353:2;1349:13;1345:27;1335:55;;1386:1;1383;1376:12;1335:55;1422:2;1409:16;1444:4;1467:2;1463;1460:10;1457:36;;;1473:18;;:::i;:::-;1519:2;1516:1;1512:10;1551:2;1545:9;-1:-1:-1;;1605:2:1;1601;1597:11;1593:84;1585:6;1581:97;1728:6;1716:10;1713:22;1708:2;1696:10;1693:18;1690:46;1687:72;;;1739:18;;:::i;:::-;1775:2;1768:22;1825:18;;;1859:15;;;;-1:-1:-1;1901:11:1;;;1897:20;;;1929:19;;;1926:39;;;1961:1;1958;1951:12;1926:39;1985:11;;;;2005:148;2021:6;2016:3;2013:15;2005:148;;;2087:23;2106:3;2087:23;:::i;:::-;2075:36;;2038:12;;;;2131;;;;2005:148;;;2172:6;-1:-1:-1;2197:35:1;;-1:-1:-1;2213:18:1;;;2197:35;:::i;:::-;2187:45;;;;;;988:1250;;;;;:::o;2613:656::-;2725:4;2754:2;2783;2772:9;2765:21;2815:6;2809:13;2858:6;2853:2;2842:9;2838:18;2831:34;2883:1;2893:140;2907:6;2904:1;2901:13;2893:140;;;3002:14;;;2998:23;;2992:30;2968:17;;;2987:2;2964:26;2957:66;2922:10;;2893:140;;;3051:6;3048:1;3045:13;3042:91;;;3121:1;3116:2;3107:6;3096:9;3092:22;3088:31;3081:42;3042:91;-1:-1:-1;3185:2:1;3173:15;-1:-1:-1;;3169:88:1;3154:104;;;;3260:2;3150:113;;2613:656;-1:-1:-1;;;2613:656:1:o;3274:159::-;3341:20;;3401:6;3390:18;;3380:29;;3370:57;;3423:1;3420;3413:12;3438:401;3520:6;3528;3536;3544;3597:3;3585:9;3576:7;3572:23;3568:33;3565:53;;;3614:1;3611;3604:12;3565:53;3637:28;3655:9;3637:28;:::i;:::-;3627:38;;3684:37;3717:2;3706:9;3702:18;3684:37;:::i;:::-;3674:47;;3740:37;3773:2;3762:9;3758:18;3740:37;:::i;:::-;3730:47;;3796:37;3829:2;3818:9;3814:18;3796:37;:::i;:::-;3786:47;;3438:401;;;;;;;:::o;4092:180::-;4151:6;4204:2;4192:9;4183:7;4179:23;4175:32;4172:52;;;4220:1;4217;4210:12;4172:52;-1:-1:-1;4243:23:1;;4092:180;-1:-1:-1;4092:180:1:o;4277:315::-;4345:6;4353;4406:2;4394:9;4385:7;4381:23;4377:32;4374:52;;;4422:1;4419;4412:12;4374:52;4461:9;4448:23;4480:31;4505:5;4480:31;:::i;:::-;4530:5;4582:2;4567:18;;;;4554:32;;-1:-1:-1;;;4277:315:1:o;5420:456::-;5497:6;5505;5513;5566:2;5554:9;5545:7;5541:23;5537:32;5534:52;;;5582:1;5579;5572:12;5534:52;5621:9;5608:23;5640:31;5665:5;5640:31;:::i;:::-;5690:5;-1:-1:-1;5747:2:1;5732:18;;5719:32;5760:33;5719:32;5760:33;:::i;:::-;5420:456;;5812:7;;-1:-1:-1;;;5866:2:1;5851:18;;;;5838:32;;5420:456::o;5881:248::-;5949:6;5957;6010:2;5998:9;5989:7;5985:23;5981:32;5978:52;;;6026:1;6023;6016:12;5978:52;-1:-1:-1;;6049:23:1;;;6119:2;6104:18;;;6091:32;;-1:-1:-1;5881:248:1:o;6134:647::-;6208:6;6216;6224;6232;6285:3;6273:9;6264:7;6260:23;6256:33;6253:53;;;6302:1;6299;6292:12;6253:53;6341:9;6328:23;6360:28;6382:5;6360:28;:::i;:::-;6407:5;-1:-1:-1;6464:2:1;6449:18;;6436:32;6477:30;6436:32;6477:30;:::i;:::-;6526:7;-1:-1:-1;6585:2:1;6570:18;;6557:32;6598:30;6557:32;6598:30;:::i;:::-;6647:7;-1:-1:-1;6706:2:1;6691:18;;6678:32;6719:30;6678:32;6719:30;:::i;:::-;6134:647;;;;-1:-1:-1;6134:647:1;;-1:-1:-1;;6134:647:1:o;6975:328::-;7049:6;7057;7065;7118:2;7106:9;7097:7;7093:23;7089:32;7086:52;;;7134:1;7131;7124:12;7086:52;7157:28;7175:9;7157:28;:::i;:::-;7147:38;;7204:37;7237:2;7226:9;7222:18;7204:37;:::i;:::-;7194:47;;7260:37;7293:2;7282:9;7278:18;7260:37;:::i;:::-;7250:47;;6975:328;;;;;:::o;7308:247::-;7367:6;7420:2;7408:9;7399:7;7395:23;7391:32;7388:52;;;7436:1;7433;7426:12;7388:52;7475:9;7462:23;7494:31;7519:5;7494:31;:::i;7560:382::-;7625:6;7633;7686:2;7674:9;7665:7;7661:23;7657:32;7654:52;;;7702:1;7699;7692:12;7654:52;7741:9;7728:23;7760:31;7785:5;7760:31;:::i;:::-;7810:5;-1:-1:-1;7867:2:1;7852:18;;7839:32;7880:30;7839:32;7880:30;:::i;:::-;7929:7;7919:17;;;7560:382;;;;;:::o;7947:241::-;8003:6;8056:2;8044:9;8035:7;8031:23;8027:32;8024:52;;;8072:1;8069;8062:12;8024:52;8111:9;8098:23;8130:28;8152:5;8130:28;:::i;8193:553::-;8294:6;8302;8310;8363:2;8351:9;8342:7;8338:23;8334:32;8331:52;;;8379:1;8376;8369:12;8331:52;8418:9;8405:23;8437:31;8462:5;8437:31;:::i;:::-;8487:5;-1:-1:-1;8544:2:1;8529:18;;8516:32;8557:33;8516:32;8557:33;:::i;:::-;8609:7;-1:-1:-1;8668:2:1;8653:18;;8640:32;8681:33;8640:32;8681:33;:::i;:::-;8733:7;8723:17;;;8193:553;;;;;:::o;9279:388::-;9347:6;9355;9408:2;9396:9;9387:7;9383:23;9379:32;9376:52;;;9424:1;9421;9414:12;9376:52;9463:9;9450:23;9482:31;9507:5;9482:31;:::i;:::-;9532:5;-1:-1:-1;9589:2:1;9574:18;;9561:32;9602:33;9561:32;9602:33;:::i;10132:385::-;10218:6;10226;10234;10242;10295:3;10283:9;10274:7;10270:23;10266:33;10263:53;;;10312:1;10309;10302:12;10263:53;-1:-1:-1;;10335:23:1;;;10405:2;10390:18;;10377:32;;-1:-1:-1;10456:2:1;10441:18;;10428:32;;10507:2;10492:18;10479:32;;-1:-1:-1;10132:385:1;-1:-1:-1;10132:385:1:o;10868:484::-;10921:3;10959:5;10953:12;10986:6;10981:3;10974:19;11012:4;11041:2;11036:3;11032:12;11025:19;;11078:2;11071:5;11067:14;11099:1;11109:218;11123:6;11120:1;11117:13;11109:218;;;11188:13;;-1:-1:-1;;;;;11184:62:1;11172:75;;11267:12;;;;11302:15;;;;11145:1;11138:9;11109:218;;;-1:-1:-1;11343:3:1;;10868:484;-1:-1:-1;;;;;10868:484:1:o;11357:342::-;11558:2;11547:9;11540:21;11521:4;11578:56;11630:2;11619:9;11615:18;11607:6;11578:56;:::i;:::-;11570:64;;11684:6;11677:14;11670:22;11665:2;11654:9;11650:18;11643:50;11357:342;;;;;:::o;11704:184::-;11756:77;11753:1;11746:88;11853:4;11850:1;11843:15;11877:4;11874:1;11867:15;11893:224;11932:3;11960:6;11993:2;11990:1;11986:10;12023:2;12020:1;12016:10;12054:3;12050:2;12046:12;12041:3;12038:21;12035:47;;;12062:18;;:::i;:::-;12098:13;;11893:224;-1:-1:-1;;;;11893:224:1:o;12458:482::-;12547:1;12590:5;12547:1;12604:330;12625:7;12615:8;12612:21;12604:330;;;12744:4;-1:-1:-1;;12672:77:1;12666:4;12663:87;12660:113;;;12753:18;;:::i;:::-;12803:7;12793:8;12789:22;12786:55;;;12823:16;;;;12786:55;12902:22;;;;12862:15;;;;12604:330;;;12608:3;12458:482;;;;;:::o;12945:866::-;12994:5;13024:8;13014:80;;-1:-1:-1;13065:1:1;13079:5;;13014:80;13113:4;13103:76;;-1:-1:-1;13150:1:1;13164:5;;13103:76;13195:4;13213:1;13208:59;;;;13281:1;13276:130;;;;13188:218;;13208:59;13238:1;13229:10;;13252:5;;;13276:130;13313:3;13303:8;13300:17;13297:43;;;13320:18;;:::i;:::-;-1:-1:-1;;13376:1:1;13362:16;;13391:5;;13188:218;;13490:2;13480:8;13477:16;13471:3;13465:4;13462:13;13458:36;13452:2;13442:8;13439:16;13434:2;13428:4;13425:12;13421:35;13418:77;13415:159;;;-1:-1:-1;13527:19:1;;;13559:5;;13415:159;13606:34;13631:8;13625:4;13606:34;:::i;:::-;13736:6;-1:-1:-1;;13664:79:1;13655:7;13652:92;13649:118;;;13747:18;;:::i;:::-;13785:20;;12945:866;-1:-1:-1;;;12945:866:1:o;13816:140::-;13874:5;13903:47;13944:4;13934:8;13930:19;13924:4;13903:47;:::i;13961:274::-;14001:1;14027;14017:189;;14062:77;14059:1;14052:88;14163:4;14160:1;14153:15;14191:4;14188:1;14181:15;14017:189;-1:-1:-1;14220:9:1;;13961:274::o;14240:125::-;14280:4;14308:1;14305;14302:8;14299:34;;;14313:18;;:::i;:::-;-1:-1:-1;14350:9:1;;14240:125::o;14370:228::-;14410:7;14536:1;-1:-1:-1;;14464:74:1;14461:1;14458:81;14453:1;14446:9;14439:17;14435:105;14432:131;;;14543:18;;:::i;:::-;-1:-1:-1;14583:9:1;;14370:228::o;15458:128::-;15498:3;15529:1;15525:6;15522:1;15519:13;15516:39;;;15535:18;;:::i;:::-;-1:-1:-1;15571:9:1;;15458:128::o;16373:184::-;16443:6;16496:2;16484:9;16475:7;16471:23;16467:32;16464:52;;;16512:1;16509;16502:12;16464:52;-1:-1:-1;16535:16:1;;16373:184;-1:-1:-1;16373:184:1:o;19111:251::-;19181:6;19234:2;19222:9;19213:7;19209:23;19205:32;19202:52;;;19250:1;19247;19240:12;19202:52;19282:9;19276:16;19301:31;19326:5;19301:31;:::i;20056:245::-;20123:6;20176:2;20164:9;20155:7;20151:23;20147:32;20144:52;;;20192:1;20189;20182:12;20144:52;20224:9;20218:16;20243:28;20265:5;20243:28;:::i;22638:184::-;22690:77;22687:1;22680:88;22787:4;22784:1;22777:15;22811:4;22808:1;22801:15;22827:605;23126:6;23115:9;23108:25;23169:6;23164:2;23153:9;23149:18;23142:34;23212:3;23207:2;23196:9;23192:18;23185:31;23089:4;23233:57;23285:3;23274:9;23270:19;23262:6;23233:57;:::i;:::-;-1:-1:-1;;;;;23326:55:1;;;;23321:2;23306:18;;23299:83;-1:-1:-1;23413:3:1;23398:19;23391:35;23225:65;22827:605;-1:-1:-1;;;22827:605:1:o

Swarm Source

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