ETH Price: $2,632.79 (-0.95%)

Token

Math Coin (MATH)
 

Overview

Max Total Supply

1,000,000,000,000 MATH

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
930,367,570.914994599999999999 MATH

Value
$0.00
0x171D54d85Bbc8f1b04b59fA41259a1ED02B9F853
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:
MathCoinETH

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-29
*/

//.           Quick Maths
///.               数学
////. https://twitter.com/MathCoinETH

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function 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);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external 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;
    }
}

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

contract MathCoinETH is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    /******************/

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

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading();
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedOperationsAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event BuyBackTriggered(uint256 amount);
    event OwnerForcedSwapBack(uint256 timestamp);
    event CaughtEarlyBuyer(address sniper);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Math Coin", "MATH") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e12 * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyOperationsFee = 5;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 5;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        operationsAddress = address(newOwner);
        devAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}


    function enableTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }


    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

        _approve(address(this), address(dexRouter), tokenAmount);

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

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

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

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

        (success,) = address(devAddress).call{value: ethForDev}("");

        (success,) = address(operationsAddress).call{value: address(this).balance}("");
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e556012805462ffffff191660019081179091556014805460ff191690911790553480156200003557600080fd5b506040518060400160405280600981526020016826b0ba341021b7b4b760b91b8152506040518060400160405280600481526020016309a82a8960e31b815250816003908162000086919062000856565b50600462000095828262000856565b5050506000620000aa6200044e60201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620033f8833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000151573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000177919062000922565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001eb919062000922565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000239573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025f919062000922565b600a80546001600160a01b0319166001600160a01b039290921691821790556200028b90600162000452565b600a54620002a4906001600160a01b03166001620004b5565b6c0c9f2c9cd04674edea400000006064620002c18260016200096a565b620002cd91906200098c565b6006556064620002df8260016200096a565b620002eb91906200098c565b6007556064620002fd8260016200096a565b6200030991906200098c565b6008556127106200031c8260056200096a565b6200032891906200098c565b600b5560056016819055600060178190556018819055601981905590819062000353908290620009af565b6200035f9190620009af565b6200036b9190620009af565b6015556005601b8190556000601c819055601d819055601e81905590819062000396908290620009af565b620003a29190620009af565b620003ae9190620009af565b601a55620003be83600162000452565b620003cb30600162000452565b620003da61dead600162000452565b620003e783600162000521565b620003f430600162000521565b6200040361dead600162000521565b600c80546001600160a01b0385166001600160a01b03199182168117909255600d805490911690911790556200043a8382620005cf565b6200044583620006b4565b505050620009ca565b3390565b6001600160a01b038216600081815260246020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602560205260409020805460ff1916821515179055620004e5828262000452565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005705760405162461bcd60e51b81526020600482018190526024820152600080516020620033d883398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006275760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000567565b80600260008282546200063b9190620009af565b90915550506001600160a01b038216600090815260208190526040812080548392906200066a908490620009af565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006ff5760405162461bcd60e51b81526020600482018190526024820152600080516020620033d8833981519152604482015260640162000567565b6001600160a01b038116620007665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000567565b6005546040516001600160a01b03808416921690600080516020620033f883398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007dc57607f821691505b602082108103620007fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200085157600081815260208120601f850160051c810160208610156200082c5750805b601f850160051c820191505b818110156200084d5782815560010162000838565b5050505b505050565b81516001600160401b03811115620008725762000872620007b1565b6200088a81620008838454620007c7565b8462000803565b602080601f831160018114620008c25760008415620008a95750858301515b600019600386901b1c1916600185901b1785556200084d565b600085815260208120601f198616915b82811015620008f357888601518255948401946001909101908401620008d2565b5085821015620009125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200093557600080fd5b81516001600160a01b03811681146200094d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000987576200098762000954565b500290565b600082620009aa57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009c557620009c562000954565b500190565b6129fe80620009da6000396000f3fe60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063e884f26011610095578063f2fde38b1161006f578063f2fde38b146108e4578063f5648a4f14610904578063f637434214610919578063fb002c971461092f57600080fd5b8063e884f260146108a3578063ee40166e146108b8578063f11a24d3146108ce57600080fd5b8063d85ba063116100d1578063d85ba0631461081b578063dd62ed3e14610831578063e2f4560514610877578063e71dc3f51461088d57600080fd5b8063c0246668146107c1578063c18bc195146107e1578063c876d0b91461080157600080fd5b8063a457c2d711610164578063aa4bde281161013e578063aa4bde2814610746578063adb873bd1461075c578063b62496f514610772578063bbc0c742146107a257600080fd5b8063a457c2d7146106f0578063a62068ce14610710578063a9059cbb1461072657600080fd5b80638da5cb5b1461065b57806395d89b41146106795780639a7a23d61461068e5780639c3b4fdc146106ae5780639fccce32146106c4578063a0d82dc5146106da57600080fd5b80634f77f6c01161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146105e057806382aa7c68146105f557806385ecfd281461061557806388e765ff1461064557600080fd5b80636ddd17131461057557806370a0823114610595578063715018a6146105cb57600080fd5b80634f77f6c0146104f057806358a6d531146105065780635a139dd41461051d57806366d602ae146105335780636a486a8e146105495780636b0a894c1461055f57600080fd5b80631d777856116102d757806339509351116102b15780633950935114610474578063452ed4f114610494578063499b8394146104b45780634a62bb65146104d657600080fd5b80631d7778561461042257806323b872dd14610438578063313ce5671461045857600080fd5b806306fdde031461032a5780630758d92414610355578063095ea7b31461038d57806310d5de53146103bd57806318160ddd146103ed5780631a8145bb1461040c57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610945565b60405161034c91906125f6565b60405180910390f35b34801561036157600080fd5b50600954610375906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561039957600080fd5b506103ad6103a8366004612663565b6109d7565b604051901515815260200161034c565b3480156103c957600080fd5b506103ad6103d836600461268f565b60246020526000908152604090205460ff1681565b3480156103f957600080fd5b506002545b60405190815260200161034c565b34801561041857600080fd5b506103fe60205481565b34801561042e57600080fd5b506103fe60225481565b34801561044457600080fd5b506103ad6104533660046126b3565b6109ed565b34801561046457600080fd5b506040516012815260200161034c565b34801561048057600080fd5b506103ad61048f366004612663565b610a9c565b3480156104a057600080fd5b50600a54610375906001600160a01b031681565b3480156104c057600080fd5b506104d46104cf36600461268f565b610ad8565b005b3480156104e257600080fd5b506012546103ad9060ff1681565b3480156104fc57600080fd5b506103fe601b5481565b34801561051257600080fd5b50600f5443106103ad565b34801561052957600080fd5b506103fe60165481565b34801561053f57600080fd5b506103fe60075481565b34801561055557600080fd5b506103fe601a5481565b34801561056b57600080fd5b506103fe60115481565b34801561058157600080fd5b506012546103ad9062010000900460ff1681565b3480156105a157600080fd5b506103fe6105b036600461268f565b6001600160a01b031660009081526020819052604090205490565b3480156105d757600080fd5b506104d4610b89565b3480156105ec57600080fd5b506104d4610bfd565b34801561060157600080fd5b506104d46106103660046126f4565b610c68565b34801561062157600080fd5b506103ad61063036600461268f565b60106020526000908152604090205460ff1681565b34801561065157600080fd5b506103fe60065481565b34801561066757600080fd5b506005546001600160a01b0316610375565b34801561068557600080fd5b5061033f610d3b565b34801561069a57600080fd5b506104d46106a936600461270d565b610d4a565b3480156106ba57600080fd5b506103fe60185481565b3480156106d057600080fd5b506103fe60215481565b3480156106e657600080fd5b506103fe601d5481565b3480156106fc57600080fd5b506103ad61070b366004612663565b610e3e565b34801561071c57600080fd5b506103fe600f5481565b34801561073257600080fd5b506103ad610741366004612663565b610ed7565b34801561075257600080fd5b506103fe60085481565b34801561076857600080fd5b506103fe601e5481565b34801561077e57600080fd5b506103ad61078d36600461268f565b60256020526000908152604090205460ff1681565b3480156107ae57600080fd5b506012546103ad90610100900460ff1681565b3480156107cd57600080fd5b506104d46107dc36600461270d565b610ee4565b3480156107ed57600080fd5b506104d46107fc3660046126f4565b610f6d565b34801561080d57600080fd5b506014546103ad9060ff1681565b34801561082757600080fd5b506103fe60155481565b34801561083d57600080fd5b506103fe61084c36600461274b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561088357600080fd5b506103fe600b5481565b34801561089957600080fd5b506103fe60195481565b3480156108af57600080fd5b506104d461107c565b3480156108c457600080fd5b506103fe600e5481565b3480156108da57600080fd5b506103fe60175481565b3480156108f057600080fd5b506104d46108ff36600461268f565b6110b2565b34801561091057600080fd5b506104d461119d565b34801561092557600080fd5b506103fe601c5481565b34801561093b57600080fd5b506103fe601f5481565b60606003805461095490612779565b80601f016020809104026020016040519081016040528092919081815260200182805461098090612779565b80156109cd5780601f106109a2576101008083540402835291602001916109cd565b820191906000526020600020905b8154815290600101906020018083116109b057829003601f168201915b5050505050905090565b60006109e4338484611214565b50600192915050565b60006109fa848484611339565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a918533858403611214565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e4918590610ad39086906127c9565b611214565b6005546001600160a01b03163314610b025760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b038116610b675760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610a7b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bb35760405162461bcd60e51b8152600401610a7b906127e1565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c275760405162461bcd60e51b8152600401610a7b906127e1565b6012805460ff199081169091556014805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a7b906127e1565b601254610100900460ff1615610cea5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a7b565b6012805462ffff0019166201010017905543600e819055610d0c9082906127c9565b600f556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b60606004805461095490612779565b6005546001600160a01b03163314610d745760405162461bcd60e51b8152600401610a7b906127e1565b600a546001600160a01b0390811690831603610df85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a7b565b610e028282611e90565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ec05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a7b565b610ecd3385858403611214565b5060019392505050565b60006109e4338484611339565b6005546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f975760405162461bcd60e51b8152600401610a7b906127e1565b670de0b6b3a76400006103e8610fac60025490565b610fb7906003612816565b610fc19190612835565b610fcb9190612835565b81101561102f5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a7b565b61104181670de0b6b3a7640000612816565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc9060200160405180910390a150565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610a7b906127e1565b6014805460ff19169055565b6005546001600160a01b031633146110dc5760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b0381166111415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111c75760405162461bcd60e51b8152600401610a7b906127e1565b604051600090339047908381818185875af1925050503d8060008114611209576040519150601f19603f3d011682016040523d82523d6000602084013e61120e565b606091505b50505050565b6001600160a01b0383166112765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7b565b6001600160a01b0382166112d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661135f5760405162461bcd60e51b8152600401610a7b90612857565b6001600160a01b0382166113855760405162461bcd60e51b8152600401610a7b9061289c565b600081116113d55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a7b565b601254610100900460ff16611468576001600160a01b03831660009081526023602052604090205460ff168061142357506001600160a01b03821660009081526023602052604090205460ff165b6114685760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a7b565b600f541561153b576001600160a01b03831660009081526010602052604090205460ff1615806114a557506005546001600160a01b038381169116145b806114ba57506001600160a01b03821661dead145b61153b5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a7b565b60125460ff1615611957576005546001600160a01b0384811691161480159061157257506005546001600160a01b03838116911614155b801561158657506001600160a01b03821615155b801561159d57506001600160a01b03821661dead14155b80156115c257506001600160a01b03831660009081526023602052604090205460ff16155b80156115e757506001600160a01b03821660009081526023602052604090205460ff16155b156119575760145460ff1615611700576009546001600160a01b038381169116148015906116235750600a546001600160a01b03838116911614155b15611700576116336002436128df565b3260009081526013602052604090205410801561167157506116566002436128df565b6001600160a01b038316600090815260136020526040902054105b6116db5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a7b565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526025602052604090205460ff16801561174157506001600160a01b03821660009081526024602052604090205460ff16155b1561181d576006548111156117a95760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a7b565b6008546001600160a01b0383166000908152602081905260409020546117cf90836127c9565b11156118185760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a7b565b611957565b6001600160a01b03821660009081526025602052604090205460ff16801561185e57506001600160a01b03831660009081526024602052604090205460ff16155b156118c8576007548111156118185760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a7b565b6001600160a01b03821660009081526024602052604090205460ff16611957576008546001600160a01b03831660009081526020819052604090205461190e90836127c9565b11156119575760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a7b565b30600090815260208190526040902054600b5481108015908190611983575060125462010000900460ff165b80156119995750600a54600160a01b900460ff16155b80156119be57506001600160a01b03851660009081526025602052604090205460ff16155b80156119e357506001600160a01b03851660009081526023602052604090205460ff16155b8015611a0857506001600160a01b03841660009081526023602052604090205460ff16155b15611a3657600a805460ff60a01b1916600160a01b179055611a28611ebe565b600a805460ff60a01b191690555b6001600160a01b03851660009081526023602052604090205460019060ff1680611a7857506001600160a01b03851660009081526023602052604090205460ff165b15611a81575060005b60008115611e7c57600f5443108015611ab257506001600160a01b03871660009081526025602052604090205460ff165b8015611ad757506001600160a01b03861660009081526025602052604090205460ff16155b8015611ae557506000601554115b15611c65576001600160a01b03861660009081526010602052604090205460ff16611b85576001600160a01b0386166000908152601060205260408120805460ff191660019081179091556011805491929091611b439084906127c9565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611b92866063612816565b611b9c9190612835565b905060155460175482611baf9190612816565b611bb99190612835565b60206000828254611bca91906127c9565b9091555050601554601654611bdf9083612816565b611be99190612835565b601f6000828254611bfa91906127c9565b9091555050601554601854611c0f9083612816565b611c199190612835565b60216000828254611c2a91906127c9565b9091555050601554601954611c3f9083612816565b611c499190612835565b60226000828254611c5a91906127c9565b90915550611e5e9050565b6001600160a01b03861660009081526025602052604090205460ff168015611c8f57506000601a54115b15611d51576064601a5486611ca49190612816565b611cae9190612835565b9050601a54601c5482611cc19190612816565b611ccb9190612835565b60206000828254611cdc91906127c9565b9091555050601a54601b54611cf19083612816565b611cfb9190612835565b601f6000828254611d0c91906127c9565b9091555050601a54601d54611d219083612816565b611d2b9190612835565b60216000828254611d3c91906127c9565b9091555050601a54601e54611c3f9083612816565b6001600160a01b03871660009081526025602052604090205460ff168015611d7b57506000601554115b15611e5e57606460155486611d909190612816565b611d9a9190612835565b905060155460175482611dad9190612816565b611db79190612835565b60206000828254611dc891906127c9565b9091555050601554601654611ddd9083612816565b611de79190612835565b601f6000828254611df891906127c9565b9091555050601554601854611e0d9083612816565b611e179190612835565b60216000828254611e2891906127c9565b9091555050601554601954611e3d9083612816565b611e479190612835565b60226000828254611e5891906127c9565b90915550505b8015611e6f57611e6f873083612108565b611e7981866128df565b94505b611e87878787612108565b50505050505050565b6001600160a01b0382166000908152602560205260409020805460ff1916821515179055610e02828261225d565b6000602254118015611ee157506022543060009081526020819052604090205410155b15611ef257611ef2306022546122c0565b600060228190553081526020819052604081205490506000602154601f54602054611f1d91906127c9565b611f2791906127c9565b9050811580611f34575080155b15611f3d575050565b600b54611f4b906014612816565b821115611f6357600b54611f60906014612816565b91505b60008060028360205486611f779190612816565b611f819190612835565b611f8b9190612835565b9050611f9f611f9a82866128df565b6123ea565b60205447908190600090611fb590600290612835565b611fbf90876128df565b601f54611fcc9085612816565b611fd69190612835565b905060006002602054611fe99190612835565b611ff390886128df565b6021546120009086612816565b61200a9190612835565b905061201681836127c9565b61202090846128df565b60006020819055601f8190556021819055602255925084158015906120455750600083115b15612054576120548584612544565b600d546040516001600160a01b03909116908290600081818185875af1925050503d80600081146120a1576040519150601f19603f3d011682016040523d82523d6000602084013e6120a6565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d80600081146120f6576040519150601f19603f3d011682016040523d82523d6000602084013e6120fb565b606091505b5050505050505050505050565b6001600160a01b03831661212e5760405162461bcd60e51b8152600401610a7b90612857565b6001600160a01b0382166121545760405162461bcd60e51b8152600401610a7b9061289c565b6001600160a01b038316600090815260208190526040902054818110156121cc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a7b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122039084906127c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224f91815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260246020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166123205760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a7b565b6001600160a01b038216600090815260208190526040902054818110156123945760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a7b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161132c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061241f5761241f6128f6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249c919061290c565b816001815181106124af576124af6128f6565b6001600160a01b0392831660209182029290920101526009546124d59130911684611214565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061250e908590600090869030904290600401612929565b600060405180830381600087803b15801561252857600080fd5b505af115801561253c573d6000803e3d6000fd5b505050505050565b60095461255c9030906001600160a01b031684611214565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156125ca573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125ef919061299a565b5050505050565b600060208083528351808285015260005b8181101561262357858101830151858201604001528201612607565b81811115612635576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461266057600080fd5b50565b6000806040838503121561267657600080fd5b82356126818161264b565b946020939093013593505050565b6000602082840312156126a157600080fd5b81356126ac8161264b565b9392505050565b6000806000606084860312156126c857600080fd5b83356126d38161264b565b925060208401356126e38161264b565b929592945050506040919091013590565b60006020828403121561270657600080fd5b5035919050565b6000806040838503121561272057600080fd5b823561272b8161264b565b91506020830135801515811461274057600080fd5b809150509250929050565b6000806040838503121561275e57600080fd5b82356127698161264b565b915060208301356127408161264b565b600181811c9082168061278d57607f821691505b6020821081036127ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156127dc576127dc6127b3565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615612830576128306127b3565b500290565b60008261285257634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156128f1576128f16127b3565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561291e57600080fd5b81516126ac8161264b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129795784516001600160a01b031683529383019391830191600101612954565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129af57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122047ab937c80882bc30a1bc52eb3834e78be2233d43046d7553e7366d67edb5df364736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063e884f26011610095578063f2fde38b1161006f578063f2fde38b146108e4578063f5648a4f14610904578063f637434214610919578063fb002c971461092f57600080fd5b8063e884f260146108a3578063ee40166e146108b8578063f11a24d3146108ce57600080fd5b8063d85ba063116100d1578063d85ba0631461081b578063dd62ed3e14610831578063e2f4560514610877578063e71dc3f51461088d57600080fd5b8063c0246668146107c1578063c18bc195146107e1578063c876d0b91461080157600080fd5b8063a457c2d711610164578063aa4bde281161013e578063aa4bde2814610746578063adb873bd1461075c578063b62496f514610772578063bbc0c742146107a257600080fd5b8063a457c2d7146106f0578063a62068ce14610710578063a9059cbb1461072657600080fd5b80638da5cb5b1461065b57806395d89b41146106795780639a7a23d61461068e5780639c3b4fdc146106ae5780639fccce32146106c4578063a0d82dc5146106da57600080fd5b80634f77f6c01161026a5780636ddd171311610223578063751039fc116101fd578063751039fc146105e057806382aa7c68146105f557806385ecfd281461061557806388e765ff1461064557600080fd5b80636ddd17131461057557806370a0823114610595578063715018a6146105cb57600080fd5b80634f77f6c0146104f057806358a6d531146105065780635a139dd41461051d57806366d602ae146105335780636a486a8e146105495780636b0a894c1461055f57600080fd5b80631d777856116102d757806339509351116102b15780633950935114610474578063452ed4f114610494578063499b8394146104b45780634a62bb65146104d657600080fd5b80631d7778561461042257806323b872dd14610438578063313ce5671461045857600080fd5b806306fdde031461032a5780630758d92414610355578063095ea7b31461038d57806310d5de53146103bd57806318160ddd146103ed5780631a8145bb1461040c57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610945565b60405161034c91906125f6565b60405180910390f35b34801561036157600080fd5b50600954610375906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561039957600080fd5b506103ad6103a8366004612663565b6109d7565b604051901515815260200161034c565b3480156103c957600080fd5b506103ad6103d836600461268f565b60246020526000908152604090205460ff1681565b3480156103f957600080fd5b506002545b60405190815260200161034c565b34801561041857600080fd5b506103fe60205481565b34801561042e57600080fd5b506103fe60225481565b34801561044457600080fd5b506103ad6104533660046126b3565b6109ed565b34801561046457600080fd5b506040516012815260200161034c565b34801561048057600080fd5b506103ad61048f366004612663565b610a9c565b3480156104a057600080fd5b50600a54610375906001600160a01b031681565b3480156104c057600080fd5b506104d46104cf36600461268f565b610ad8565b005b3480156104e257600080fd5b506012546103ad9060ff1681565b3480156104fc57600080fd5b506103fe601b5481565b34801561051257600080fd5b50600f5443106103ad565b34801561052957600080fd5b506103fe60165481565b34801561053f57600080fd5b506103fe60075481565b34801561055557600080fd5b506103fe601a5481565b34801561056b57600080fd5b506103fe60115481565b34801561058157600080fd5b506012546103ad9062010000900460ff1681565b3480156105a157600080fd5b506103fe6105b036600461268f565b6001600160a01b031660009081526020819052604090205490565b3480156105d757600080fd5b506104d4610b89565b3480156105ec57600080fd5b506104d4610bfd565b34801561060157600080fd5b506104d46106103660046126f4565b610c68565b34801561062157600080fd5b506103ad61063036600461268f565b60106020526000908152604090205460ff1681565b34801561065157600080fd5b506103fe60065481565b34801561066757600080fd5b506005546001600160a01b0316610375565b34801561068557600080fd5b5061033f610d3b565b34801561069a57600080fd5b506104d46106a936600461270d565b610d4a565b3480156106ba57600080fd5b506103fe60185481565b3480156106d057600080fd5b506103fe60215481565b3480156106e657600080fd5b506103fe601d5481565b3480156106fc57600080fd5b506103ad61070b366004612663565b610e3e565b34801561071c57600080fd5b506103fe600f5481565b34801561073257600080fd5b506103ad610741366004612663565b610ed7565b34801561075257600080fd5b506103fe60085481565b34801561076857600080fd5b506103fe601e5481565b34801561077e57600080fd5b506103ad61078d36600461268f565b60256020526000908152604090205460ff1681565b3480156107ae57600080fd5b506012546103ad90610100900460ff1681565b3480156107cd57600080fd5b506104d46107dc36600461270d565b610ee4565b3480156107ed57600080fd5b506104d46107fc3660046126f4565b610f6d565b34801561080d57600080fd5b506014546103ad9060ff1681565b34801561082757600080fd5b506103fe60155481565b34801561083d57600080fd5b506103fe61084c36600461274b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561088357600080fd5b506103fe600b5481565b34801561089957600080fd5b506103fe60195481565b3480156108af57600080fd5b506104d461107c565b3480156108c457600080fd5b506103fe600e5481565b3480156108da57600080fd5b506103fe60175481565b3480156108f057600080fd5b506104d46108ff36600461268f565b6110b2565b34801561091057600080fd5b506104d461119d565b34801561092557600080fd5b506103fe601c5481565b34801561093b57600080fd5b506103fe601f5481565b60606003805461095490612779565b80601f016020809104026020016040519081016040528092919081815260200182805461098090612779565b80156109cd5780601f106109a2576101008083540402835291602001916109cd565b820191906000526020600020905b8154815290600101906020018083116109b057829003601f168201915b5050505050905090565b60006109e4338484611214565b50600192915050565b60006109fa848484611339565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a845760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610a918533858403611214565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109e4918590610ad39086906127c9565b611214565b6005546001600160a01b03163314610b025760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b038116610b675760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610a7b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610bb35760405162461bcd60e51b8152600401610a7b906127e1565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c275760405162461bcd60e51b8152600401610a7b906127e1565b6012805460ff199081169091556014805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a7b906127e1565b601254610100900460ff1615610cea5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a7b565b6012805462ffff0019166201010017905543600e819055610d0c9082906127c9565b600f556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b60606004805461095490612779565b6005546001600160a01b03163314610d745760405162461bcd60e51b8152600401610a7b906127e1565b600a546001600160a01b0390811690831603610df85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a7b565b610e028282611e90565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ec05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a7b565b610ecd3385858403611214565b5060019392505050565b60006109e4338484611339565b6005546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f975760405162461bcd60e51b8152600401610a7b906127e1565b670de0b6b3a76400006103e8610fac60025490565b610fb7906003612816565b610fc19190612835565b610fcb9190612835565b81101561102f5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610a7b565b61104181670de0b6b3a7640000612816565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc9060200160405180910390a150565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610a7b906127e1565b6014805460ff19169055565b6005546001600160a01b031633146110dc5760405162461bcd60e51b8152600401610a7b906127e1565b6001600160a01b0381166111415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111c75760405162461bcd60e51b8152600401610a7b906127e1565b604051600090339047908381818185875af1925050503d8060008114611209576040519150601f19603f3d011682016040523d82523d6000602084013e61120e565b606091505b50505050565b6001600160a01b0383166112765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a7b565b6001600160a01b0382166112d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a7b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661135f5760405162461bcd60e51b8152600401610a7b90612857565b6001600160a01b0382166113855760405162461bcd60e51b8152600401610a7b9061289c565b600081116113d55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a7b565b601254610100900460ff16611468576001600160a01b03831660009081526023602052604090205460ff168061142357506001600160a01b03821660009081526023602052604090205460ff165b6114685760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a7b565b600f541561153b576001600160a01b03831660009081526010602052604090205460ff1615806114a557506005546001600160a01b038381169116145b806114ba57506001600160a01b03821661dead145b61153b5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a7b565b60125460ff1615611957576005546001600160a01b0384811691161480159061157257506005546001600160a01b03838116911614155b801561158657506001600160a01b03821615155b801561159d57506001600160a01b03821661dead14155b80156115c257506001600160a01b03831660009081526023602052604090205460ff16155b80156115e757506001600160a01b03821660009081526023602052604090205460ff16155b156119575760145460ff1615611700576009546001600160a01b038381169116148015906116235750600a546001600160a01b03838116911614155b15611700576116336002436128df565b3260009081526013602052604090205410801561167157506116566002436128df565b6001600160a01b038316600090815260136020526040902054105b6116db5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a7b565b3260009081526013602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526025602052604090205460ff16801561174157506001600160a01b03821660009081526024602052604090205460ff16155b1561181d576006548111156117a95760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a7b565b6008546001600160a01b0383166000908152602081905260409020546117cf90836127c9565b11156118185760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a7b565b611957565b6001600160a01b03821660009081526025602052604090205460ff16801561185e57506001600160a01b03831660009081526024602052604090205460ff16155b156118c8576007548111156118185760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a7b565b6001600160a01b03821660009081526024602052604090205460ff16611957576008546001600160a01b03831660009081526020819052604090205461190e90836127c9565b11156119575760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610a7b565b30600090815260208190526040902054600b5481108015908190611983575060125462010000900460ff165b80156119995750600a54600160a01b900460ff16155b80156119be57506001600160a01b03851660009081526025602052604090205460ff16155b80156119e357506001600160a01b03851660009081526023602052604090205460ff16155b8015611a0857506001600160a01b03841660009081526023602052604090205460ff16155b15611a3657600a805460ff60a01b1916600160a01b179055611a28611ebe565b600a805460ff60a01b191690555b6001600160a01b03851660009081526023602052604090205460019060ff1680611a7857506001600160a01b03851660009081526023602052604090205460ff165b15611a81575060005b60008115611e7c57600f5443108015611ab257506001600160a01b03871660009081526025602052604090205460ff165b8015611ad757506001600160a01b03861660009081526025602052604090205460ff16155b8015611ae557506000601554115b15611c65576001600160a01b03861660009081526010602052604090205460ff16611b85576001600160a01b0386166000908152601060205260408120805460ff191660019081179091556011805491929091611b439084906127c9565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064611b92866063612816565b611b9c9190612835565b905060155460175482611baf9190612816565b611bb99190612835565b60206000828254611bca91906127c9565b9091555050601554601654611bdf9083612816565b611be99190612835565b601f6000828254611bfa91906127c9565b9091555050601554601854611c0f9083612816565b611c199190612835565b60216000828254611c2a91906127c9565b9091555050601554601954611c3f9083612816565b611c499190612835565b60226000828254611c5a91906127c9565b90915550611e5e9050565b6001600160a01b03861660009081526025602052604090205460ff168015611c8f57506000601a54115b15611d51576064601a5486611ca49190612816565b611cae9190612835565b9050601a54601c5482611cc19190612816565b611ccb9190612835565b60206000828254611cdc91906127c9565b9091555050601a54601b54611cf19083612816565b611cfb9190612835565b601f6000828254611d0c91906127c9565b9091555050601a54601d54611d219083612816565b611d2b9190612835565b60216000828254611d3c91906127c9565b9091555050601a54601e54611c3f9083612816565b6001600160a01b03871660009081526025602052604090205460ff168015611d7b57506000601554115b15611e5e57606460155486611d909190612816565b611d9a9190612835565b905060155460175482611dad9190612816565b611db79190612835565b60206000828254611dc891906127c9565b9091555050601554601654611ddd9083612816565b611de79190612835565b601f6000828254611df891906127c9565b9091555050601554601854611e0d9083612816565b611e179190612835565b60216000828254611e2891906127c9565b9091555050601554601954611e3d9083612816565b611e479190612835565b60226000828254611e5891906127c9565b90915550505b8015611e6f57611e6f873083612108565b611e7981866128df565b94505b611e87878787612108565b50505050505050565b6001600160a01b0382166000908152602560205260409020805460ff1916821515179055610e02828261225d565b6000602254118015611ee157506022543060009081526020819052604090205410155b15611ef257611ef2306022546122c0565b600060228190553081526020819052604081205490506000602154601f54602054611f1d91906127c9565b611f2791906127c9565b9050811580611f34575080155b15611f3d575050565b600b54611f4b906014612816565b821115611f6357600b54611f60906014612816565b91505b60008060028360205486611f779190612816565b611f819190612835565b611f8b9190612835565b9050611f9f611f9a82866128df565b6123ea565b60205447908190600090611fb590600290612835565b611fbf90876128df565b601f54611fcc9085612816565b611fd69190612835565b905060006002602054611fe99190612835565b611ff390886128df565b6021546120009086612816565b61200a9190612835565b905061201681836127c9565b61202090846128df565b60006020819055601f8190556021819055602255925084158015906120455750600083115b15612054576120548584612544565b600d546040516001600160a01b03909116908290600081818185875af1925050503d80600081146120a1576040519150601f19603f3d011682016040523d82523d6000602084013e6120a6565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d80600081146120f6576040519150601f19603f3d011682016040523d82523d6000602084013e6120fb565b606091505b5050505050505050505050565b6001600160a01b03831661212e5760405162461bcd60e51b8152600401610a7b90612857565b6001600160a01b0382166121545760405162461bcd60e51b8152600401610a7b9061289c565b6001600160a01b038316600090815260208190526040902054818110156121cc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a7b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122039084906127c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224f91815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260246020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166123205760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a7b565b6001600160a01b038216600090815260208190526040902054818110156123945760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a7b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161132c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061241f5761241f6128f6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249c919061290c565b816001815181106124af576124af6128f6565b6001600160a01b0392831660209182029290920101526009546124d59130911684611214565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061250e908590600090869030904290600401612929565b600060405180830381600087803b15801561252857600080fd5b505af115801561253c573d6000803e3d6000fd5b505050505050565b60095461255c9030906001600160a01b031684611214565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156125ca573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125ef919061299a565b5050505050565b600060208083528351808285015260005b8181101561262357858101830151858201604001528201612607565b81811115612635576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461266057600080fd5b50565b6000806040838503121561267657600080fd5b82356126818161264b565b946020939093013593505050565b6000602082840312156126a157600080fd5b81356126ac8161264b565b9392505050565b6000806000606084860312156126c857600080fd5b83356126d38161264b565b925060208401356126e38161264b565b929592945050506040919091013590565b60006020828403121561270657600080fd5b5035919050565b6000806040838503121561272057600080fd5b823561272b8161264b565b91506020830135801515811461274057600080fd5b809150509250929050565b6000806040838503121561275e57600080fd5b82356127698161264b565b915060208301356127408161264b565b600181811c9082168061278d57607f821691505b6020821081036127ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156127dc576127dc6127b3565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615612830576128306127b3565b500290565b60008261285257634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156128f1576128f16127b3565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561291e57600080fd5b81516126ac8161264b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129795784516001600160a01b031683529383019391830191600101612954565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129af57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122047ab937c80882bc30a1bc52eb3834e78be2233d43046d7553e7366d67edb5df364736f6c634300080f0033

Deployed Bytecode Sourcemap

7998:14478:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8154:27;;;;;;;;;;-1:-1:-1;8154:27:0;;;;-1:-1:-1;;;;;8154:27:0;;;;;;-1:-1:-1;;;;;798:32:1;;;780:51;;768:2;753:18;8154:27:0;616:221:1;2801:169:0;;;;;;;;;;-1:-1:-1;2801:169:0;;;;;:::i;:::-;;:::i;:::-;;;1463:14:1;;1456:22;1438:41;;1426:2;1411:18;2801:169:0;1298:187:1;9542:64:0;;;;;;;;;;-1:-1:-1;9542:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2208:108;;;;;;;;;;-1:-1:-1;2296:12:0;;2208:108;;;1888:25:1;;;1876:2;1861:18;2208:108:0;1742:177:1;9290:33:0;;;;;;;;;;;;;;;;9364:28;;;;;;;;;;;;;;;;2978:492;;;;;;;;;;-1:-1:-1;2978:492:0;;;;;:::i;:::-;;:::i;2107:93::-;;;;;;;;;;-1:-1:-1;2107:93:0;;2190:2;2527:36:1;;2515:2;2500:18;2107:93:0;2385:184:1;3478:215:0;;;;;;;;;;-1:-1:-1;3478:215:0;;;;;:::i;:::-;;:::i;8188:21::-;;;;;;;;;;-1:-1:-1;8188:21:0;;;;-1:-1:-1;;;;;8188:21:0;;;22234:237;;;;;;;;;;-1:-1:-1;22234:237:0;;;;;:::i;:::-;;:::i;:::-;;8549:33;;;;;;;;;;-1:-1:-1;8549:33:0;;;;;;;;9105:32;;;;;;;;;;;;;;;;19172:120;;;;;;;;;;-1:-1:-1;19266:18:0;;19251:12;:33;19172:120;;8930:31;;;;;;;;;;;;;;;;8080:28;;;;;;;;;;;;;;;;9070;;;;;;;;;;;;;;;;8515:25;;;;;;;;;;;;;;;;8629:31;;;;;;;;;;-1:-1:-1;8629:31:0;;;;;;;;;;;2324:127;;;;;;;;;;-1:-1:-1;2324:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2425:18:0;2398:7;2425:18;;;;;;;;;;;;2324:127;6522:150;;;;;;;;;;;;;:::i;12715:154::-;;;;;;;;;;;;;:::i;12375:330::-;;;;;;;;;;-1:-1:-1;12375:330:0;;;;;:::i;:::-;;:::i;8464:44::-;;;;;;;;;;-1:-1:-1;8464:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8046:27;;;;;;;;;;;;;;;;6308:79;;;;;;;;;;-1:-1:-1;6373:6:0;;-1:-1:-1;;;;;6373:6:0;6308:79;;1995:104;;;;;;;;;;;;;:::i;13543:295::-;;;;;;;;;;-1:-1:-1;13543:295:0;;;;;:::i;:::-;;:::i;9005:24::-;;;;;;;;;;;;;;;;9330:27;;;;;;;;;;;;;;;;9182:25;;;;;;;;;;;;;;;;3701:413;;;;;;;;;;-1:-1:-1;3701:413:0;;;;;:::i;:::-;;:::i;8424:33::-;;;;;;;;;;;;;;;;2459:175;;;;;;;;;;-1:-1:-1;2459:175:0;;;;;:::i;:::-;;:::i;8115:30::-;;;;;;;;;;;;;;;;9214:26;;;;;;;;;;;;;;;;9764:58;;;;;;;;;;-1:-1:-1;9764:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8589:33;;;;;;;;;;-1:-1:-1;8589:33:0;;;;;;;;;;;14094:182;;;;;;;;;;-1:-1:-1;14094:182:0;;;;;:::i;:::-;;:::i;13036:284::-;;;;;;;;;;-1:-1:-1;13036:284:0;;;;;:::i;:::-;;:::i;8848:39::-;;;;;;;;;;-1:-1:-1;8848:39:0;;;;;;;;8896:27;;;;;;;;;;;;;;;;2642:151;;;;;;;;;;-1:-1:-1;2642:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2758:18:0;;;2731:7;2758:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2642:151;8246:33;;;;;;;;;;;;;;;;9036:25;;;;;;;;;;;;;;;;12930:98;;;;;;;;;;;;;:::i;8347:37::-;;;;;;;;;;;;;;;;8968:30;;;;;;;;;;;;;;;;6680:244;;;;;;;;;;-1:-1:-1;6680:244:0;;;;;:::i;:::-;;:::i;22066:160::-;;;;;;;;;;;;;:::i;9144:31::-;;;;;;;;;;;;;;;;9249:34;;;;;;;;;;;;;;;;1887:100;1941:13;1974:5;1967:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:100;:::o;2801:169::-;2884:4;2901:39;270:10;2924:7;2933:6;2901:8;:39::i;:::-;-1:-1:-1;2958:4:0;2801:169;;;;:::o;2978:492::-;3118:4;3135:36;3145:6;3153:9;3164:6;3135:9;:36::i;:::-;-1:-1:-1;;;;;3211:19:0;;3184:24;3211:19;;;:11;:19;;;;;;;;270:10;3211:33;;;;;;;;3263:26;;;;3255:79;;;;-1:-1:-1;;;3255:79:0;;4368:2:1;3255:79:0;;;4350:21:1;4407:2;4387:18;;;4380:30;4446:34;4426:18;;;4419:62;-1:-1:-1;;;4497:18:1;;;4490:38;4545:19;;3255:79:0;;;;;;;;;3370:57;3379:6;270:10;3420:6;3401:16;:25;3370:8;:57::i;:::-;-1:-1:-1;3458:4:0;;2978:492;-1:-1:-1;;;;2978:492:0:o;3478:215::-;270:10;3566:4;3615:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3615:34:0;;;;;;;;;;3566:4;;3583:80;;3606:7;;3615:47;;3652:10;;3615:47;:::i;:::-;3583:8;:80::i;22234:237::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22330:32:0;::::1;22322:83;;;::::0;-1:-1:-1;;;22322:83:0;;5403:2:1;22322:83:0::1;::::0;::::1;5385:21:1::0;5442:2;5422:18;;;5415:30;5481:34;5461:18;;;5454:62;-1:-1:-1;;;5532:18:1;;;5525:36;5578:19;;22322:83:0::1;5201:402:1::0;22322:83:0::1;22416:17;:47:::0;;-1:-1:-1;;;;;;22416:47:0::1;-1:-1:-1::0;;;;;22416:47:0;;;::::1;::::0;;;::::1;::::0;;22234:237::o;6522:150::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;6615:6:::1;::::0;6594:40:::1;::::0;6631:1:::1;::::0;-1:-1:-1;;;;;6615:6:0::1;::::0;6594:40:::1;::::0;6631:1;;6594:40:::1;6645:6;:19:::0;;-1:-1:-1;;;;;;6645:19:0::1;::::0;;6522:150::o;12715:154::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;12769:14:::1;:22:::0;;-1:-1:-1;;12769:22:0;;::::1;::::0;;;12802:20:::1;:28:::0;;;;::::1;::::0;;12846:15:::1;::::0;::::1;::::0;12786:5:::1;::::0;12846:15:::1;12715:154::o:0;12375:330::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;12457:13:::1;::::0;::::1;::::0;::::1;;;12456:14;12448:50;;;::::0;-1:-1:-1;;;12448:50:0;;5810:2:1;12448:50:0::1;::::0;::::1;5792:21:1::0;5849:2;5829:18;;;5822:30;5888:25;5868:18;;;5861:53;5931:18;;12448:50:0::1;5608:347:1::0;12448:50:0::1;12509:13;:20:::0;;-1:-1:-1;;12540:18:0;;;;;12590:12:::1;12569:18;:33:::0;;;12634:31:::1;::::0;12655:10;;12634:31:::1;:::i;:::-;12613:18;:52:::0;12681:16:::1;::::0;::::1;::::0;;;::::1;12375:330:::0;:::o;1995:104::-;2051:13;2084:7;2077:14;;;;;:::i;13543:295::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;13652:6:::1;::::0;-1:-1:-1;;;;;13652:6:0;;::::1;13644:14:::0;;::::1;::::0;13636:84:::1;;;::::0;-1:-1:-1;;;13636:84:0;;6162:2:1;13636:84:0::1;::::0;::::1;6144:21:1::0;6201:2;6181:18;;;6174:30;6240:34;6220:18;;;6213:62;6311:27;6291:18;;;6284:55;6356:19;;13636:84:0::1;5960:421:1::0;13636:84:0::1;13733:41;13762:4;13768:5;13733:28;:41::i;:::-;13790:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;13790:40:0;::::1;::::0;::::1;::::0;;;::::1;13543:295:::0;;:::o;3701:413::-;270:10;3794:4;3838:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3838:34:0;;;;;;;;;;3891:35;;;;3883:85;;;;-1:-1:-1;;;3883:85:0;;6588:2:1;3883:85:0;;;6570:21:1;6627:2;6607:18;;;6600:30;6666:34;6646:18;;;6639:62;-1:-1:-1;;;6717:18:1;;;6710:35;6762:19;;3883:85:0;6386:401:1;3883:85:0;4004:67;270:10;4027:7;4055:15;4036:16;:34;4004:8;:67::i;:::-;-1:-1:-1;4102:4:0;;3701:413;-1:-1:-1;;;3701:413:0:o;2459:175::-;2545:4;2562:42;270:10;2586:9;2597:6;2562:9;:42::i;14094:182::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14179:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14179:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14234:34;;1438:41:1;;;14234:34:0::1;::::0;1411:18:1;14234:34:0::1;;;;;;;14094:182:::0;;:::o;13036:284::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;13158:4:::1;13152;13132:13;2296:12:::0;;;2208:108;13132:13:::1;:17;::::0;13148:1:::1;13132:17;:::i;:::-;:24;;;;:::i;:::-;13131:31;;;;:::i;:::-;13121:6;:41;;13113:98;;;::::0;-1:-1:-1;;;13113:98:0;;7389:2:1;13113:98:0::1;::::0;::::1;7371:21:1::0;7428:2;7408:18;;;7401:30;7467:34;7447:18;;;7440:62;-1:-1:-1;;;7518:18:1;;;7511:42;7570:19;;13113:98:0::1;7187:408:1::0;13113:98:0::1;13240:17;:6:::0;13250::::1;13240:17;:::i;:::-;13222:15;:35:::0;;;13273:39:::1;::::0;1888:25:1;;;13273:39:0::1;::::0;1876:2:1;1861:18;13273:39:0::1;;;;;;;13036:284:::0;:::o;12930:98::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;12992:20:::1;:28:::0;;-1:-1:-1;;12992:28:0::1;::::0;;12930:98::o;6680:244::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6769:22:0;::::1;6761:73;;;::::0;-1:-1:-1;;;6761:73:0;;7802:2:1;6761:73:0::1;::::0;::::1;7784:21:1::0;7841:2;7821:18;;;7814:30;7880:34;7860:18;;;7853:62;-1:-1:-1;;;7931:18:1;;;7924:36;7977:19;;6761:73:0::1;7600:402:1::0;6761:73:0::1;6871:6;::::0;6850:38:::1;::::0;-1:-1:-1;;;;;6850:38:0;;::::1;::::0;6871:6:::1;::::0;6850:38:::1;::::0;6871:6:::1;::::0;6850:38:::1;6899:6;:17:::0;;-1:-1:-1;;;;;;6899:17:0::1;-1:-1:-1::0;;;;;6899:17:0;;;::::1;::::0;;;::::1;::::0;;6680:244::o;22066:160::-;6435:6;;-1:-1:-1;;;;;6435:6:0;270:10;6435:22;6427:67;;;;-1:-1:-1;;;6427:67:0;;;;;;;:::i;:::-;22160:58:::1;::::0;22124:12:::1;::::0;22168:10:::1;::::0;22192:21:::1;::::0;22124:12;22160:58;22124:12;22160:58;22192:21;22168:10;22160:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;22066:160:0:o;5601:380::-;-1:-1:-1;;;;;5737:19:0;;5729:68;;;;-1:-1:-1;;;5729:68:0;;8419:2:1;5729:68:0;;;8401:21:1;8458:2;8438:18;;;8431:30;8497:34;8477:18;;;8470:62;-1:-1:-1;;;8548:18:1;;;8541:34;8592:19;;5729:68:0;8217:400:1;5729:68:0;-1:-1:-1;;;;;5816:21:0;;5808:68;;;;-1:-1:-1;;;5808:68:0;;8824:2:1;5808:68:0;;;8806:21:1;8863:2;8843:18;;;8836:30;8902:34;8882:18;;;8875:62;-1:-1:-1;;;8953:18:1;;;8946:32;8995:19;;5808:68:0;8622:398:1;5808:68:0;-1:-1:-1;;;;;5889:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5941:32;;1888:25:1;;;5941:32:0;;1861:18:1;5941:32:0;;;;;;;;5601:380;;;:::o;14284:4880::-;-1:-1:-1;;;;;14384:18:0;;14376:68;;;;-1:-1:-1;;;14376:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14463:16:0;;14455:64;;;;-1:-1:-1;;;14455:64:0;;;;;;;:::i;:::-;14547:1;14538:6;:10;14530:52;;;;-1:-1:-1;;;14530:52:0;;10037:2:1;14530:52:0;;;10019:21:1;10076:2;10056:18;;;10049:30;10115:31;10095:18;;;10088:59;10164:18;;14530:52:0;9835:353:1;14530:52:0;14599:13;;;;;;;14595:132;;-1:-1:-1;;;;;14636:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14665:23:0;;;;;;:19;:23;;;;;;;;14636:52;14628:87;;;;-1:-1:-1;;;14628:87:0;;10395:2:1;14628:87:0;;;10377:21:1;10434:2;10414:18;;;10407:30;-1:-1:-1;;;10453:18:1;;;10446:52;10515:18;;14628:87:0;10193:346:1;14628:87:0;14742:18;;:22;14739:196;;-1:-1:-1;;;;;14789:17:0;;;;;;:11;:17;;;;;;;;14788:18;;:35;;-1:-1:-1;6373:6:0;;-1:-1:-1;;;;;14810:13:0;;;6373:6;;14810:13;14788:35;:60;;;-1:-1:-1;;;;;;14827:21:0;;14841:6;14827:21;14788:60;14780:143;;;;-1:-1:-1;;;14780:143:0;;10746:2:1;14780:143:0;;;10728:21:1;10785:2;10765:18;;;10758:30;10824:34;10804:18;;;10797:62;10895:34;10875:18;;;10868:62;-1:-1:-1;;;10946:19:1;;;10939:37;10993:19;;14780:143:0;10544:474:1;14780:143:0;14950:14;;;;14947:1649;;;6373:6;;-1:-1:-1;;;;;14984:15:0;;;6373:6;;14984:15;;;;:32;;-1:-1:-1;6373:6:0;;-1:-1:-1;;;;;15003:13:0;;;6373:6;;15003:13;;14984:32;:52;;;;-1:-1:-1;;;;;;15020:16:0;;;;14984:52;:77;;;;-1:-1:-1;;;;;;15040:21:0;;15054:6;15040:21;;14984:77;:107;;;;-1:-1:-1;;;;;;15066:25:0;;;;;;:19;:25;;;;;;;;15065:26;14984:107;:135;;;;-1:-1:-1;;;;;;15096:23:0;;;;;;:19;:23;;;;;;;;15095:24;14984:135;14980:1605;;;15277:20;;;;15273:506;;;15339:9;;-1:-1:-1;;;;;15325:24:0;;;15339:9;;15325:24;;;;:49;;-1:-1:-1;15367:6:0;;-1:-1:-1;;;;;15353:21:0;;;15367:6;;15353:21;;15325:49;15321:439;;;15452:16;15467:1;15452:12;:16;:::i;:::-;15439:9;15410:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;15507:16:0;15522:1;15507:12;:16;:::i;:::-;-1:-1:-1;;;;;15472:32:0;;;;;;:28;:32;;;;;;:51;15410:113;15402:179;;;;-1:-1:-1;;;15402:179:0;;11355:2:1;15402:179:0;;;11337:21:1;11394:2;11374:18;;;11367:30;11433:34;11413:18;;;11406:62;-1:-1:-1;;;11484:18:1;;;11477:51;11545:19;;15402:179:0;11153:417:1;15402:179:0;15637:9;15608:39;;;;:28;:39;;;;;;15650:12;15608:54;;;;-1:-1:-1;;;;;15689:32:0;;;;;;:47;15321:439;-1:-1:-1;;;;;15831:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;15867:35:0;;;;;;:31;:35;;;;;;;;15866:36;15831:71;15827:743;;;15949:12;;15939:6;:22;;15931:75;;;;-1:-1:-1;;;15931:75:0;;11777:2:1;15931:75:0;;;11759:21:1;11816:2;11796:18;;;11789:30;11855:34;11835:18;;;11828:62;-1:-1:-1;;;11906:18:1;;;11899:38;11954:19;;15931:75:0;11575:404:1;15931:75:0;16067:15;;-1:-1:-1;;;;;2425:18:0;;2398:7;2425:18;;;;;;;;;;;16041:22;;:6;:22;:::i;:::-;:41;;16033:78;;;;-1:-1:-1;;;16033:78:0;;12186:2:1;16033:78:0;;;12168:21:1;12225:2;12205:18;;;12198:30;-1:-1:-1;;;12244:18:1;;;12237:54;12308:18;;16033:78:0;11984:348:1;16033:78:0;15827:743;;;-1:-1:-1;;;;;16187:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;16221:37:0;;;;;;:31;:37;;;;;;;;16220:38;16187:71;16183:387;;;16305:13;;16295:6;:23;;16287:78;;;;-1:-1:-1;;;16287:78:0;;12539:2:1;16287:78:0;;;12521:21:1;12578:2;12558:18;;;12551:30;12617:34;12597:18;;;12590:62;-1:-1:-1;;;12668:18:1;;;12661:40;12718:19;;16287:78:0;12337:406:1;16183:387:0;-1:-1:-1;;;;;16413:35:0;;;;;;:31;:35;;;;;;;;16408:162;;16506:15;;-1:-1:-1;;;;;2425:18:0;;2398:7;2425:18;;;;;;;;;;;16480:22;;:6;:22;:::i;:::-;:41;;16472:78;;;;-1:-1:-1;;;16472:78:0;;12186:2:1;16472:78:0;;;12168:21:1;12225:2;12205:18;;;12198:30;-1:-1:-1;;;12244:18:1;;;12237:54;12308:18;;16472:78:0;11984:348:1;16472:78:0;16657:4;16608:28;2425:18;;;;;;;;;;;16715;;16691:42;;;;;;;16749:22;;-1:-1:-1;16760:11:0;;;;;;;16749:22;:35;;;;-1:-1:-1;16776:8:0;;-1:-1:-1;;;16776:8:0;;;;16775:9;16749:35;:71;;;;-1:-1:-1;;;;;;16789:31:0;;;;;;:25;:31;;;;;;;;16788:32;16749:71;:101;;;;-1:-1:-1;;;;;;16825:25:0;;;;;;:19;:25;;;;;;;;16824:26;16749:101;:129;;;;-1:-1:-1;;;;;;16855:23:0;;;;;;:19;:23;;;;;;;;16854:24;16749:129;16746:236;;;16895:8;:15;;-1:-1:-1;;;;16895:15:0;-1:-1:-1;;;16895:15:0;;;16927:10;:8;:10::i;:::-;16954:8;:16;;-1:-1:-1;;;;16954:16:0;;;16746:236;-1:-1:-1;;;;;17112:25:0;;16994:12;17112:25;;;:19;:25;;;;;;17009:4;;17112:25;;;:52;;-1:-1:-1;;;;;;17141:23:0;;;;;;:19;:23;;;;;;;;17112:52;17109:99;;;-1:-1:-1;17191:5:0;17109:99;17220:12;17324:7;17321:1790;;;19266:18;;19251:12;:33;17386:60;;;;-1:-1:-1;;;;;;17415:31:0;;;;;;:25;:31;;;;;;;;17386:60;:94;;;;-1:-1:-1;;;;;;17451:29:0;;;;;;:25;:29;;;;;;;;17450:30;17386:94;:114;;;;;17499:1;17484:12;;:16;17386:114;17383:1584;;;-1:-1:-1;;;;;17526:15:0;;;;;;:11;:15;;;;;;;;17522:171;;-1:-1:-1;;;;;17565:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;17565:22:0;17583:4;17565:22;;;;;;17610:10;:15;;17583:4;;17610:10;;:15;;17583:4;;17610:15;:::i;:::-;;;;-1:-1:-1;;17653:20:0;;-1:-1:-1;;;;;798:32:1;;780:51;;17653:20:0;;768:2:1;753:18;17653:20:0;;;;;;;17522:171;17734:3;17720:11;:6;17729:2;17720:11;:::i;:::-;:17;;;;:::i;:::-;17713:24;;17800:12;;17782:15;;17775:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17753:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17880:12:0;;17861:16;;17854:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;17831:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17946:12:0;;17934:9;;17927:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;17911:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;18014:12:0;;18001:10;;17994:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;17977:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;17383:1584:0;;-1:-1:-1;17383:1584:0;;-1:-1:-1;;;;;18091:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18140:1;18124:13;;:17;18091:50;18087:880;;;18193:3;18177:13;;18168:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18161:35;;18263:13;;18244:16;;18237:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18215:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18345:13:0;;18325:17;;18318:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;18295:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;18413:13:0;;18400:10;;18393:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;18377:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;18483:13:0;;18469:11;;18462:18;;:4;:18;:::i;18087:880::-;-1:-1:-1;;;;;18559:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;18609:1;18594:12;;:16;18559:51;18556:411;;;18659:3;18644:12;;18635:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18628:34;;18725:12;;18707:15;;18700:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18678:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18805:12:0;;18786:16;;18779:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;18756:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18871:12:0;;18859:9;;18852:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;18836:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;18939:12:0;;18926:10;;18919:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;18902:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;18556:411:0;18986:8;;18983:89;;19014:42;19030:4;19044;19051;19014:15;:42::i;:::-;19085:14;19095:4;19085:14;;:::i;:::-;;;17321:1790;19123:33;19139:4;19145:2;19149:6;19123:15;:33::i;:::-;14363:4801;;;;14284:4880;;;:::o;13846:240::-;-1:-1:-1;;;;;13929:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;13929:39:0;;;;;;;13981;13929:31;:39;13981:26;:39::i;20398:1598::-;20458:1;20442:13;;:17;:62;;;;-1:-1:-1;20491:13:0;;20481:4;2398:7;2425:18;;;;;;;;;;;20463:41;;20442:62;20439:129;;;20521:35;20535:4;20542:13;;20521:5;:35::i;:::-;20594:1;20578:13;:17;;;20652:4;2425:18;;;;;;;;;;20608:50;;20669:25;20740:12;;20718:19;;20697:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;20669:83;-1:-1:-1;20768:20:0;;;:46;;-1:-1:-1;20792:22:0;;20768:46;20765:60;;;20817:7;;20398:1598::o;20765:60::-;20858:18;;:23;;20879:2;20858:23;:::i;:::-;20840:15;:41;20837:113;;;20915:18;;:23;;20936:2;20915:23;:::i;:::-;20897:41;;20837:113;20962:12;21036:23;21121:1;21101:17;21080:18;;21062:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21036:86;-1:-1:-1;21135:51:0;21152:33;21036:86;21152:15;:33;:::i;:::-;21135:16;:51::i;:::-;21385:18;;21220:21;;;;21199:18;;21385:20;;21404:1;;21385:20;:::i;:::-;21364:42;;:17;:42;:::i;:::-;21341:19;;21328:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;21301:106;;21418:17;21507:1;21488:18;;:20;;;;:::i;:::-;21467:42;;:17;:42;:::i;:::-;21451:12;;21438:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;21418:92;-1:-1:-1;21542:28:0;21418:92;21542:16;:28;:::i;:::-;21523:47;;;;:::i;:::-;21604:1;21583:18;:22;;;21616:19;:23;;;21650:12;:16;;;21677:13;:17;21523:47;-1:-1:-1;21710:19:0;;;;;:42;;;21751:1;21733:15;:19;21710:42;21707:119;;;21768:46;21781:15;21798;21768:12;:46::i;:::-;21859:10;;21851:46;;-1:-1:-1;;;;;21859:10:0;;;;21883:9;;21851:46;;;;21883:9;21859:10;21851:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21931:17:0;;21923:65;;21838:59;;-1:-1:-1;;;;;;21931:17:0;;21962:21;;21923:65;;;;21962:21;21931:17;21923:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20398:1598:0:o;4122:614::-;-1:-1:-1;;;;;4262:20:0;;4254:70;;;;-1:-1:-1;;;4254:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4343:23:0;;4335:71;;;;-1:-1:-1;;;4335:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4443:17:0;;4419:21;4443:17;;;;;;;;;;;4479:23;;;;4471:74;;;;-1:-1:-1;;;4471:74:0;;12950:2:1;4471:74:0;;;12932:21:1;12989:2;12969:18;;;12962:30;13028:34;13008:18;;;13001:62;-1:-1:-1;;;13079:18:1;;;13072:36;13125:19;;4471:74:0;12748:402:1;4471:74:0;-1:-1:-1;;;;;4581:17:0;;;:9;:17;;;;;;;;;;;4601:22;;;4581:42;;4645:20;;;;;;;;:30;;4617:6;;4581:9;4645:30;;4617:6;;4645:30;:::i;:::-;;;;;;;;4710:9;-1:-1:-1;;;;;4693:35:0;4702:6;-1:-1:-1;;;;;4693:35:0;;4721:6;4693:35;;;;1888:25:1;;1876:2;1861:18;;1742:177;4693:35:0;;;;;;;;4243:493;4122:614;;;:::o;13328:207::-;-1:-1:-1;;;;;13416:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;13416:52:0;;;;;;;;;;13484:43;;13323:51:1;;;13390:18;;;13383:50;13484:43:0;;13296:18:1;13484:43:0;;;;;;;13328:207;;:::o;5043:550::-;-1:-1:-1;;;;;5127:21:0;;5119:67;;;;-1:-1:-1;;;5119:67:0;;13646:2:1;5119:67:0;;;13628:21:1;13685:2;13665:18;;;13658:30;13724:34;13704:18;;;13697:62;-1:-1:-1;;;13775:18:1;;;13768:31;13816:19;;5119:67:0;13444:397:1;5119:67:0;-1:-1:-1;;;;;5222:18:0;;5197:22;5222:18;;;;;;;;;;;5259:24;;;;5251:71;;;;-1:-1:-1;;;5251:71:0;;14048:2:1;5251:71:0;;;14030:21:1;14087:2;14067:18;;;14060:30;14126:34;14106:18;;;14099:62;-1:-1:-1;;;14177:18:1;;;14170:32;14219:19;;5251:71:0;13846:398:1;5251:71:0;-1:-1:-1;;;;;5358:18:0;;:9;:18;;;;;;;;;;;5379:23;;;5358:44;;5497:12;:22;;;;;;;5548:37;1888:25:1;;;5358:9:0;;:18;5548:37;;1861:18:1;5548:37:0;1742:177:1;19300:573:0;19452:16;;;19466:1;19452:16;;;;;;;;19428:21;;19452:16;;;;;;;;;;-1:-1:-1;19452:16:0;19428:40;;19497:4;19479;19484:1;19479:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19479:23:0;;;:7;;;;;;;;;;:23;;;;19523:9;;:16;;;-1:-1:-1;;;19523:16:0;;;;:9;;;;;:14;;:16;;;;;19479:7;;19523:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19513:4;19518:1;19513:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19513:26:0;;;:7;;;;;;;;;:26;19584:9;;19552:56;;19569:4;;19584:9;19596:11;19552:8;:56::i;:::-;19647:9;;:218;;-1:-1:-1;;;19647:218:0;;-1:-1:-1;;;;;19647:9:0;;;;:60;;:218;;19722:11;;19647:9;;19792:4;;19819;;19839:15;;19647:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19355:518;19300:573;:::o;19881:509::-;20061:9;;20029:56;;20046:4;;-1:-1:-1;;;;;20061:9:0;20073:11;20029:8;:56::i;:::-;20128:9;;:254;;-1:-1:-1;;;20128:254:0;;20194:4;20128:254;;;16095:34:1;16145:18;;;16138:34;;;20128:9:0;16188:18:1;;;16181:34;;;16231:18;;;16224:34;20334:6:0;16274:19:1;;;16267:44;20356:15:0;16327:19:1;;;16320:35;-1:-1:-1;;;;;20128:9:0;;;;:25;;20161:9;;16029:19:1;;20128:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19881:509;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;842:131::-;-1:-1:-1;;;;;917:31:1;;907:42;;897:70;;963:1;960;953:12;897:70;842:131;:::o;978:315::-;1046:6;1054;1107:2;1095:9;1086:7;1082:23;1078:32;1075:52;;;1123:1;1120;1113:12;1075:52;1162:9;1149:23;1181:31;1206:5;1181:31;:::i;:::-;1231:5;1283:2;1268:18;;;;1255:32;;-1:-1:-1;;;978:315:1:o;1490:247::-;1549:6;1602:2;1590:9;1581:7;1577:23;1573:32;1570:52;;;1618:1;1615;1608:12;1570:52;1657:9;1644:23;1676:31;1701:5;1676:31;:::i;:::-;1726:5;1490:247;-1:-1:-1;;;1490:247:1:o;1924:456::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;2125:9;2112:23;2144:31;2169:5;2144:31;:::i;:::-;2194:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2264:33;2223:32;2264:33;:::i;:::-;1924:456;;2316:7;;-1:-1:-1;;;2370:2:1;2355:18;;;;2342:32;;1924:456::o;2782:180::-;2841:6;2894:2;2882:9;2873:7;2869:23;2865:32;2862:52;;;2910:1;2907;2900:12;2862:52;-1:-1:-1;2933:23:1;;2782:180;-1:-1:-1;2782:180:1:o;2967:416::-;3032:6;3040;3093:2;3081:9;3072:7;3068:23;3064:32;3061:52;;;3109:1;3106;3099:12;3061:52;3148:9;3135:23;3167:31;3192:5;3167:31;:::i;:::-;3217:5;-1:-1:-1;3274:2:1;3259:18;;3246:32;3316:15;;3309:23;3297:36;;3287:64;;3347:1;3344;3337:12;3287:64;3370:7;3360:17;;;2967:416;;;;;:::o;3388:388::-;3456:6;3464;3517:2;3505:9;3496:7;3492:23;3488:32;3485:52;;;3533:1;3530;3523:12;3485:52;3572:9;3559:23;3591:31;3616:5;3591:31;:::i;:::-;3641:5;-1:-1:-1;3698:2:1;3683:18;;3670:32;3711:33;3670:32;3711:33;:::i;3781:380::-;3860:1;3856:12;;;;3903;;;3924:61;;3978:4;3970:6;3966:17;3956:27;;3924:61;4031:2;4023:6;4020:14;4000:18;3997:38;3994:161;;4077:10;4072:3;4068:20;4065:1;4058:31;4112:4;4109:1;4102:15;4140:4;4137:1;4130:15;3994:161;;3781:380;;;:::o;4575:127::-;4636:10;4631:3;4627:20;4624:1;4617:31;4667:4;4664:1;4657:15;4691:4;4688:1;4681:15;4707:128;4747:3;4778:1;4774:6;4771:1;4768:13;4765:39;;;4784:18;;:::i;:::-;-1:-1:-1;4820:9:1;;4707:128::o;4840:356::-;5042:2;5024:21;;;5061:18;;;5054:30;5120:34;5115:2;5100:18;;5093:62;5187:2;5172:18;;4840:356::o;6792:168::-;6832:7;6898:1;6894;6890:6;6886:14;6883:1;6880:21;6875:1;6868:9;6861:17;6857:45;6854:71;;;6905:18;;:::i;:::-;-1:-1:-1;6945:9:1;;6792:168::o;6965:217::-;7005:1;7031;7021:132;;7075:10;7070:3;7066:20;7063:1;7056:31;7110:4;7107:1;7100:15;7138:4;7135:1;7128:15;7021:132;-1:-1:-1;7167:9:1;;6965:217::o;9025:401::-;9227:2;9209:21;;;9266:2;9246:18;;;9239:30;9305:34;9300:2;9285:18;;9278:62;-1:-1:-1;;;9371:2:1;9356:18;;9349:35;9416:3;9401:19;;9025:401::o;9431:399::-;9633:2;9615:21;;;9672:2;9652:18;;;9645:30;9711:34;9706:2;9691:18;;9684:62;-1:-1:-1;;;9777:2:1;9762:18;;9755:33;9820:3;9805:19;;9431:399::o;11023:125::-;11063:4;11091:1;11088;11085:8;11082:34;;;11096:18;;:::i;:::-;-1:-1:-1;11133:9:1;;11023:125::o;14381:127::-;14442:10;14437:3;14433:20;14430:1;14423:31;14473:4;14470:1;14463:15;14497:4;14494:1;14487:15;14513:251;14583:6;14636:2;14624:9;14615:7;14611:23;14607:32;14604:52;;;14652:1;14649;14642:12;14604:52;14684:9;14678:16;14703:31;14728:5;14703:31;:::i;14769:980::-;15031:4;15079:3;15068:9;15064:19;15110:6;15099:9;15092:25;15136:2;15174:6;15169:2;15158:9;15154:18;15147:34;15217:3;15212:2;15201:9;15197:18;15190:31;15241:6;15276;15270:13;15307:6;15299;15292:22;15345:3;15334:9;15330:19;15323:26;;15384:2;15376:6;15372:15;15358:29;;15405:1;15415:195;15429:6;15426:1;15423:13;15415:195;;;15494:13;;-1:-1:-1;;;;;15490:39:1;15478:52;;15585:15;;;;15550:12;;;;15526:1;15444:9;15415:195;;;-1:-1:-1;;;;;;;15666:32:1;;;;15661:2;15646:18;;15639:60;-1:-1:-1;;;15730:3:1;15715:19;15708:35;15627:3;14769:980;-1:-1:-1;;;14769:980:1:o;16366:306::-;16454:6;16462;16470;16523:2;16511:9;16502:7;16498:23;16494:32;16491:52;;;16539:1;16536;16529:12;16491:52;16568:9;16562:16;16552:26;;16618:2;16607:9;16603:18;16597:25;16587:35;;16662:2;16651:9;16647:18;16641:25;16631:35;;16366:306;;;;;:::o

Swarm Source

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