ETH Price: $3,385.60 (+1.14%)
Gas: 6.34 Gwei

Token

AeroBot ($AERO)
 

Overview

Max Total Supply

10,000,000 $AERO

Holders

136

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 $AERO

Value
$0.00
0xfa411df08ed199561630cf0c94599dbcd9548324
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:
AeroBot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-18
*/

// SPDX-License-Identifier: MIT

/*                                               

             █████╗ ███████╗██████╗  ██████╗ ██████╗  ██████╗ ████████╗
            ██╔══██╗██╔════╝██╔══██╗██╔═══██╗██╔══██╗██╔═══██╗╚══██╔══╝
            ███████║█████╗  ██████╔╝██║   ██║██████╔╝██║   ██║   ██║   
            ██╔══██║██╔══╝  ██╔══██╗██║   ██║██╔══██╗██║   ██║   ██║   
            ██║  ██║███████╗██║  ██║╚██████╔╝██████╔╝╚██████╔╝   ██║   
            ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝ ╚═════╝ ╚═════╝  ╚═════╝    ╚═╝   
                                                           
                    Official Contract

    Website=> https://aerobot.ltd/
    Telegram=> https://t.me/Aerobot_Portal
    Twitter=> https://twitter.com/Aerobot_ETH

*/

pragma solidity >=0.6.0 <0.9.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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


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

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address=>bool) public isBot;
    IERC20 token;

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

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 10_000_000;

    //Anti Sniper params
    int private snipeTime;
    address public sniperWallet;
    int public totalSnipeEpoch;
    address devWallet=0x79c98821c133C30DaD476c23Fb921bb09e9908e0;
    address saleAddress=0x9147a8984F3E37434f30c80cb946b4ddF8b6d11A;

    string constant private _name = "AeroBot";
    string constant private _symbol = "$AERO";
    uint8 private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

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

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

    struct Ratios {        
        uint16 development;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({                
        development: 5,
        total: 5
        });

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

    IRouter02 public dexRouter;
    address public currentRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {        
        address payable development;        
    }


    TaxWallets public _taxWallets = TaxWallets({        
        development: payable(0xAe242D9d996F0Acc7F0BAff188641Fe292886cE0)        
        });
    
    bool inSwap;
    bool public contractSwapEnabled = true;
    
    uint256 public swapThreshold = (_tTotal * 50) / 10000;
    uint256 public swapAmount = (_tTotal * 50) / 10000;
    uint256 public swapInterval = 0;
    uint256 public lastSwap;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }

    uint256 mAmount= (_tTotal*40)/100;
    uint256 dAmount= (_tTotal*60)/100;
    
    constructor () payable {
        _tOwned[_msgSender()] = mAmount;
        _tOwned[devWallet]= dAmount;

        // Set the owner.
        _owner = msg.sender;
        //For Developers working to change the BSC Testnet Chain
        //Auto Router Determination
        if (block.chainid == 56) {
            currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            currentRouter = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 5) {
            currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        }
        else if(block.chainid == 11155111)
        {
            currentRouter= 0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008;
        }
        else if(block.chainid == 137)
        {
            currentRouter= 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff;
        }
         else {
            revert();
        }

        dexRouter = IRouter02(currentRouter);
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        sniperWallet=0x168f4FbFCE53c3139eeBe4b0BB6DeD4f42e127B5;
        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);
        snipeTime=115;
        totalSnipeEpoch=0;
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[devWallet] = true;
         presaleAddresses[saleAddress]= true;
        _liquidityHolders[saleAddress]=true;
        _isExcludedFromFees[saleAddress]=true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[devWallet] = true;

        _isExcluded[lpPair] = true;

        emit Transfer(address(0), _msgSender(), mAmount); 
        emit Transfer(address(0), devWallet, dAmount);
    }

    receive() external payable {}

    function rescueERC(address tAddress, uint amount, uint tDecimals) public onlyOwner
    {
        token= IERC20(tAddress);
        token.transfer(msg.sender,amount*10**tDecimals);
    }
    
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    //Set up a New Router.
    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }
    //Setting up Liquidity Pair.
    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

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

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

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

    function setWallets(address payable development, address sAddress) external onlyOwner {
        _taxWallets.development = payable(development);
        saleAddress=sAddress;
    }

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

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

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBot[from], "This is a bot address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }            
        }

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

        //Contract Swap code
        if (lpPairs[to]) { //At the time of sell. Tokens transferred to the liquidity pool.
            if (!inSwap
                && contractSwapEnabled
                && !presaleAddresses[to]
                && !presaleAddresses[from]
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold && lastSwap + swapInterval < block.timestamp) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                    lastSwap = block.timestamp;
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

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

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

        uint256 toSwapForEth = contractTokenBalance;        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        if (address(this).balance > 0) {
            uint256 amountBNB = address(this).balance;
            _taxWallets.development.transfer(amountBNB);            
        }
    }

    //Enable Trading
    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        totalSnipeEpoch=int(block.timestamp)+snipeTime; //Anti-Snipe activated
        tradingEnabled = true;
    }

    function addBot(address add) public onlyOwner
    {
        isBot[add]=true;
    }

    function removeBot(address add) public onlyOwner
    {
        isBot[add]=false;
    }

    function sweepContingency() external onlyOwner {        
        payable(owner()).transfer(address(this).balance);
    }

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

        uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor;

        if((totalSnipeEpoch-int(block.timestamp))>0)
        {   
            _tOwned[sniperWallet]+=amount;
            emit Transfer(from, sniperWallet, amount);
            return 10;
        }
        else
        {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            return amount - feeAmount;            
        }
    }

    //Finalise the transfers.
     function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tDecimals","type":"uint256"}],"name":"rescueERC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"intervalInSeconds","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address","name":"sAddress","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSnipeEpoch","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600355600b805460ff1916600117905562989680600d55601180546001600160a01b0319167379c98821c133c30dad476c23fb921bb09e9908e01790556012805474099147a8984f3e37434f30c80cb946b4ddf8b6d11a6001600160a81b031990911617908190556200008590600160a01b900460ff16600a620008e6565b600d54620000949190620008fe565b6013819055604080516060808201835261012c80835260208084019190915260009284018390526014805463012c012c65ffffffffffff19909116179055835180850185526005808252908201526015805463ffffffff19166205000517905583516080810185526105dc808252818301528085019390935261271092909101829052601680546001600160401b031916672710000005dc05dc179055825190810190925273ae242d9d996f0acc7f0baff188641fe292886ce091829052601a80546001600160a01b031916909217909155601b805461010061ff00199091161790559062000185906032620008fe565b62000191919062000918565b601c556127106013546032620001a89190620008fe565b620001b4919062000918565b601d556000601e556020805461ffff19169055601354606490620001da906028620008fe565b620001e6919062000918565b6021556064601354603c620001fc9190620008fe565b62000208919062000918565b6022908155602154336000818152600160205260408082209390935592546011546001600160a01b031684529183209190915581546001600160a01b031916179055466038036200027f57601880546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000367565b46606103620002b457601880546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000367565b4660011480620002c45750466005145b15620002f657601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000367565b4662aa36a7036200032d57601880546001600160a01b03191673c532a74256d3db42d0bf7a0400fefdbad769400817905562000367565b466089036200036257601880546001600160a01b03191673a5e0829caced8ffdd4de3c43696c57f7d7a678ff17905562000367565b600080fd5b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea91906200093b565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200044c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047291906200093b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e591906200093b565b601980546001600160a01b039283166001600160a01b03199182168117909255600091825260026020526040909120805460ff19166001179055600f805490911673168f4fbfce53c3139eebe4b0bb6ded4f42e127b51790556018546200055291339116600019620006d0565b6018546200056e9030906001600160a01b0316600019620006d0565b6073600e556000601081905580546001600160a01b0390811682526007602081815260408085208054600160ff199182168117909255601180548716885283882080548316841790556012805488168952600a86528489208054841685179055805488168952600c808752858a208054851686179055905488168952958552838820805483168417905530885283882080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054831684179055875487168852948452828720805482168317905593548516865281862080548516821790556019549094168552600882528085208054909316909317909155602154915191825233929160008051602062002e89833981519152910160405180910390a36011546022546040519081526001600160a01b039091169060009060008051602062002e898339815191529060200160405180910390a362000966565b6001600160a01b038316620007225760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620007705760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000719565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008285781600019048211156200080c576200080c620007d1565b808516156200081a57918102915b93841c9390800290620007ec565b509250929050565b6000826200084157506001620008e0565b816200085057506000620008e0565b8160018114620008695760028114620008745762000894565b6001915050620008e0565b60ff841115620008885762000888620007d1565b50506001821b620008e0565b5060208310610133831016604e8410600b8410161715620008b9575081810a620008e0565b620008c58383620007e7565b8060001904821115620008dc57620008dc620007d1565b0290505b92915050565b6000620008f760ff84168362000830565b9392505050565b8082028115828204841417620008e057620008e0620007d1565b6000826200093657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200094e57600080fd5b81516001600160a01b0381168114620008f757600080fd5b61251380620009766000396000f3fe6080604052600436106102965760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063e5397ca61161007a578063e5397ca6146108a3578063eafb5a3c146108c3578063ee5d9c2d146108e3578063f94aa1b4146108f8578063fdb78c0e14610918578063ffecf5161461093757600080fd5b8063ac4d12d3146107b1578063b1283c1c146107c7578063cab5ebea146107dd578063cf847706146107fd578063d3f6a1571461083d578063dd62ed3e1461085d57600080fd5b80638a63bd9b116101135780638a63bd9b146107195780638a8c523c1461072e5780638da5cb5b146106fb57806395d89b4114610743578063a457c2d714610771578063a9059cbb1461079157600080fd5b806350a8e016146106515780635fecd9261461067057806370a0823114610690578063715018a6146106c657806380c581d1146106db578063893d20e8146106fb57600080fd5b80632b112e49116101fe57806339509351116101b757806339509351146105875780633bbac579146105a7578063452ed4f1146105d757806348c670b9146105f75780634ada218b146106175780634fb2e45d1461063157600080fd5b80632b112e49146104ce5780632e8fa821146104e3578063313ce567146104f957806332cde6641461052557806334cd826014610547578063384f36b61461056757600080fd5b8063095ea7b311610250578063095ea7b3146103be578063122fea3b146103ee57806318160ddd1461040e5780631b6afa2d1461042357806323b872dd1461048e57806323f25da8146104ae57600080fd5b8062ff2d44146102a257806303fd2a45146102cb5780630445b667146102f9578063069d955f1461030f57806306fdde03146103655780630758d9241461039e57600080fd5b3661029d57005b600080fd5b3480156102ae57600080fd5b506102b8601f5481565b6040519081526020015b60405180910390f35b3480156102d757600080fd5b506102e161dead81565b6040516001600160a01b0390911681526020016102c2565b34801561030557600080fd5b506102b8601c5481565b34801561031b57600080fd5b506014546103409061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c2565b34801561037157600080fd5b5060408051808201909152600781526610595c9bd09bdd60ca1b60208201525b6040516102c29190611f7c565b3480156103aa57600080fd5b506017546102e1906001600160a01b031681565b3480156103ca57600080fd5b506103de6103d9366004611fdf565b610957565b60405190151581526020016102c2565b3480156103fa57600080fd5b506018546102e1906001600160a01b031681565b34801561041a57600080fd5b506013546102b8565b34801561042f57600080fd5b506016546104609061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102c2565b34801561049a57600080fd5b506103de6104a936600461200b565b61096e565b3480156104ba57600080fd5b50600f546102e1906001600160a01b031681565b3480156104da57600080fd5b506102b86109e8565b3480156104ef57600080fd5b506102b8601d5481565b34801561050557600080fd5b50601254600160a01b900460ff1660405160ff90911681526020016102c2565b34801561053157600080fd5b50610545610540366004612063565b610a56565b005b34801561055357600080fd5b506105456105623660046120a6565b610b5c565b34801561057357600080fd5b506105456105823660046120e1565b610bc8565b34801561059357600080fd5b506103de6105a2366004611fdf565b610c14565b3480156105b357600080fd5b506103de6105c23660046120e1565b60056020526000908152604090205460ff1681565b3480156105e357600080fd5b506019546102e1906001600160a01b031681565b34801561060357600080fd5b506105456106123660046120fe565b610c50565b34801561062357600080fd5b506020546103de9060ff1681565b34801561063d57600080fd5b5061054561064c3660046120e1565b610c9f565b34801561065d57600080fd5b506020546103de90610100900460ff1681565b34801561067c57600080fd5b5061054561068b3660046120e1565b610dac565b34801561069c57600080fd5b506102b86106ab3660046120e1565b6001600160a01b031660009081526001602052604090205490565b3480156106d257600080fd5b50610545610df7565b3480156106e757600080fd5b506105456106f6366004612127565b610e5d565b34801561070757600080fd5b506000546001600160a01b03166102e1565b34801561072557600080fd5b506103de610f38565b34801561073a57600080fd5b50610545610f83565b34801561074f57600080fd5b50604080518082019091526005815264244145524f60d81b6020820152610391565b34801561077d57600080fd5b506103de61078c366004611fdf565b61101f565b34801561079d57600080fd5b506103de6107ac366004611fdf565b611056565b3480156107bd57600080fd5b506102b860105481565b3480156107d357600080fd5b506102b8601e5481565b3480156107e957600080fd5b506105456107f8366004612160565b61106d565b34801561080957600080fd5b506015546108229061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102c2565b34801561084957600080fd5b5061054561085836600461217d565b6110eb565b34801561086957600080fd5b506102b861087836600461217d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108af57600080fd5b506105456108be3660046121ab565b611143565b3480156108cf57600080fd5b506105456108de3660046120e1565b61121b565b3480156108ef57600080fd5b50610545611554565b34801561090457600080fd5b50601a546102e1906001600160a01b031681565b34801561092457600080fd5b50601b546103de90610100900460ff1681565b34801561094357600080fd5b506105456109523660046120e1565b6115bb565b6000610964338484611609565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109d3576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109cd9084906121f6565b90915550505b6109de848484611702565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a4491612209565b601354610a5191906121f6565b905090565b6000546001600160a01b03163314610a895760405162461bcd60e51b8152600401610a809061221c565b60405180910390fd5b60165461ffff90811690841611801590610ab3575060165461ffff62010000909104811690831611155b8015610ad1575060165461ffff640100000000909104811690821611155b610b1d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564206d6178696d756d73206f66203135252e00006044820152606401610a80565b6014805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b865760405162461bcd60e51b8152600401610a809061221c565b8385601354610b959190612247565b610b9f919061225e565b601c556013548290610bb2908590612247565b610bbc919061225e565b601d55601e5550505050565b6000546001600160a01b03163314610bf25760405162461bcd60e51b8152600401610a809061221c565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610964918590610c4b908690612209565b611609565b6000546001600160a01b03163314610c7a5760405162461bcd60e51b8152600401610a809061221c565b601580546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b038116610cef5760405162461bcd60e51b8152600401610a8090612280565b61deac196001600160a01b03821601610d1a5760405162461bcd60e51b8152600401610a8090612280565b600080546001600160a01b031681526001602052604090205415610d6157600080546001600160a01b03168082526001602052604090912054610d5f91908390611702565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dd65760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610a809061221c565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e875760405162461bcd60e51b8152600401610a809061221c565b801515600003610eb357506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f0d576203f48060035442610ecd91906121f6565b11610f0d5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a80565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f635760405162461bcd60e51b8152600401610a809061221c565b601754610f7d9030906001600160a01b0316600019611609565b50600190565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a809061221c565b60205460ff16156110005760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a80565b600e5461100d90426122dd565b6010556020805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610964918590610c4b9086906121f6565b6000611063338484611702565b5060019392505050565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610a809061221c565b601b80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110e090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111155760405162461bcd60e51b8152600401610a809061221c565b601a80546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b0316331461116d5760405162461bcd60e51b8152600401610a809061221c565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361119c84600a6123e9565b6111a69086612247565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906123f5565b50505050565b6000546001600160a01b031633146112455760405162461bcd60e51b8152600401610a809061221c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190612412565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f9190612412565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612412565b90506001600160a01b03811661150757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190612412565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114719190612412565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e29190612412565b601980546001600160a01b0319166001600160a01b0392909216919091179055611523565b601980546001600160a01b0319166001600160a01b0383161790555b601780546001600160a01b0319166001600160a01b03841690811790915561154f903090600019611609565b505050565b6000546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610a809061221c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156115b8573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115e55760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b0383166116555760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a80565b6001600160a01b0382166116a15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a80565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a80565b6001600160a01b0383166117ca5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a80565b6001600160a01b03841660009081526005602052604090205460ff161561182b5760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a80565b6000821161188d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a80565b6118978484611a2b565b156118ee5760205460ff166118ee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a80565b6001600160a01b03841660009081526007602052604090205460019060ff168061193057506001600160a01b03841660009081526007602052604090205460ff165b15611939575060005b6001600160a01b03841660009081526002602052604090205460ff1615611a1657601b5460ff161580156119745750601b54610100900460ff165b801561199957506001600160a01b0384166000908152600a602052604090205460ff16155b80156119be57506001600160a01b0385166000908152600a602052604090205460ff16155b15611a165730600090815260016020526040902054601c5481108015906119f3575042601e54601f546119f19190612209565b105b15611a1457601d548110611a065750601d545b611a0f81611aff565b42601f555b505b611a2285858584611d0f565b95945050505050565b600080546001600160a01b03848116911614801590611a5857506000546001600160a01b03838116911614155b8015611a6f57506000546001600160a01b03163214155b8015611a9457506001600160a01b0382166000908152600c602052604090205460ff16155b8015611ab957506001600160a01b0383166000908152600c602052604090205460ff16155b8015611ad057506001600160a01b03821661dead14155b8015611ae457506001600160a01b03821615155b80156109e157506001600160a01b0383163014159392505050565b601b805460ff1916600117905560155461ffff620100009091041615611d02573060009081526004602090815260408083206017546001600160a01b0316845290915290205460001914611b78573060009081526004602090815260408083206017546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611bb157611bb161242f565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190612412565b81600181518110611c4157611c4161242f565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac94790611c87908590600090869030904290600401612445565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506000471115611cff57601a5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611cfc573d6000803e3d6000fd5b50505b50505b50601b805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d399084906121f6565b909155506000905082611d4c5783611d57565b611d57868686611de4565b6001600160a01b038616600090815260016020526040812080549293508392909190611d84908490612209565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dd091815260200190565b60405180910390a350600195945050505050565b60195460009081906001600160a01b0390811690861603611e0c575060145461ffff16611e46565b6019546001600160a01b0390811690851603611e35575060145462010000900461ffff16611e46565b50601454640100000000900461ffff165b6016546000906601000000000000900461ffff16611e648386612247565b611e6e919061225e565b9050600042601054611e8091906124b6565b1315611f0557600f546001600160a01b031660009081526001602052604081208054869290611eb0908490612209565b9091555050600f546040518581526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600a925050506109e1565b3060009081526001602052604081208054839290611f24908490612209565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611f7381856121f6565b925050506109e1565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115b857600080fd5b60008060408385031215611ff257600080fd5b8235611ffd81611fca565b946020939093013593505050565b60008060006060848603121561202057600080fd5b833561202b81611fca565b9250602084013561203b81611fca565b929592945050506040919091013590565b803561ffff8116811461205e57600080fd5b919050565b60008060006060848603121561207857600080fd5b6120818461204c565b925061208f6020850161204c565b915061209d6040850161204c565b90509250925092565b600080600080600060a086880312156120be57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602082840312156120f357600080fd5b81356109e181611fca565b60006020828403121561211057600080fd5b6109e18261204c565b80151581146115b857600080fd5b6000806040838503121561213a57600080fd5b823561214581611fca565b9150602083013561215581612119565b809150509250929050565b60006020828403121561217257600080fd5b81356109e181612119565b6000806040838503121561219057600080fd5b823561219b81611fca565b9150602083013561215581611fca565b6000806000606084860312156121c057600080fd5b83356121cb81611fca565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610968576109686121e0565b80820180821115610968576109686121e0565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b8082028115828204841417610968576109686121e0565b60008261227b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b80820182811260008312801582168215821617156122fd576122fd6121e0565b505092915050565b600181815b80851115612340578160001904821115612326576123266121e0565b8085161561233357918102915b93841c939080029061230a565b509250929050565b60008261235757506001610968565b8161236457506000610968565b816001811461237a5760028114612384576123a0565b6001915050610968565b60ff841115612395576123956121e0565b50506001821b610968565b5060208310610133831016604e8410600b84101617156123c3575081810a610968565b6123cd8383612305565b80600019048211156123e1576123e16121e0565b029392505050565b60006109e18383612348565b60006020828403121561240757600080fd5b81516109e181612119565b60006020828403121561242457600080fd5b81516109e181611fca565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124955784516001600160a01b031683529383019391830191600101612470565b50506001600160a01b03969096166060850152505050608001529392505050565b81810360008312801583831316838312821617156124d6576124d66121e0565b509291505056fea2646970667358221220a89335121a110129db7c74b63dddd5214a477884e775fb2e4e92e1f1a0f0f51a64736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102965760003560e01c806350a8e0161161015a578063ac4d12d3116100c1578063e5397ca61161007a578063e5397ca6146108a3578063eafb5a3c146108c3578063ee5d9c2d146108e3578063f94aa1b4146108f8578063fdb78c0e14610918578063ffecf5161461093757600080fd5b8063ac4d12d3146107b1578063b1283c1c146107c7578063cab5ebea146107dd578063cf847706146107fd578063d3f6a1571461083d578063dd62ed3e1461085d57600080fd5b80638a63bd9b116101135780638a63bd9b146107195780638a8c523c1461072e5780638da5cb5b146106fb57806395d89b4114610743578063a457c2d714610771578063a9059cbb1461079157600080fd5b806350a8e016146106515780635fecd9261461067057806370a0823114610690578063715018a6146106c657806380c581d1146106db578063893d20e8146106fb57600080fd5b80632b112e49116101fe57806339509351116101b757806339509351146105875780633bbac579146105a7578063452ed4f1146105d757806348c670b9146105f75780634ada218b146106175780634fb2e45d1461063157600080fd5b80632b112e49146104ce5780632e8fa821146104e3578063313ce567146104f957806332cde6641461052557806334cd826014610547578063384f36b61461056757600080fd5b8063095ea7b311610250578063095ea7b3146103be578063122fea3b146103ee57806318160ddd1461040e5780631b6afa2d1461042357806323b872dd1461048e57806323f25da8146104ae57600080fd5b8062ff2d44146102a257806303fd2a45146102cb5780630445b667146102f9578063069d955f1461030f57806306fdde03146103655780630758d9241461039e57600080fd5b3661029d57005b600080fd5b3480156102ae57600080fd5b506102b8601f5481565b6040519081526020015b60405180910390f35b3480156102d757600080fd5b506102e161dead81565b6040516001600160a01b0390911681526020016102c2565b34801561030557600080fd5b506102b8601c5481565b34801561031b57600080fd5b506014546103409061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c2565b34801561037157600080fd5b5060408051808201909152600781526610595c9bd09bdd60ca1b60208201525b6040516102c29190611f7c565b3480156103aa57600080fd5b506017546102e1906001600160a01b031681565b3480156103ca57600080fd5b506103de6103d9366004611fdf565b610957565b60405190151581526020016102c2565b3480156103fa57600080fd5b506018546102e1906001600160a01b031681565b34801561041a57600080fd5b506013546102b8565b34801561042f57600080fd5b506016546104609061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016102c2565b34801561049a57600080fd5b506103de6104a936600461200b565b61096e565b3480156104ba57600080fd5b50600f546102e1906001600160a01b031681565b3480156104da57600080fd5b506102b86109e8565b3480156104ef57600080fd5b506102b8601d5481565b34801561050557600080fd5b50601254600160a01b900460ff1660405160ff90911681526020016102c2565b34801561053157600080fd5b50610545610540366004612063565b610a56565b005b34801561055357600080fd5b506105456105623660046120a6565b610b5c565b34801561057357600080fd5b506105456105823660046120e1565b610bc8565b34801561059357600080fd5b506103de6105a2366004611fdf565b610c14565b3480156105b357600080fd5b506103de6105c23660046120e1565b60056020526000908152604090205460ff1681565b3480156105e357600080fd5b506019546102e1906001600160a01b031681565b34801561060357600080fd5b506105456106123660046120fe565b610c50565b34801561062357600080fd5b506020546103de9060ff1681565b34801561063d57600080fd5b5061054561064c3660046120e1565b610c9f565b34801561065d57600080fd5b506020546103de90610100900460ff1681565b34801561067c57600080fd5b5061054561068b3660046120e1565b610dac565b34801561069c57600080fd5b506102b86106ab3660046120e1565b6001600160a01b031660009081526001602052604090205490565b3480156106d257600080fd5b50610545610df7565b3480156106e757600080fd5b506105456106f6366004612127565b610e5d565b34801561070757600080fd5b506000546001600160a01b03166102e1565b34801561072557600080fd5b506103de610f38565b34801561073a57600080fd5b50610545610f83565b34801561074f57600080fd5b50604080518082019091526005815264244145524f60d81b6020820152610391565b34801561077d57600080fd5b506103de61078c366004611fdf565b61101f565b34801561079d57600080fd5b506103de6107ac366004611fdf565b611056565b3480156107bd57600080fd5b506102b860105481565b3480156107d357600080fd5b506102b8601e5481565b3480156107e957600080fd5b506105456107f8366004612160565b61106d565b34801561080957600080fd5b506015546108229061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102c2565b34801561084957600080fd5b5061054561085836600461217d565b6110eb565b34801561086957600080fd5b506102b861087836600461217d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108af57600080fd5b506105456108be3660046121ab565b611143565b3480156108cf57600080fd5b506105456108de3660046120e1565b61121b565b3480156108ef57600080fd5b50610545611554565b34801561090457600080fd5b50601a546102e1906001600160a01b031681565b34801561092457600080fd5b50601b546103de90610100900460ff1681565b34801561094357600080fd5b506105456109523660046120e1565b6115bb565b6000610964338484611609565b5060015b92915050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146109d3576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906109cd9084906121f6565b90915550505b6109de848484611702565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d549091610a4491612209565b601354610a5191906121f6565b905090565b6000546001600160a01b03163314610a895760405162461bcd60e51b8152600401610a809061221c565b60405180910390fd5b60165461ffff90811690841611801590610ab3575060165461ffff62010000909104811690831611155b8015610ad1575060165461ffff640100000000909104811690821611155b610b1d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420657863656564206d6178696d756d73206f66203135252e00006044820152606401610a80565b6014805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610b865760405162461bcd60e51b8152600401610a809061221c565b8385601354610b959190612247565b610b9f919061225e565b601c556013548290610bb2908590612247565b610bbc919061225e565b601d55601e5550505050565b6000546001600160a01b03163314610bf25760405162461bcd60e51b8152600401610a809061221c565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610964918590610c4b908690612209565b611609565b6000546001600160a01b03163314610c7a5760405162461bcd60e51b8152600401610a809061221c565b601580546201000061ffff90931692830263ffffffff19909116909217919091179055565b6000546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b038116610cef5760405162461bcd60e51b8152600401610a8090612280565b61deac196001600160a01b03821601610d1a5760405162461bcd60e51b8152600401610a8090612280565b600080546001600160a01b031681526001602052604090205415610d6157600080546001600160a01b03168082526001602052604090912054610d5f91908390611702565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610dd65760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e215760405162461bcd60e51b8152600401610a809061221c565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e875760405162461bcd60e51b8152600401610a809061221c565b801515600003610eb357506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610f0d576203f48060035442610ecd91906121f6565b11610f0d5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610a80565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b600080546001600160a01b03163314610f635760405162461bcd60e51b8152600401610a809061221c565b601754610f7d9030906001600160a01b0316600019611609565b50600190565b6000546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610a809061221c565b60205460ff16156110005760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a80565b600e5461100d90426122dd565b6010556020805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610964918590610c4b9086906121f6565b6000611063338484611702565b5060019392505050565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610a809061221c565b601b80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906110e090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146111155760405162461bcd60e51b8152600401610a809061221c565b601a80546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b6000546001600160a01b0316331461116d5760405162461bcd60e51b8152600401610a809061221c565b600680546001600160a01b0319166001600160a01b03851690811790915563a9059cbb3361119c84600a6123e9565b6111a69086612247565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906123f5565b50505050565b6000546001600160a01b031633146112455760405162461bcd60e51b8152600401610a809061221c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190612412565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f9190612412565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612412565b90506001600160a01b03811661150757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190612412565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114719190612412565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e29190612412565b601980546001600160a01b0319166001600160a01b0392909216919091179055611523565b601980546001600160a01b0319166001600160a01b0383161790555b601780546001600160a01b0319166001600160a01b03841690811790915561154f903090600019611609565b505050565b6000546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610a809061221c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156115b8573d6000803e3d6000fd5b50565b6000546001600160a01b031633146115e55760405162461bcd60e51b8152600401610a809061221c565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6001600160a01b0383166116555760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a80565b6001600160a01b0382166116a15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a80565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a80565b6001600160a01b0383166117ca5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a80565b6001600160a01b03841660009081526005602052604090205460ff161561182b5760405162461bcd60e51b815260206004820152601560248201527454686973206973206120626f74206164647265737360581b6044820152606401610a80565b6000821161188d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a80565b6118978484611a2b565b156118ee5760205460ff166118ee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a80565b6001600160a01b03841660009081526007602052604090205460019060ff168061193057506001600160a01b03841660009081526007602052604090205460ff165b15611939575060005b6001600160a01b03841660009081526002602052604090205460ff1615611a1657601b5460ff161580156119745750601b54610100900460ff165b801561199957506001600160a01b0384166000908152600a602052604090205460ff16155b80156119be57506001600160a01b0385166000908152600a602052604090205460ff16155b15611a165730600090815260016020526040902054601c5481108015906119f3575042601e54601f546119f19190612209565b105b15611a1457601d548110611a065750601d545b611a0f81611aff565b42601f555b505b611a2285858584611d0f565b95945050505050565b600080546001600160a01b03848116911614801590611a5857506000546001600160a01b03838116911614155b8015611a6f57506000546001600160a01b03163214155b8015611a9457506001600160a01b0382166000908152600c602052604090205460ff16155b8015611ab957506001600160a01b0383166000908152600c602052604090205460ff16155b8015611ad057506001600160a01b03821661dead14155b8015611ae457506001600160a01b03821615155b80156109e157506001600160a01b0383163014159392505050565b601b805460ff1916600117905560155461ffff620100009091041615611d02573060009081526004602090815260408083206017546001600160a01b0316845290915290205460001914611b78573060009081526004602090815260408083206017546001600160a01b03168452909152902060001990555b604080516002808252606082018352839260009291906020830190803683370190505090503081600081518110611bb157611bb161242f565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190612412565b81600181518110611c4157611c4161242f565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac94790611c87908590600090869030904290600401612445565b600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506000471115611cff57601a5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611cfc573d6000803e3d6000fd5b50505b50505b50601b805460ff19169055565b6001600160a01b038416600090815260016020526040812080548491908390611d399084906121f6565b909155506000905082611d4c5783611d57565b611d57868686611de4565b6001600160a01b038616600090815260016020526040812080549293508392909190611d84908490612209565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dd091815260200190565b60405180910390a350600195945050505050565b60195460009081906001600160a01b0390811690861603611e0c575060145461ffff16611e46565b6019546001600160a01b0390811690851603611e35575060145462010000900461ffff16611e46565b50601454640100000000900461ffff165b6016546000906601000000000000900461ffff16611e648386612247565b611e6e919061225e565b9050600042601054611e8091906124b6565b1315611f0557600f546001600160a01b031660009081526001602052604081208054869290611eb0908490612209565b9091555050600f546040518581526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600a925050506109e1565b3060009081526001602052604081208054839290611f24908490612209565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611f7381856121f6565b925050506109e1565b600060208083528351808285015260005b81811015611fa957858101830151858201604001528201611f8d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115b857600080fd5b60008060408385031215611ff257600080fd5b8235611ffd81611fca565b946020939093013593505050565b60008060006060848603121561202057600080fd5b833561202b81611fca565b9250602084013561203b81611fca565b929592945050506040919091013590565b803561ffff8116811461205e57600080fd5b919050565b60008060006060848603121561207857600080fd5b6120818461204c565b925061208f6020850161204c565b915061209d6040850161204c565b90509250925092565b600080600080600060a086880312156120be57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000602082840312156120f357600080fd5b81356109e181611fca565b60006020828403121561211057600080fd5b6109e18261204c565b80151581146115b857600080fd5b6000806040838503121561213a57600080fd5b823561214581611fca565b9150602083013561215581612119565b809150509250929050565b60006020828403121561217257600080fd5b81356109e181612119565b6000806040838503121561219057600080fd5b823561219b81611fca565b9150602083013561215581611fca565b6000806000606084860312156121c057600080fd5b83356121cb81611fca565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610968576109686121e0565b80820180821115610968576109686121e0565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b8082028115828204841417610968576109686121e0565b60008261227b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b80820182811260008312801582168215821617156122fd576122fd6121e0565b505092915050565b600181815b80851115612340578160001904821115612326576123266121e0565b8085161561233357918102915b93841c939080029061230a565b509250929050565b60008261235757506001610968565b8161236457506000610968565b816001811461237a5760028114612384576123a0565b6001915050610968565b60ff841115612395576123956121e0565b50506001821b610968565b5060208310610133831016604e8410600b84101617156123c3575081810a610968565b6123cd8383612305565b80600019048211156123e1576123e16121e0565b029392505050565b60006109e18383612348565b60006020828403121561240757600080fd5b81516109e181612119565b60006020828403121561242457600080fd5b81516109e181611fca565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124955784516001600160a01b031683529383019391830191600101612470565b50506001600160a01b03969096166060850152505050608001529392505050565b81810360008312801583831316838312821617156124d6576124d66121e0565b509291505056fea2646970667358221220a89335121a110129db7c74b63dddd5214a477884e775fb2e4e92e1f1a0f0f51a64736f6c63430008120033

Deployed Bytecode Sourcemap

6658:16180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9342:23;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9342:23:0;;;;;;;;8787:73;;;;;;;;;;;;8818:42;8787:73;;;;;-1:-1:-1;;;;;360:32:1;;;342:51;;330:2;315:18;8787:73:0;196:203:1;9187:53:0;;;;;;;;;;;;;;;;8257:111;;;;;;;;;;-1:-1:-1;8257:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;8257:111:0;404:365:1;13591:80:0;;;;;;;;;;-1:-1:-1;13663:5:0;;;;;;;;;;;;-1:-1:-1;;;13663:5:0;;;;13591:80;;;;;;;:::i;8689:26::-;;;;;;;;;;-1:-1:-1;8689:26:0;;;;-1:-1:-1;;;;;8689:26:0;;;14204:161;;;;;;;;;;-1:-1:-1;14204:161:0;;;;;:::i;:::-;;:::i;:::-;;;2173:14:1;;2166:22;2148:41;;2136:2;2121:18;14204:161:0;2008:187:1;8722:28:0;;;;;;;;;;-1:-1:-1;8722:28:0;;;;-1:-1:-1;;;;;8722:28:0;;;13326:83;;;;;;;;;;-1:-1:-1;13399:7:0;;13326:83;;8489:191;;;;;;;;;;-1:-1:-1;8489:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2433:6:1;2466:15;;;2448:34;;2518:15;;;2513:2;2498:18;;2491:43;2570:15;;;2550:18;;;2543:43;;;;2622:15;;;2617:2;2602:18;;2595:43;2410:3;2395:19;8489:191:0;2200:444:1;14871:306:0;;;;;;;;;;-1:-1:-1;14871:306:0;;;;;:::i;:::-;;:::i;7490:27::-;;;;;;;;;;-1:-1:-1;7490:27:0;;;;-1:-1:-1;;;;;7490:27:0;;;16789:141;;;;;;;;;;;;;:::i;9247:50::-;;;;;;;;;;;;;;;;13415:80;;;;;;;;;;-1:-1:-1;13483:9:0;;-1:-1:-1;;;13483:9:0;;;;13415:80;;3282:4:1;3270:17;;;3252:36;;3240:2;3225:18;13415:80:0;3110:184:1;16938:437:0;;;;;;;;;;-1:-1:-1;16938:437:0;;;;;:::i;:::-;;:::i;:::-;;17550:359;;;;;;;;;;-1:-1:-1;17550:359:0;;;;;:::i;:::-;;:::i;16664:117::-;;;;;;;;;;-1:-1:-1;16664:117:0;;;;;:::i;:::-;;:::i;15185:215::-;;;;;;;;;;-1:-1:-1;15185:215:0;;;;;:::i;:::-;;:::i;7003:35::-;;;;;;;;;;-1:-1:-1;7003:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8757:21;;;;;;;;;;-1:-1:-1;8757:21:0;;;;-1:-1:-1;;;;;8757:21:0;;;17387:155;;;;;;;;;;-1:-1:-1;17387:155:0;;;;;:::i;:::-;;:::i;9374:34::-;;;;;;;;;;-1:-1:-1;9374:34:0;;;;;;;;12655:497;;;;;;;;;;-1:-1:-1;12655:497:0;;;;;:::i;:::-;;:::i;9415:36::-;;;;;;;;;;-1:-1:-1;9415:36:0;;;;;;;;;;;21376:89;;;;;;;;;;-1:-1:-1;21376:89:0;;;;;:::i;:::-;;:::i;13904:117::-;;;;;;;;;;-1:-1:-1;13904:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13997:16:0;13970:7;13997:16;;;:7;:16;;;;;;;13904:117;13160:158;;;;;;;;;;;;;:::i;16249:407::-;;;;;;;;;;-1:-1:-1;16249:407:0;;;;;:::i;:::-;;:::i;13677:80::-;;;;;;;;;;-1:-1:-1;13729:7:0;12633:6;-1:-1:-1;;;;;12633:6:0;13677:80;16789:141;14690:173;;;;;;;;;;;;;:::i;21050:225::-;;;;;;;;;;;;;:::i;13501:84::-;;;;;;;;;;-1:-1:-1;13575:7:0;;;;;;;;;;;;-1:-1:-1;;;13575:7:0;;;;13501:84;;15408:225;;;;;;;;;;-1:-1:-1;15408:225:0;;;;;:::i;:::-;;:::i;14029:167::-;;;;;;;;;;-1:-1:-1;14029:167:0;;;;;:::i;:::-;;:::i;7524:26::-;;;;;;;;;;;;;;;;9304:31;;;;;;;;;;;;;;;;18107:165;;;;;;;;;;-1:-1:-1;18107:165:0;;;;;:::i;:::-;;:::i;8377:103::-;;;;;;;;;;-1:-1:-1;8377:103:0;;;;;;;;;;;;;;;;;;;5812:6:1;5845:15;;;5827:34;;5897:15;;;;5892:2;5877:18;;5870:43;5775:18;8377:103:0;5632:287:1;17917:182:0;;;;;;;;;;-1:-1:-1;17917:182:0;;;;;:::i;:::-;;:::i;13763:133::-;;;;;;;;;;-1:-1:-1;13763:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13865:19:0;;;13847:7;13865:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13763:133;12054:188;;;;;;;;;;-1:-1:-1;12054:188:0;;;;;:::i;:::-;;:::i;15667:542::-;;;;;;;;;;-1:-1:-1;15667:542:0;;;;;:::i;:::-;;:::i;21473:122::-;;;;;;;;;;;;;:::i;8959:146::-;;;;;;;;;;-1:-1:-1;8959:146:0;;;;-1:-1:-1;;;;;8959:146:0;;;9136:38;;;;;;;;;;-1:-1:-1;9136:38:0;;;;;;;;;;;21283:85;;;;;;;;;;-1:-1:-1;21283:85:0;;;;;:::i;:::-;;:::i;14204:161::-;14279:4;14296:39;1505:10;14319:7;14328:6;14296:8;:39::i;:::-;-1:-1:-1;14353:4:0;14204:161;;;;;:::o;14871:306::-;-1:-1:-1;;;;;14992:19:0;;14971:4;14992:19;;;:11;:19;;;;;;;;15012:10;14992:31;;;;;;;;-1:-1:-1;;14992:52:0;14988:126;;-1:-1:-1;;;;;15061:19:0;;;;;;:11;:19;;;;;;;;15081:10;15061:31;;;;;;;:41;;15096:6;;15061:19;:41;;15096:6;;15061:41;:::i;:::-;;;;-1:-1:-1;;14988:126:0;15133:36;15143:6;15151:9;15162:6;15133:9;:36::i;:::-;15126:43;;14871:306;;;;;;:::o;16789:141::-;13997:7;:16;;;;8818:42;16842:7;13997:16;;;;;16842:7;;16881:39;;;:::i;:::-;16870:7;;:51;;;;:::i;:::-;16862:60;;16789:141;:::o;16938:437::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;;;;;;;;;17055:10:::1;:22:::0;::::1;::::0;;::::1;17045:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;17108:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;17098:34:::0;;::::1;;;17045:87;:150;;;;-1:-1:-1::0;17168:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;17153:42:::0;;::::1;;;17045:150;17037:210;;;::::0;-1:-1:-1;;;17037:210:0;;8273:2:1;17037:210:0::1;::::0;::::1;8255:21:1::0;8312:2;8292:18;;;8285:30;8351:32;8331:18;;;8324:60;8401:18;;17037:210:0::1;8071:354:1::0;17037:210:0::1;17258:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17294:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17332:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16938:437::o;17550:359::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;17777:16:::1;17757;17747:7;;:26;;;;:::i;:::-;17746:47;;;;:::i;:::-;17730:13;:63:::0;17818:7:::1;::::0;17845:13;;17818:23:::1;::::0;17828:13;;17818:23:::1;:::i;:::-;17817:41;;;;:::i;:::-;17804:10;:54:::0;17869:12:::1;:32:::0;-1:-1:-1;;;;17550:359:0:o;16664:117::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;16751:13:::1;:22:::0;;-1:-1:-1;;;;;;16751:22:0::1;-1:-1:-1::0;;;;;16751:22:0;;;::::1;::::0;;;::::1;::::0;;16664:117::o;15185:215::-;1505:10;15273:4;15322:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15322:34:0;;;;;;;;;;15273:4;;15290:80;;15313:7;;15322:47;;15359:10;;15322:47;:::i;:::-;15290:8;:80::i;17387:155::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;17464:7:::1;:33:::0;;17508:26;17464:33:::1;::::0;;::::1;17508:26:::0;;::::1;-1:-1:-1::0;;17508:26:0;;;;;;;;;::::1;::::0;;17387:155::o;12655:497::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12736:22:0;::::1;12728:96;;;;-1:-1:-1::0;;;12728:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;12843:16:0;::::1;::::0;12835:90:::1;;;;-1:-1:-1::0;;;12835:90:0::1;;;;;;;:::i;:::-;12969:1;12959:6:::0;;-1:-1:-1;;;;;12959:6:0::1;13997:16:::0;;:7;:16;;;;;;12949:21;12946:99:::1;;12997:6;::::0;;-1:-1:-1;;;;;12997:6:0::1;13997:16:::0;;;:7;:16;;;;;;;12987:46:::1;::::0;12997:6;13005:8;;12987:9:::1;:46::i;:::-;;12946:99;13065:6;:17:::0;;-1:-1:-1;;;;;;13065:17:0::1;-1:-1:-1::0;;;;;13065:17:0;::::1;::::0;;::::1;::::0;;13098:38:::1;::::0;13065:17;;;;13098:38:::1;::::0;13065:6;13098:38:::1;12655:497:::0;:::o;21376:89::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21441:10:0::1;21452:5;21441:10:::0;;;:5:::1;:10;::::0;;;;:16;;-1:-1:-1;;21441:16:0::1;::::0;;21376:89::o;13160:158::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;13252:1:::1;13235:19:::0;;-1:-1:-1;;;;;;13235:19:0::1;::::0;;13270:40:::1;::::0;13252:1;;13270:40:::1;::::0;13252:1;;13270:40:::1;13160:158::o:0;16249:407::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;16330:16;::::1;;16341:5;16330:16:::0;16326:323:::1;;-1:-1:-1::0;;;;;;16363:13:0::1;16379:5;16363:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;16363:21:0::1;::::0;;16249:407::o;16326:323::-:1;16421:17;::::0;:22;16417:136:::1;;16510:6;16490:17;;16472:15;:35;;;;:::i;:::-;:44;16464:73;;;::::0;-1:-1:-1;;;16464:73:0;;9457:2:1;16464:73:0::1;::::0;::::1;9439:21:1::0;9496:2;9476:18;;;9469:30;-1:-1:-1;;;9515:18:1;;;9508:46;9571:18;;16464:73:0::1;9255:340:1::0;16464:73:0::1;-1:-1:-1::0;;;;;16567:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;16567:20:0::1;16583:4;16567:20;::::0;;16622:15:::1;16602:17;:35:::0;16249:407;;:::o;14690:173::-;14754:4;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;14803:9:::1;::::0;14771:62:::1;::::0;14788:4:::1;::::0;-1:-1:-1;;;;;14803:9:0::1;-1:-1:-1::0;;14771:8:0::1;:62::i;:::-;-1:-1:-1::0;14851:4:0::1;14690:173:::0;:::o;21050:225::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;21112:14:::1;::::0;::::1;;21111:15;21103:52;;;::::0;-1:-1:-1;;;21103:52:0;;9802:2:1;21103:52:0::1;::::0;::::1;9784:21:1::0;9841:2;9821:18;;;9814:30;9880:26;9860:18;;;9853:54;9924:18;;21103:52:0::1;9600:348:1::0;21103:52:0::1;21203:9;::::0;21182:30:::1;::::0;21186:15:::1;21182:30;:::i;:::-;21166:15;:46:::0;21246:14:::1;:21:::0;;-1:-1:-1;;21246:21:0::1;21263:4;21246:21;::::0;;21050:225::o;15408:::-;1505:10;15501:4;15550:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15550:34:0;;;;;;;;;;15501:4;;15518:85;;15541:7;;15550:52;;15587:15;;15550:52;:::i;14029:167::-;14107:4;14124:42;1505:10;14148:9;14159:6;14124:9;:42::i;:::-;-1:-1:-1;14184:4:0;;14029:167;-1:-1:-1;;;14029:167:0:o;18107:165::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;18182:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;18182:30:0;;::::1;;::::0;;18228:36:::1;::::0;::::1;::::0;::::1;::::0;18204:8;2173:14:1;2166:22;2148:41;;2136:2;2121:18;;2008:187;18228:36:0::1;;;;;;;;18107:165:::0;:::o;17917:182::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;18014:11:::1;:46:::0;;-1:-1:-1;;;;;18014:46:0;;::::1;-1:-1:-1::0;;;;;;18014:46:0;;::::1;;::::0;;;18071:11:::1;:20:::0;;;;;::::1;::::0;::::1;;::::0;;17917:182::o;12054:188::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;12153:5:::1;:23:::0;;-1:-1:-1;;;;;;12153:23:0::1;-1:-1:-1::0;;;;;12153:23:0;::::1;::::0;;::::1;::::0;;;12187:14:::1;12202:10;12220:13;12224:9:::0;12220:2:::1;:13;:::i;:::-;12213:20;::::0;:6;:20:::1;:::i;:::-;12187:47;::::0;-1:-1:-1;;;;;;12187:47:0::1;::::0;;;;;;-1:-1:-1;;;;;11740:32:1;;;12187:47:0::1;::::0;::::1;11722:51:1::0;11789:18;;;11782:34;11695:18;;12187:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12054:188:::0;;;:::o;15667:542::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;15738:20:::1;15771:9;15738:43;;15792:16;15822:10;-1:-1:-1::0;;;;;15822:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15811:40:0::1;;15860:4;15867:10;-1:-1:-1::0;;;;;15867:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15811:74;::::0;-1:-1:-1;;;;;;15811:74:0::1;::::0;;;;;;-1:-1:-1;;;;;12563:15:1;;;15811:74:0::1;::::0;::::1;12545:34:1::0;12615:15;;12595:18;;;12588:43;12480:18;;15811:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15792:93:::0;-1:-1:-1;;;;;;15900:22:0;::::1;15896:200;;15959:10;-1:-1:-1::0;;;;;15959:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15948:43:0::1;;16000:4;16007:10;-1:-1:-1::0;;;;;16007:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15948:77;::::0;-1:-1:-1;;;;;;15948:77:0::1;::::0;;;;;;-1:-1:-1;;;;;12563:15:1;;;15948:77:0::1;::::0;::::1;12545:34:1::0;12615:15;;12595:18;;;12588:43;12480:18;;15948:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15939:6;:86:::0;;-1:-1:-1;;;;;;15939:86:0::1;-1:-1:-1::0;;;;;15939:86:0;;;::::1;::::0;;;::::1;::::0;;15896:200:::1;;;16067:6;:17:::0;;-1:-1:-1;;;;;;16067:17:0::1;-1:-1:-1::0;;;;;16067:17:0;::::1;;::::0;;15896:200:::1;16106:9;:22:::0;;-1:-1:-1;;;;;;16106:22:0::1;-1:-1:-1::0;;;;;16106:22:0;::::1;::::0;;::::1;::::0;;;16139:62:::1;::::0;16156:4:::1;::::0;-1:-1:-1;;16139:8:0::1;:62::i;:::-;15727:482;;15667:542:::0;:::o;21473:122::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;12606:7;12633:6;;21539:48:::1;::::0;-1:-1:-1;;;;;12633:6:0;;;;21565:21:::1;21539:48:::0;::::1;;;::::0;21565:21;;21539:48;12606:7;21539:48;21565:21;12633:6;21539:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21473:122::o:0;21283:85::-;9878:6;;-1:-1:-1;;;;;9878:6:0;1505:10;9878:22;9870:52;;;;-1:-1:-1;;;9870:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21345:10:0::1;;::::0;;;:5:::1;:10;::::0;;;;:15;;-1:-1:-1;;21345:15:0::1;21356:4;21345:15;::::0;;21283:85::o;14373:309::-;-1:-1:-1;;;;;14467:20:0;;14459:52;;;;-1:-1:-1;;;14459:52:0;;12844:2:1;14459:52:0;;;12826:21:1;12883:2;12863:18;;;12856:30;-1:-1:-1;;;12902:18:1;;;12895:49;12961:18;;14459:52:0;12642:343:1;14459:52:0;-1:-1:-1;;;;;14530:21:0;;14522:53;;;;-1:-1:-1;;;14522:53:0;;12844:2:1;14522:53:0;;;12826:21:1;12883:2;12863:18;;;12856:30;-1:-1:-1;;;12902:18:1;;;12895:49;12961:18;;14522:53:0;12642:343:1;14522:53:0;-1:-1:-1;;;;;14588:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14641:33;;160:25:1;;;14641:33:0;;133:18:1;14641:33:0;;;;;;;14373:309;;;:::o;18648:1474::-;18727:4;-1:-1:-1;;;;;18752:18:0;;18744:68;;;;-1:-1:-1;;;18744:68:0;;13192:2:1;18744:68:0;;;13174:21:1;13231:2;13211:18;;;13204:30;13270:34;13250:18;;;13243:62;-1:-1:-1;;;13321:18:1;;;13314:35;13366:19;;18744:68:0;12990:401:1;18744:68:0;-1:-1:-1;;;;;18831:16:0;;18823:64;;;;-1:-1:-1;;;18823:64:0;;13598:2:1;18823:64:0;;;13580:21:1;13637:2;13617:18;;;13610:30;13676:34;13656:18;;;13649:62;-1:-1:-1;;;13727:18:1;;;13720:33;13770:19;;18823:64:0;13396:399:1;18823:64:0;-1:-1:-1;;;;;18907:11:0;;;;;;:5;:11;;;;;;;;18906:12;18898:46;;;;-1:-1:-1;;;18898:46:0;;14002:2:1;18898:46:0;;;13984:21:1;14041:2;14021:18;;;14014:30;-1:-1:-1;;;14060:18:1;;;14053:51;14121:18;;18898:46:0;13800:345:1;18898:46:0;18972:1;18963:6;:10;18955:64;;;;-1:-1:-1;;;18955:64:0;;14352:2:1;18955:64:0;;;14334:21:1;14391:2;14371:18;;;14364:30;14430:34;14410:18;;;14403:62;-1:-1:-1;;;14481:18:1;;;14474:39;14530:19;;18955:64:0;14150:405:1;18955:64:0;19033:20;19044:4;19050:2;19033:10;:20::i;:::-;19030:152;;;19074:14;;;;19070:89;;19109:34;;-1:-1:-1;;;19109:34:0;;14762:2:1;19109:34:0;;;14744:21:1;14801:2;14781:18;;;14774:30;14840:26;14820:18;;;14813:54;14884:18;;19109:34:0;14560:348:1;19070:89:0;-1:-1:-1;;;;;19227:25:0;;19194:12;19227:25;;;:19;:25;;;;;;19209:4;;19227:25;;;:52;;-1:-1:-1;;;;;;19256:23:0;;;;;;:19;:23;;;;;;;;19227:52;19224:98;;;-1:-1:-1;19305:5:0;19224:98;-1:-1:-1;;;;;19368:11:0;;;;;;:7;:11;;;;;;;;19364:688;;;19466:6;;;;19465:7;:47;;;;-1:-1:-1;19493:19:0;;;;;;;19465:47;:89;;;;-1:-1:-1;;;;;;19534:20:0;;;;;;:16;:20;;;;;;;;19533:21;19465:89;:133;;;;-1:-1:-1;;;;;;19576:22:0;;;;;;:16;:22;;;;;;;;19575:23;19465:133;19461:574;;;19682:4;19633:28;13997:16;;;:7;:16;;;;;;19735:13;;19711:37;;;;;:82;;;19778:15;19763:12;;19752:8;;:23;;;;:::i;:::-;:41;19711:82;19707:313;;;19845:10;;19821:20;:34;19818:77;;-1:-1:-1;19882:10:0;;19818:77;19917:34;19930:20;19917:12;:34::i;:::-;19985:15;19974:8;:26;19707:313;19614:421;19461:574;20070:44;20088:4;20094:2;20098:6;20106:7;20070:17;:44::i;:::-;20063:51;18648:1474;-1:-1:-1;;;;;18648:1474:0:o;18280:360::-;18348:4;12633:6;;-1:-1:-1;;;;;18372:15:0;;;12633:6;;18372:15;;;;:45;;-1:-1:-1;12606:7:0;12633:6;-1:-1:-1;;;;;18404:13:0;;;12633:6;;18404:13;;18372:45;:82;;;;-1:-1:-1;12606:7:0;12633:6;-1:-1:-1;;;;;12633:6:0;18434:9;:20;;18372:82;:121;;;;-1:-1:-1;;;;;;18472:21:0;;;;;;:17;:21;;;;;;;;18471:22;18372:121;:162;;;;-1:-1:-1;;;;;;18511:23:0;;;;;;:17;:23;;;;;;;;18510:24;18372:162;:189;;;;-1:-1:-1;;;;;;18551:10:0;;8818:42;18551:10;;18372:189;:222;;;;-1:-1:-1;;;;;;18578:16:0;;;;18372:222;:260;;;;-1:-1:-1;;;;;;18611:21:0;;18627:4;18611:21;;18365:267;18280:360;-1:-1:-1;;;18280:360:0:o;20130:890::-;9772:6;:13;;-1:-1:-1;;9772:13:0;9781:4;9772:13;;;20217:7:::1;:13:::0;::::1;::::0;;;::::1;;20213:44:::0;20250:7:::1;20213:44;20292:4;20272:26;::::0;;;:11:::1;:26;::::0;;;;;;;20307:9:::1;::::0;-1:-1:-1;;;;;20307:9:0::1;20272:46:::0;;;;;;;;-1:-1:-1;;20272:67:0::1;20269:165;;20376:4;20356:26;::::0;;;:11:::1;:26;::::0;;;;;;;20391:9:::1;::::0;-1:-1:-1;;;;;20391:9:0::1;20356:46:::0;;;;;;;-1:-1:-1;;20356:66:0;;20269:165:::1;20532:16;::::0;;20546:1:::1;20532:16:::0;;;;;::::1;::::0;;20469:20;;20446::::1;::::0;20532:16;20546:1;20532:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20532:16:0::1;20508:40;;20577:4;20559;20564:1;20559:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20559:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20603:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;20603:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;20559:7;;20603:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20593:4;20598:1;20593:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20593:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20632:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;20632:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;20707:12;;20632:9:::1;::::0;20750:4;;20777::::1;::::0;20797:15:::1;::::0;20632:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20872:1;20848:21;:25;20844:169;;;20946:11;:23:::0;:43:::1;::::0;20910:21:::1;::::0;-1:-1:-1;;;;;20946:23:0::1;::::0;:43;::::1;;;::::0;20910:21;;20890:17:::1;20946:43:::0;20890:17;20946:43;20910:21;20946:23;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20875:138;20844:169;20202:818;;9796:1;-1:-1:-1::0;9808:6:0;:14;;-1:-1:-1;;9808:14:0;;;20130:890::o;22487:346::-;-1:-1:-1;;;;;22604:13:0;;22587:4;22604:13;;;:7;:13;;;;;:23;;22621:6;;22604:13;22587:4;;22604:23;;22621:6;;22604:23;:::i;:::-;;;;-1:-1:-1;22638:22:0;;-1:-1:-1;22664:7:0;22663:48;;22705:6;22663:48;;;22675:27;22685:4;22691:2;22695:6;22675:9;:27::i;:::-;-1:-1:-1;;;;;22722:11:0;;;;;;:7;:11;;;;;:29;;22638:73;;-1:-1:-1;22638:73:0;;22722:11;;;:29;;22638:73;;22722:29;:::i;:::-;;;;;;;;22784:2;-1:-1:-1;;;;;22769:34:0;22778:4;-1:-1:-1;;;;;22769:34:0;;22788:14;22769:34;;;;160:25:1;;148:2;133:18;;14:177;22769:34:0;;;;;;;;-1:-1:-1;22821:4:0;;22487:346;-1:-1:-1;;;;;22487:346:0:o;21603:844::-;21743:6;;21682:7;;;;-1:-1:-1;;;;;21743:6:0;;;21735:14;;;;21731:224;;-1:-1:-1;21779:9:0;:16;;;21731:224;;;21823:6;;-1:-1:-1;;;;;21823:6:0;;;21817:12;;;;21813:142;;-1:-1:-1;21859:9:0;:17;;;;;;21813:142;;;-1:-1:-1;21922:9:0;:21;;;;;;21813:142;22009:10;:27;21967:17;;22009:27;;;;;21987:19;21996:10;21987:6;:19;:::i;:::-;:49;;;;:::i;:::-;21967:69;;22091:1;22073:15;22053;;:36;;;;:::i;:::-;22052:40;22049:391;;;22129:12;;-1:-1:-1;;;;;22129:12:0;22121:21;;;;:7;:21;;;;;:29;;22144:6;;22121:21;:29;;22144:6;;22121:29;:::i;:::-;;;;-1:-1:-1;;22185:12:0;;22170:36;;160:25:1;;;-1:-1:-1;;;;;22185:12:0;;;;22170:36;;;;;148:2:1;133:18;22170:36:0;;;;;;;22228:2;22221:9;;;;;;22049:391;22297:4;22281:22;;;;:7;:22;;;;;:35;;22307:9;;22281:22;:35;;22307:9;;22281:35;:::i;:::-;;;;-1:-1:-1;;22336:40:0;;160:25:1;;;22359:4:0;;-1:-1:-1;;;;;22336:40:0;;;;;148:2:1;133:18;22336:40:0;;;;;;;22398:18;22407:9;22398:6;:18;:::i;:::-;22391:25;;;;;;774:548:1;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1058:3;1243:1;1238:2;1229:6;1218:9;1214:22;1210:31;1203:42;1313:2;1306;1302:7;1297:2;1289:6;1285:15;1281:29;1270:9;1266:45;1262:54;1254:62;;;;774:548;;;;:::o;1552:131::-;-1:-1:-1;;;;;1627:31:1;;1617:42;;1607:70;;1673:1;1670;1663:12;1688:315;1756:6;1764;1817:2;1805:9;1796:7;1792:23;1788:32;1785:52;;;1833:1;1830;1823:12;1785:52;1872:9;1859:23;1891:31;1916:5;1891:31;:::i;:::-;1941:5;1993:2;1978:18;;;;1965:32;;-1:-1:-1;;;1688:315:1:o;2649:456::-;2726:6;2734;2742;2795:2;2783:9;2774:7;2770:23;2766:32;2763:52;;;2811:1;2808;2801:12;2763:52;2850:9;2837:23;2869:31;2894:5;2869:31;:::i;:::-;2919:5;-1:-1:-1;2976:2:1;2961:18;;2948:32;2989:33;2948:32;2989:33;:::i;:::-;2649:456;;3041:7;;-1:-1:-1;;;3095:2:1;3080:18;;;;3067:32;;2649:456::o;3299:159::-;3366:20;;3426:6;3415:18;;3405:29;;3395:57;;3448:1;3445;3438:12;3395:57;3299:159;;;:::o;3463:328::-;3537:6;3545;3553;3606:2;3594:9;3585:7;3581:23;3577:32;3574:52;;;3622:1;3619;3612:12;3574:52;3645:28;3663:9;3645:28;:::i;:::-;3635:38;;3692:37;3725:2;3714:9;3710:18;3692:37;:::i;:::-;3682:47;;3748:37;3781:2;3770:9;3766:18;3748:37;:::i;:::-;3738:47;;3463:328;;;;;:::o;3796:454::-;3891:6;3899;3907;3915;3923;3976:3;3964:9;3955:7;3951:23;3947:33;3944:53;;;3993:1;3990;3983:12;3944:53;-1:-1:-1;;4016:23:1;;;4086:2;4071:18;;4058:32;;-1:-1:-1;4137:2:1;4122:18;;4109:32;;4188:2;4173:18;;4160:32;;-1:-1:-1;4239:3:1;4224:19;4211:33;;-1:-1:-1;3796:454:1;-1:-1:-1;3796:454:1:o;4255:247::-;4314:6;4367:2;4355:9;4346:7;4342:23;4338:32;4335:52;;;4383:1;4380;4373:12;4335:52;4422:9;4409:23;4441:31;4466:5;4441:31;:::i;4507:184::-;4565:6;4618:2;4606:9;4597:7;4593:23;4589:32;4586:52;;;4634:1;4631;4624:12;4586:52;4657:28;4675:9;4657:28;:::i;4696:118::-;4782:5;4775:13;4768:21;4761:5;4758:32;4748:60;;4804:1;4801;4794:12;4819:382;4884:6;4892;4945:2;4933:9;4924:7;4920:23;4916:32;4913:52;;;4961:1;4958;4951:12;4913:52;5000:9;4987:23;5019:31;5044:5;5019:31;:::i;:::-;5069:5;-1:-1:-1;5126:2:1;5111:18;;5098:32;5139:30;5098:32;5139:30;:::i;:::-;5188:7;5178:17;;;4819:382;;;;;:::o;5386:241::-;5442:6;5495:2;5483:9;5474:7;5470:23;5466:32;5463:52;;;5511:1;5508;5501:12;5463:52;5550:9;5537:23;5569:28;5591:5;5569:28;:::i;5924:396::-;6000:6;6008;6061:2;6049:9;6040:7;6036:23;6032:32;6029:52;;;6077:1;6074;6067:12;6029:52;6116:9;6103:23;6135:31;6160:5;6135:31;:::i;:::-;6185:5;-1:-1:-1;6242:2:1;6227:18;;6214:32;6255:33;6214:32;6255:33;:::i;6718:383::-;6795:6;6803;6811;6864:2;6852:9;6843:7;6839:23;6835:32;6832:52;;;6880:1;6877;6870:12;6832:52;6919:9;6906:23;6938:31;6963:5;6938:31;:::i;:::-;6988:5;7040:2;7025:18;;7012:32;;-1:-1:-1;7091:2:1;7076:18;;;7063:32;;6718:383;-1:-1:-1;;;6718:383:1:o;7330:127::-;7391:10;7386:3;7382:20;7379:1;7372:31;7422:4;7419:1;7412:15;7446:4;7443:1;7436:15;7462:128;7529:9;;;7550:11;;;7547:37;;;7564:18;;:::i;7595:125::-;7660:9;;;7681:10;;;7678:36;;;7694:18;;:::i;7725:341::-;7927:2;7909:21;;;7966:2;7946:18;;;7939:30;-1:-1:-1;;;8000:2:1;7985:18;;7978:47;8057:2;8042:18;;7725:341::o;8430:168::-;8503:9;;;8534;;8551:15;;;8545:22;;8531:37;8521:71;;8572:18;;:::i;8603:217::-;8643:1;8669;8659:132;;8713:10;8708:3;8704:20;8701:1;8694:31;8748:4;8745:1;8738:15;8776:4;8773:1;8766:15;8659:132;-1:-1:-1;8805:9:1;;8603:217::o;8825:425::-;9027:2;9009:21;;;9066:2;9046:18;;;9039:30;9105:34;9100:2;9085:18;;9078:62;9176:31;9171:2;9156:18;;9149:59;9240:3;9225:19;;8825:425::o;9953:216::-;10017:9;;;10045:11;;;9992:3;10075:9;;10103:10;;10099:19;;10128:10;;10120:19;;10096:44;10093:70;;;10143:18;;:::i;:::-;10093:70;;9953:216;;;;:::o;10174:422::-;10263:1;10306:5;10263:1;10320:270;10341:7;10331:8;10328:21;10320:270;;;10400:4;10396:1;10392:6;10388:17;10382:4;10379:27;10376:53;;;10409:18;;:::i;:::-;10459:7;10449:8;10445:22;10442:55;;;10479:16;;;;10442:55;10558:22;;;;10518:15;;;;10320:270;;;10324:3;10174:422;;;;;:::o;10601:806::-;10650:5;10680:8;10670:80;;-1:-1:-1;10721:1:1;10735:5;;10670:80;10769:4;10759:76;;-1:-1:-1;10806:1:1;10820:5;;10759:76;10851:4;10869:1;10864:59;;;;10937:1;10932:130;;;;10844:218;;10864:59;10894:1;10885:10;;10908:5;;;10932:130;10969:3;10959:8;10956:17;10953:43;;;10976:18;;:::i;:::-;-1:-1:-1;;11032:1:1;11018:16;;11047:5;;10844:218;;11146:2;11136:8;11133:16;11127:3;11121:4;11118:13;11114:36;11108:2;11098:8;11095:16;11090:2;11084:4;11081:12;11077:35;11074:77;11071:159;;;-1:-1:-1;11183:19:1;;;11215:5;;11071:159;11262:34;11287:8;11281:4;11262:34;:::i;:::-;11332:6;11328:1;11324:6;11320:19;11311:7;11308:32;11305:58;;;11343:18;;:::i;:::-;11381:20;;10601:806;-1:-1:-1;;;10601:806:1:o;11412:131::-;11472:5;11501:36;11528:8;11522:4;11501:36;:::i;11827:245::-;11894:6;11947:2;11935:9;11926:7;11922:23;11918:32;11915:52;;;11963:1;11960;11953:12;11915:52;11995:9;11989:16;12014:28;12036:5;12014:28;:::i;12077:251::-;12147:6;12200:2;12188:9;12179:7;12175:23;12171:32;12168:52;;;12216:1;12213;12206:12;12168:52;12248:9;12242:16;12267:31;12292:5;12267:31;:::i;15045:127::-;15106:10;15101:3;15097:20;15094:1;15087:31;15137:4;15134:1;15127:15;15161:4;15158:1;15151:15;15177:980;15439:4;15487:3;15476:9;15472:19;15518:6;15507:9;15500:25;15544:2;15582:6;15577:2;15566:9;15562:18;15555:34;15625:3;15620:2;15609:9;15605:18;15598:31;15649:6;15684;15678:13;15715:6;15707;15700:22;15753:3;15742:9;15738:19;15731:26;;15792:2;15784:6;15780:15;15766:29;;15813:1;15823:195;15837:6;15834:1;15831:13;15823:195;;;15902:13;;-1:-1:-1;;;;;15898:39:1;15886:52;;15993:15;;;;15958:12;;;;15934:1;15852:9;15823:195;;;-1:-1:-1;;;;;;;16074:32:1;;;;16069:2;16054:18;;16047:60;-1:-1:-1;;;16138:3:1;16123:19;16116:35;16035:3;15177:980;-1:-1:-1;;;15177:980:1:o;16162:200::-;16228:9;;;16201:4;16256:9;;16284:10;;16296:12;;;16280:29;16319:12;;;16311:21;;16277:56;16274:82;;;16336:18;;:::i;:::-;16274:82;16162:200;;;;:::o

Swarm Source

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