ETH Price: $2,347.97 (-6.40%)

Token

SeeLabs (SEE)
 

Overview

Max Total Supply

1,000,000 SEE

Holders

228

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000 SEE

Value
$0.00
0xd50684ddAAdA1f52F2c5169Baa2288AeA97A3d00
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:
SEELABS

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-15
*/

/**
 *Submitted for verification at Etherscan.io on 2024-12-15
*/

/*
   ███████╗███████╗███████╗██╗      █████╗ ██████╗ ███████╗ 
   ██╔════╝██╔════╝██╔════╝██║     ██╔══██╗██╔══██╗██╔════╝
   ███████╗█████╗  █████╗  ██║     ███████║██████╔╝███████╗
   ╚════██║██╔══╝  ██╔══╝  ██║     ██╔══██║██╔══██╗╚════██║
   ███████║███████╗███████╗███████╗██║  ██║██████╔╝███████║
   ╚══════╝╚══════╝╚══════╝╚══════╝╚═╝  ╚═╝╚═════╝ ╚══════╝
*/

/* Transform What You SEE into Reality.

X/Twitter: https://x.com/SeeLabsHQ
Website: https://seelabs.io
Telegram: https://t.me/seelabshq
Documentation: https://seelabs.gitbook.io/seelabs/ 

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/*


*/

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

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

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

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

contract SEELABS is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public minSwapTokensAmount;
    uint256 public maxSwapTokensAmount;

    address public TreasuryAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private _buyCount= 0;
    uint256 private sellCount= 0;
    uint256 private lastSellBlock = 0;

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

    uint256 public buyFee;
    uint256 public sellFee;


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

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("SeeLabs", "SEE") {
        address newOwner = msg.sender; 
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1000000 * 1e18;

        maxBuyAmount = totalSupply *  2 / 100;
        maxSellAmount = totalSupply *  1 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        minSwapTokensAmount = totalSupply * 2 / 1000; //0.2% min trgger ca sell
        maxSwapTokensAmount = totalSupply * 1 / 100; //1% max ca sell

        buyFee = 30;
        sellFee = 30;

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

        TreasuryAddress = address(0x9e8646Fa1077111Cfa68867b6e099AE2aC0e4c75);

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

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

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

    function updateSwapMaxCA(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can change SwapMax");
        maxSwapTokensAmount = newAmount* (10**18);
    }

    function transferForeignToken(address _token, address _to, uint256 amount) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");

        if(amount == 0){
            amount = IERC20(_token).balanceOf(address(this));
        }

        _sent = IERC20(_token).transfer(_to, amount);
    }

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

    function updateBuyFee(uint256 _fee) external onlyOwner {
        buyFee = _fee;
        require(buyFee <= 30, "Fees must be 30%  or less");
    }

    function updateSellFee(uint256 _fee) external onlyOwner {
        sellFee = _fee;
        require(sellFee <= 30, "Fees must be 30%  or less");
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {
        require(amount > 0, "amount must be greater than 0");
        // check tradingActive and check amounts limits
        if (from != owner() && to != owner() && !_isExcludedMaxTransactionAmount[from] && !_isExcludedMaxTransactionAmount[to]){
            require(tradingActive, "Trading is not active.");
            if(limitsInEffect){
                //when buy
                if (automatedMarketMakerPairs[from]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } else { //when transfer
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        // only take fees on Trades, not on wallet transfers
        if(takeFee && tradingActiveBlock>0 && (block.number>=tradingActiveBlock)) {
            uint256 fees = 0;          
            // on sell
            if (automatedMarketMakerPairs[to]) {
                if(sellFee>0){
                    fees = amount * sellFee / 100;
                }
                uint256 caTokenBalance = balanceOf(address(this));
                if(caTokenBalance >= minSwapTokensAmount && !swapping) {
                    if (block.number > lastSellBlock) {
                        sellCount = 0;
                    }
                    if(sellCount<4) {   //"Only 4 ca sells per block!"
                        swapping = true;
                        swapBack(min(amount, min(caTokenBalance, maxSwapTokensAmount))); // trigger sell
                        swapping = false;
                        lastSellBlock = block.number;
                    }
                    sellCount++;
                }
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyFee > 0) {
                if(block.number == tradingActiveBlock){
                    _buyCount++;
                    if(_buyCount>27){
                        fees = amount * 80 / 100;
                    }
                }else{
                    fees = amount * buyFee / 100;
                }
            }
            
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity(uint256 tokenAmount) external onlyOwner {
        tokenAmount = tokenAmount * (10**18);
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(owner()),
            block.timestamp
        );
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }
   
    function swapBack(uint256 amount) private {
        bool success;
        swapTokensForEth(amount);

        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
            (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
        }
    }
    
    function manualSwap() external {
        require(_msgSender()==TreasuryAddress);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
            swapping = true;
            swapBack(maxSwapTokensAmount);
            swapping = false;
        }
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        tradingActiveBlock = block.number; 
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokensAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokensAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapMaxCA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f600d819055600e819055600f8190556010556011805461ffff19166001179055348015610030575f80fd5b50604051806040016040528060078152602001665365654c61627360c81b8152506040518060400160405280600381526020016253454560e81b815250816003908161007c919061075d565b506004610089828261075d565b5050505f61009b61037d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f80516020612f9a833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801561012d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101519190610817565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c09190610817565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e9190610817565b6001600160a01b031660a0819052610247906001610381565b69d3c21bcecceda1000000606461025f826002610858565b6102699190610875565b6006556064610279826001610858565b6102839190610875565b6007556064610293826002610858565b61029d9190610875565b6008556103e86102ae826002610858565b6102b89190610875565b600a5560646102c8826001610858565b6102d29190610875565b600b55601e60128190556013556102ea8360016103e9565b6102f53060016103e9565b61030261dead60016103e9565b600c80546001600160a01b031916739e8646fa1077111cfa68867b6e099ae2ac0e4c7517905561033383600161044b565b61033e30600161044b565b61034b61dead600161044b565b600c54610362906001600160a01b0316600161044b565b61036c83826104f5565b610375836105d1565b5050506108a7565b3390565b6001600160a01b0382165f908152601660205260409020805460ff19168215151790556103ae82826103e9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6005546001600160a01b031633146104975760405162461bcd60e51b815260206004820181905260248201525f80516020612f7a83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03821661054b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161048e565b8060025f82825461055c9190610894565b90915550506001600160a01b0382165f9081526020819052604081208054839290610588908490610894565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146106185760405162461bcd60e51b815260206004820181905260248201525f80516020612f7a833981519152604482015260640161048e565b6001600160a01b03811661067d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048e565b6005546040516001600160a01b038084169216905f80516020612f9a833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106ed57607f821691505b60208210810361070b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561075857805f5260205f20601f840160051c810160208510156107365750805b601f840160051c820191505b81811015610755575f8155600101610742565b50505b505050565b81516001600160401b03811115610776576107766106c5565b61078a8161078484546106d9565b84610711565b6020601f8211600181146107bc575f83156107a55750848201515b5f19600385901b1c1916600184901b178455610755565b5f84815260208120601f198516915b828110156107eb57878501518255602094850194600190920191016107cb565b508482101561080857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610827575f80fd5b81516001600160a01b038116811461083d575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761086f5761086f610844565b92915050565b5f8261088f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561086f5761086f610844565b60805160a0516126816108f95f395f818161048f01528181610f8d015261111801525f818161031001528181610cba01528181610ce101528181612103015281816121ba01526121f601526126815ff3fe60806040526004361061026d575f3560e01c806370a082311161014a578063a9059cbb116100be578063dc3f0d0f11610078578063dc3f0d0f14610740578063dd62ed3e1461075f578063e1196388146107a3578063ee40166e146107b8578063f2fde38b146107cd578063f5648a4f146107ec575f80fd5b8063a9059cbb14610682578063aa4bde28146106a1578063b62496f5146106b6578063bbc0c742146106e4578063c024666814610702578063c18bc19514610721575f80fd5b80638a8c523c1161010f5780638a8c523c146105e05780638da5cb5b146105f457806395d89b41146106115780639a7a23d6146106255780639e5fea8a14610644578063a457c2d714610663575f80fd5b806370a0823114610550578063715018a614610584578063751039fc146105985780637571336a146105ac57806388e765ff146105cb575f80fd5b806339509351116101e15780634a62bb65116101a65780634a62bb65146104b157806351bc3c85146104ca57806351c6590a146104de5780635b5c251f146104fd5780636605bfda1461051c57806366d602ae1461053b575f80fd5b806339509351146104165780633d64516914610435578063467abe0a1461044a578063470624021461046957806349bd5a5e1461047e575f80fd5b80631d933a4a116102325780631d933a4a1461036857806323b872dd146103895780632b14ca56146103a85780632be32b61146103bd578063313ce567146103dc57806335ce4253146103f7575f80fd5b806306fdde0314610278578063095ea7b3146102a257806310d5de53146102d15780631694505e146102ff57806318160ddd1461034a575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c610800565b60405161029991906122c6565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc36600461230f565b610890565b6040519015158152602001610299565b3480156102dc575f80fd5b506102c16102eb366004612339565b60156020525f908152604090205460ff1681565b34801561030a575f80fd5b506103327f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610299565b348015610355575f80fd5b506002545b604051908152602001610299565b348015610373575f80fd5b50610387610382366004612354565b6108a6565b005b348015610394575f80fd5b506102c16103a336600461236b565b61092e565b3480156103b3575f80fd5b5061035a60135481565b3480156103c8575f80fd5b506103876103d7366004612354565b6109d6565b3480156103e7575f80fd5b5060405160128152602001610299565b348015610402575f80fd5b50610387610411366004612354565b610ae3565b348015610421575f80fd5b506102c161043036600461230f565b610b65565b348015610440575f80fd5b5061035a600b5481565b348015610455575f80fd5b50610387610464366004612354565b610ba0565b348015610474575f80fd5b5061035a60125481565b348015610489575f80fd5b506103327f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bc575f80fd5b506011546102c19060ff1681565b3480156104d5575f80fd5b50610387610c1c565b3480156104e9575f80fd5b506103876104f8366004612354565b610c76565b348015610508575f80fd5b50600c54610332906001600160a01b031681565b348015610527575f80fd5b50610387610536366004612339565b610db6565b348015610546575f80fd5b5061035a60075481565b34801561055b575f80fd5b5061035a61056a366004612339565b6001600160a01b03165f9081526020819052604090205490565b34801561058f575f80fd5b50610387610e8b565b3480156105a3575f80fd5b50610387610efe565b3480156105b7575f80fd5b506103876105c63660046123b6565b610f5c565b3480156105d6575f80fd5b5061035a60065481565b3480156105eb575f80fd5b50610387611046565b3480156105ff575f80fd5b506005546001600160a01b0316610332565b34801561061c575f80fd5b5061028c6110dd565b348015610630575f80fd5b5061038761063f3660046123b6565b6110ec565b34801561064f575f80fd5b506102c161065e36600461236b565b6111cb565b34801561066e575f80fd5b506102c161067d36600461230f565b611334565b34801561068d575f80fd5b506102c161069c36600461230f565b6113cc565b3480156106ac575f80fd5b5061035a60085481565b3480156106c1575f80fd5b506102c16106d0366004612339565b60166020525f908152604090205460ff1681565b3480156106ef575f80fd5b506011546102c190610100900460ff1681565b34801561070d575f80fd5b5061038761071c3660046123b6565b6113d8565b34801561072c575f80fd5b5061038761073b366004612354565b611460565b34801561074b575f80fd5b5061038761075a366004612354565b611569565b34801561076a575f80fd5b5061035a6107793660046123ed565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107ae575f80fd5b5061035a600a5481565b3480156107c3575f80fd5b5061035a600d5481565b3480156107d8575f80fd5b506103876107e7366004612339565b611670565b3480156107f7575f80fd5b5061038761175a565b60606003805461080f90612419565b80601f016020809104026020016040519081016040528092919081815260200182805461083b90612419565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b5f61089c3384846117c3565b5060015b92915050565b6005546001600160a01b031633146108d95760405162461bcd60e51b81526004016108d090612451565b60405180910390fd5b6013819055601e81111561092b5760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b60448201526064016108d0565b50565b5f61093a8484846118e6565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109be5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d0565b6109cb85338584036117c3565b506001949350505050565b6005546001600160a01b03163314610a005760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e8610a1560025490565b610a2090600161249a565b610a2a91906124b1565b610a3491906124b1565b811015610a955760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d0565b610aa781670de0b6b3a764000061249a565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b600c546001600160a01b03163314610b4d5760405162461bcd60e51b815260206004820152602760248201527f6f6e6c79205472656173757279416464726573732063616e206368616e6765206044820152660a6eec2e09ac2f60cb1b60648201526084016108d0565b610b5f81670de0b6b3a764000061249a565b600b5550565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161089c918590610b9b9086906124d0565b6117c3565b6005546001600160a01b03163314610bca5760405162461bcd60e51b81526004016108d090612451565b6012819055601e81111561092b5760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b60448201526064016108d0565b600c546001600160a01b0316336001600160a01b031614610c3b575f80fd5b305f90815260208190526040902054801561092b576009805460ff19166001179055600b54610c6990611df7565b6009805460ff1916905550565b6005546001600160a01b03163314610ca05760405162461bcd60e51b81526004016108d090612451565b610cb281670de0b6b3a764000061249a565b9050610cdf307f0000000000000000000000000000000000000000000000000000000000000000836117c3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730845f80610d256005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d8b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610db091906124e3565b50505050565b6005546001600160a01b03163314610de05760405162461bcd60e51b81526004016108d090612451565b6001600160a01b038116610e425760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016108d0565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a250565b6005546001600160a01b03163314610eb55760405162461bcd60e51b81526004016108d090612451565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f285760405162461bcd60e51b81526004016108d090612451565b6011805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610f865760405162461bcd60e51b81526004016108d090612451565b8061101c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361101c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108d0565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110705760405162461bcd60e51b81526004016108d090612451565b601154610100900460ff16156110c85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e67000000000000000060448201526064016108d0565b6011805461ff00191661010017905543600d55565b60606004805461080f90612419565b6005546001600160a01b031633146111165760405162461bcd60e51b81526004016108d090612451565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111bd5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108d0565b6111c78282611e62565b5050565b5f6001600160a01b0384166112225760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108d0565b600c546001600160a01b0316331461124c5760405162461bcd60e51b81526004016108d09061250e565b815f036112bc576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611295573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b9919061254f565b91505b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303815f875af1158015611308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132c9190612566565b949350505050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d0565b6113c233858584036117c3565b5060019392505050565b5f61089c3384846118e6565b6005546001600160a01b031633146114025760405162461bcd60e51b81526004016108d090612451565b6001600160a01b0382165f81815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461148a5760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e861149f60025490565b6114aa90600361249a565b6114b491906124b1565b6114be91906124b1565b8110156115225760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016108d0565b61153481670de0b6b3a764000061249a565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610ad8565b6005546001600160a01b031633146115935760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e86115a860025490565b6115b390600161249a565b6115bd91906124b1565b6115c791906124b1565b8110156116295760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d0565b61163b81670de0b6b3a764000061249a565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610ad8565b6005546001600160a01b0316331461169a5760405162461bcd60e51b81526004016108d090612451565b6001600160a01b0381166116ff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600c545f906001600160a01b031633146117865760405162461bcd60e51b81526004016108d09061250e565b604051339047905f81818185875af1925050503d805f8114610db0576040519150601f19603f3d011682016040523d82523d5f602084013e610db0565b6001600160a01b0383166118255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d0565b6001600160a01b0382166118865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116119355760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108d0565b6005546001600160a01b0384811691161480159061196157506005546001600160a01b03838116911614155b801561198557506001600160a01b0383165f9081526015602052604090205460ff16155b80156119a957506001600160a01b0382165f9081526015602052604090205460ff16155b15611bf257601154610100900460ff166119fe5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108d0565b60115460ff1615611bf2576001600160a01b0383165f9081526016602052604090205460ff1615611aff57600654811115611a8c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108d0565b6008546001600160a01b0383165f90815260208190526040902054611ab190836124d0565b1115611afa5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108d0565b611bf2565b6001600160a01b0382165f9081526016602052604090205460ff1615611b8457600754811115611afa5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108d0565b6008546001600160a01b0383165f90815260208190526040902054611ba990836124d0565b1115611bf25760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108d0565b6001600160a01b0383165f9081526014602052604090205460019060ff1680611c3257506001600160a01b0383165f9081526014602052604090205460ff165b15611c3a57505f5b808015611c4857505f600d54115b8015611c565750600d544310155b15611dec576001600160a01b0383165f9081526016602052604081205460ff1615611d3c5760135415611ca057606460135484611c93919061249a565b611c9d91906124b1565b90505b305f90815260208190526040902054600a548110801590611cc4575060095460ff16155b15611d3657601054431115611cd8575f600f555b6004600f541015611d21576009805460ff19166001179055600b54611d1290611d0d908690611d08908590611eca565b611eca565b611df7565b6009805460ff19169055436010555b600f8054905f611d3083612581565b91905055505b50611dcd565b6001600160a01b0385165f9081526016602052604090205460ff168015611d6457505f601254115b15611dcd57600d544303611db057600e8054905f611d8183612581565b9190505550601b600e541115611dab576064611d9e84605061249a565b611da891906124b1565b90505b611dcd565b606460125484611dc0919061249a565b611dca91906124b1565b90505b8015611dde57611dde853083611ee1565b611de88184612599565b9250505b610db0848484611ee1565b5f611e01826120ae565b478015611e5d57600c546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e52576040519150601f19603f3d011682016040523d82523d5f602084013e611e57565b606091505b50909250505b505050565b6001600160a01b0382165f908152601660205260409020805460ff1916821515179055611e8f8282612264565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f818311611ed85782611eda565b815b9392505050565b6001600160a01b038316611f455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d0565b6001600160a01b038216611fa75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d0565b6001600160a01b0383165f908152602081905260409020548181101561201e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d0565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906120549084906124d0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a091815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120e1576120e16125ac565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218191906125c0565b81600181518110612194576121946125ac565b60200260200101906001600160a01b031690816001600160a01b0316815250506121df307f0000000000000000000000000000000000000000000000000000000000000000846117c3565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906122339085905f908690309042906004016125db565b5f604051808303815f87803b15801561224a575f80fd5b505af115801561225c573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461092b575f80fd5b5f8060408385031215612320575f80fd5b823561232b816122fb565b946020939093013593505050565b5f60208284031215612349575f80fd5b8135611eda816122fb565b5f60208284031215612364575f80fd5b5035919050565b5f805f6060848603121561237d575f80fd5b8335612388816122fb565b92506020840135612398816122fb565b929592945050506040919091013590565b801515811461092b575f80fd5b5f80604083850312156123c7575f80fd5b82356123d2816122fb565b915060208301356123e2816123a9565b809150509250929050565b5f80604083850312156123fe575f80fd5b8235612409816122fb565b915060208301356123e2816122fb565b600181811c9082168061242d57607f821691505b60208210810361244b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108a0576108a0612486565b5f826124cb57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108a0576108a0612486565b5f805f606084860312156124f5575f80fd5b5050815160208301516040909301519094929350919050565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f6020828403121561255f575f80fd5b5051919050565b5f60208284031215612576575f80fd5b8151611eda816123a9565b5f6001820161259257612592612486565b5060010190565b818103818111156108a0576108a0612486565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125d0575f80fd5b8151611eda816122fb565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561262b5783516001600160a01b0316835260209384019390920191600101612604565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122040bfbcd1802cec25c08e773f7cb3d93d6e8912f94ac030e333108b2d4677d20b64736f6c634300081a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061026d575f3560e01c806370a082311161014a578063a9059cbb116100be578063dc3f0d0f11610078578063dc3f0d0f14610740578063dd62ed3e1461075f578063e1196388146107a3578063ee40166e146107b8578063f2fde38b146107cd578063f5648a4f146107ec575f80fd5b8063a9059cbb14610682578063aa4bde28146106a1578063b62496f5146106b6578063bbc0c742146106e4578063c024666814610702578063c18bc19514610721575f80fd5b80638a8c523c1161010f5780638a8c523c146105e05780638da5cb5b146105f457806395d89b41146106115780639a7a23d6146106255780639e5fea8a14610644578063a457c2d714610663575f80fd5b806370a0823114610550578063715018a614610584578063751039fc146105985780637571336a146105ac57806388e765ff146105cb575f80fd5b806339509351116101e15780634a62bb65116101a65780634a62bb65146104b157806351bc3c85146104ca57806351c6590a146104de5780635b5c251f146104fd5780636605bfda1461051c57806366d602ae1461053b575f80fd5b806339509351146104165780633d64516914610435578063467abe0a1461044a578063470624021461046957806349bd5a5e1461047e575f80fd5b80631d933a4a116102325780631d933a4a1461036857806323b872dd146103895780632b14ca56146103a85780632be32b61146103bd578063313ce567146103dc57806335ce4253146103f7575f80fd5b806306fdde0314610278578063095ea7b3146102a257806310d5de53146102d15780631694505e146102ff57806318160ddd1461034a575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c610800565b60405161029991906122c6565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc36600461230f565b610890565b6040519015158152602001610299565b3480156102dc575f80fd5b506102c16102eb366004612339565b60156020525f908152604090205460ff1681565b34801561030a575f80fd5b506103327f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610299565b348015610355575f80fd5b506002545b604051908152602001610299565b348015610373575f80fd5b50610387610382366004612354565b6108a6565b005b348015610394575f80fd5b506102c16103a336600461236b565b61092e565b3480156103b3575f80fd5b5061035a60135481565b3480156103c8575f80fd5b506103876103d7366004612354565b6109d6565b3480156103e7575f80fd5b5060405160128152602001610299565b348015610402575f80fd5b50610387610411366004612354565b610ae3565b348015610421575f80fd5b506102c161043036600461230f565b610b65565b348015610440575f80fd5b5061035a600b5481565b348015610455575f80fd5b50610387610464366004612354565b610ba0565b348015610474575f80fd5b5061035a60125481565b348015610489575f80fd5b506103327f000000000000000000000000d202071e339ee6c064035948c8fc100f9d8cb88d81565b3480156104bc575f80fd5b506011546102c19060ff1681565b3480156104d5575f80fd5b50610387610c1c565b3480156104e9575f80fd5b506103876104f8366004612354565b610c76565b348015610508575f80fd5b50600c54610332906001600160a01b031681565b348015610527575f80fd5b50610387610536366004612339565b610db6565b348015610546575f80fd5b5061035a60075481565b34801561055b575f80fd5b5061035a61056a366004612339565b6001600160a01b03165f9081526020819052604090205490565b34801561058f575f80fd5b50610387610e8b565b3480156105a3575f80fd5b50610387610efe565b3480156105b7575f80fd5b506103876105c63660046123b6565b610f5c565b3480156105d6575f80fd5b5061035a60065481565b3480156105eb575f80fd5b50610387611046565b3480156105ff575f80fd5b506005546001600160a01b0316610332565b34801561061c575f80fd5b5061028c6110dd565b348015610630575f80fd5b5061038761063f3660046123b6565b6110ec565b34801561064f575f80fd5b506102c161065e36600461236b565b6111cb565b34801561066e575f80fd5b506102c161067d36600461230f565b611334565b34801561068d575f80fd5b506102c161069c36600461230f565b6113cc565b3480156106ac575f80fd5b5061035a60085481565b3480156106c1575f80fd5b506102c16106d0366004612339565b60166020525f908152604090205460ff1681565b3480156106ef575f80fd5b506011546102c190610100900460ff1681565b34801561070d575f80fd5b5061038761071c3660046123b6565b6113d8565b34801561072c575f80fd5b5061038761073b366004612354565b611460565b34801561074b575f80fd5b5061038761075a366004612354565b611569565b34801561076a575f80fd5b5061035a6107793660046123ed565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107ae575f80fd5b5061035a600a5481565b3480156107c3575f80fd5b5061035a600d5481565b3480156107d8575f80fd5b506103876107e7366004612339565b611670565b3480156107f7575f80fd5b5061038761175a565b60606003805461080f90612419565b80601f016020809104026020016040519081016040528092919081815260200182805461083b90612419565b80156108865780601f1061085d57610100808354040283529160200191610886565b820191905f5260205f20905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b5f61089c3384846117c3565b5060015b92915050565b6005546001600160a01b031633146108d95760405162461bcd60e51b81526004016108d090612451565b60405180910390fd5b6013819055601e81111561092b5760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b60448201526064016108d0565b50565b5f61093a8484846118e6565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109be5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d0565b6109cb85338584036117c3565b506001949350505050565b6005546001600160a01b03163314610a005760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e8610a1560025490565b610a2090600161249a565b610a2a91906124b1565b610a3491906124b1565b811015610a955760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d0565b610aa781670de0b6b3a764000061249a565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b600c546001600160a01b03163314610b4d5760405162461bcd60e51b815260206004820152602760248201527f6f6e6c79205472656173757279416464726573732063616e206368616e6765206044820152660a6eec2e09ac2f60cb1b60648201526084016108d0565b610b5f81670de0b6b3a764000061249a565b600b5550565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161089c918590610b9b9086906124d0565b6117c3565b6005546001600160a01b03163314610bca5760405162461bcd60e51b81526004016108d090612451565b6012819055601e81111561092b5760405162461bcd60e51b815260206004820152601960248201527846656573206d7573742062652033302520206f72206c65737360381b60448201526064016108d0565b600c546001600160a01b0316336001600160a01b031614610c3b575f80fd5b305f90815260208190526040902054801561092b576009805460ff19166001179055600b54610c6990611df7565b6009805460ff1916905550565b6005546001600160a01b03163314610ca05760405162461bcd60e51b81526004016108d090612451565b610cb281670de0b6b3a764000061249a565b9050610cdf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d836117c3565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730845f80610d256005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610d8b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610db091906124e3565b50505050565b6005546001600160a01b03163314610de05760405162461bcd60e51b81526004016108d090612451565b6001600160a01b038116610e425760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016108d0565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a250565b6005546001600160a01b03163314610eb55760405162461bcd60e51b81526004016108d090612451565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f285760405162461bcd60e51b81526004016108d090612451565b6011805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610f865760405162461bcd60e51b81526004016108d090612451565b8061101c577f000000000000000000000000d202071e339ee6c064035948c8fc100f9d8cb88d6001600160a01b0316826001600160a01b03160361101c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016108d0565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110705760405162461bcd60e51b81526004016108d090612451565b601154610100900460ff16156110c85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e67000000000000000060448201526064016108d0565b6011805461ff00191661010017905543600d55565b60606004805461080f90612419565b6005546001600160a01b031633146111165760405162461bcd60e51b81526004016108d090612451565b7f000000000000000000000000d202071e339ee6c064035948c8fc100f9d8cb88d6001600160a01b0316826001600160a01b0316036111bd5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108d0565b6111c78282611e62565b5050565b5f6001600160a01b0384166112225760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108d0565b600c546001600160a01b0316331461124c5760405162461bcd60e51b81526004016108d09061250e565b815f036112bc576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611295573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b9919061254f565b91505b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303815f875af1158015611308573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132c9190612566565b949350505050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d0565b6113c233858584036117c3565b5060019392505050565b5f61089c3384846118e6565b6005546001600160a01b031633146114025760405162461bcd60e51b81526004016108d090612451565b6001600160a01b0382165f81815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461148a5760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e861149f60025490565b6114aa90600361249a565b6114b491906124b1565b6114be91906124b1565b8110156115225760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016108d0565b61153481670de0b6b3a764000061249a565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610ad8565b6005546001600160a01b031633146115935760405162461bcd60e51b81526004016108d090612451565b670de0b6b3a76400006103e86115a860025490565b6115b390600161249a565b6115bd91906124b1565b6115c791906124b1565b8110156116295760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d0565b61163b81670de0b6b3a764000061249a565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610ad8565b6005546001600160a01b0316331461169a5760405162461bcd60e51b81526004016108d090612451565b6001600160a01b0381166116ff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600c545f906001600160a01b031633146117865760405162461bcd60e51b81526004016108d09061250e565b604051339047905f81818185875af1925050503d805f8114610db0576040519150601f19603f3d011682016040523d82523d5f602084013e610db0565b6001600160a01b0383166118255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d0565b6001600160a01b0382166118865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116119355760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016108d0565b6005546001600160a01b0384811691161480159061196157506005546001600160a01b03838116911614155b801561198557506001600160a01b0383165f9081526015602052604090205460ff16155b80156119a957506001600160a01b0382165f9081526015602052604090205460ff16155b15611bf257601154610100900460ff166119fe5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108d0565b60115460ff1615611bf2576001600160a01b0383165f9081526016602052604090205460ff1615611aff57600654811115611a8c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016108d0565b6008546001600160a01b0383165f90815260208190526040902054611ab190836124d0565b1115611afa5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108d0565b611bf2565b6001600160a01b0382165f9081526016602052604090205460ff1615611b8457600754811115611afa5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016108d0565b6008546001600160a01b0383165f90815260208190526040902054611ba990836124d0565b1115611bf25760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016108d0565b6001600160a01b0383165f9081526014602052604090205460019060ff1680611c3257506001600160a01b0383165f9081526014602052604090205460ff165b15611c3a57505f5b808015611c4857505f600d54115b8015611c565750600d544310155b15611dec576001600160a01b0383165f9081526016602052604081205460ff1615611d3c5760135415611ca057606460135484611c93919061249a565b611c9d91906124b1565b90505b305f90815260208190526040902054600a548110801590611cc4575060095460ff16155b15611d3657601054431115611cd8575f600f555b6004600f541015611d21576009805460ff19166001179055600b54611d1290611d0d908690611d08908590611eca565b611eca565b611df7565b6009805460ff19169055436010555b600f8054905f611d3083612581565b91905055505b50611dcd565b6001600160a01b0385165f9081526016602052604090205460ff168015611d6457505f601254115b15611dcd57600d544303611db057600e8054905f611d8183612581565b9190505550601b600e541115611dab576064611d9e84605061249a565b611da891906124b1565b90505b611dcd565b606460125484611dc0919061249a565b611dca91906124b1565b90505b8015611dde57611dde853083611ee1565b611de88184612599565b9250505b610db0848484611ee1565b5f611e01826120ae565b478015611e5d57600c546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611e52576040519150601f19603f3d011682016040523d82523d5f602084013e611e57565b606091505b50909250505b505050565b6001600160a01b0382165f908152601660205260409020805460ff1916821515179055611e8f8282612264565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f818311611ed85782611eda565b815b9392505050565b6001600160a01b038316611f455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d0565b6001600160a01b038216611fa75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d0565b6001600160a01b0383165f908152602081905260409020548181101561201e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d0565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906120549084906124d0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120a091815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120e1576120e16125ac565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218191906125c0565b81600181518110612194576121946125ac565b60200260200101906001600160a01b031690816001600160a01b0316815250506121df307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846117c3565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906122339085905f908690309042906004016125db565b5f604051808303815f87803b15801561224a575f80fd5b505af115801561225c573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461092b575f80fd5b5f8060408385031215612320575f80fd5b823561232b816122fb565b946020939093013593505050565b5f60208284031215612349575f80fd5b8135611eda816122fb565b5f60208284031215612364575f80fd5b5035919050565b5f805f6060848603121561237d575f80fd5b8335612388816122fb565b92506020840135612398816122fb565b929592945050506040919091013590565b801515811461092b575f80fd5b5f80604083850312156123c7575f80fd5b82356123d2816122fb565b915060208301356123e2816123a9565b809150509250929050565b5f80604083850312156123fe575f80fd5b8235612409816122fb565b915060208301356123e2816122fb565b600181811c9082168061242d57607f821691505b60208210810361244b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108a0576108a0612486565b5f826124cb57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108a0576108a0612486565b5f805f606084860312156124f5575f80fd5b5050815160208301516040909301519094929350919050565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f6020828403121561255f575f80fd5b5051919050565b5f60208284031215612576575f80fd5b8151611eda816123a9565b5f6001820161259257612592612486565b5060010190565b818103818111156108a0576108a0612486565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125d0575f80fd5b8151611eda816122fb565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561262b5783516001600160a01b0316835260209384019390920191600101612604565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122040bfbcd1802cec25c08e773f7cb3d93d6e8912f94ac030e333108b2d4677d20b64736f6c634300081a0033

Deployed Bytecode Sourcemap

8193:12092:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2911:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3825:169;;;;;;;;;;-1:-1:-1;3825:169:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;3825:169:0;945:187:1;9038:64:0;;;;;;;;;;-1:-1:-1;9038:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8345:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1571:32:1;;;1553:51;;1541:2;1526:18;8345:43:0;1389:221:1;3232:108:0;;;;;;;;;;-1:-1:-1;3320:12:0;;3232:108;;;1761:25:1;;;1749:2;1734:18;3232:108:0;1615:177:1;14021:151:0;;;;;;;;;;-1:-1:-1;14021:151:0;;;;;:::i;:::-;;:::i;:::-;;4002:480;;;;;;;;;;-1:-1:-1;4002:480:0;;;;;:::i;:::-;;:::i;8892:22::-;;;;;;;;;;;;;;;;11412:269;;;;;;;;;;-1:-1:-1;11412:269:0;;;;;:::i;:::-;;:::i;3131:93::-;;;;;;;;;;-1:-1:-1;3131:93:0;;3214:2;2683:36:1;;2671:2;2656:18;3131:93:0;2541:184:1;12924:201:0;;;;;;;;;;-1:-1:-1;12924:201:0;;;;;:::i;:::-;;:::i;4490:215::-;;;;;;;;;;-1:-1:-1;4490:215:0;;;;;:::i;:::-;;:::i;8511:34::-;;;;;;;;;;;;;;;;13865:148;;;;;;;;;;-1:-1:-1;13865:148:0;;;;;:::i;:::-;;:::i;8864:21::-;;;;;;;;;;;;;;;;8395:38;;;;;;;;;;;;;;;8782:33;;;;;;;;;;-1:-1:-1;8782:33:0;;;;;;;;19749:289;;;;;;;;;;;;;:::i;18574:573::-;;;;;;;;;;-1:-1:-1;18574:573:0;;;;;:::i;:::-;;:::i;8554:30::-;;;;;;;;;;-1:-1:-1;8554:30:0;;;;-1:-1:-1;;;;;8554:30:0;;;19155:281;;;;;;;;;;-1:-1:-1;19155:281:0;;;;;:::i;:::-;;:::i;8271:28::-;;;;;;;;;;;;;;;;3348:127;;;;;;;;;;-1:-1:-1;3348:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3449:18:0;3422:7;3449:18;;;;;;;;;;;;3348:127;6952:150;;;;;;;;;;;;;:::i;12019:115::-;;;;;;;;;;;;;:::i;12357:267::-;;;;;;;;;;-1:-1:-1;12357:267:0;;;;;:::i;:::-;;:::i;8237:27::-;;;;;;;;;;;;;;;;20092:190;;;;;;;;;;;;;:::i;6738:79::-;;;;;;;;;;-1:-1:-1;6803:6:0;;-1:-1:-1;;;;;6803:6:0;6738:79;;3019:104;;;;;;;;;;;;;:::i;18072:246::-;;;;;;;;;;-1:-1:-1;18072:246:0;;;;;:::i;:::-;;:::i;13133:423::-;;;;;;;;;;-1:-1:-1;13133:423:0;;;;;:::i;:::-;;:::i;4713:401::-;;;;;;;;;;-1:-1:-1;4713:401:0;;;;;:::i;:::-;;:::i;3483:175::-;;;;;;;;;;-1:-1:-1;3483:175:0;;;;;:::i;:::-;;:::i;8306:30::-;;;;;;;;;;;;;;;;9260:58;;;;;;;;;;-1:-1:-1;9260:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8822:33;;;;;;;;;;-1:-1:-1;8822:33:0;;;;;;;;;;;14180:182;;;;;;;;;;-1:-1:-1;14180:182:0;;;;;:::i;:::-;;:::i;12632:284::-;;;;;;;;;;-1:-1:-1;12632:284:0;;;;;:::i;:::-;;:::i;11689:274::-;;;;;;;;;;-1:-1:-1;11689:274:0;;;;;:::i;:::-;;:::i;3666:151::-;;;;;;;;;;-1:-1:-1;3666:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3782:18:0;;;3755:7;3782:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3666:151;8470:34;;;;;;;;;;;;;;;;8593:37;;;;;;;;;;;;;;;;7110:244;;;;;;;;;;-1:-1:-1;7110:244:0;;;;;:::i;:::-;;:::i;13626:231::-;;;;;;;;;;;;;:::i;2911:100::-;2965:13;2998:5;2991:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2911:100;:::o;3825:169::-;3908:4;3925:39;1430:10;3948:7;3957:6;3925:8;:39::i;:::-;-1:-1:-1;3982:4:0;3825:169;;;;;:::o;14021:151::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;;;;;;;;;14088:7:::1;:14:::0;;;14132:2:::1;14121:13:::0;::::1;;14113:51;;;::::0;-1:-1:-1;;;14113:51:0;;4789:2:1;14113:51:0::1;::::0;::::1;4771:21:1::0;4828:2;4808:18;;;4801:30;-1:-1:-1;;;4847:18:1;;;4840:55;4912:18;;14113:51:0::1;4587:349:1::0;14113:51:0::1;14021:151:::0;:::o;4002:480::-;4142:4;4159:36;4169:6;4177:9;4188:6;4159:9;:36::i;:::-;-1:-1:-1;;;;;4235:19:0;;4208:24;4235:19;;;:11;:19;;;;;;;;1430:10;4235:33;;;;;;;;4287:26;;;;4279:79;;;;-1:-1:-1;;;4279:79:0;;5143:2:1;4279:79:0;;;5125:21:1;5182:2;5162:18;;;5155:30;5221:34;5201:18;;;5194:62;-1:-1:-1;;;5272:18:1;;;5265:38;5320:19;;4279:79:0;4941:404:1;4279:79:0;4386:57;4395:6;1430:10;4436:6;4417:16;:25;4386:8;:57::i;:::-;-1:-1:-1;4470:4:0;;4002:480;-1:-1:-1;;;;4002:480:0:o;11412:269::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;11531:4:::1;11525;11505:13;3320:12:::0;;;3232:108;11505:13:::1;:17;::::0;11521:1:::1;11505:17;:::i;:::-;:24;;;;:::i;:::-;11504:31;;;;:::i;:::-;11494:6;:41;;11486:95;;;::::0;-1:-1:-1;;;11486:95:0;;6079:2:1;11486:95:0::1;::::0;::::1;6061:21:1::0;6118:2;6098:18;;;6091:30;6157:34;6137:18;;;6130:62;-1:-1:-1;;;6208:18:1;;;6201:39;6257:19;;11486:95:0::1;5877:405:1::0;11486:95:0::1;11607:17;:6:::0;11617::::1;11607:17;:::i;:::-;11592:12;:32:::0;;;11640:33:::1;::::0;1761:25:1;;;11640:33:0::1;::::0;1749:2:1;1734:18;11640:33:0::1;;;;;;;;11412:269:::0;:::o;12924:201::-;13007:15;;-1:-1:-1;;;;;13007:15:0;12995:10;:27;12987:78;;;;-1:-1:-1;;;12987:78:0;;6489:2:1;12987:78:0;;;6471:21:1;6528:2;6508:18;;;6501:30;6567:34;6547:18;;;6540:62;-1:-1:-1;;;6618:18:1;;;6611:37;6665:19;;12987:78:0;6287:403:1;12987:78:0;13098:19;:9;13110:6;13098:19;:::i;:::-;13076;:41;-1:-1:-1;12924:201:0:o;4490:215::-;1430:10;4578:4;4627:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4627:34:0;;;;;;;;;;4578:4;;4595:80;;4618:7;;4627:47;;4664:10;;4627:47;:::i;:::-;4595:8;:80::i;13865:148::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;13931:6:::1;:13:::0;;;13973:2:::1;13963:12:::0;::::1;;13955:50;;;::::0;-1:-1:-1;;;13955:50:0;;4789:2:1;13955:50:0::1;::::0;::::1;4771:21:1::0;4828:2;4808:18;;;4801:30;-1:-1:-1;;;4847:18:1;;;4840:55;4912:18;;13955:50:0::1;4587:349:1::0;19749:289:0;19813:15;;-1:-1:-1;;;;;19813:15:0;1430:10;-1:-1:-1;;;;;19799:29:0;;19791:38;;;;;;19879:4;19840:20;3449:18;;;;;;;;;;;19899:14;;19896:135;;19929:8;:15;;-1:-1:-1;;19929:15:0;19940:4;19929:15;;;19968:19;;19959:29;;:8;:29::i;:::-;20003:8;:16;;-1:-1:-1;;20003:16:0;;;19780:258;19749:289::o;18574:573::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;18661:22:::1;:11:::0;18676:6:::1;18661:22;:::i;:::-;18647:36;;18761:62;18778:4;18793:15;18811:11;18761:8;:62::i;:::-;18866:15;-1:-1:-1::0;;;;;18866:31:0::1;;18905:21;18950:4;18970:11;18996:1;19039::::0;19090:7:::1;6803:6:::0;;-1:-1:-1;;;;;6803:6:0;;6738:79;19090:7:::1;18866:273;::::0;::::1;::::0;;;-1:-1:-1;;;;;;18866:273:0;;;-1:-1:-1;;;;;7146:32:1;;;18866:273:0::1;::::0;::::1;7128:51:1::0;7195:18;;;7188:34;;;;7238:18;;;7231:34;;;;7281:18;;;7274:34;7345:32;;;7324:19;;;7317:61;19113:15:0::1;7394:19:1::0;;;7387:35;7100:19;;18866:273:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18574:573:::0;:::o;19155:281::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19247:30:0;::::1;19239:79;;;::::0;-1:-1:-1;;;19239:79:0;;8096:2:1;19239:79:0::1;::::0;::::1;8078:21:1::0;8135:2;8115:18;;;8108:30;8174:34;8154:18;;;8147:62;-1:-1:-1;;;8225:18:1;;;8218:34;8269:19;;19239:79:0::1;7894:400:1::0;19239:79:0::1;19329:15;:43:::0;;-1:-1:-1;;;;;;19329:43:0::1;-1:-1:-1::0;;;;;19329:43:0;::::1;::::0;;::::1;::::0;;;19388:40:::1;::::0;::::1;::::0;-1:-1:-1;;19388:40:0::1;19155:281:::0;:::o;6952:150::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;7045:6:::1;::::0;7024:40:::1;::::0;7061:1:::1;::::0;-1:-1:-1;;;;;7045:6:0::1;::::0;7024:40:::1;::::0;7061:1;;7024:40:::1;7075:6;:19:::0;;-1:-1:-1;;;;;;7075:19:0::1;::::0;;6952:150::o;12019:115::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;12073:14:::1;:22:::0;;-1:-1:-1;;12073:22:0::1;::::0;;12111:15:::1;::::0;::::1;::::0;12090:5:::1;::::0;12111:15:::1;12019:115::o:0;12357:267::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;12453:4:::1;12449:111;;12491:13;-1:-1:-1::0;;;;;12481:23:0::1;:6;-1:-1:-1::0;;;;;12481:23:0::1;::::0;12473:75:::1;;;::::0;-1:-1:-1;;;12473:75:0;;8501:2:1;12473:75:0::1;::::0;::::1;8483:21:1::0;8540:2;8520:18;;;8513:30;8579:34;8559:18;;;8552:62;-1:-1:-1;;;8630:18:1;;;8623:37;8677:19;;12473:75:0::1;8299:403:1::0;12473:75:0::1;-1:-1:-1::0;;;;;12570:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;12570:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12357:267::o;20092:190::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;20156:13:::1;::::0;::::1;::::0;::::1;;;20155:14;20147:51;;;::::0;-1:-1:-1;;;20147:51:0;;8909:2:1;20147:51:0::1;::::0;::::1;8891:21:1::0;8948:2;8928:18;;;8921:30;8987:26;8967:18;;;8960:54;9031:18;;20147:51:0::1;8707:348:1::0;20147:51:0::1;20209:13;:20:::0;;-1:-1:-1;;20209:20:0::1;;;::::0;;20261:12:::1;20240:18;:33:::0;20092:190::o;3019:104::-;3075:13;3108:7;3101:14;;;;;:::i;18072:246::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;18181:13:::1;-1:-1:-1::0;;;;;18173:21:0::1;:4;-1:-1:-1::0;;;;;18173:21:0::1;::::0;18165:91:::1;;;::::0;-1:-1:-1;;;18165:91:0;;9262:2:1;18165:91:0::1;::::0;::::1;9244:21:1::0;9301:2;9281:18;;;9274:30;9340:34;9320:18;;;9313:62;9411:27;9391:18;;;9384:55;9456:19;;18165:91:0::1;9060:421:1::0;18165:91:0::1;18269:41;18298:4;18304:5;18269:28;:41::i;:::-;18072:246:::0;;:::o;13133:423::-;13224:10;-1:-1:-1;;;;;13255:20:0;;13247:59;;;;-1:-1:-1;;;13247:59:0;;9688:2:1;13247:59:0;;;9670:21:1;9727:2;9707:18;;;9700:30;9766:28;9746:18;;;9739:56;9812:18;;13247:59:0;9486:350:1;13247:59:0;13337:15;;-1:-1:-1;;;;;13337:15:0;13325:10;:27;13317:72;;;;-1:-1:-1;;;13317:72:0;;;;;;;:::i;:::-;13405:6;13415:1;13405:11;13402:90;;13441:39;;-1:-1:-1;;;13441:39:0;;13474:4;13441:39;;;1553:51:1;-1:-1:-1;;;;;13441:24:0;;;;;1526:18:1;;13441:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13432:48;;13402:90;13512:36;;-1:-1:-1;;;13512:36:0;;-1:-1:-1;;;;;10670:32:1;;;13512:36:0;;;10652:51:1;10719:18;;;10712:34;;;13512:23:0;;;;;10625:18:1;;13512:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13504:44;13133:423;-1:-1:-1;;;;13133:423:0:o;4713:401::-;1430:10;4806:4;4850:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4850:34:0;;;;;;;;;;4903:35;;;;4895:85;;;;-1:-1:-1;;;4895:85:0;;11209:2:1;4895:85:0;;;11191:21:1;11248:2;11228:18;;;11221:30;11287:34;11267:18;;;11260:62;-1:-1:-1;;;11338:18:1;;;11331:35;11383:19;;4895:85:0;11007:401:1;4895:85:0;5008:67;1430:10;5031:7;5059:15;5040:16;:34;5008:8;:67::i;:::-;-1:-1:-1;5102:4:0;;4713:401;-1:-1:-1;;;4713:401:0:o;3483:175::-;3569:4;3586:42;1430:10;3610:9;3621:6;3586:9;:42::i;14180:182::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14265:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14265:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14320:34;;1085:41:1;;;14320:34:0::1;::::0;1058:18:1;14320:34:0::1;;;;;;;14180:182:::0;;:::o;12632:284::-;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;12754:4:::1;12748;12728:13;3320:12:::0;;;3232:108;12728:13:::1;:17;::::0;12744:1:::1;12728:17;:::i;:::-;:24;;;;:::i;:::-;12727:31;;;;:::i;:::-;12717:6;:41;;12709:98;;;::::0;-1:-1:-1;;;12709:98:0;;11615:2:1;12709:98:0::1;::::0;::::1;11597:21:1::0;11654:2;11634:18;;;11627:30;11693:34;11673:18;;;11666:62;-1:-1:-1;;;11744:18:1;;;11737:42;11796:19;;12709:98:0::1;11413:408:1::0;12709:98:0::1;12836:17;:6:::0;12846::::1;12836:17;:::i;:::-;12818:15;:35:::0;;;12869:39:::1;::::0;1761:25:1;;;12869:39:0::1;::::0;1749:2:1;1734:18;12869:39:0::1;1615:177:1::0;11689:274:0;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;11809:4:::1;11803;11783:13;3320:12:::0;;;3232:108;11783:13:::1;:17;::::0;11799:1:::1;11783:17;:::i;:::-;:24;;;;:::i;:::-;11782:31;;;;:::i;:::-;11772:6;:41;;11764:96;;;::::0;-1:-1:-1;;;11764:96:0;;12028:2:1;11764:96:0::1;::::0;::::1;12010:21:1::0;12067:2;12047:18;;;12040:30;12106:34;12086:18;;;12079:62;-1:-1:-1;;;12157:18:1;;;12150:40;12207:19;;11764:96:0::1;11826:406:1::0;11764:96:0::1;11887:17;:6:::0;11897::::1;11887:17;:::i;:::-;11871:13;:33:::0;;;11920:35:::1;::::0;1761:25:1;;;11920:35:0::1;::::0;1749:2:1;1734:18;11920:35:0::1;1615:177:1::0;7110:244:0;6865:6;;-1:-1:-1;;;;;6865:6:0;1430:10;6865:22;6857:67;;;;-1:-1:-1;;;6857:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7199:22:0;::::1;7191:73;;;::::0;-1:-1:-1;;;7191:73:0;;12439:2:1;7191:73:0::1;::::0;::::1;12421:21:1::0;12478:2;12458:18;;;12451:30;12517:34;12497:18;;;12490:62;-1:-1:-1;;;12568:18:1;;;12561:36;12614:19;;7191:73:0::1;12237:402:1::0;7191:73:0::1;7301:6;::::0;7280:38:::1;::::0;-1:-1:-1;;;;;7280:38:0;;::::1;::::0;7301:6:::1;::::0;7280:38:::1;::::0;7301:6:::1;::::0;7280:38:::1;7329:6;:17:::0;;-1:-1:-1;;;;;;7329:17:0::1;-1:-1:-1::0;;;;;7329:17:0;;;::::1;::::0;;;::::1;::::0;;7110:244::o;13626:231::-;13715:15;;13672:12;;-1:-1:-1;;;;;13715:15:0;13703:10;:27;13695:72;;;;-1:-1:-1;;;13695:72:0;;;;;;;:::i;:::-;13791:58;;13799:10;;13823:21;;13791:58;;;;13823:21;13799:10;13791:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6031:380;-1:-1:-1;;;;;6167:19:0;;6159:68;;;;-1:-1:-1;;;6159:68:0;;13056:2:1;6159:68:0;;;13038:21:1;13095:2;13075:18;;;13068:30;13134:34;13114:18;;;13107:62;-1:-1:-1;;;13185:18:1;;;13178:34;13229:19;;6159:68:0;12854:400:1;6159:68:0;-1:-1:-1;;;;;6246:21:0;;6238:68;;;;-1:-1:-1;;;6238:68:0;;13461:2:1;6238:68:0;;;13443:21:1;13500:2;13480:18;;;13473:30;13539:34;13519:18;;;13512:62;-1:-1:-1;;;13590:18:1;;;13583:32;13632:19;;6238:68:0;13259:398:1;6238:68:0;-1:-1:-1;;;;;6319:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6371:32;;1761:25:1;;;6371:32:0;;1734:18:1;6371:32:0;;;;;;;6031:380;;;:::o;14370:2985::-;14477:1;14468:6;:10;14460:52;;;;-1:-1:-1;;;14460:52:0;;13864:2:1;14460:52:0;;;13846:21:1;13903:2;13883:18;;;13876:30;13942:31;13922:18;;;13915:59;13991:18;;14460:52:0;13662:353:1;14460:52:0;6803:6;;-1:-1:-1;;;;;14584:15:0;;;6803:6;;14584:15;;;;:32;;-1:-1:-1;6803:6:0;;-1:-1:-1;;;;;14603:13:0;;;6803:6;;14603:13;;14584:32;:74;;;;-1:-1:-1;;;;;;14621:37:0;;;;;;:31;:37;;;;;;;;14620:38;14584:74;:114;;;;-1:-1:-1;;;;;;14663:35:0;;;;;;:31;:35;;;;;;;;14662:36;14584:114;14580:895;;;14722:13;;;;;;;14714:48;;;;-1:-1:-1;;;14714:48:0;;14222:2:1;14714:48:0;;;14204:21:1;14261:2;14241:18;;;14234:30;-1:-1:-1;;;14280:18:1;;;14273:52;14342:18;;14714:48:0;14020:346:1;14714:48:0;14780:14;;;;14777:687;;;-1:-1:-1;;;;;14846:31:0;;;;;;:25;:31;;;;;;;;14842:607;;;14920:12;;14910:6;:22;;14902:75;;;;-1:-1:-1;;;14902:75:0;;14573:2:1;14902:75:0;;;14555:21:1;14612:2;14592:18;;;14585:30;14651:34;14631:18;;;14624:62;-1:-1:-1;;;14702:18:1;;;14695:38;14750:19;;14902:75:0;14371:404:1;14902:75:0;15034:15;;-1:-1:-1;;;;;3449:18:0;;3422:7;3449:18;;;;;;;;;;;15008:22;;:6;:22;:::i;:::-;:41;;15000:78;;;;-1:-1:-1;;;15000:78:0;;14982:2:1;15000:78:0;;;14964:21:1;15021:2;15001:18;;;14994:30;-1:-1:-1;;;15040:18:1;;;15033:54;15104:18;;15000:78:0;14780:348:1;15000:78:0;14842:607;;;-1:-1:-1;;;;;15154:29:0;;;;;;:25;:29;;;;;;;;15150:299;;;15226:13;;15216:6;:23;;15208:78;;;;-1:-1:-1;;;15208:78:0;;15335:2:1;15208:78:0;;;15317:21:1;15374:2;15354:18;;;15347:30;15413:34;15393:18;;;15386:62;-1:-1:-1;;;15464:18:1;;;15457:40;15514:19;;15208:78:0;15133:406:1;15150:299:0;15385:15;;-1:-1:-1;;;;;3449:18:0;;3422:7;3449:18;;;;;;;;;;;15359:22;;:6;:22;:::i;:::-;:41;;15351:78;;;;-1:-1:-1;;;15351:78:0;;14982:2:1;15351:78:0;;;14964:21:1;15021:2;15001:18;;;14994:30;-1:-1:-1;;;15040:18:1;;;15033:54;15104:18;;15351:78:0;14780:348:1;15351:78:0;-1:-1:-1;;;;;15605:25:0;;15487:12;15605:25;;;:19;:25;;;;;;15502:4;;15605:25;;;:52;;-1:-1:-1;;;;;;15634:23:0;;;;;;:19;:23;;;;;;;;15605:52;15602:99;;;-1:-1:-1;15684:5:0;15602:99;15776:7;:31;;;;;15806:1;15787:18;;:20;15776:31;:69;;;;;15826:18;;15812:12;:32;;15776:69;15773:1529;;;-1:-1:-1;;;;;15931:29:0;;15862:12;15931:29;;;:25;:29;;;;;;;;15927:1216;;;15984:7;;:9;15981:85;;16043:3;16033:7;;16024:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;16017:29;;15981:85;16127:4;16084:22;3449:18;;;;;;;;;;;16173:19;;16155:37;;;;;:50;;-1:-1:-1;16197:8:0;;;;16196:9;16155:50;16152:570;;;16249:13;;16234:12;:28;16230:98;;;16303:1;16291:9;:13;16230:98;16363:1;16353:9;;:11;16350:319;;;16426:8;:15;;-1:-1:-1;;16426:15:0;16437:4;16426:15;;;16509:19;;16468:63;;16477:53;;16481:6;;16489:40;;16493:14;;16489:3;:40::i;:::-;16477:3;:53::i;:::-;16468:8;:63::i;:::-;16574:8;:16;;-1:-1:-1;;16574:16:0;;;16633:12;16617:13;:28;16350:319;16691:9;:11;;;:9;:11;;;:::i;:::-;;;;;;16152:570;15962:775;15927:1216;;;-1:-1:-1;;;;;16782:31:0;;;;;;:25;:31;;;;;;;;:45;;;;;16826:1;16817:6;;:10;16782:45;16779:364;;;16867:18;;16851:12;:34;16848:280;;16909:9;:11;;;:9;:11;;;:::i;:::-;;;;;;16956:2;16946:9;;:12;16943:91;;;17007:3;16993:11;:6;17002:2;16993:11;:::i;:::-;:17;;;;:::i;:::-;16986:24;;16943:91;16848:280;;;17105:3;17096:6;;17087;:15;;;;:::i;:::-;:21;;;;:::i;:::-;17080:28;;16848:280;17174:8;;17171:89;;17202:42;17218:4;17232;17239;17202:15;:42::i;:::-;17276:14;17286:4;17276:14;;:::i;:::-;;;15847:1455;15773:1529;17314:33;17330:4;17336:2;17340:6;17314:15;:33::i;19447:290::-;19500:12;19523:24;19540:6;19523:16;:24::i;:::-;19579:21;19614:12;;19611:119;;19663:15;;19655:63;;-1:-1:-1;;;;;19663:15:0;;;;19692:21;;19655:63;;;;19692:21;19663:15;19655:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19642:76:0;;-1:-1:-1;;19611:119:0;19489:248;;19447:290;:::o;18326:240::-;-1:-1:-1;;;;;18409:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;18409:39:0;;;;;;;18461;18409:31;:39;18461:26;:39::i;:::-;18518:40;;;;;;-1:-1:-1;;;;;18518:40:0;;;;;;;;18326:240;;:::o;17363:104::-;17420:7;17449:1;17445;:5;17444:15;;17458:1;17444:15;;;17454:1;17444:15;17437:22;17363:104;-1:-1:-1;;;17363:104:0:o;5122:602::-;-1:-1:-1;;;;;5262:20:0;;5254:70;;;;-1:-1:-1;;;5254:70:0;;16019:2:1;5254:70:0;;;16001:21:1;16058:2;16038:18;;;16031:30;16097:34;16077:18;;;16070:62;-1:-1:-1;;;16148:18:1;;;16141:35;16193:19;;5254:70:0;15817:401:1;5254:70:0;-1:-1:-1;;;;;5343:23:0;;5335:71;;;;-1:-1:-1;;;5335:71:0;;16425:2:1;5335:71:0;;;16407:21:1;16464:2;16444:18;;;16437:30;16503:34;16483:18;;;16476:62;-1:-1:-1;;;16554:18:1;;;16547:33;16597:19;;5335:71:0;16223:399:1;5335:71:0;-1:-1:-1;;;;;5443:17:0;;5419:21;5443:17;;;;;;;;;;;5479:23;;;;5471:74;;;;-1:-1:-1;;;5471:74:0;;16829:2:1;5471:74:0;;;16811:21:1;16868:2;16848:18;;;16841:30;16907:34;16887:18;;;16880:62;-1:-1:-1;;;16958:18:1;;;16951:36;17004:19;;5471:74:0;16627:402:1;5471:74:0;-1:-1:-1;;;;;5573:17:0;;;:9;:17;;;;;;;;;;;5593:22;;;5573:42;;5633:20;;;;;;;;:30;;5609:6;;5573:9;5633:30;;5609:6;;5633:30;:::i;:::-;;;;;;;;5698:9;-1:-1:-1;;;;;5681:35:0;5690:6;-1:-1:-1;;;;;5681:35:0;;5709:6;5681:35;;;;1761:25:1;;1749:2;1734:18;;1615:177;5681:35:0;;;;;;;;5243:481;5122:602;;;:::o;17475:589::-;17625:16;;;17639:1;17625:16;;;;;;;;17601:21;;17625:16;;;;;;;;;;-1:-1:-1;17625:16:0;17601:40;;17670:4;17652;17657:1;17652:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17652:23:0;;;-1:-1:-1;;;;;17652:23:0;;;;;17696:15;-1:-1:-1;;;;;17696:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17686:4;17691:1;17686:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17686:32:0;;;-1:-1:-1;;;;;17686:32:0;;;;;17731:62;17748:4;17763:15;17781:11;17731:8;:62::i;:::-;17832:224;;-1:-1:-1;;;17832:224:0;;-1:-1:-1;;;;;17832:15:0;:66;;;;:224;;17913:11;;17939:1;;17983:4;;18010;;18030:15;;17832:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17530:534;17475:589;:::o;12142:207::-;-1:-1:-1;;;;;12230:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;12230:52:0;;;;;;;;;;12298:43;;18686:51:1;;;18753:18;;;18746:50;12298:43:0;;18659:18:1;12298:43:0;;;;;;;12142:207;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:247::-;1196:6;1249:2;1237:9;1228:7;1224:23;1220:32;1217:52;;;1265:1;1262;1255:12;1217:52;1304:9;1291:23;1323:31;1348:5;1323:31;:::i;1797:226::-;1856:6;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;-1:-1:-1;1970:23:1;;1797:226;-1:-1:-1;1797:226:1:o;2028:508::-;2105:6;2113;2121;2174:2;2162:9;2153:7;2149:23;2145:32;2142:52;;;2190:1;2187;2180:12;2142:52;2229:9;2216:23;2248:31;2273:5;2248:31;:::i;:::-;2298:5;-1:-1:-1;2355:2:1;2340:18;;2327:32;2368:33;2327:32;2368:33;:::i;:::-;2028:508;;2420:7;;-1:-1:-1;;;2500:2:1;2485:18;;;;2472:32;;2028:508::o;2938:118::-;3024:5;3017:13;3010:21;3003:5;3000:32;2990:60;;3046:1;3043;3036:12;3061:382;3126:6;3134;3187:2;3175:9;3166:7;3162:23;3158:32;3155:52;;;3203:1;3200;3193:12;3155:52;3242:9;3229:23;3261:31;3286:5;3261:31;:::i;:::-;3311:5;-1:-1:-1;3368:2:1;3353:18;;3340:32;3381:30;3340:32;3381:30;:::i;:::-;3430:7;3420:17;;;3061:382;;;;;:::o;3448:388::-;3516:6;3524;3577:2;3565:9;3556:7;3552:23;3548:32;3545:52;;;3593:1;3590;3583:12;3545:52;3632:9;3619:23;3651:31;3676:5;3651:31;:::i;:::-;3701:5;-1:-1:-1;3758:2:1;3743:18;;3730:32;3771:33;3730:32;3771:33;:::i;3841:380::-;3920:1;3916:12;;;;3963;;;3984:61;;4038:4;4030:6;4026:17;4016:27;;3984:61;4091:2;4083:6;4080:14;4060:18;4057:38;4054:161;;4137:10;4132:3;4128:20;4125:1;4118:31;4172:4;4169:1;4162:15;4200:4;4197:1;4190:15;4054:161;;3841:380;;;:::o;4226:356::-;4428:2;4410:21;;;4447:18;;;4440:30;4506:34;4501:2;4486:18;;4479:62;4573:2;4558:18;;4226:356::o;5350:127::-;5411:10;5406:3;5402:20;5399:1;5392:31;5442:4;5439:1;5432:15;5466:4;5463:1;5456:15;5482:168;5555:9;;;5586;;5603:15;;;5597:22;;5583:37;5573:71;;5624:18;;:::i;5655:217::-;5695:1;5721;5711:132;;5765:10;5760:3;5756:20;5753:1;5746:31;5800:4;5797:1;5790:15;5828:4;5825:1;5818:15;5711:132;-1:-1:-1;5857:9:1;;5655:217::o;6695:125::-;6760:9;;;6781:10;;;6778:36;;;6794:18;;:::i;7433:456::-;7521:6;7529;7537;7590:2;7578:9;7569:7;7565:23;7561:32;7558:52;;;7606:1;7603;7596:12;7558:52;-1:-1:-1;;7651:16:1;;7757:2;7742:18;;7736:25;7853:2;7838:18;;;7832:25;7651:16;;7736:25;;-1:-1:-1;7832:25:1;7433:456;-1:-1:-1;7433:456:1:o;9841:397::-;10043:2;10025:21;;;10082:2;10062:18;;;10055:30;10121:34;10116:2;10101:18;;10094:62;-1:-1:-1;;;10187:2:1;10172:18;;10165:31;10228:3;10213:19;;9841:397::o;10243:230::-;10313:6;10366:2;10354:9;10345:7;10341:23;10337:32;10334:52;;;10382:1;10379;10372:12;10334:52;-1:-1:-1;10427:16:1;;10243:230;-1:-1:-1;10243:230:1:o;10757:245::-;10824:6;10877:2;10865:9;10856:7;10852:23;10848:32;10845:52;;;10893:1;10890;10883:12;10845:52;10925:9;10919:16;10944:28;10966:5;10944:28;:::i;15544:135::-;15583:3;15604:17;;;15601:43;;15624:18;;:::i;:::-;-1:-1:-1;15671:1:1;15660:13;;15544:135::o;15684:128::-;15751:9;;;15772:11;;;15769:37;;;15786:18;;:::i;17166:127::-;17227:10;17222:3;17218:20;17215:1;17208:31;17258:4;17255:1;17248:15;17282:4;17279:1;17272:15;17298:251;17368:6;17421:2;17409:9;17400:7;17396:23;17392:32;17389:52;;;17437:1;17434;17427:12;17389:52;17469:9;17463:16;17488:31;17513:5;17488:31;:::i;17554:959::-;17816:4;17864:3;17853:9;17849:19;17895:6;17884:9;17877:25;17938:6;17933:2;17922:9;17918:18;17911:34;17981:3;17976:2;17965:9;17961:18;17954:31;18005:6;18040;18034:13;18071:6;18063;18056:22;18109:3;18098:9;18094:19;18087:26;;18148:2;18140:6;18136:15;18122:29;;18169:1;18179:195;18193:6;18190:1;18187:13;18179:195;;;18258:13;;-1:-1:-1;;;;;18254:39:1;18242:52;;18323:2;18349:15;;;;18314:12;;;;18290:1;18208:9;18179:195;;;-1:-1:-1;;;;;;;18430:32:1;;;;18425:2;18410:18;;18403:60;-1:-1:-1;;18494:3:1;18479:19;18472:35;18391:3;17554:959;-1:-1:-1;;;17554:959:1:o

Swarm Source

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