ETH Price: $3,836.77 (+3.78%)

Token

ERC-20: IdenDEFI (ID)
 

Overview

Max Total Supply

1,000,000 ID

Holders

226

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,992.074173462392683098 ID

Value
$0.00
0x1bc09946b7c42a61617f64c2e1e0dc7ed9cf6167
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20AppContract

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-14
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.16;

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

interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ERC20AppContract is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address public _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 _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;
    mapping (address => bool) private _isblacklisted;


    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;   

    bool private isInitialized = false;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply;

    string private _name;
    string private _symbol;
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 1000, sellFee: 3000, transferFee: 100});
//==========================
    // Max Limits

    struct MaxLimits {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    MaxLimits public maxFees = MaxLimits(
    {maxBuy: 5000, maxSell: 5000, maxTransfer: 5000});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 30, developer: 70});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;


    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address public _devWallet;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent;
    uint256 private maxTxDivisor;
    uint256 private _maxTxAmount;
    
    uint256 private maxWalletPercent;
    uint256 private maxWalletDivisor;
    uint256 private _maxWalletSize;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool public _hasLiqBeenAdded = false;
    
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () {
        _owner = msg.sender;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages 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 (_devWallet == payable(_owner))
            _devWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        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 view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_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 approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

    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 isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

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

    function setupComplete(uint256 rInitializer) private  {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }


    function finalSetup(string memory initName, string memory initSymbol, uint256 initSupply, address devWallet) external onlyOwner payable {
        require(!isInitialized, "Contract already initialized.");
        require(_liqAddStatus == 0);
        
        _name = initName;
        _symbol = initSymbol;

        startingSupply = initSupply;
        _decimals = 18;
        _tTotal = startingSupply * 10**_decimals;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _devWallet = address(devWallet);

        maxTxPercent = 99; // Max Transaction Amount: 100 = 1%
        maxTxDivisor = 10000;
        _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
        
        maxWalletPercent = 101; //Max Wallet 100: 1%
        maxWalletDivisor = 10000;
        _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
        
        swapThreshold = (_tTotal * 5) / 10_000;
        swapAmount = (_tTotal * 5) / 1_000;

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


        approve(_routerAddress, type(uint256).max);
        approve(owner(), type(uint256).max);


        isInitialized = true;
        _tOwned[owner()] = _tTotal;
        _approve(owner(), _routerAddress, _tTotal);
        emit Transfer(address(0), owner(), _tTotal);
 
        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

    
        _transfer(_owner, address(this), balanceOf(_owner));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        setupComplete(1);
    }

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }
    

    function setRatios(uint _liquidity, uint _developer) external onlyOwner {
        require ( (_liquidity+_developer) == 1100, "limit taxes");
        Ratios.liquidity = _liquidity;
        Ratios.developer = _developer;
        }


    function setFees(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;

    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;
    }

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

    function setWallets(address payable developerWallet) external onlyOwner {
        _devWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
     
    function updateBots(address[] memory blacklisted_, bool status_) public onlyOwner {
        for (uint i = 0; i < blacklisted_.length; i++) {
            if (!lpPairs[blacklisted_[i]] && blacklisted_[i] != address(_routerAddress)) {
                _isblacklisted[blacklisted_[i]] = status_;
            }
        }
    }

    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: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        require(!_isblacklisted[to] && !_isblacklisted[from],"unable to trade");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }

        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

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

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

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (address(this).balance > 0) {
            bool success = true;
            (success,) = address(_devWallet).call{value: address(this).balance}("");
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
                _liqAddBlock = block.number;

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    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.");
            }
        } 
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? pullFees(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

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

    function pullFees(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            currentFee=Fees.sellFee;
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor);
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","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":"_owner","outputs":[{"internalType":"address","name":"","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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"initName","type":"string"},{"internalType":"string","name":"initSymbol","type":"string"},{"internalType":"uint256","name":"initSupply","type":"uint256"},{"internalType":"address","name":"devWallet","type":"address"}],"name":"finalSetup","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","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":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","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":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"address[]","name":"blacklisted_","type":"address[]"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"updateBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556009805460ff19908116909155600b805490911690556103e86080819052610bb860a0819052606460c081905260109290925560115560125561138860e081905261010081905261012081905260138190556014819055601555610180604052601e6101408190526046610160819052601691909155601755601854620000909060ff16600a62000208565b600d546200009f919062000220565b601955601d805460ff60a81b191690556026805460ff191690556000602781905560288190556029819055602a55348015620000da57600080fd5b50600080546001600160a01b0319163317905562000242565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200014a5781600019048211156200012e576200012e620000f3565b808516156200013c57918102915b93841c93908002906200010e565b509250929050565b600082620001635750600162000202565b81620001725750600062000202565b81600181146200018b57600281146200019657620001b6565b600191505062000202565b60ff841115620001aa57620001aa620000f3565b50506001821b62000202565b5060208310610133831016604e8410600b8410161715620001db575081810a62000202565b620001e7838362000109565b8060001904821115620001fe57620001fe620000f3565b0290505b92915050565b60006200021960ff84168362000152565b9392505050565b60008160001904831182151516156200023d576200023d620000f3565b500290565b61327480620002526000396000f3fe60806040526004361061026b5760003560e01c8063715018a611610144578063b2bdfa7b116100b6578063cec10c111161007a578063cec10c1114610773578063dd62ed3e14610793578063e83e34b1146107d9578063eafb5a3c146107f8578063eb50e70e14610818578063fb78680d1461083857600080fd5b8063b2bdfa7b146106c3578063b5f7bfa2146106e3578063bc1323e814610713578063c49b9a8014610733578063ce8b79c91461075357600080fd5b80638da5cb5b116101085780638da5cb5b146105ca57806395d89b4114610618578063a13ce2c61461062d578063a457c2d714610663578063a9059cbb14610683578063aeb96704146106a357600080fd5b8063715018a614610580578063751039fc1461059557806380c581d1146105aa578063893d20e8146105ca5780638c7321ad146105e857600080fd5b80633f3cf56c116101dd57806350a8e016116101a157806350a8e016146104d3578063571ac8b0146104ed578063590ffdce1461050d5780636489968b1461052d5780636639dd931461054057806370a082311461056057600080fd5b80633f3cf56c14610419578063452ed4f1146104395780634a74bb02146104595780634fb2e45d1461047a5780634fbee1931461049a57600080fd5b806318160ddd1161022f57806318160ddd1461033c57806323b872dd1461035b578063260039571461037b578063313ce5671461039d57806339509351146103bf5780633aaa36e6146103df57600080fd5b806303fd2a451461027757806306fdde03146102aa5780630758d924146102cc578063095ea7b3146102ec57806311a63e171461031c57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b506102bf610858565b6040516102a19190612993565b3480156102d857600080fd5b50601b5461028d906001600160a01b031681565b3480156102f857600080fd5b5061030c6103073660046129f9565b6108ea565b60405190151581526020016102a1565b34801561032857600080fd5b50601d5461028d906001600160a01b031681565b34801561034857600080fd5b506019545b6040519081526020016102a1565b34801561036757600080fd5b5061030c610376366004612a25565b610901565b34801561038757600080fd5b5061039b610396366004612a66565b610979565b005b3480156103a957600080fd5b5060185460405160ff90911681526020016102a1565b3480156103cb57600080fd5b5061030c6103da3660046129f9565b6109ff565b3480156103eb57600080fd5b506010546011546012546103fe92919083565b604080519384526020840192909252908201526060016102a1565b34801561042557600080fd5b5061039b610434366004612a66565b610a3b565b34801561044557600080fd5b50601c5461028d906001600160a01b031681565b34801561046557600080fd5b50601d5461030c90600160a81b900460ff1681565b34801561048657600080fd5b5061039b610495366004612a88565b610ab8565b3480156104a657600080fd5b5061030c6104b5366004612a88565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104df57600080fd5b5060265461030c9060ff1681565b3480156104f957600080fd5b5061030c610508366004612a88565b610c4b565b34801561051957600080fd5b5061039b610528366004612aba565b610c59565b61039b61053b366004612ba6565b610cae565b34801561054c57600080fd5b5061039b61055b366004612a66565b6112cc565b34801561056c57600080fd5b5061034d61057b366004612a88565b611349565b34801561058c57600080fd5b5061039b611364565b3480156105a157600080fd5b5061039b6113e3565b3480156105b657600080fd5b5061039b6105c5366004612aba565b61141a565b3480156105d657600080fd5b506000546001600160a01b031661028d565b3480156105f457600080fd5b5061030c610603366004612a88565b60076020526000908152604090205460ff1681565b34801561062457600080fd5b506102bf6114f8565b34801561063957600080fd5b5061034d610648366004612a88565b6001600160a01b03166000908152600c602052604090205490565b34801561066f57600080fd5b5061030c61067e3660046129f9565b611507565b34801561068f57600080fd5b5061030c61069e3660046129f9565b61153e565b3480156106af57600080fd5b5061039b6106be366004612c26565b611555565b3480156106cf57600080fd5b5060005461028d906001600160a01b031681565b3480156106ef57600080fd5b506016546017546106fe919082565b604080519283526020830191909152016102a1565b34801561071f57600080fd5b5061039b61072e366004612a88565b611687565b34801561073f57600080fd5b5061039b61074e366004612cea565b6116d2565b34801561075f57600080fd5b5061039b61076e366004612a88565b611754565b34801561077f57600080fd5b5061039b61078e366004612d05565b6117a2565b34801561079f57600080fd5b5061034d6107ae366004612d31565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107e557600080fd5b506013546014546015546103fe92919083565b34801561080457600080fd5b5061039b610813366004612a88565b611848565b34801561082457600080fd5b5061039b610833366004612a88565b611b74565b34801561084457600080fd5b5061039b610853366004612d6a565b611bc0565b6060600e805461086790612d9c565b80601f016020809104026020016040519081016040528092919081815260200182805461089390612d9c565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b60006108f7338484611c29565b5060015b92915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610966576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610960908490612dec565b90915550505b610971848484611d22565b949350505050565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016109a390612dff565b60405180910390fd5b600081836019546109bd9190612e29565b6109c79190612e48565b905061012c6019546109d99190612e48565b8110156109f85760405162461bcd60e51b81526004016109a390612e6a565b6023555050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f7918590610a36908690612eaf565b611c29565b6000546001600160a01b03163314610a655760405162461bcd60e51b81526004016109a390612dff565b60008183601954610a769190612e29565b610a809190612e48565b905061012c601954610a929190612e48565b811015610ab15760405162461bcd60e51b81526004016109a390612e6a565b6020555050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b038116610b085760405162461bcd60e51b81526004016109a390612ec2565b61deac196001600160a01b03821601610b335760405162461bcd60e51b81526004016109a390612ec2565b60008054610b4c916001600160a01b0390911690610c59565b610b57816001610c59565b600054601d546001600160a01b03918216911603610b8b57601d80546001600160a01b0319166001600160a01b0383161790555b600054610ba0906001600160a01b0316611349565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610bd99116611349565b1115610c0057600054610bfe906001600160a01b031682610bf982611349565b611d22565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006108fb826000196108ea565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cd85760405162461bcd60e51b81526004016109a390612dff565b600b5460ff1615610d2b5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e00000060448201526064016109a3565b60275415610d3857600080fd5b600e610d448582612f65565b50600f610d518482612f65565b50600d8290556018805460ff19166012908117909155610d7290600a613109565b600d54610d7f9190612e29565b601955601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190613118565b6001600160a01b031663c9c65396601b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190613118565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190613118565b601c80546001600160a01b039283166001600160a01b031991821681179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601b54861685529091529091206000199055601d8054928416929091169190911790556063601e819055612710601f8190556019549091610f8591612e29565b610f8f9190612e48565b6020556065602181905561271060228190556019549091610faf91612e29565b610fb99190612e48565b60235560195461271090610fce906005612e29565b610fd89190612e48565b6024556019546103e890610fed906005612e29565b610ff79190612e48565b6025556001600660006110126000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906110996000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556110e1737a250d5630b4cf539739df2c5dacb4c659f2488d6000196108ea565b506110ff6110f76000546001600160a01b031690565b6000196108ea565b50600b805460ff191660019081179091556019549060006111286000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556111746111576000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601954611c29565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6019546040516111c791815260200190565b60405180910390a3600054601b546111ee916001600160a01b039081169116600019611c29565b601b546112089030906001600160a01b0316600019611c29565b600054611222906001600160a01b031630610bf982611349565b50601b546001600160a01b031663f305d719473061123f81611349565b6000806112546000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161127696959493929190613135565b60606040518083038185885af1158015611294573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112b99190613170565b5050506112c660016121d6565b50505050565b6000546001600160a01b031633146112f65760405162461bcd60e51b81526004016109a390612dff565b6113008183612eaf565b61044c1461133e5760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b60448201526064016109a3565b601691909155601755565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331461138e5760405162461bcd60e51b81526004016109a390612dff565b600080546113a7916001600160a01b0390911690610c59565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461140d5760405162461bcd60e51b81526004016109a390612dff565b6019546020819055602355565b6000546001600160a01b031633146114445760405162461bcd60e51b81526004016109a390612dff565b80151560000361147057506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156114cc5762093a806003544261148a9190612dec565b116114cc5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016109a3565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6060600f805461086790612d9c565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f7918590610a36908690612dec565b600061154b338484611d22565b5060019392505050565b6000546001600160a01b0316331461157f5760405162461bcd60e51b81526004016109a390612dff565b60005b825181101561168257600260008483815181106115a1576115a161319e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156116145750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106116005761160061319e565b60200260200101516001600160a01b031614155b156116705781600860008584815181106116305761163061319e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061167a816131b4565b915050611582565b505050565b6000546001600160a01b031633146116b15760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116fc5760405162461bcd60e51b81526004016109a390612dff565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061174990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461177e5760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117cc5760405162461bcd60e51b81526004016109a390612dff565b60135483118015906117e057506014548211155b80156117ee57506015548111155b61183a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109a3565b601092909255601155601255565b6000546001600160a01b031633146118725760405162461bcd60e51b81526004016109a390612dff565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db9190613118565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190613118565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb9190613118565b90506001600160a01b038116611b3457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d9190613118565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e9190613118565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0f9190613118565b601c80546001600160a01b0319166001600160a01b0392909216919091179055611b50565b601c80546001600160a01b0319166001600160a01b0383161790555b50601b80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b9e5760405162461bcd60e51b81526004016109a390612dff565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bea5760405162461bcd60e51b81526004016109a390612dff565b8284601954611bf99190612e29565b611c039190612e48565b6024556019548190611c16908490612e29565b611c209190612e48565b60255550505050565b6001600160a01b038316611c755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109a3565b6001600160a01b038216611cc15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109a3565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611d715760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109a3565b6001600160a01b038316611dbe5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109a3565b60008211611df95760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016109a3565b6001600160a01b03831660009081526008602052604090205460ff16158015611e3b57506001600160a01b03841660009081526008602052604090205460ff16155b611e795760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b60448201526064016109a3565b611e838484612214565b156120c35760095460ff1615611f3a576001600160a01b03841660009081526002602052604090205460ff1615611ef9576001600160a01b0383166000908152600a6020526040902054439003611ed957600080fd5b6001600160a01b0383166000908152600a60205260409020439055611f3a565b6001600160a01b0384166000908152600a6020526040902054439003611f1e57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611f7957506001600160a01b03831660009081526007602052604090205460ff165b6120c3576001600160a01b03841660009081526002602052604090205460ff1680611fbc57506001600160a01b03831660009081526002602052604090205460ff165b15612013576020548211156120135760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016109a3565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061205957506001600160a01b03831660009081526002602052604090205460ff16155b156120c3576023548261206b85611349565b6120759190612eaf565b11156120c35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016109a3565b6001600160a01b03831660009081526001602052604081205490036120fe576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061214057506001600160a01b03841660009081526006602052604090205460ff165b15612149575060005b6001600160a01b03841660009081526002602052604090205460ff16156121c157601d54600160a01b900460ff1615801561218d5750601d54600160a81b900460ff165b156121c157600061219d30611349565b905060245481106121bf5760255481106121b657506025545b6121bf816122d2565b505b6121cd85858584612449565b95945050505050565b6027541561220f5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016109a3565b602755565b600080546001600160a01b0384811691161480159061224157506000546001600160a01b03838116911614155b801561226657506001600160a01b03821660009081526005602052604090205460ff16155b801561228b57506001600160a01b03831660009081526005602052604090205460ff16155b80156122a257506001600160a01b03821661dead14155b80156122b657506001600160a01b03821615155b80156122cb57506001600160a01b0383163014155b9392505050565b601d805460ff60a01b1916600160a01b1790556017546016546122f59190612eaf565b15612439576017546016546000916002916123109190612eaf565b60165461231d9085612e29565b6123279190612e48565b6123319190612e48565b9050600061233f8284612dec565b905061234a816125a6565b601754601654479160009160029161236191612eaf565b60165461236e9085612e29565b6123789190612e48565b6123829190612e48565b905083156123d65761239484826126e7565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b471561243457601d546040516001916001600160a01b0316904790600081818185875af1925050503d806000811461242a576040519150601f19603f3d011682016040523d82523d6000602084013e61242f565b606091505b505050505b505050505b50601d805460ff60a01b19169055565b60265460009060ff166124d357612460858561277c565b60265460ff1615801561247857506124788585612214565b156124d35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109a3565b6001600160a01b038516600090815260016020526040812080548592906124fb908490612dec565b90915550600090508261250e5783612519565b61251986868661288a565b6001600160a01b038616600090815260016020526040812080549293508392909190612546908490612eaf565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161259291815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125db576125db61319e565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126589190613118565b8160018151811061266b5761266b61319e565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906126b19085906000908690309042906004016131cd565b600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050505050565b601b546001600160a01b031663f305d7198230856000806127106000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161273296959493929190613135565b60606040518083038185885af1158015612750573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127759190613170565b5050505050565b60265460ff16156127db5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109a3565b6127e58282612214565b1580156127ff5750601c546001600160a01b038281169116145b156114f457436028556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602680549091168217905542602955601d805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601c5460009081906001600160a01b03908116908516036128ae57506011546128d2565b601c546001600160a01b03908116908616036128cd57506010546128d2565b506012545b6128dc8585612214565b156128fd5760275415806128f35750602754600114155b156128fd57600080fd5b600061271061290c8386612e29565b6129169190612e48565b3060009081526001602052604081208054929350839290919061293a908490612eaf565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36129898185612dec565b9695505050505050565b600060208083528351808285015260005b818110156129c0578581018301518582016040015282016129a4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146129f657600080fd5b50565b60008060408385031215612a0c57600080fd5b8235612a17816129e1565b946020939093013593505050565b600080600060608486031215612a3a57600080fd5b8335612a45816129e1565b92506020840135612a55816129e1565b929592945050506040919091013590565b60008060408385031215612a7957600080fd5b50508035926020909101359150565b600060208284031215612a9a57600080fd5b81356122cb816129e1565b80358015158114612ab557600080fd5b919050565b60008060408385031215612acd57600080fd5b8235612ad8816129e1565b9150612ae660208401612aa5565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b2e57612b2e612aef565b604052919050565b600082601f830112612b4757600080fd5b813567ffffffffffffffff811115612b6157612b61612aef565b612b74601f8201601f1916602001612b05565b818152846020838601011115612b8957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215612bbc57600080fd5b843567ffffffffffffffff80821115612bd457600080fd5b612be088838901612b36565b95506020870135915080821115612bf657600080fd5b50612c0387828801612b36565b935050604085013591506060850135612c1b816129e1565b939692955090935050565b60008060408385031215612c3957600080fd5b823567ffffffffffffffff80821115612c5157600080fd5b818501915085601f830112612c6557600080fd5b8135602082821115612c7957612c79612aef565b8160051b9250612c8a818401612b05565b8281529284018101928181019089851115612ca457600080fd5b948201945b84861015612cce5785359350612cbe846129e1565b8382529482019490820190612ca9565b9650612cdd9050878201612aa5565b9450505050509250929050565b600060208284031215612cfc57600080fd5b6122cb82612aa5565b600080600060608486031215612d1a57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612d4457600080fd5b8235612d4f816129e1565b91506020830135612d5f816129e1565b809150509250929050565b60008060008060808587031215612d8057600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612db057607f821691505b602082108103612dd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108fb576108fb612dd6565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b6000816000190483118215151615612e4357612e43612dd6565b500290565b600082612e6557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b808201808211156108fb576108fb612dd6565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f82111561168257600081815260208120601f850160051c81016020861015612f465750805b601f850160051c820191505b818110156126df57828155600101612f52565b815167ffffffffffffffff811115612f7f57612f7f612aef565b612f9381612f8d8454612d9c565b84612f1f565b602080601f831160018114612fc85760008415612fb05750858301515b600019600386901b1c1916600185901b1785556126df565b600085815260208120601f198616915b82811015612ff757888601518255948401946001909101908401612fd8565b50858210156130155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561306057816000190482111561304657613046612dd6565b8085161561305357918102915b93841c939080029061302a565b509250929050565b600082613077575060016108fb565b81613084575060006108fb565b816001811461309a57600281146130a4576130c0565b60019150506108fb565b60ff8411156130b5576130b5612dd6565b50506001821b6108fb565b5060208310610133831016604e8410600b84101617156130e3575081810a6108fb565b6130ed8383613025565b806000190482111561310157613101612dd6565b029392505050565b60006122cb60ff841683613068565b60006020828403121561312a57600080fd5b81516122cb816129e1565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561318557600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600182016131c6576131c6612dd6565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561321d5784516001600160a01b0316835293830193918301916001016131f8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122027bb2bb25adc662821884a1a378ad8a39040842fe90321652ea992f0b5a48a3764736f6c63430008100033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063715018a611610144578063b2bdfa7b116100b6578063cec10c111161007a578063cec10c1114610773578063dd62ed3e14610793578063e83e34b1146107d9578063eafb5a3c146107f8578063eb50e70e14610818578063fb78680d1461083857600080fd5b8063b2bdfa7b146106c3578063b5f7bfa2146106e3578063bc1323e814610713578063c49b9a8014610733578063ce8b79c91461075357600080fd5b80638da5cb5b116101085780638da5cb5b146105ca57806395d89b4114610618578063a13ce2c61461062d578063a457c2d714610663578063a9059cbb14610683578063aeb96704146106a357600080fd5b8063715018a614610580578063751039fc1461059557806380c581d1146105aa578063893d20e8146105ca5780638c7321ad146105e857600080fd5b80633f3cf56c116101dd57806350a8e016116101a157806350a8e016146104d3578063571ac8b0146104ed578063590ffdce1461050d5780636489968b1461052d5780636639dd931461054057806370a082311461056057600080fd5b80633f3cf56c14610419578063452ed4f1146104395780634a74bb02146104595780634fb2e45d1461047a5780634fbee1931461049a57600080fd5b806318160ddd1161022f57806318160ddd1461033c57806323b872dd1461035b578063260039571461037b578063313ce5671461039d57806339509351146103bf5780633aaa36e6146103df57600080fd5b806303fd2a451461027757806306fdde03146102aa5780630758d924146102cc578063095ea7b3146102ec57806311a63e171461031c57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b506102bf610858565b6040516102a19190612993565b3480156102d857600080fd5b50601b5461028d906001600160a01b031681565b3480156102f857600080fd5b5061030c6103073660046129f9565b6108ea565b60405190151581526020016102a1565b34801561032857600080fd5b50601d5461028d906001600160a01b031681565b34801561034857600080fd5b506019545b6040519081526020016102a1565b34801561036757600080fd5b5061030c610376366004612a25565b610901565b34801561038757600080fd5b5061039b610396366004612a66565b610979565b005b3480156103a957600080fd5b5060185460405160ff90911681526020016102a1565b3480156103cb57600080fd5b5061030c6103da3660046129f9565b6109ff565b3480156103eb57600080fd5b506010546011546012546103fe92919083565b604080519384526020840192909252908201526060016102a1565b34801561042557600080fd5b5061039b610434366004612a66565b610a3b565b34801561044557600080fd5b50601c5461028d906001600160a01b031681565b34801561046557600080fd5b50601d5461030c90600160a81b900460ff1681565b34801561048657600080fd5b5061039b610495366004612a88565b610ab8565b3480156104a657600080fd5b5061030c6104b5366004612a88565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104df57600080fd5b5060265461030c9060ff1681565b3480156104f957600080fd5b5061030c610508366004612a88565b610c4b565b34801561051957600080fd5b5061039b610528366004612aba565b610c59565b61039b61053b366004612ba6565b610cae565b34801561054c57600080fd5b5061039b61055b366004612a66565b6112cc565b34801561056c57600080fd5b5061034d61057b366004612a88565b611349565b34801561058c57600080fd5b5061039b611364565b3480156105a157600080fd5b5061039b6113e3565b3480156105b657600080fd5b5061039b6105c5366004612aba565b61141a565b3480156105d657600080fd5b506000546001600160a01b031661028d565b3480156105f457600080fd5b5061030c610603366004612a88565b60076020526000908152604090205460ff1681565b34801561062457600080fd5b506102bf6114f8565b34801561063957600080fd5b5061034d610648366004612a88565b6001600160a01b03166000908152600c602052604090205490565b34801561066f57600080fd5b5061030c61067e3660046129f9565b611507565b34801561068f57600080fd5b5061030c61069e3660046129f9565b61153e565b3480156106af57600080fd5b5061039b6106be366004612c26565b611555565b3480156106cf57600080fd5b5060005461028d906001600160a01b031681565b3480156106ef57600080fd5b506016546017546106fe919082565b604080519283526020830191909152016102a1565b34801561071f57600080fd5b5061039b61072e366004612a88565b611687565b34801561073f57600080fd5b5061039b61074e366004612cea565b6116d2565b34801561075f57600080fd5b5061039b61076e366004612a88565b611754565b34801561077f57600080fd5b5061039b61078e366004612d05565b6117a2565b34801561079f57600080fd5b5061034d6107ae366004612d31565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107e557600080fd5b506013546014546015546103fe92919083565b34801561080457600080fd5b5061039b610813366004612a88565b611848565b34801561082457600080fd5b5061039b610833366004612a88565b611b74565b34801561084457600080fd5b5061039b610853366004612d6a565b611bc0565b6060600e805461086790612d9c565b80601f016020809104026020016040519081016040528092919081815260200182805461089390612d9c565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b5050505050905090565b60006108f7338484611c29565b5060015b92915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610966576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610960908490612dec565b90915550505b610971848484611d22565b949350505050565b6000546001600160a01b031633146109ac5760405162461bcd60e51b81526004016109a390612dff565b60405180910390fd5b600081836019546109bd9190612e29565b6109c79190612e48565b905061012c6019546109d99190612e48565b8110156109f85760405162461bcd60e51b81526004016109a390612e6a565b6023555050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f7918590610a36908690612eaf565b611c29565b6000546001600160a01b03163314610a655760405162461bcd60e51b81526004016109a390612dff565b60008183601954610a769190612e29565b610a809190612e48565b905061012c601954610a929190612e48565b811015610ab15760405162461bcd60e51b81526004016109a390612e6a565b6020555050565b6000546001600160a01b03163314610ae25760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b038116610b085760405162461bcd60e51b81526004016109a390612ec2565b61deac196001600160a01b03821601610b335760405162461bcd60e51b81526004016109a390612ec2565b60008054610b4c916001600160a01b0390911690610c59565b610b57816001610c59565b600054601d546001600160a01b03918216911603610b8b57601d80546001600160a01b0319166001600160a01b0383161790555b600054610ba0906001600160a01b0316611349565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610bd99116611349565b1115610c0057600054610bfe906001600160a01b031682610bf982611349565b611d22565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006108fb826000196108ea565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cd85760405162461bcd60e51b81526004016109a390612dff565b600b5460ff1615610d2b5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e00000060448201526064016109a3565b60275415610d3857600080fd5b600e610d448582612f65565b50600f610d518482612f65565b50600d8290556018805460ff19166012908117909155610d7290600a613109565b600d54610d7f9190612e29565b601955601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a9190613118565b6001600160a01b031663c9c65396601b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190613118565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190613118565b601c80546001600160a01b039283166001600160a01b031991821681179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601b54861685529091529091206000199055601d8054928416929091169190911790556063601e819055612710601f8190556019549091610f8591612e29565b610f8f9190612e48565b6020556065602181905561271060228190556019549091610faf91612e29565b610fb99190612e48565b60235560195461271090610fce906005612e29565b610fd89190612e48565b6024556019546103e890610fed906005612e29565b610ff79190612e48565b6025556001600660006110126000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906110996000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556110e1737a250d5630b4cf539739df2c5dacb4c659f2488d6000196108ea565b506110ff6110f76000546001600160a01b031690565b6000196108ea565b50600b805460ff191660019081179091556019549060006111286000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556111746111576000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601954611c29565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6019546040516111c791815260200190565b60405180910390a3600054601b546111ee916001600160a01b039081169116600019611c29565b601b546112089030906001600160a01b0316600019611c29565b600054611222906001600160a01b031630610bf982611349565b50601b546001600160a01b031663f305d719473061123f81611349565b6000806112546000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161127696959493929190613135565b60606040518083038185885af1158015611294573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112b99190613170565b5050506112c660016121d6565b50505050565b6000546001600160a01b031633146112f65760405162461bcd60e51b81526004016109a390612dff565b6113008183612eaf565b61044c1461133e5760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b60448201526064016109a3565b601691909155601755565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331461138e5760405162461bcd60e51b81526004016109a390612dff565b600080546113a7916001600160a01b0390911690610c59565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461140d5760405162461bcd60e51b81526004016109a390612dff565b6019546020819055602355565b6000546001600160a01b031633146114445760405162461bcd60e51b81526004016109a390612dff565b80151560000361147057506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156114cc5762093a806003544261148a9190612dec565b116114cc5760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016109a3565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6060600f805461086790612d9c565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108f7918590610a36908690612dec565b600061154b338484611d22565b5060019392505050565b6000546001600160a01b0316331461157f5760405162461bcd60e51b81526004016109a390612dff565b60005b825181101561168257600260008483815181106115a1576115a161319e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156116145750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106116005761160061319e565b60200260200101516001600160a01b031614155b156116705781600860008584815181106116305761163061319e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061167a816131b4565b915050611582565b505050565b6000546001600160a01b031633146116b15760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116fc5760405162461bcd60e51b81526004016109a390612dff565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061174990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461177e5760405162461bcd60e51b81526004016109a390612dff565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117cc5760405162461bcd60e51b81526004016109a390612dff565b60135483118015906117e057506014548211155b80156117ee57506015548111155b61183a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109a3565b601092909255601155601255565b6000546001600160a01b031633146118725760405162461bcd60e51b81526004016109a390612dff565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db9190613118565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194c9190613118565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb9190613118565b90506001600160a01b038116611b3457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d9190613118565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e9190613118565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0f9190613118565b601c80546001600160a01b0319166001600160a01b0392909216919091179055611b50565b601c80546001600160a01b0319166001600160a01b0383161790555b50601b80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b9e5760405162461bcd60e51b81526004016109a390612dff565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611bea5760405162461bcd60e51b81526004016109a390612dff565b8284601954611bf99190612e29565b611c039190612e48565b6024556019548190611c16908490612e29565b611c209190612e48565b60255550505050565b6001600160a01b038316611c755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109a3565b6001600160a01b038216611cc15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109a3565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611d715760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109a3565b6001600160a01b038316611dbe5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109a3565b60008211611df95760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016109a3565b6001600160a01b03831660009081526008602052604090205460ff16158015611e3b57506001600160a01b03841660009081526008602052604090205460ff16155b611e795760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b60448201526064016109a3565b611e838484612214565b156120c35760095460ff1615611f3a576001600160a01b03841660009081526002602052604090205460ff1615611ef9576001600160a01b0383166000908152600a6020526040902054439003611ed957600080fd5b6001600160a01b0383166000908152600a60205260409020439055611f3a565b6001600160a01b0384166000908152600a6020526040902054439003611f1e57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611f7957506001600160a01b03831660009081526007602052604090205460ff165b6120c3576001600160a01b03841660009081526002602052604090205460ff1680611fbc57506001600160a01b03831660009081526002602052604090205460ff165b15612013576020548211156120135760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016109a3565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061205957506001600160a01b03831660009081526002602052604090205460ff16155b156120c3576023548261206b85611349565b6120759190612eaf565b11156120c35760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016109a3565b6001600160a01b03831660009081526001602052604081205490036120fe576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061214057506001600160a01b03841660009081526006602052604090205460ff165b15612149575060005b6001600160a01b03841660009081526002602052604090205460ff16156121c157601d54600160a01b900460ff1615801561218d5750601d54600160a81b900460ff165b156121c157600061219d30611349565b905060245481106121bf5760255481106121b657506025545b6121bf816122d2565b505b6121cd85858584612449565b95945050505050565b6027541561220f5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016109a3565b602755565b600080546001600160a01b0384811691161480159061224157506000546001600160a01b03838116911614155b801561226657506001600160a01b03821660009081526005602052604090205460ff16155b801561228b57506001600160a01b03831660009081526005602052604090205460ff16155b80156122a257506001600160a01b03821661dead14155b80156122b657506001600160a01b03821615155b80156122cb57506001600160a01b0383163014155b9392505050565b601d805460ff60a01b1916600160a01b1790556017546016546122f59190612eaf565b15612439576017546016546000916002916123109190612eaf565b60165461231d9085612e29565b6123279190612e48565b6123319190612e48565b9050600061233f8284612dec565b905061234a816125a6565b601754601654479160009160029161236191612eaf565b60165461236e9085612e29565b6123789190612e48565b6123829190612e48565b905083156123d65761239484826126e7565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b471561243457601d546040516001916001600160a01b0316904790600081818185875af1925050503d806000811461242a576040519150601f19603f3d011682016040523d82523d6000602084013e61242f565b606091505b505050505b505050505b50601d805460ff60a01b19169055565b60265460009060ff166124d357612460858561277c565b60265460ff1615801561247857506124788585612214565b156124d35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109a3565b6001600160a01b038516600090815260016020526040812080548592906124fb908490612dec565b90915550600090508261250e5783612519565b61251986868661288a565b6001600160a01b038616600090815260016020526040812080549293508392909190612546908490612eaf565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161259291815260200190565b60405180910390a350600195945050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125db576125db61319e565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126589190613118565b8160018151811061266b5761266b61319e565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906126b19085906000908690309042906004016131cd565b600060405180830381600087803b1580156126cb57600080fd5b505af11580156126df573d6000803e3d6000fd5b505050505050565b601b546001600160a01b031663f305d7198230856000806127106000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161273296959493929190613135565b60606040518083038185885af1158015612750573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127759190613170565b5050505050565b60265460ff16156127db5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109a3565b6127e58282612214565b1580156127ff5750601c546001600160a01b038281169116145b156114f457436028556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602680549091168217905542602955601d805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601c5460009081906001600160a01b03908116908516036128ae57506011546128d2565b601c546001600160a01b03908116908616036128cd57506010546128d2565b506012545b6128dc8585612214565b156128fd5760275415806128f35750602754600114155b156128fd57600080fd5b600061271061290c8386612e29565b6129169190612e48565b3060009081526001602052604081208054929350839290919061293a908490612eaf565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36129898185612dec565b9695505050505050565b600060208083528351808285015260005b818110156129c0578581018301518582016040015282016129a4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146129f657600080fd5b50565b60008060408385031215612a0c57600080fd5b8235612a17816129e1565b946020939093013593505050565b600080600060608486031215612a3a57600080fd5b8335612a45816129e1565b92506020840135612a55816129e1565b929592945050506040919091013590565b60008060408385031215612a7957600080fd5b50508035926020909101359150565b600060208284031215612a9a57600080fd5b81356122cb816129e1565b80358015158114612ab557600080fd5b919050565b60008060408385031215612acd57600080fd5b8235612ad8816129e1565b9150612ae660208401612aa5565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612b2e57612b2e612aef565b604052919050565b600082601f830112612b4757600080fd5b813567ffffffffffffffff811115612b6157612b61612aef565b612b74601f8201601f1916602001612b05565b818152846020838601011115612b8957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215612bbc57600080fd5b843567ffffffffffffffff80821115612bd457600080fd5b612be088838901612b36565b95506020870135915080821115612bf657600080fd5b50612c0387828801612b36565b935050604085013591506060850135612c1b816129e1565b939692955090935050565b60008060408385031215612c3957600080fd5b823567ffffffffffffffff80821115612c5157600080fd5b818501915085601f830112612c6557600080fd5b8135602082821115612c7957612c79612aef565b8160051b9250612c8a818401612b05565b8281529284018101928181019089851115612ca457600080fd5b948201945b84861015612cce5785359350612cbe846129e1565b8382529482019490820190612ca9565b9650612cdd9050878201612aa5565b9450505050509250929050565b600060208284031215612cfc57600080fd5b6122cb82612aa5565b600080600060608486031215612d1a57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612d4457600080fd5b8235612d4f816129e1565b91506020830135612d5f816129e1565b809150509250929050565b60008060008060808587031215612d8057600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612db057607f821691505b602082108103612dd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108fb576108fb612dd6565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b6000816000190483118215151615612e4357612e43612dd6565b500290565b600082612e6557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b808201808211156108fb576108fb612dd6565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f82111561168257600081815260208120601f850160051c81016020861015612f465750805b601f850160051c820191505b818110156126df57828155600101612f52565b815167ffffffffffffffff811115612f7f57612f7f612aef565b612f9381612f8d8454612d9c565b84612f1f565b602080601f831160018114612fc85760008415612fb05750858301515b600019600386901b1c1916600185901b1785556126df565b600085815260208120601f198616915b82811015612ff757888601518255948401946001909101908401612fd8565b50858210156130155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b8085111561306057816000190482111561304657613046612dd6565b8085161561305357918102915b93841c939080029061302a565b509250929050565b600082613077575060016108fb565b81613084575060006108fb565b816001811461309a57600281146130a4576130c0565b60019150506108fb565b60ff8411156130b5576130b5612dd6565b50506001821b6108fb565b5060208310610133831016604e8410600b84101617156130e3575081810a6108fb565b6130ed8383613025565b806000190482111561310157613101612dd6565b029392505050565b60006122cb60ff841683613068565b60006020828403121561312a57600080fd5b81516122cb816129e1565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561318557600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600182016131c6576131c6612dd6565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561321d5784516001600160a01b0316835293830193918301916001016131f8565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122027bb2bb25adc662821884a1a378ad8a39040842fe90321652ea992f0b5a48a3764736f6c63430008100033

Deployed Bytecode Sourcemap

3636:19766:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5640:73;;;;;;;;;;;;5671:42;5640:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5640:73:0;;;;;;;;9332:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5469:35::-;;;;;;;;;;-1:-1:-1;5469:35:0;;;;-1:-1:-1;;;;;5469:35:0;;;9945:161;;;;;;;;;;-1:-1:-1;9945:161:0;;;;;:::i;:::-;;:::i;:::-;;;1630:14:1;;1623:22;1605:41;;1593:2;1578:18;9945:161:0;1465:187:1;5786:25:0;;;;;;;;;;-1:-1:-1;5786:25:0;;;;-1:-1:-1;;;;;5786:25:0;;;9067:83;;;;;;;;;;-1:-1:-1;9140:7:0;;9067:83;;;1803:25:1;;;1791:2;1776:18;9067:83:0;1657:177:1;10678:306:0;;;;;;;;;;-1:-1:-1;10678:306:0;;;;;:::i;:::-;;:::i;16385:255::-;;;;;;;;;;-1:-1:-1;16385:255:0;;;;;:::i;:::-;;:::i;:::-;;9156:80;;;;;;;;;;-1:-1:-1;9224:9:0;;9156:80;;9224:9;;;;2695:36:1;;2683:2;2668:18;9156:80:0;2553:184:1;10992:215:0;;;;;;;;;;-1:-1:-1;10992:215:0;;;;;:::i;:::-;;:::i;4668:80::-;;;;;;;;;;-1:-1:-1;4668:80:0;;;;;;;;;;;;;;;;2944:25:1;;;3000:2;2985:18;;2978:34;;;;3028:18;;;3021:34;2932:2;2917:18;4668:80:0;2742:319:1;16125:252:0;;;;;;;;;;-1:-1:-1;16125:252:0;;;;;:::i;:::-;;:::i;5511:21::-;;;;;;;;;;-1:-1:-1;5511:21:0;;;;-1:-1:-1;;;;;5511:21:0;;;5852:41;;;;;;;;;;-1:-1:-1;5852:41:0;;;;-1:-1:-1;;;5852:41:0;;;;;;7756:749;;;;;;;;;;-1:-1:-1;7756:749:0;;;;;:::i;:::-;;:::i;11448:125::-;;;;;;;;;;-1:-1:-1;11448:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;11537:28:0;11513:4;11537:28;;;:19;:28;;;;;;;;;11448:125;6205:36;;;;;;;;;;-1:-1:-1;6205:36:0;;;;;;;;10431:120;;;;;;;;;;-1:-1:-1;10431:120:0;;;;;:::i;:::-;;:::i;14860:134::-;;;;;;;;;;-1:-1:-1;14860:134:0;;;;;:::i;:::-;;:::i;12672:2180::-;;;;;;:::i;:::-;;:::i;15350:232::-;;;;;;;;;;-1:-1:-1;15350:232:0;;;;;:::i;:::-;;:::i;9645:117::-;;;;;;;;;;-1:-1:-1;9645:117:0;;;;;:::i;:::-;;:::i;8513:195::-;;;;;;;;;;;;;:::i;15998:119::-;;;;;;;;;;;;;:::i;12094:410::-;;;;;;;;;;-1:-1:-1;12094:410:0;;;;;:::i;:::-;;:::i;9418:80::-;;;;;;;;;;-1:-1:-1;9470:7:0;7734:6;-1:-1:-1;;;;;7734:6:0;9418:80;;4109:68;;;;;;;;;;-1:-1:-1;4109:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9242:84;;;;;;;;;;;;;:::i;10559:111::-;;;;;;;;;;-1:-1:-1;10559:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;10645:17:0;10618:7;10645:17;;;:8;:17;;;;;;;10559:111;11215:225;;;;;;;;;;-1:-1:-1;11215:225:0;;;;;:::i;:::-;;:::i;9770:167::-;;;;;;;;;;-1:-1:-1;9770:167:0;;;;;:::i;:::-;;:::i;17265:326::-;;;;;;;;;;-1:-1:-1;17265:326:0;;;;;:::i;:::-;;:::i;3748:21::-;;;;;;;;;;-1:-1:-1;3748:21:0;;;;-1:-1:-1;;;;;3748:21:0;;;5140:84;;;;;;;;;;-1:-1:-1;5140:84:0;;;;;;;;;;;;;6773:25:1;;;6829:2;6814:18;;6807:34;;;;6746:18;5140:84:0;6599:248:1;15170:166:0;;;;;;;;;;-1:-1:-1;15170:166:0;;;;;:::i;:::-;;:::i;17081:171::-;;;;;;;;;;-1:-1:-1;17081:171:0;;;;;:::i;:::-;;:::i;15004:158::-;;;;;;;;;;-1:-1:-1;15004:158:0;;;;;:::i;:::-;;:::i;15592:398::-;;;;;;;;;;-1:-1:-1;15592:398:0;;;;;:::i;:::-;;:::i;9504:133::-;;;;;;;;;;-1:-1:-1;9504:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9606:19:0;;;9588:7;9606:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9504:133;4899:92;;;;;;;;;;-1:-1:-1;4899:92:0;;;;;;;;;;;;11585:501;;;;;;;;;;-1:-1:-1;11585:501:0;;;;;:::i;:::-;;:::i;16945:128::-;;;;;;;;;;-1:-1:-1;16945:128:0;;;;;:::i;:::-;;:::i;16648:289::-;;;;;;;;;;-1:-1:-1;16648:289:0;;;;;:::i;:::-;;:::i;9332:80::-;9380:13;9404:5;9397:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9332:80;:::o;9945:161::-;10020:4;10037:39;188:10;10060:7;10069:6;10037:8;:39::i;:::-;-1:-1:-1;10094:4:0;9945:161;;;;;:::o;10678:306::-;-1:-1:-1;;;;;10799:19:0;;10778:4;10799:19;;;:11;:19;;;;;;;;10819:10;10799:31;;;;;;;;-1:-1:-1;;10799:52:0;10795:126;;-1:-1:-1;;;;;10868:19:0;;;;;;:11;:19;;;;;;;;10888:10;10868:31;;;;;;;:41;;10903:6;;10868:19;:41;;10903:6;;10868:41;:::i;:::-;;;;-1:-1:-1;;10795:126:0;10940:36;10950:6;10958:9;10969:6;10940:9;:36::i;:::-;10933:43;10678:306;-1:-1:-1;;;;10678:306:0:o;16385:255::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;;;;;;;;;16469:13:::1;16507:7;16496;16486;;:17;;;;:::i;:::-;16485:29;;;;:::i;:::-;16469:45;;16553:3;16543:7;;:13;;;;:::i;:::-;16533:5;:24;;16525:74;;;;-1:-1:-1::0;;;16525:74:0::1;;;;;;;:::i;:::-;16610:14;:22:::0;-1:-1:-1;;16385:255:0:o;10992:215::-;188:10;11080:4;11129:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11129:34:0;;;;;;;;;;11080:4;;11097:80;;11120:7;;11129:47;;11166:10;;11129:47;:::i;:::-;11097:8;:80::i;16125:252::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;16208:13:::1;16246:7;16235;16225;;:17;;;;:::i;:::-;16224:29;;;;:::i;:::-;16208:45;;16292:3;16282:7;;:13;;;;:::i;:::-;16272:5;:24;;16264:74;;;;-1:-1:-1::0;;;16264:74:0::1;;;;;;;:::i;:::-;16349:12;:20:::0;-1:-1:-1;;16125:252:0:o;7756:749::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7837:22:0;::::1;7829:96;;;;-1:-1:-1::0;;;7829:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;7944:16:0;::::1;::::0;7936:90:::1;;;;-1:-1:-1::0;;;7936:90:0::1;;;;;;;:::i;:::-;8057:6;::::0;;8037:34:::1;::::0;-1:-1:-1;;;;;8057:6:0;;::::1;::::0;8037:19:::1;:34::i;:::-;8082:35;8102:8;8112:4;8082:19;:35::i;:::-;8164:6;::::0;8142:10:::1;::::0;-1:-1:-1;;;;;8164:6:0;;::::1;8142:10:::0;::::1;:29:::0;8138:78:::1;;8186:10;:30:::0;;-1:-1:-1;;;;;;8186:30:0::1;-1:-1:-1::0;;;;;8186:30:0;::::1;;::::0;;8138:78:::1;8279:6;::::0;8269:17:::1;::::0;-1:-1:-1;;;;;8279:6:0::1;8269:9;:17::i;:::-;8237:19;8249:6:::0;;-1:-1:-1;;;;;8249:6:0;;::::1;8237:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;8310:6;;8237:19;;8300:17:::1;::::0;8310:6:::1;8300:9;:17::i;:::-;:21;8297:99;;;8348:6;::::0;8338:46:::1;::::0;-1:-1:-1;;;;;8348:6:0::1;8356:8:::0;8366:17:::1;8348:6:::0;8366:9:::1;:17::i;:::-;8338:9;:46::i;:::-;;8297:99;8416:6;:17:::0;;-1:-1:-1;;;;;;8416:17:0::1;-1:-1:-1::0;;;;;8416:17:0;::::1;::::0;;::::1;::::0;;8449:38:::1;::::0;8416:17;;;;8449:38:::1;::::0;8416:6;8449:38:::1;7756:749:::0;:::o;10431:120::-;10484:4;10508:35;10516:7;-1:-1:-1;;10508:7:0;:35::i;14860:134::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14948:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14948:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14860:134::o;12672:2180::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;12828:13:::1;::::0;::::1;;12827:14;12819:56;;;::::0;-1:-1:-1;;;12819:56:0;;10959:2:1;12819:56:0::1;::::0;::::1;10941:21:1::0;10998:2;10978:18;;;10971:30;11037:31;11017:18;;;11010:59;11086:18;;12819:56:0::1;10757:353:1::0;12819:56:0::1;12894:13;::::0;:18;12886:27:::1;;;::::0;::::1;;12934:5;:16;12942:8:::0;12934:5;:16:::1;:::i;:::-;-1:-1:-1::0;12961:7:0::1;:20;12971:10:::0;12961:7;:20:::1;:::i;:::-;-1:-1:-1::0;12994:14:0::1;:27:::0;;;13032:9:::1;:14:::0;;-1:-1:-1;;13032:14:0::1;13044:2;13032:14:::0;;::::1;::::0;;;13084:13:::1;::::0;:2:::1;:13;:::i;:::-;13067:14;;:30;;;;:::i;:::-;13057:7;:40:::0;13110:9:::1;:46:::0;;-1:-1:-1;;;;;;13110:46:0::1;5585:42;13110:46:::0;;::::1;::::0;;;13194:19:::1;::::0;;-1:-1:-1;;;13194:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5585:42;13194:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13176:49:0::1;;13226:9;;;;;;;;;-1:-1:-1::0;;;;;13226:9:0::1;-1:-1:-1::0;;;;;13226:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13176:82;::::0;-1:-1:-1;;;;;;13176:82:0::1;::::0;;;;;;-1:-1:-1;;;;;15188:15:1;;;13176:82:0::1;::::0;::::1;15170:34:1::0;13252:4:0::1;15220:18:1::0;;;15213:43;15105:18;;13176:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13167:6;:91:::0;;-1:-1:-1;;;;;13167:91:0;;::::1;-1:-1:-1::0;;;;;;13167:91:0;;::::1;::::0;::::1;::::0;;;:6:::1;13269:15:::0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13269:22:0::1;13167:91:::0;13269:22:::1;::::0;;13322:4:::1;13302:26:::0;;:11:::1;:26:::0;;;;;13337:9:::1;::::0;;::::1;13302:46:::0;;;;;;;;-1:-1:-1;;13302:66:0;;13381:10:::1;:31:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13440:2:::1;13425:12;:17:::0;;;13504:5:::1;13489:12;:20:::0;;;13536:7:::1;::::0;13504:5;;13536:22:::1;::::0;::::1;:::i;:::-;13535:39;;;;:::i;:::-;13520:12;:54:::0;13614:3:::1;13595:16;:22:::0;;;13668:5:::1;13649:16;:24:::0;;;13702:7:::1;::::0;13668:5;;13702:26:::1;::::0;::::1;:::i;:::-;13701:47;;;;:::i;:::-;13684:14;:64:::0;13786:7:::1;::::0;13801:6:::1;::::0;13786:11:::1;::::0;13796:1:::1;13786:11;:::i;:::-;13785:22;;;;:::i;:::-;13769:13;:38:::0;13832:7:::1;::::0;13847:5:::1;::::0;13832:11:::1;::::0;13842:1:::1;13832:11;:::i;:::-;13831:21;;;;:::i;:::-;13818:10;:34:::0;13896:4:::1;13865:19;:28;13885:7;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;13885:7:::1;-1:-1:-1::0;;;;;13865:28:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13865:28:0;;;:35;;;::::1;;-1:-1:-1::0;;13865:35:0;;::::1;;::::0;;13939:4:::1;13911:34:::0;;:19:::1;:34:::0;;;;;:41;;;::::1;13865:35:::0;13911:41;;::::1;::::0;;;5671:42:::1;13963:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;14006:17:::1;::::0;14024:7:::1;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;14024:7:::1;-1:-1:-1::0;;;;;14006:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14006:26:0;:33;;-1:-1:-1;;14006:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14054:42:::1;5585;-1:-1:-1::0;;14054:7:0::1;:42::i;:::-;;14107:35;14115:7;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;14115:7:::1;-1:-1:-1::0;;14107:7:0::1;:35::i;:::-;-1:-1:-1::0;14157:13:0::1;:20:::0;;-1:-1:-1;;14157:20:0::1;14173:4;14157:20:::0;;::::1;::::0;;;14207:7:::1;::::0;;14157:13:::1;14196:7;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;14196:7:::1;-1:-1:-1::0;;;;;14188:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14188:16:0;:26;14225:42:::1;14234:7;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;14234:7:::1;5585:42;14259:7;;14225:8;:42::i;:::-;7707:7:::0;7734:6;-1:-1:-1;;;;;7734:6:0;-1:-1:-1;;;;;14283:38:0::1;14300:1;-1:-1:-1::0;;;;;14283:38:0::1;;14313:7;;14283:38;;;;1803:25:1::0;;1791:2;1776:18;;1657:177;14283:38:0::1;;;;;;;;14344:6;::::0;14360:9:::1;::::0;14335:55:::1;::::0;-1:-1:-1;;;;;14344:6:0;;::::1;::::0;14360:9:::1;-1:-1:-1::0;;14335:8:0::1;:55::i;:::-;14433:9;::::0;14401:62:::1;::::0;14418:4:::1;::::0;-1:-1:-1;;;;;14433:9:0::1;-1:-1:-1::0;;14401:8:0::1;:62::i;:::-;14492:6;::::0;14482:51:::1;::::0;-1:-1:-1;;;;;14492:6:0::1;14508:4;14515:17;14492:6:::0;14515:9:::1;:17::i;14482:51::-;-1:-1:-1::0;14546:9:0::1;::::0;-1:-1:-1;;;;;14546:9:0::1;:25;14579:21;14624:4;14644:24;14624:4:::0;14644:9:::1;:24::i;:::-;14683:1;14726::::0;14769:7:::1;7707::::0;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;14769:7:::1;14791:15;14546:271;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14828:16;14842:1;14828:13;:16::i;:::-;12672:2180:::0;;;;:::o;15350:232::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;15444:21:::1;15455:10:::0;15444;:21:::1;:::i;:::-;15470:4;15443:31;15433:57;;;::::0;-1:-1:-1;;;15433:57:0;;16392:2:1;15433:57:0::1;::::0;::::1;16374:21:1::0;16431:2;16411:18;;;16404:30;-1:-1:-1;;;16450:18:1;;;16443:41;16501:18;;15433:57:0::1;16190:335:1::0;15433:57:0::1;15501:6;:29:::0;;;;15541:16;:29;15350:232::o;9645:117::-;-1:-1:-1;;;;;9738:16:0;9711:7;9738:16;;;:7;:16;;;;;;;9645:117::o;8513:195::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;8600:6:::1;::::0;;8580:34:::1;::::0;-1:-1:-1;;;;;8600:6:0;;::::1;::::0;8580:19:::1;:34::i;:::-;8642:1;8625:19:::0;;-1:-1:-1;;;;;;8625:19:0::1;::::0;;8660:40:::1;::::0;8642:1;;8660:40:::1;::::0;8642:1;;8660:40:::1;8513:195::o:0;15998:119::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;16067:7:::1;::::0;16052:12:::1;:22:::0;;;16085:14:::1;:24:::0;15998:119::o;12094:410::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;12175:16;::::1;;12186:5;12175:16:::0;12171:326:::1;;-1:-1:-1::0;;;;;;12208:13:0::1;12224:5;12208:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;12208:21:0::1;::::0;;12094:410::o;12171:326::-:1;12266:17;::::0;:22;12262:139:::1;;12355:7;12335:17;;12317:15;:35;;;;:::i;:::-;:45;12309:76;;;::::0;-1:-1:-1;;;12309:76:0;;16732:2:1;12309:76:0::1;::::0;::::1;16714:21:1::0;16771:2;16751:18;;;16744:30;-1:-1:-1;;;16790:18:1;;;16783:48;16848:18;;12309:76:0::1;16530:342:1::0;12309:76:0::1;-1:-1:-1::0;;;;;12415:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;12415:20:0::1;12431:4;12415:20;::::0;;12470:15:::1;12450:17;:35:::0;12171:326:::1;12094:410:::0;;:::o;9242:84::-;9292:13;9316:7;9309:14;;;;;:::i;11215:225::-;188:10;11308:4;11357:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11357:34:0;;;;;;;;;;11308:4;;11325:85;;11348:7;;11357:52;;11394:15;;11357:52;:::i;9770:167::-;9848:4;9865:42;188:10;9889:9;9900:6;9865:9;:42::i;:::-;-1:-1:-1;9925:4:0;;9770:167;-1:-1:-1;;;9770:167:0:o;17265:326::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;17363:6:::1;17358:226;17379:12;:19;17375:1;:23;17358:226;;;17425:7;:24;17433:12;17446:1;17433:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17425:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17425:24:0;;::::1;;17424:25;:71:::0;::::1;;;;5585:42;-1:-1:-1::0;;;;;17453:42:0::1;:12;17466:1;17453:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17453:42:0::1;;;17424:71;17420:153;;;17550:7;17516:14;:31;17531:12;17544:1;17531:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17516:31:0::1;-1:-1:-1::0;;;;;17516:31:0::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17420:153;17400:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17358:226;;;;17265:326:::0;;:::o;15170:166::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15268:52:0::1;15323:5;15268:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;15268:60:0::1;::::0;;15170:166::o;17081:171::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;17158:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17158:32:0::1;-1:-1:-1::0;;;;17158:32:0;;::::1;;::::0;;17206:38:::1;::::0;::::1;::::0;::::1;::::0;17182:8;1630:14:1;1623:22;1605:41;;1593:2;1578:18;;1465:187;17206:38:0::1;;;;;;;;17081:171:::0;:::o;15004:158::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15095:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;15095:59:0::1;15150:4;15095:59;::::0;;15004:158::o;15592:398::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;15706:7:::1;:14:::0;15695:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;15753:15:0;;15741:27;::::1;;15695:73;:129;;;;-1:-1:-1::0;15805:19:0;;15789:35;::::1;;15695:129;15687:182;;;::::0;-1:-1:-1;;;15687:182:0;;17351:2:1;15687:182:0::1;::::0;::::1;17333:21:1::0;17390:2;17370:18;;;17363:30;17429:25;17409:18;;;17402:53;17472:18;;15687:182:0::1;17149:347:1::0;15687:182:0::1;15881:4;:21:::0;;;;15914:12;:23;15949:16;:31;15592:398::o;11585:501::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;11656:29:::1;11707:9;11656:61;;11728:16;11765:10;-1:-1:-1::0;;;;;11765:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11747:47:0::1;;11803:4;11810:10;-1:-1:-1::0;;;;;11810:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11747:81;::::0;-1:-1:-1;;;;;;11747:81:0::1;::::0;;;;;;-1:-1:-1;;;;;15188:15:1;;;11747:81:0::1;::::0;::::1;15170:34:1::0;15240:15;;15220:18;;;15213:43;15105:18;;11747:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11728:100:::0;-1:-1:-1;;;;;;11843:22:0;::::1;11839:207;;11909:10;-1:-1:-1::0;;;;;11909:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11891:50:0::1;;11950:4;11957:10;-1:-1:-1::0;;;;;11957:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11891:84;::::0;-1:-1:-1;;;;;;11891:84:0::1;::::0;;;;;;-1:-1:-1;;;;;15188:15:1;;;11891:84:0::1;::::0;::::1;15170:34:1::0;15240:15;;15220:18;;;15213:43;15105:18;;11891:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11882:6;:93:::0;;-1:-1:-1;;;;;;11882:93:0::1;-1:-1:-1::0;;;;;11882:93:0;;;::::1;::::0;;;::::1;::::0;;11839:207:::1;;;12017:6;:17:::0;;-1:-1:-1;;;;;;12017:17:0::1;-1:-1:-1::0;;;;;12017:17:0;::::1;;::::0;;11839:207:::1;-1:-1:-1::0;12056:9:0::1;:22:::0;;-1:-1:-1;;;;;;12056:22:0::1;-1:-1:-1::0;;;;;12056:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;11585:501:0:o;16945:128::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;17028:10:::1;:37:::0;;-1:-1:-1;;;;;;17028:37:0::1;-1:-1:-1::0;;;;;17028:37:0;;;::::1;::::0;;;::::1;::::0;;16945:128::o;16648:289::-;6951:6;;-1:-1:-1;;;;;6951:6:0;188:10;6951:22;6943:51;;;;-1:-1:-1;;;6943:51:0;;;;;;;:::i;:::-;16848:16:::1;16828;16818:7;;:26;;;;:::i;:::-;16817:47;;;;:::i;:::-;16801:13;:63:::0;16889:7:::1;::::0;16916:13;;16889:23:::1;::::0;16899:13;;16889:23:::1;:::i;:::-;16888:41;;;;:::i;:::-;16875:10;:54:::0;-1:-1:-1;;;;16648:289:0:o;10114:309::-;-1:-1:-1;;;;;10208:20:0;;10200:52;;;;-1:-1:-1;;;10200:52:0;;17703:2:1;10200:52:0;;;17685:21:1;17742:2;17722:18;;;17715:30;-1:-1:-1;;;17761:18:1;;;17754:49;17820:18;;10200:52:0;17501:343:1;10200:52:0;-1:-1:-1;;;;;10271:21:0;;10263:53;;;;-1:-1:-1;;;10263:53:0;;17703:2:1;10263:53:0;;;17685:21:1;17742:2;17722:18;;;17715:30;-1:-1:-1;;;17761:18:1;;;17754:49;17820:18;;10263:53:0;17501:343:1;10263:53:0;-1:-1:-1;;;;;10329:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10382:33;;1803:25:1;;;10382:33:0;;1776:18:1;10382:33:0;;;;;;;10114:309;;;:::o;17930:2003::-;18009:4;-1:-1:-1;;;;;18034:18:0;;18026:51;;;;-1:-1:-1;;;18026:51:0;;18051:2:1;18026:51:0;;;18033:21:1;18090:2;18070:18;;;18063:30;-1:-1:-1;;;18109:18:1;;;18102:50;18169:18;;18026:51:0;17849:344:1;18026:51:0;-1:-1:-1;;;;;18096:16:0;;18088:49;;;;-1:-1:-1;;;18088:49:0;;18051:2:1;18088:49:0;;;18033:21:1;18090:2;18070:18;;;18063:30;-1:-1:-1;;;18109:18:1;;;18102:50;18169:18;;18088:49:0;17849:344:1;18088:49:0;18165:1;18156:6;:10;18148:31;;;;-1:-1:-1;;;18148:31:0;;18400:2:1;18148:31:0;;;18382:21:1;18439:1;18419:18;;;18412:29;-1:-1:-1;;;18457:18:1;;;18450:38;18505:18;;18148:31:0;18198:331:1;18148:31:0;-1:-1:-1;;;;;18199:18:0;;;;;;:14;:18;;;;;;;;18198:19;:44;;;;-1:-1:-1;;;;;;18222:20:0;;;;;;:14;:20;;;;;;;;18221:21;18198:44;18190:71;;;;-1:-1:-1;;;18190:71:0;;18736:2:1;18190:71:0;;;18718:21:1;18775:2;18755:18;;;18748:30;-1:-1:-1;;;18794:18:1;;;18787:45;18849:18;;18190:71:0;18534:339:1;18190:71:0;18275:20;18286:4;18292:2;18275:10;:20::i;:::-;18272:891;;;18316:15;;;;18312:373;;;-1:-1:-1;;;;;18356:13:0;;;;;;:7;:13;;;;;;;;18352:318;;;-1:-1:-1;;;;;18401:13:0;;;;;;:9;:13;;;;;;18418:12;18401:29;;18393:38;;;;;;-1:-1:-1;;;;;18454:13:0;;;;;;:9;:13;;;;;18470:12;18454:28;;18352:318;;;-1:-1:-1;;;;;18561:15:0;;;;;;:9;:15;;;;;;18580:12;18561:31;;18553:40;;;;;;-1:-1:-1;;;;;18616:15:0;;;;;;:9;:15;;;;;18634:12;18616:30;;18352:318;-1:-1:-1;;;;;18704:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;18749:39:0;;;;;;:35;:39;;;;;;;;18704:84;18699:439;;-1:-1:-1;;;;;18813:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18830:11:0;;;;;;:7;:11;;;;;;;;18813:28;18810:130;;;18879:12;;18869:6;:22;;18861:59;;;;-1:-1:-1;;;18861:59:0;;19080:2:1;18861:59:0;;;19062:21:1;19119:2;19099:18;;;19092:30;19158:26;19138:18;;;19131:54;19202:18;;18861:59:0;18878:348:1;18861:59:0;-1:-1:-1;;;;;18961:20:0;;5585:42;18961:20;;;;:36;;-1:-1:-1;;;;;;18986:11:0;;;;;;:7;:11;;;;;;;;18985:12;18961:36;18958:163;;;19056:14;;19046:6;19030:13;19040:2;19030:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19022:79;;;;-1:-1:-1;;;19022:79:0;;19433:2:1;19022:79:0;;;19415:21:1;19472:2;19452:18;;;19445:30;19511:28;19491:18;;;19484:56;19557:18;;19022:79:0;19231:350:1;19022:79:0;-1:-1:-1;;;;;19179:11:0;;;;;;:7;:11;;;;;;:16;;19175:79;;-1:-1:-1;;;;;19212:12:0;;;;;;:8;:12;;;;;19227:15;19212:30;;19175:79;-1:-1:-1;;;;;19299:25:0;;19266:12;19299:25;;;:19;:25;;;;;;19281:4;;19299:25;;;:52;;-1:-1:-1;;;;;;19328:23:0;;;;;;:19;:23;;;;;;;;19299:52;19296:98;;;-1:-1:-1;19377:5:0;19296:98;-1:-1:-1;;;;;19410:11:0;;;;;;:7;:11;;;;;;;;19406:457;;;19443:16;;-1:-1:-1;;;19443:16:0;;;;19442:17;:59;;;;-1:-1:-1;19480:21:0;;-1:-1:-1;;;19480:21:0;;;;19442:59;19438:408;;;19536:28;19567:24;19585:4;19567:9;:24::i;:::-;19536:55;;19638:13;;19614:20;:37;19610:221;;19703:10;;19679:20;:34;19676:77;;-1:-1:-1;19740:10:0;;19676:77;19775:36;19790:20;19775:14;:36::i;:::-;19517:329;19438:408;19881:44;19899:4;19905:2;19909:6;19917:7;19881:17;:44::i;:::-;19874:51;17930:2003;-1:-1:-1;;;;;17930:2003:0:o;12512:150::-;12586:13;;:18;12577:38;;;;-1:-1:-1;;;12577:38:0;;19788:2:1;12577:38:0;;;19770:21:1;19827:1;19807:18;;;19800:29;-1:-1:-1;;;19845:18:1;;;19838:36;19891:18;;12577:38:0;19586:329:1;12577:38:0;12626:13;:28;12512:150::o;17599:323::-;17667:4;7734:6;;-1:-1:-1;;;;;17691:15:0;;;7734:6;;17691:15;;;;:45;;-1:-1:-1;7707:7:0;7734:6;-1:-1:-1;;;;;17723:13:0;;;7734:6;;17723:13;;17691:45;:84;;;;-1:-1:-1;;;;;;17754:21:0;;;;;;:17;:21;;;;;;;;17753:22;17691:84;:125;;;;-1:-1:-1;;;;;;17793:23:0;;;;;;:17;:23;;;;;;;;17792:24;17691:125;:152;;;;-1:-1:-1;;;;;;17833:10:0;;5671:42;17833:10;;17691:152;:185;;;;-1:-1:-1;;;;;;17860:16:0;;;;17691:185;:223;;;;-1:-1:-1;;;;;;17893:21:0;;17909:4;17893:21;;17691:223;17684:230;17599:323;-1:-1:-1;;;17599:323:0:o;19941:911::-;6825:16;:23;;-1:-1:-1;;;;6825:23:0;-1:-1:-1;;;6825:23:0;;;20049:16;;:6:::1;20030:16:::0;:35:::1;::::0;20049:16;20030:35:::1;:::i;:::-;20026:66:::0;20085:7:::1;20026:66;20187:16:::0;;:6:::1;20168:16:::0;20102:17:::1;::::0;20209:1:::1;::::0;20168:35:::1;::::0;20187:16;20168:35:::1;:::i;:::-;20147:6;:16:::0;20124:39:::1;::::0;:20;:39:::1;:::i;:::-;20123:81;;;;:::i;:::-;20122:88;;;;:::i;:::-;20102:108:::0;-1:-1:-1;20223:20:0::1;20246:32;20102:108:::0;20246:20;:32:::1;:::i;:::-;20223:55;;20289:30;20306:12;20289:16;:30::i;:::-;20475:16:::0;;:6:::1;20456:16:::0;20357:21:::1;::::0;20332:22:::1;::::0;20497:1:::1;::::0;20456:35:::1;::::0;::::1;:::i;:::-;20435:6;:16:::0;20418:33:::1;::::0;:14;:33:::1;:::i;:::-;20417:75;;;;:::i;:::-;20416:82;;;;:::i;:::-;20389:109:::0;-1:-1:-1;20515:13:0;;20511:161:::1;;20545:41;20558:9;20569:16;20545:12;:41::i;:::-;20606:54;::::0;;2944:25:1;;;3000:2;2985:18;;2978:34;;;3028:18;;;3021:34;;;20606:54:0::1;::::0;2932:2:1;2917:18;20606:54:0::1;;;;;;;20511:161;20686:21;:25:::0;20682:163:::1;;20783:10;::::0;20775:58:::1;::::0;20743:4:::1;::::0;-1:-1:-1;;;;;20783:10:0::1;::::0;20807:21:::1;::::0;20775:58:::1;::::0;;;20807:21;20783:10;20775:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20682:163:0::1;20015:837;;;;6859:1;-1:-1:-1::0;6871:16:0;:24;;-1:-1:-1;;;;6871:24:0;;;19941:911::o;22122:581::-;22244:16;;22222:4;;22244:16;;22239:221;;22277:28;22296:4;22302:2;22277:18;:28::i;:::-;22325:16;;;;22324:17;:41;;;;;22345:20;22356:4;22362:2;22345:10;:20::i;:::-;22320:129;;;22386:47;;-1:-1:-1;;;22386:47:0;;20332:2:1;22386:47:0;;;20314:21:1;20371:2;20351:18;;;20344:30;20410:34;20390:18;;;20383:62;-1:-1:-1;;;20461:18:1;;;20454:35;20506:19;;22386:47:0;20130:401:1;22320:129:0;-1:-1:-1;;;;;22471:13:0;;;;;;:7;:13;;;;;:23;;22488:6;;22471:13;:23;;22488:6;;22471:23;:::i;:::-;;;;-1:-1:-1;22505:22:0;;-1:-1:-1;22531:7:0;22530:47;;22571:6;22530:47;;;22542:26;22551:4;22557:2;22561:6;22542:8;:26::i;:::-;-1:-1:-1;;;;;22592:11:0;;;;;;:7;:11;;;;;:29;;22505:72;;-1:-1:-1;22505:72:0;;22592:11;;;:29;;22505:72;;22592:29;:::i;:::-;;;;;;;;22654:2;-1:-1:-1;;;;;22639:34:0;22648:4;-1:-1:-1;;;;;22639:34:0;;22658:14;22639:34;;;;1803:25:1;;1791:2;1776:18;;1657:177;22639:34:0;;;;;;;;-1:-1:-1;22691:4:0;;22122:581;-1:-1:-1;;;;;22122:581:0:o;20860:417::-;20951:16;;;20965:1;20951:16;;;;;;;;20927:21;;20951:16;;;;;;;;;;-1:-1:-1;20951:16:0;20927:40;;20996:4;20978;20983:1;20978:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20978:23:0;;;:7;;;;;;;;;;:23;;;;21022:9;;:16;;;-1:-1:-1;;;21022:16:0;;;;:9;;;;;:14;;:16;;;;;20978:7;;21022:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21012:4;21017:1;21012:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21012:26:0;;;:7;;;;;;;;;:26;21051:9;;:218;;-1:-1:-1;;;21051:218:0;;:9;;;:60;;:218;;21126:11;;21051:9;;21196:4;;21223;;21243:15;;21051:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20916:361;20860:417;:::o;21285:335::-;21366:9;;-1:-1:-1;;;;;21366:9:0;:25;21399:9;21432:4;21452:11;21366:9;;21564:7;7707;7734:6;-1:-1:-1;;;;;7734:6:0;;7669:79;21564:7;21586:15;21366:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21285:335;;:::o;21628:486::-;21710:16;;;;21709:17;21701:65;;;;-1:-1:-1;;;21701:65:0;;21723:2:1;21701:65:0;;;21705:21:1;21762:2;21742:18;;;21735:30;21801:34;21781:18;;;21774:62;-1:-1:-1;;;21852:18:1;;;21845:33;21895:19;;21701:65:0;21521:399:1;21701:65:0;21782:20;21793:4;21799:2;21782:10;:20::i;:::-;21781:21;:37;;;;-1:-1:-1;21812:6:0;;-1:-1:-1;;;;;21806:12:0;;;21812:6;;21806:12;21781:37;21777:330;;;21854:12;21839;:27;-1:-1:-1;;;;;21883:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;21883:30:0;;;21909:4;21883:30;;;;;;21928:16;:23;;;;;;;;;21981:15;21966:12;:30;22013:21;:28;;-1:-1:-1;;;;22013:28:0;-1:-1:-1;;;22013:28:0;;;22061:34;;1605:41:1;;;22061:34:0;;1578:18:1;22061:34:0;;;;;;;21628:486;;:::o;22711:688::-;22850:6;;22789:7;;;;-1:-1:-1;;;;;22850:6:0;;;22844:12;;;;22840:187;;-1:-1:-1;22884:12:0;;22840:187;;;22942:6;;-1:-1:-1;;;;;22942:6:0;;;22934:14;;;;22930:97;;-1:-1:-1;22964:4:0;:11;22930:97;;;-1:-1:-1;23009:16:0;;22930:97;23043:20;23054:4;23060:2;23043:10;:20::i;:::-;23039:142;;;23083:13;;:18;;:42;;;23105:13;;23123:1;23105:20;;23083:42;23079:91;;;23146:8;;;23079:91;23191:17;5277:5;23212:19;23221:10;23212:6;:19;:::i;:::-;:38;;;;:::i;:::-;23278:4;23262:22;;;;:7;:22;;;;;:37;;23191:60;;-1:-1:-1;23191:60:0;;23262:22;;;:37;;23191:60;;23262:37;:::i;:::-;;;;-1:-1:-1;;23315:40:0;;1803:25:1;;;23338:4:0;;-1:-1:-1;;;;;23315:40:0;;;;;1791:2:1;1776:18;23315:40:0;;;;;;;23373:18;23382:9;23373:6;:18;:::i;:::-;23366:25;22711:688;-1:-1:-1;;;;;;22711:688:0:o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;1009:131::-;-1:-1:-1;;;;;1084:31:1;;1074:42;;1064:70;;1130:1;1127;1120:12;1064:70;1009:131;:::o;1145:315::-;1213:6;1221;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;:::-;1398:5;1450:2;1435:18;;;;1422:32;;-1:-1:-1;;;1145:315:1:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:1;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:1;2270:18;;;;2257:32;;1839:456::o;2300:248::-;2368:6;2376;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;-1:-1:-1;;2468:23:1;;;2538:2;2523:18;;;2510:32;;-1:-1:-1;2300:248:1:o;3066:247::-;3125:6;3178:2;3166:9;3157:7;3153:23;3149:32;3146:52;;;3194:1;3191;3184:12;3146:52;3233:9;3220:23;3252:31;3277:5;3252:31;:::i;3318:160::-;3383:20;;3439:13;;3432:21;3422:32;;3412:60;;3468:1;3465;3458:12;3412:60;3318:160;;;:::o;3483:315::-;3548:6;3556;3609:2;3597:9;3588:7;3584:23;3580:32;3577:52;;;3625:1;3622;3615:12;3577:52;3664:9;3651:23;3683:31;3708:5;3683:31;:::i;:::-;3733:5;-1:-1:-1;3757:35:1;3788:2;3773:18;;3757:35;:::i;:::-;3747:45;;3483:315;;;;;:::o;3803:127::-;3864:10;3859:3;3855:20;3852:1;3845:31;3895:4;3892:1;3885:15;3919:4;3916:1;3909:15;3935:275;4006:2;4000:9;4071:2;4052:13;;-1:-1:-1;;4048:27:1;4036:40;;4106:18;4091:34;;4127:22;;;4088:62;4085:88;;;4153:18;;:::i;:::-;4189:2;4182:22;3935:275;;-1:-1:-1;3935:275:1:o;4215:531::-;4258:5;4311:3;4304:4;4296:6;4292:17;4288:27;4278:55;;4329:1;4326;4319:12;4278:55;4365:6;4352:20;4391:18;4387:2;4384:26;4381:52;;;4413:18;;:::i;:::-;4457:55;4500:2;4481:13;;-1:-1:-1;;4477:27:1;4506:4;4473:38;4457:55;:::i;:::-;4537:2;4528:7;4521:19;4583:3;4576:4;4571:2;4563:6;4559:15;4555:26;4552:35;4549:55;;;4600:1;4597;4590:12;4549:55;4665:2;4658:4;4650:6;4646:17;4639:4;4630:7;4626:18;4613:55;4713:1;4688:16;;;4706:4;4684:27;4677:38;;;;4692:7;4215:531;-1:-1:-1;;;4215:531:1:o;4751:747::-;4857:6;4865;4873;4881;4934:3;4922:9;4913:7;4909:23;4905:33;4902:53;;;4951:1;4948;4941:12;4902:53;4991:9;4978:23;5020:18;5061:2;5053:6;5050:14;5047:34;;;5077:1;5074;5067:12;5047:34;5100:50;5142:7;5133:6;5122:9;5118:22;5100:50;:::i;:::-;5090:60;;5203:2;5192:9;5188:18;5175:32;5159:48;;5232:2;5222:8;5219:16;5216:36;;;5248:1;5245;5238:12;5216:36;;5271:52;5315:7;5304:8;5293:9;5289:24;5271:52;:::i;:::-;5261:62;;;5370:2;5359:9;5355:18;5342:32;5332:42;;5424:2;5413:9;5409:18;5396:32;5437:31;5462:5;5437:31;:::i;:::-;4751:747;;;;-1:-1:-1;4751:747:1;;-1:-1:-1;;4751:747:1:o;5503:1091::-;5593:6;5601;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5710:9;5697:23;5739:18;5780:2;5772:6;5769:14;5766:34;;;5796:1;5793;5786:12;5766:34;5834:6;5823:9;5819:22;5809:32;;5879:7;5872:4;5868:2;5864:13;5860:27;5850:55;;5901:1;5898;5891:12;5850:55;5937:2;5924:16;5959:4;5982:2;5978;5975:10;5972:36;;;5988:18;;:::i;:::-;6034:2;6031:1;6027:10;6017:20;;6057:28;6081:2;6077;6073:11;6057:28;:::i;:::-;6119:15;;;6189:11;;;6185:20;;;6150:12;;;;6217:19;;;6214:39;;;6249:1;6246;6239:12;6214:39;6273:11;;;;6293:217;6309:6;6304:3;6301:15;6293:217;;;6389:3;6376:17;6363:30;;6406:31;6431:5;6406:31;:::i;:::-;6450:18;;;6326:12;;;;6488;;;;6293:217;;;6529:5;-1:-1:-1;6553:35:1;;-1:-1:-1;6569:18:1;;;6553:35;:::i;:::-;6543:45;;;;;;5503:1091;;;;;:::o;6852:180::-;6908:6;6961:2;6949:9;6940:7;6936:23;6932:32;6929:52;;;6977:1;6974;6967:12;6929:52;7000:26;7016:9;7000:26;:::i;7037:316::-;7114:6;7122;7130;7183:2;7171:9;7162:7;7158:23;7154:32;7151:52;;;7199:1;7196;7189:12;7151:52;-1:-1:-1;;7222:23:1;;;7292:2;7277:18;;7264:32;;-1:-1:-1;7343:2:1;7328:18;;;7315:32;;7037:316;-1:-1:-1;7037:316:1:o;7358:388::-;7426:6;7434;7487:2;7475:9;7466:7;7462:23;7458:32;7455:52;;;7503:1;7500;7493:12;7455:52;7542:9;7529:23;7561:31;7586:5;7561:31;:::i;:::-;7611:5;-1:-1:-1;7668:2:1;7653:18;;7640:32;7681:33;7640:32;7681:33;:::i;:::-;7733:7;7723:17;;;7358:388;;;;;:::o;8011:385::-;8097:6;8105;8113;8121;8174:3;8162:9;8153:7;8149:23;8145:33;8142:53;;;8191:1;8188;8181:12;8142:53;-1:-1:-1;;8214:23:1;;;8284:2;8269:18;;8256:32;;-1:-1:-1;8335:2:1;8320:18;;8307:32;;8386:2;8371:18;8358:32;;-1:-1:-1;8011:385:1;-1:-1:-1;8011:385:1:o;8401:380::-;8480:1;8476:12;;;;8523;;;8544:61;;8598:4;8590:6;8586:17;8576:27;;8544:61;8651:2;8643:6;8640:14;8620:18;8617:38;8614:161;;8697:10;8692:3;8688:20;8685:1;8678:31;8732:4;8729:1;8722:15;8760:4;8757:1;8750:15;8614:161;;8401:380;;;:::o;8786:127::-;8847:10;8842:3;8838:20;8835:1;8828:31;8878:4;8875:1;8868:15;8902:4;8899:1;8892:15;8918:128;8985:9;;;9006:11;;;9003:37;;;9020:18;;:::i;9051:340::-;9253:2;9235:21;;;9292:2;9272:18;;;9265:30;-1:-1:-1;;;9326:2:1;9311:18;;9304:46;9382:2;9367:18;;9051:340::o;9396:168::-;9436:7;9502:1;9498;9494:6;9490:14;9487:1;9484:21;9479:1;9472:9;9465:17;9461:45;9458:71;;;9509:18;;:::i;:::-;-1:-1:-1;9549:9:1;;9396:168::o;9569:217::-;9609:1;9635;9625:132;;9679:10;9674:3;9670:20;9667:1;9660:31;9714:4;9711:1;9704:15;9742:4;9739:1;9732:15;9625:132;-1:-1:-1;9771:9:1;;9569:217::o;9791:401::-;9993:2;9975:21;;;10032:2;10012:18;;;10005:30;10071:34;10066:2;10051:18;;10044:62;-1:-1:-1;;;10137:2:1;10122:18;;10115:35;10182:3;10167:19;;9791:401::o;10197:125::-;10262:9;;;10283:10;;;10280:36;;;10296:18;;:::i;10327:425::-;10529:2;10511:21;;;10568:2;10548:18;;;10541:30;10607:34;10602:2;10587:18;;10580:62;10678:31;10673:2;10658:18;;10651:59;10742:3;10727:19;;10327:425::o;11241:545::-;11343:2;11338:3;11335:11;11332:448;;;11379:1;11404:5;11400:2;11393:17;11449:4;11445:2;11435:19;11519:2;11507:10;11503:19;11500:1;11496:27;11490:4;11486:38;11555:4;11543:10;11540:20;11537:47;;;-1:-1:-1;11578:4:1;11537:47;11633:2;11628:3;11624:12;11621:1;11617:20;11611:4;11607:31;11597:41;;11688:82;11706:2;11699:5;11696:13;11688:82;;;11751:17;;;11732:1;11721:13;11688:82;;11962:1352;12088:3;12082:10;12115:18;12107:6;12104:30;12101:56;;;12137:18;;:::i;:::-;12166:97;12256:6;12216:38;12248:4;12242:11;12216:38;:::i;:::-;12210:4;12166:97;:::i;:::-;12318:4;;12382:2;12371:14;;12399:1;12394:663;;;;13101:1;13118:6;13115:89;;;-1:-1:-1;13170:19:1;;;13164:26;13115:89;-1:-1:-1;;11919:1:1;11915:11;;;11911:24;11907:29;11897:40;11943:1;11939:11;;;11894:57;13217:81;;12364:944;;12394:663;11188:1;11181:14;;;11225:4;11212:18;;-1:-1:-1;;12430:20:1;;;12548:236;12562:7;12559:1;12556:14;12548:236;;;12651:19;;;12645:26;12630:42;;12743:27;;;;12711:1;12699:14;;;;12578:19;;12548:236;;;12552:3;12812:6;12803:7;12800:19;12797:201;;;12873:19;;;12867:26;-1:-1:-1;;12956:1:1;12952:14;;;12968:3;12948:24;12944:37;12940:42;12925:58;12910:74;;12797:201;-1:-1:-1;;;;;13044:1:1;13028:14;;;13024:22;13011:36;;-1:-1:-1;11962:1352:1:o;13319:422::-;13408:1;13451:5;13408:1;13465:270;13486:7;13476:8;13473:21;13465:270;;;13545:4;13541:1;13537:6;13533:17;13527:4;13524:27;13521:53;;;13554:18;;:::i;:::-;13604:7;13594:8;13590:22;13587:55;;;13624:16;;;;13587:55;13703:22;;;;13663:15;;;;13465:270;;;13469:3;13319:422;;;;;:::o;13746:806::-;13795:5;13825:8;13815:80;;-1:-1:-1;13866:1:1;13880:5;;13815:80;13914:4;13904:76;;-1:-1:-1;13951:1:1;13965:5;;13904:76;13996:4;14014:1;14009:59;;;;14082:1;14077:130;;;;13989:218;;14009:59;14039:1;14030:10;;14053:5;;;14077:130;14114:3;14104:8;14101:17;14098:43;;;14121:18;;:::i;:::-;-1:-1:-1;;14177:1:1;14163:16;;14192:5;;13989:218;;14291:2;14281:8;14278:16;14272:3;14266:4;14263:13;14259:36;14253:2;14243:8;14240:16;14235:2;14229:4;14226:12;14222:35;14219:77;14216:159;;;-1:-1:-1;14328:19:1;;;14360:5;;14216:159;14407:34;14432:8;14426:4;14407:34;:::i;:::-;14477:6;14473:1;14469:6;14465:19;14456:7;14453:32;14450:58;;;14488:18;;:::i;:::-;14526:20;;13746:806;-1:-1:-1;;;13746:806:1:o;14557:140::-;14615:5;14644:47;14685:4;14675:8;14671:19;14665:4;14644:47;:::i;14702:251::-;14772:6;14825:2;14813:9;14804:7;14800:23;14796:32;14793:52;;;14841:1;14838;14831:12;14793:52;14873:9;14867:16;14892:31;14917:5;14892:31;:::i;15267:607::-;-1:-1:-1;;;;;15626:15:1;;;15608:34;;15673:2;15658:18;;15651:34;;;;15716:2;15701:18;;15694:34;;;;15759:2;15744:18;;15737:34;;;;15808:15;;;15802:3;15787:19;;15780:44;15588:3;15840:19;;15833:35;;;;15557:3;15542:19;;15267:607::o;15879:306::-;15967:6;15975;15983;16036:2;16024:9;16015:7;16011:23;16007:32;16004:52;;;16052:1;16049;16042:12;16004:52;16081:9;16075:16;16065:26;;16131:2;16120:9;16116:18;16110:25;16100:35;;16175:2;16164:9;16160:18;16154:25;16144:35;;15879:306;;;;;:::o;16877:127::-;16938:10;16933:3;16929:20;16926:1;16919:31;16969:4;16966:1;16959:15;16993:4;16990:1;16983:15;17009:135;17048:3;17069:17;;;17066:43;;17089:18;;:::i;:::-;-1:-1:-1;17136:1:1;17125:13;;17009:135::o;20536:980::-;20798:4;20846:3;20835:9;20831:19;20877:6;20866:9;20859:25;20903:2;20941:6;20936:2;20925:9;20921:18;20914:34;20984:3;20979:2;20968:9;20964:18;20957:31;21008:6;21043;21037:13;21074:6;21066;21059:22;21112:3;21101:9;21097:19;21090:26;;21151:2;21143:6;21139:15;21125:29;;21172:1;21182:195;21196:6;21193:1;21190:13;21182:195;;;21261:13;;-1:-1:-1;;;;;21257:39:1;21245:52;;21352:15;;;;21317:12;;;;21293:1;21211:9;21182:195;;;-1:-1:-1;;;;;;;21433:32:1;;;;21428:2;21413:18;;21406:60;-1:-1:-1;;;21497:3:1;21482:19;21475:35;21394:3;20536:980;-1:-1:-1;;;20536:980:1:o

Swarm Source

ipfs://27bb2bb25adc662821884a1a378ad8a39040842fe90321652ea992f0b5a48a37
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.