ETH Price: $2,416.33 (-0.06%)

Token

Fastbot (FASTBOT)
 

Overview

Max Total Supply

1,000,000 FASTBOT

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,613.723313891461951184 FASTBOT

Value
$0.00
0x9de1fa5074ca989261c7af1a73f61c6e324abf2e
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:
Fastbot

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");

        _beforeTokenTransfer(sender, recipient, amount);

        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);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function burn(uint256 amount) public virtual {
        require(
            _msgSender() != address(0),
            "ERC20: burn from the zero address"
        );
        require(amount > 0, "ERC20: burn amount exceeds balance");
        require(
            _balances[_msgSender()] >= amount,
            "ERC20: burn amount exceeds balance"
        );
        _burn(_msgSender(), 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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(
        address indexed sender,
        uint amount0,
        uint amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

contract Fastbot is ERC20, Ownable {
    uint256 public totalFeesOnBuy = 5;
    uint256 public totalFeesOnSell = 5;
    uint256 private totalFees;

    uint256 private percentMaxBuy = 10;

    address public marketingWallet = 0x9E5C82d39aE0A99Df63060FAaAFEB73FB1F75640;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromMaxBuy;

    bool public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeFromMaxBuy(address indexed account, bool isExcluded);
    event UpdateBuyFee(uint256 indexed newFee);
    event UpdateSellFee(uint256 indexed newFee);
    event MarketingWalletChanged(address indexed newWallet);
    event SwapAndSendFee(address to, uint256 tokensSwapped, bool success);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 bnbReceived,
        uint256 tokensIntoLiqudity
    );
    event SwapTokensAtAmountChanged(uint256 newAmount);
    event UpdatePercentMaxBuy(uint256 newPercent);

    constructor() ERC20("Fastbot", "FASTBOT") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            getRouterAddress()
        );
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

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

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

        _isExcludedFromMaxBuy[owner()] = true;
        _isExcludedFromMaxBuy[DEAD] = true;
        _isExcludedFromMaxBuy[address(this)] = true;
        _isExcludedFromMaxBuy[marketingWallet] = true;
        _isExcludedFromMaxBuy[getRouterAddress()] = true;

        _mint(owner(), 1_000_000 * (10 ** 18));
        swapTokensAtAmount = getMinimumSwapback();
    }

    receive() external payable {}

    function getRouterAddress() public view returns (address) {
        uint256 id;
        assembly {
            id := chainid()
        }
        if (id == 97) return 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
        else if (id == 56) return 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        else if (id == 1) return 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        else return 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    }

    function getMinimumSwapback() public view returns (uint256) {
        uint256 id;
        assembly {
            id := chainid()
        }

        if (id == 56 || id == 1) return (1 * totalSupply()) / 100;
        return 1 * 10 ** decimals();
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function excludeFromFees(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromFees[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeFromMaxBuy(
        address account,
        bool excluded
    ) external onlyOwner {
        require(
            _isExcludedFromMaxBuy[account] != excluded,
            "Account is already the value of 'excluded'"
        );
        _isExcludedFromMaxBuy[account] = excluded;

        emit ExcludeFromMaxBuy(account, excluded);
    }

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

    function isExcludedFromMaxBuy(address account) public view returns (bool) {
        return _isExcludedFromMaxBuy[account];
    }

    function updateBuyFee(uint256 newFee) external onlyOwner {
        require(newFee <= 10, "Buy fee cannot be more than 10%");
        totalFeesOnBuy = newFee;
        emit UpdateBuyFee(newFee);
    }

    function updateSellFee(uint256 newFee) external onlyOwner {
        require(newFee <= 10, "Sell fee cannot be more than 10%");
        totalFeesOnSell = newFee;
        emit UpdateSellFee(newFee);
    }

    function updatePercentMaxBuy(uint256 newPercent) external onlyOwner {
        percentMaxBuy = newPercent;
        emit UpdatePercentMaxBuy(newPercent);
    }

    function changeMarketingWallet(
        address _marketingWallet
    ) external onlyOwner {
        require(
            _marketingWallet != marketingWallet,
            "Marketing wallet is already that address"
        );
        require(
            _marketingWallet != address(0),
            "Marketing wallet cannot be the zero address"
        );
        require(
            !isContract(_marketingWallet),
            "Marketing wallet cannot be a contract"
        );
        marketingWallet = _marketingWallet;
        _isExcludedFromFees[marketingWallet] = true;
        emit MarketingWalletChanged(marketingWallet);
    }

    function setSwapEnabled(bool _enabled) external onlyOwner {
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount > totalSupply() / 100000,
            "SwapTokensAtAmount must be greater than 0.0001% of total supply"
        );
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountChanged(newAmount);
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && !swapping && swapEnabled && to == uniswapV2Pair) {
            swapping = true;

            uint256 marketingShare = totalFeesOnBuy + totalFeesOnSell;

            if (marketingShare > 0) {
                uint256 marketingTokens = balanceOf(address(this));
                swapAndSendFee(payable(marketingWallet), marketingTokens);
            }

            swapping = false;
        }

        bool takeFee = !swapping;

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

        if (takeFee) {
            uint256 fees;
            if (from == uniswapV2Pair) {
                //check if the buy is less than the percentMaxBuy
                if (percentMaxBuy > 0 && !_isExcludedFromMaxBuy[to]) {
                    uint256 maxBuy = (totalSupply() * percentMaxBuy) / 100;
                    require(
                        amount <= maxBuy,
                        "Buy amount exceeds the percentMaxBuy"
                    );
                }

                fees = (amount * totalFeesOnBuy) / 100;
            } else if (to == uniswapV2Pair) {
                fees = (amount * totalFeesOnSell) / 100;
            } else {
                fees = 0;
            }
            amount -= fees;
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
        }
        super._transfer(from, to, amount);
    }

    function swapAndSendFee(address payable to, uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        uint256 balanceBefore = address(this).balance;
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        uint256 balanceSend = address(this).balance - balanceBefore;
        (bool sent, ) = to.call{value: balanceSend}("");

        emit SwapAndSendFee(to, tokenAmount, sent);
    }
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","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":true,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"UpdateBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"UpdatePercentMaxBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"UpdateSellFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMinimumSwapback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"updatePercentMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260056006819055600755600a600981905580546001600160a01b0319908116739e5c82d39ae0a99df63060faaafeb73fb1f7564017909155600d805490911661dead1790553480156200005657600080fd5b506040518060400160405280600781526020016611985cdd189bdd60ca1b81525060405180604001604052806007815260200166119054d51093d560ca1b8152508160039081620000a8919062000803565b506004620000b7828262000803565b5050600580546001600160a01b031916732d795b5d06e2d9dcaaeed9fa73b49635128ab7899081179091556040519091506000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360006200011c6200045f565b90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001859190620008cf565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f99190620008cf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000247573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026d9190620008cf565b600b80546001600160a01b038086166001600160a01b03199283168117909355600c805491851691909216179055909150620002ae903090600019620004ea565b6001600f6000620002c76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d5482168152600f938490528281208054861660019081179091553082528382208054871682179055600a549092168152918220805490941681179093556200033e6200045f565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190601090620003826005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526010938490528281208054861660019081179091553082528382208054871682179055600a54909216815291822080549094168117909355620003f96200045f565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905562000449620004386005546001600160a01b031690565b69d3c21bcecceda100000062000616565b62000453620006fb565b600e555062000a7e9050565b6000466061819003620004875773d99d1c33f9fc3444f8101754abc46c52416550d191505090565b80603803620004ab577310ed43c718714eb63d5aa57b78b54704e256024e91505090565b80600103620004cf57737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b6001600160a01b038316620005525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000549565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166200066e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000549565b806002600082825462000682919062000917565b90915550506001600160a01b03821660009081526020819052604081208054839290620006b190849062000917565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60004660388114806200070e5750806001145b156200073f5760646200072060025490565b6200072d90600162000933565b6200073991906200094d565b91505090565b6200074d6012600a62000a6d565b6200073990600162000933565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078a57607f821691505b602082108103620007ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075a57600081815260208120601f850160051c81016020861015620007da5750805b601f850160051c820191505b81811015620007fb57828155600101620007e6565b505050505050565b81516001600160401b038111156200081f576200081f6200075f565b620008378162000830845462000775565b84620007b1565b602080601f8311600181146200086f5760008415620008565750858301515b600019600386901b1c1916600185901b178555620007fb565b600085815260208120601f198616915b82811015620008a0578886015182559484019460019091019084016200087f565b5085821015620008bf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008e257600080fd5b81516001600160a01b0381168114620008fa57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156200092d576200092d62000901565b92915050565b80820281158282048414176200092d576200092d62000901565b6000826200096b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620009b157816000190482111562000995576200099562000901565b80851615620009a357918102915b93841c939080029062000975565b509250929050565b600082620009ca575060016200092d565b81620009d9575060006200092d565b8160018114620009f25760028114620009fd5762000a1d565b60019150506200092d565b60ff84111562000a115762000a1162000901565b50506001821b6200092d565b5060208310610133831016604e8410600b841016171562000a42575081810a6200092d565b62000a4e838362000970565b806000190482111562000a655762000a6562000901565b029392505050565b6000620008fa60ff841683620009b9565b6129dc8062000a8e6000396000f3fe6080604052600436106102385760003560e01c806375f0a87411610138578063c0246668116100b0578063e01af92c1161007f578063f2295a3d11610064578063f2295a3d1461069f578063f2fde38b146106b4578063f9d0831a146106d457600080fd5b8063e01af92c14610669578063e2f456051461068957600080fd5b8063c0246668146105ce578063d54f7d5e146105ee578063d559230614610603578063dd62ed3e1461062357600080fd5b806395d89b4111610107578063a9059cbb116100ec578063a9059cbb1461056e578063afa4f3b21461058e578063bb85c6d1146105ae57600080fd5b806395d89b4114610539578063a457c2d71461054e57600080fd5b806375f0a874146104ac578063766ea415146104cc5780637cbbf705146104e25780638da5cb5b1461051b57600080fd5b806339509351116101cb5780634fbee1931161019a5780636ddd17131161017f5780636ddd17131461044757806370a0823114610461578063715018a61461049757600080fd5b80634fbee193146103ee57806362490e151461042757600080fd5b8063395093511461036e57806342966c681461038e578063467abe0a146103ae57806349bd5a5e146103ce57600080fd5b806318160ddd1161020757806318160ddd146102fb5780631d933a4a1461031057806323b872dd14610332578063313ce5671461035257600080fd5b806306fdde0314610244578063087ed9721461026f578063095ea7b3146102935780631694505e146102c357600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b506102596106f4565b60405161026691906124cd565b60405180910390f35b34801561027b57600080fd5b5061028560075481565b604051908152602001610266565b34801561029f57600080fd5b506102b36102ae36600461254e565b610786565b6040519015158152602001610266565b3480156102cf57600080fd5b50600b546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610266565b34801561030757600080fd5b50600254610285565b34801561031c57600080fd5b5061033061032b36600461257a565b61079d565b005b34801561033e57600080fd5b506102b361034d366004612593565b610880565b34801561035e57600080fd5b5060405160128152602001610266565b34801561037a57600080fd5b506102b361038936600461254e565b610964565b34801561039a57600080fd5b506103306103a936600461257a565b6109a0565b3480156103ba57600080fd5b506103306103c936600461257a565b610b1b565b3480156103da57600080fd5b50600c546102e3906001600160a01b031681565b3480156103fa57600080fd5b506102b36104093660046125d4565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561043357600080fd5b5061033061044236600461257a565b610bf9565b34801561045357600080fd5b506011546102b39060ff1681565b34801561046d57600080fd5b5061028561047c3660046125d4565b6001600160a01b031660009081526020819052604090205490565b3480156104a357600080fd5b50610330610c8f565b3480156104b857600080fd5b50600a546102e3906001600160a01b031681565b3480156104d857600080fd5b5061028560065481565b3480156104ee57600080fd5b506102b36104fd3660046125d4565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561052757600080fd5b506005546001600160a01b03166102e3565b34801561054557600080fd5b50610259610d4b565b34801561055a57600080fd5b506102b361056936600461254e565b610d5a565b34801561057a57600080fd5b506102b361058936600461254e565b610e0b565b34801561059a57600080fd5b506103306105a936600461257a565b610e18565b3480156105ba57600080fd5b506103306105c93660046125d4565b610f32565b3480156105da57600080fd5b506103306105e9366004612606565b6111a6565b3480156105fa57600080fd5b506102e3611314565b34801561060f57600080fd5b5061033061061e366004612606565b61139c565b34801561062f57600080fd5b5061028561063e36600461263f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067557600080fd5b5061033061068436600461266d565b611502565b34801561069557600080fd5b50610285600e5481565b3480156106ab57600080fd5b5061028561160d565b3480156106c057600080fd5b506103306106cf3660046125d4565b611661565b3480156106e057600080fd5b506103306106ef3660046125d4565b6117ab565b6060600380546107039061268a565b80601f016020809104026020016040519081016040528092919081815260200182805461072f9061268a565b801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050505050905090565b60006107933384846119b4565b5060015b92915050565b6005546001600160a01b031633146107fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600a81111561084d5760405162461bcd60e51b815260206004820181905260248201527f53656c6c206665652063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107f3565b600781905560405181907f7d59573ec4acab62b908b5c1cde109eb12273d011506abaa850256636a42d54a90600090a250565b6001600160a01b03831660009081526001602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461094e57828110156109415760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016107f3565b61094e85338584036119b4565b610959858585611b0c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161079391859061099b90869061270c565b6119b4565b33610a135760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b60008111610a895760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b33600090815260208190526040902054811115610b0e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b610b183382611f04565b50565b6005546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b600a811115610bc65760405162461bcd60e51b815260206004820152601f60248201527f427579206665652063616e6e6f74206265206d6f7265207468616e203130250060448201526064016107f3565b600681905560405181907fa480a3a15a511fbdc37ae77ae3f490e03ab3688adde11456ce779e6c1e0abaa290600090a250565b6005546001600160a01b03163314610c535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b60098190556040518181527f58e0412e330b2e288fc8fa71a6ccefa3480367be7580019c776391843aeb8670906020015b60405180910390a150565b6005546001600160a01b03163314610ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060600480546107039061268a565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610df45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107f3565b610e0133858584036119b4565b5060019392505050565b6000610793338484611b0c565b6005546001600160a01b03163314610e725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b620186a0610e7f60025490565b610e89919061271f565b8111610efd5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107f3565b600e8190556040518181527fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd90602001610c84565b6005546001600160a01b03163314610f8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b600a546001600160a01b03908116908216036110105760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03811661108c5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0381163b1561110a5760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016107f3565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821783556000918252600f602052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055925492519216917fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9190a250565b6005546001600160a01b031633146112005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036112965760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166000818152600f602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b600046606181900361133b5773d99d1c33f9fc3444f8101754abc46c52416550d191505090565b8060380361135e577310ed43c718714eb63d5aa57b78b54704e256024e91505090565b8060010361138157737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b6005546001600160a01b031633146113f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b03821660009081526010602052604090205481151560ff90911615150361148c5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03821660008181526010602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fd3bba9f57b066c8a2239750ad1063c6bd2f7f30df0a2f2fb5b76d46cb88f388e9101611308565b6005546001600160a01b0316331461155c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b60115481151560ff9091161515036115dc5760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c72656164792061742074686973207374617460448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b601180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600046603881148061161f5750806001145b1561164a57606461162f60025490565b61163a90600161275a565b611644919061271f565b91505090565b6116566012600a612891565b61164490600161275a565b6005546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b0381166117375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b306001600160a01b0382160361185d5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e7360448201526064016107f3565b6001600160a01b03811661189b5760405133904780156108fc02916000818181858888f19350505050158015611897573d6000803e3d6000fd5b5050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192191906128a0565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae91906128b9565b50505050565b6001600160a01b038316611a2f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216611aab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216611c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b80600003611c1d57611c1883836000612089565b505050565b30600090815260208190526040902054600e5481108015908190611c5c5750600d5474010000000000000000000000000000000000000000900460ff16155b8015611c6a575060115460ff165b8015611c835750600c546001600160a01b038581169116145b15611d3357600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600754600654600091611cd99161270c565b90508015611d095730600090815260208190526040902054600a54611d07906001600160a01b0316826122a0565b505b50600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b600d546001600160a01b0386166000908152600f602052604090205460ff74010000000000000000000000000000000000000000909204821615911680611d9257506001600160a01b0385166000908152600f602052604090205460ff165b15611d9b575060005b8015611ef157600c546000906001600160a01b0390811690881603611ea8576000600954118015611de557506001600160a01b03861660009081526010602052604090205460ff16155b15611e875760006064600954611dfa60025490565b611e04919061275a565b611e0e919061271f565b905080861115611e855760405162461bcd60e51b8152602060048201526024808201527f42757920616d6f756e742065786365656473207468652070657263656e744d6160448201527f784275790000000000000000000000000000000000000000000000000000000060648201526084016107f3565b505b606460065486611e97919061275a565b611ea1919061271f565b9050611ed2565b600c546001600160a01b0390811690871603611ece57606460075486611e97919061275a565b5060005b611edc81866128d6565b94508015611eef57611eef873083612089565b505b611efc868686612089565b505050505050565b6001600160a01b038216611f805760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166000908152602081905260409020548181101561200f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038316600090815260208190526040812083830390556002805484929061203e9084906128d6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0383166121055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166121815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038316600090815260208190526040902054818110156122105760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061224790849061270c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229391815260200190565b60405180910390a36119ae565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122d5576122d56128e9565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b9190612918565b8160018151811061237e5761237e6128e9565b6001600160a01b039283166020918202929092010152600b546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac947906123e1908690600090879030904290600401612935565b600060405180830381600087803b1580156123fb57600080fd5b505af115801561240f573d6000803e3d6000fd5b505050506000814761242191906128d6565b90506000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114612470576040519150601f19603f3d011682016040523d82523d6000602084013e612475565b606091505b5050604080516001600160a01b0389168152602081018890528215158183015290519192507fe3c0d2c1304d314101bcb7b988483f9baaf5a56f72e16aa2dc5c7eca4b21570c919081900360600190a1505050505050565b600060208083528351808285015260005b818110156124fa578581018301518582016040015282016124de565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b0381168114610b1857600080fd5b6000806040838503121561256157600080fd5b823561256c81612539565b946020939093013593505050565b60006020828403121561258c57600080fd5b5035919050565b6000806000606084860312156125a857600080fd5b83356125b381612539565b925060208401356125c381612539565b929592945050506040919091013590565b6000602082840312156125e657600080fd5b81356125f181612539565b9392505050565b8015158114610b1857600080fd5b6000806040838503121561261957600080fd5b823561262481612539565b91506020830135612634816125f8565b809150509250929050565b6000806040838503121561265257600080fd5b823561265d81612539565b9150602083013561263481612539565b60006020828403121561267f57600080fd5b81356125f1816125f8565b600181811c9082168061269e57607f821691505b6020821081036126d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610797576107976126dd565b600082612755577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610797576107976126dd565b600181815b808511156127ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156127b0576127b06126dd565b808516156127bd57918102915b93841c9390800290612776565b509250929050565b6000826127e157506001610797565b816127ee57506000610797565b8160018114612804576002811461280e5761282a565b6001915050610797565b60ff84111561281f5761281f6126dd565b50506001821b610797565b5060208310610133831016604e8410600b841016171561284d575081810a610797565b6128578383612771565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612889576128896126dd565b029392505050565b60006125f160ff8416836127d2565b6000602082840312156128b257600080fd5b5051919050565b6000602082840312156128cb57600080fd5b81516125f1816125f8565b81810381811115610797576107976126dd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561292a57600080fd5b81516125f181612539565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129855784516001600160a01b031683529383019391830191600101612960565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a537a9d20ca9850cdac0600713842ad4785b789d6a039c2b9b0a8859185124f764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102385760003560e01c806375f0a87411610138578063c0246668116100b0578063e01af92c1161007f578063f2295a3d11610064578063f2295a3d1461069f578063f2fde38b146106b4578063f9d0831a146106d457600080fd5b8063e01af92c14610669578063e2f456051461068957600080fd5b8063c0246668146105ce578063d54f7d5e146105ee578063d559230614610603578063dd62ed3e1461062357600080fd5b806395d89b4111610107578063a9059cbb116100ec578063a9059cbb1461056e578063afa4f3b21461058e578063bb85c6d1146105ae57600080fd5b806395d89b4114610539578063a457c2d71461054e57600080fd5b806375f0a874146104ac578063766ea415146104cc5780637cbbf705146104e25780638da5cb5b1461051b57600080fd5b806339509351116101cb5780634fbee1931161019a5780636ddd17131161017f5780636ddd17131461044757806370a0823114610461578063715018a61461049757600080fd5b80634fbee193146103ee57806362490e151461042757600080fd5b8063395093511461036e57806342966c681461038e578063467abe0a146103ae57806349bd5a5e146103ce57600080fd5b806318160ddd1161020757806318160ddd146102fb5780631d933a4a1461031057806323b872dd14610332578063313ce5671461035257600080fd5b806306fdde0314610244578063087ed9721461026f578063095ea7b3146102935780631694505e146102c357600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b506102596106f4565b60405161026691906124cd565b60405180910390f35b34801561027b57600080fd5b5061028560075481565b604051908152602001610266565b34801561029f57600080fd5b506102b36102ae36600461254e565b610786565b6040519015158152602001610266565b3480156102cf57600080fd5b50600b546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610266565b34801561030757600080fd5b50600254610285565b34801561031c57600080fd5b5061033061032b36600461257a565b61079d565b005b34801561033e57600080fd5b506102b361034d366004612593565b610880565b34801561035e57600080fd5b5060405160128152602001610266565b34801561037a57600080fd5b506102b361038936600461254e565b610964565b34801561039a57600080fd5b506103306103a936600461257a565b6109a0565b3480156103ba57600080fd5b506103306103c936600461257a565b610b1b565b3480156103da57600080fd5b50600c546102e3906001600160a01b031681565b3480156103fa57600080fd5b506102b36104093660046125d4565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561043357600080fd5b5061033061044236600461257a565b610bf9565b34801561045357600080fd5b506011546102b39060ff1681565b34801561046d57600080fd5b5061028561047c3660046125d4565b6001600160a01b031660009081526020819052604090205490565b3480156104a357600080fd5b50610330610c8f565b3480156104b857600080fd5b50600a546102e3906001600160a01b031681565b3480156104d857600080fd5b5061028560065481565b3480156104ee57600080fd5b506102b36104fd3660046125d4565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561052757600080fd5b506005546001600160a01b03166102e3565b34801561054557600080fd5b50610259610d4b565b34801561055a57600080fd5b506102b361056936600461254e565b610d5a565b34801561057a57600080fd5b506102b361058936600461254e565b610e0b565b34801561059a57600080fd5b506103306105a936600461257a565b610e18565b3480156105ba57600080fd5b506103306105c93660046125d4565b610f32565b3480156105da57600080fd5b506103306105e9366004612606565b6111a6565b3480156105fa57600080fd5b506102e3611314565b34801561060f57600080fd5b5061033061061e366004612606565b61139c565b34801561062f57600080fd5b5061028561063e36600461263f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067557600080fd5b5061033061068436600461266d565b611502565b34801561069557600080fd5b50610285600e5481565b3480156106ab57600080fd5b5061028561160d565b3480156106c057600080fd5b506103306106cf3660046125d4565b611661565b3480156106e057600080fd5b506103306106ef3660046125d4565b6117ab565b6060600380546107039061268a565b80601f016020809104026020016040519081016040528092919081815260200182805461072f9061268a565b801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050505050905090565b60006107933384846119b4565b5060015b92915050565b6005546001600160a01b031633146107fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600a81111561084d5760405162461bcd60e51b815260206004820181905260248201527f53656c6c206665652063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107f3565b600781905560405181907f7d59573ec4acab62b908b5c1cde109eb12273d011506abaa850256636a42d54a90600090a250565b6001600160a01b03831660009081526001602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461094e57828110156109415760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016107f3565b61094e85338584036119b4565b610959858585611b0c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161079391859061099b90869061270c565b6119b4565b33610a135760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b60008111610a895760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b33600090815260208190526040902054811115610b0e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b610b183382611f04565b50565b6005546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b600a811115610bc65760405162461bcd60e51b815260206004820152601f60248201527f427579206665652063616e6e6f74206265206d6f7265207468616e203130250060448201526064016107f3565b600681905560405181907fa480a3a15a511fbdc37ae77ae3f490e03ab3688adde11456ce779e6c1e0abaa290600090a250565b6005546001600160a01b03163314610c535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b60098190556040518181527f58e0412e330b2e288fc8fa71a6ccefa3480367be7580019c776391843aeb8670906020015b60405180910390a150565b6005546001600160a01b03163314610ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060600480546107039061268a565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610df45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107f3565b610e0133858584036119b4565b5060019392505050565b6000610793338484611b0c565b6005546001600160a01b03163314610e725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b620186a0610e7f60025490565b610e89919061271f565b8111610efd5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107f3565b600e8190556040518181527fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd90602001610c84565b6005546001600160a01b03163314610f8c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b600a546001600160a01b03908116908216036110105760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03811661108c5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0381163b1561110a5760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60448201527f747261637400000000000000000000000000000000000000000000000000000060648201526084016107f3565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821783556000918252600f602052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055925492519216917fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9190a250565b6005546001600160a01b031633146112005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036112965760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166000818152600f602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b600046606181900361133b5773d99d1c33f9fc3444f8101754abc46c52416550d191505090565b8060380361135e577310ed43c718714eb63d5aa57b78b54704e256024e91505090565b8060010361138157737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b737a250d5630b4cf539739df2c5dacb4c659f2488d91505090565b6005546001600160a01b031633146113f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b03821660009081526010602052604090205481151560ff90911615150361148c5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b03821660008181526010602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fd3bba9f57b066c8a2239750ad1063c6bd2f7f30df0a2f2fb5b76d46cb88f388e9101611308565b6005546001600160a01b0316331461155c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b60115481151560ff9091161515036115dc5760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c72656164792061742074686973207374617460448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b601180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600046603881148061161f5750806001145b1561164a57606461162f60025490565b61163a90600161275a565b611644919061271f565b91505090565b6116566012600a612891565b61164490600161275a565b6005546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b6001600160a01b0381166117375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f3565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f3565b306001600160a01b0382160361185d5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e7360448201526064016107f3565b6001600160a01b03811661189b5760405133904780156108fc02916000818181858888f19350505050158015611897573d6000803e3d6000fd5b5050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192191906128a0565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561198a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ae91906128b9565b50505050565b6001600160a01b038316611a2f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216611aab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038216611c045760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b80600003611c1d57611c1883836000612089565b505050565b30600090815260208190526040902054600e5481108015908190611c5c5750600d5474010000000000000000000000000000000000000000900460ff16155b8015611c6a575060115460ff165b8015611c835750600c546001600160a01b038581169116145b15611d3357600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600754600654600091611cd99161270c565b90508015611d095730600090815260208190526040902054600a54611d07906001600160a01b0316826122a0565b505b50600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b600d546001600160a01b0386166000908152600f602052604090205460ff74010000000000000000000000000000000000000000909204821615911680611d9257506001600160a01b0385166000908152600f602052604090205460ff165b15611d9b575060005b8015611ef157600c546000906001600160a01b0390811690881603611ea8576000600954118015611de557506001600160a01b03861660009081526010602052604090205460ff16155b15611e875760006064600954611dfa60025490565b611e04919061275a565b611e0e919061271f565b905080861115611e855760405162461bcd60e51b8152602060048201526024808201527f42757920616d6f756e742065786365656473207468652070657263656e744d6160448201527f784275790000000000000000000000000000000000000000000000000000000060648201526084016107f3565b505b606460065486611e97919061275a565b611ea1919061271f565b9050611ed2565b600c546001600160a01b0390811690871603611ece57606460075486611e97919061275a565b5060005b611edc81866128d6565b94508015611eef57611eef873083612089565b505b611efc868686612089565b505050505050565b6001600160a01b038216611f805760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166000908152602081905260409020548181101561200f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038316600090815260208190526040812083830390556002805484929061203e9084906128d6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0383166121055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0382166121815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b038316600090815260208190526040902054818110156122105760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107f3565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061224790849061270c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229391815260200190565b60405180910390a36119ae565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122d5576122d56128e9565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b9190612918565b8160018151811061237e5761237e6128e9565b6001600160a01b039283166020918202929092010152600b546040517f791ac9470000000000000000000000000000000000000000000000000000000081524792919091169063791ac947906123e1908690600090879030904290600401612935565b600060405180830381600087803b1580156123fb57600080fd5b505af115801561240f573d6000803e3d6000fd5b505050506000814761242191906128d6565b90506000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114612470576040519150601f19603f3d011682016040523d82523d6000602084013e612475565b606091505b5050604080516001600160a01b0389168152602081018890528215158183015290519192507fe3c0d2c1304d314101bcb7b988483f9baaf5a56f72e16aa2dc5c7eca4b21570c919081900360600190a1505050505050565b600060208083528351808285015260005b818110156124fa578581018301518582016040015282016124de565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6001600160a01b0381168114610b1857600080fd5b6000806040838503121561256157600080fd5b823561256c81612539565b946020939093013593505050565b60006020828403121561258c57600080fd5b5035919050565b6000806000606084860312156125a857600080fd5b83356125b381612539565b925060208401356125c381612539565b929592945050506040919091013590565b6000602082840312156125e657600080fd5b81356125f181612539565b9392505050565b8015158114610b1857600080fd5b6000806040838503121561261957600080fd5b823561262481612539565b91506020830135612634816125f8565b809150509250929050565b6000806040838503121561265257600080fd5b823561265d81612539565b9150602083013561263481612539565b60006020828403121561267f57600080fd5b81356125f1816125f8565b600181811c9082168061269e57607f821691505b6020821081036126d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610797576107976126dd565b600082612755577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610797576107976126dd565b600181815b808511156127ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156127b0576127b06126dd565b808516156127bd57918102915b93841c9390800290612776565b509250929050565b6000826127e157506001610797565b816127ee57506000610797565b8160018114612804576002811461280e5761282a565b6001915050610797565b60ff84111561281f5761281f6126dd565b50506001821b610797565b5060208310610133831016604e8410600b841016171561284d575081810a610797565b6128578383612771565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612889576128896126dd565b029392505050565b60006125f160ff8416836127d2565b6000602082840312156128b257600080fd5b5051919050565b6000602082840312156128cb57600080fd5b81516125f1816125f8565b81810381811115610797576107976126dd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561292a57600080fd5b81516125f181612539565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129855784516001600160a01b031683529383019391830191600101612960565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a537a9d20ca9850cdac0600713842ad4785b789d6a039c2b9b0a8859185124f764736f6c63430008130033

Deployed Bytecode Sourcemap

17145:9194:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17227:34;;;;;;;;;;;;;;;;;;;772:25:1;;;760:2;745:18;17227:34:0;626:177:1;3937:194:0;;;;;;;;;;-1:-1:-1;3937:194:0;;;;;:::i;:::-;;:::i;:::-;;;1452:14:1;;1445:22;1427:41;;1415:2;1400:18;3937:194:0;1287:187:1;17429:41:0;;;;;;;;;;-1:-1:-1;17429:41:0;;;;-1:-1:-1;;;;;17429:41:0;;;;;;-1:-1:-1;;;;;1670:55:1;;;1652:74;;1640:2;1625:18;17429:41:0;1479:253:1;3278:108:0;;;;;;;;;;-1:-1:-1;3366:12:0;;3278:108;;22079:206;;;;;;;;;;-1:-1:-1;22079:206:0;;;;;:::i;:::-;;:::i;:::-;;4139:622;;;;;;;;;;-1:-1:-1;4139:622:0;;;;;:::i;:::-;;:::i;3177:93::-;;;;;;;;;;-1:-1:-1;3177:93:0;;3260:2;2525:36:1;;2513:2;2498:18;3177:93:0;2383:184:1;4769:290:0;;;;;;;;;;-1:-1:-1;4769:290:0;;;;;:::i;:::-;;:::i;7334:407::-;;;;;;;;;;-1:-1:-1;7334:407:0;;;;;:::i;:::-;;:::i;21869:202::-;;;;;;;;;;-1:-1:-1;21869:202:0;;;;;:::i;:::-;;:::i;17477:28::-;;;;;;;;;;-1:-1:-1;17477:28:0;;;;-1:-1:-1;;;;;17477:28:0;;;21597:126;;;;;;;;;;-1:-1:-1;21597:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21687:28:0;21663:4;21687:28;;;:19;:28;;;;;;;;;21597:126;22293:160;;;;;;;;;;-1:-1:-1;22293:160:0;;;;;:::i;:::-;;:::i;17780:23::-;;;;;;;;;;-1:-1:-1;17780:23:0;;;;;;;;3394:143;;;;;;;;;;-1:-1:-1;3394:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;3511:18:0;3484:7;3511:18;;;;;;;;;;;;3394:143;2107:148;;;;;;;;;;;;;:::i;17345:75::-;;;;;;;;;;-1:-1:-1;17345:75:0;;;;-1:-1:-1;;;;;17345:75:0;;;17187:33;;;;;;;;;;;;;;;;21731:130;;;;;;;;;;-1:-1:-1;21731:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;21823:30:0;21799:4;21823:30;;;:21;:30;;;;;;;;;21731:130;1893:79;;;;;;;;;;-1:-1:-1;1958:6:0;;-1:-1:-1;;;;;1958:6:0;1893:79;;3065:104;;;;;;;;;;;;;:::i;5067:475::-;;;;;;;;;;-1:-1:-1;5067:475:0;;;;;:::i;:::-;;:::i;3545:200::-;;;;;;;;;;-1:-1:-1;3545:200:0;;;;;:::i;:::-;;:::i;23308:328::-;;;;;;;;;;-1:-1:-1;23308:328:0;;;;;:::i;:::-;;:::i;22461:651::-;;;;;;;;;;-1:-1:-1;22461:651:0;;;;;:::i;:::-;;:::i;20865:354::-;;;;;;;;;;-1:-1:-1;20865:354:0;;;;;:::i;:::-;;:::i;19577:443::-;;;;;;;;;;;;;:::i;21227:362::-;;;;;;;;;;-1:-1:-1;21227:362:0;;;;;:::i;:::-;;:::i;3753:176::-;;;;;;;;;;-1:-1:-1;3753:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3894:18:0;;;3867:7;3894:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3753:176;23120:180;;;;;;;;;;-1:-1:-1;23120:180:0;;;;;:::i;:::-;;:::i;17616:33::-;;;;;;;;;;;;;;;;20028:257;;;;;;;;;;;;;:::i;2263:281::-;;;;;;;;;;-1:-1:-1;2263:281:0;;;;;:::i;:::-;;:::i;20293:441::-;;;;;;;;;;-1:-1:-1;20293:441:0;;;;;:::i;:::-;;:::i;2957:100::-;3011:13;3044:5;3037:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:100;:::o;3937:194::-;4045:4;4062:39;1207:10;4085:7;4094:6;4062:8;:39::i;:::-;-1:-1:-1;4119:4:0;3937:194;;;;;:::o;22079:206::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;;;;;;;;;22166:2:::1;22156:6;:12;;22148:57;;;::::0;-1:-1:-1;;;22148:57:0;;5209:2:1;22148:57:0::1;::::0;::::1;5191:21:1::0;;;5228:18;;;5221:30;5287:34;5267:18;;;5260:62;5339:18;;22148:57:0::1;5007:356:1::0;22148:57:0::1;22216:15;:24:::0;;;22256:21:::1;::::0;22234:6;;22256:21:::1;::::0;;;::::1;22079:206:::0;:::o;4139:622::-;-1:-1:-1;;;;;4323:19:0;;4279:4;4323:19;;;:11;:19;;;;;;;;1207:10;4323:33;;;;;;;;4391:17;4371:37;;4367:314;;4471:6;4451:16;:26;;4425:128;;;;-1:-1:-1;;;4425:128:0;;5570:2:1;4425:128:0;;;5552:21:1;5609:2;5589:18;;;5582:30;5648:34;5628:18;;;5621:62;5719:10;5699:18;;;5692:38;5747:19;;4425:128:0;5368:404:1;4425:128:0;4597:57;4606:6;1207:10;4647:6;4628:16;:25;4597:8;:57::i;:::-;4693:36;4703:6;4711:9;4722:6;4693:9;:36::i;:::-;-1:-1:-1;4749:4:0;;4139:622;-1:-1:-1;;;;4139:622:0:o;4769:290::-;1207:10;4882:4;4971:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4971:34:0;;;;;;;;;;4882:4;;4899:130;;4949:7;;4971:47;;5008:10;;4971:47;:::i;:::-;4899:8;:130::i;7334:407::-;1207:10;7390:109;;;;-1:-1:-1;;;7390:109:0;;6298:2:1;7390:109:0;;;6280:21:1;6337:2;6317:18;;;6310:30;6376:34;6356:18;;;6349:62;6447:3;6427:18;;;6420:31;6468:19;;7390:109:0;6096:397:1;7390:109:0;7527:1;7518:6;:10;7510:57;;;;-1:-1:-1;;;7510:57:0;;6700:2:1;7510:57:0;;;6682:21:1;6739:2;6719:18;;;6712:30;6778:34;6758:18;;;6751:62;6849:4;6829:18;;;6822:32;6871:19;;7510:57:0;6498:398:1;7510:57:0;1207:10;7600:9;:23;;;;;;;;;;;:33;-1:-1:-1;7600:33:0;7578:117;;;;-1:-1:-1;;;7578:117:0;;6700:2:1;7578:117:0;;;6682:21:1;6739:2;6719:18;;;6712:30;6778:34;6758:18;;;6751:62;6849:4;6829:18;;;6822:32;6871:19;;7578:117:0;6498:398:1;7578:117:0;7706:27;1207:10;7726:6;7706:5;:27::i;:::-;7334:407;:::o;21869:202::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;21955:2:::1;21945:6;:12;;21937:56;;;::::0;-1:-1:-1;;;21937:56:0;;7103:2:1;21937:56:0::1;::::0;::::1;7085:21:1::0;7142:2;7122:18;;;7115:30;7181:33;7161:18;;;7154:61;7232:18;;21937:56:0::1;6901:355:1::0;21937:56:0::1;22004:14;:23:::0;;;22043:20:::1;::::0;22021:6;;22043:20:::1;::::0;;;::::1;21869:202:::0;:::o;22293:160::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;22372:13:::1;:26:::0;;;22414:31:::1;::::0;772:25:1;;;22414:31:0::1;::::0;760:2:1;745:18;22414:31:0::1;;;;;;;;22293:160:::0;:::o;2107:148::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;2198:6:::1;::::0;2177:40:::1;::::0;2214:1:::1;::::0;-1:-1:-1;;;;;2198:6:0::1;::::0;2177:40:::1;::::0;2214:1;;2177:40:::1;2228:6;:19:::0;;;::::1;::::0;;2107:148::o;3065:104::-;3121:13;3154:7;3147:14;;;;;:::i;5067:475::-;1207:10;5185:4;5229:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5229:34:0;;;;;;;;;;5296:35;;;;5274:122;;;;-1:-1:-1;;;5274:122:0;;7463:2:1;5274:122:0;;;7445:21:1;7502:2;7482:18;;;7475:30;7541:34;7521:18;;;7514:62;7612:7;7592:18;;;7585:35;7637:19;;5274:122:0;7261:401:1;5274:122:0;5432:67;1207:10;5455:7;5483:15;5464:16;:34;5432:8;:67::i;:::-;-1:-1:-1;5530:4:0;;5067:475;-1:-1:-1;;;5067:475:0:o;3545:200::-;3656:4;3673:42;1207:10;3697:9;3708:6;3673:9;:42::i;23308:328::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;23438:6:::1;23422:13;3366:12:::0;;;3278:108;23422:13:::1;:22;;;;:::i;:::-;23410:9;:34;23388:147;;;::::0;-1:-1:-1;;;23388:147:0;;8148:2:1;23388:147:0::1;::::0;::::1;8130:21:1::0;8187:2;8167:18;;;8160:30;8226:34;8206:18;;;8199:62;8297:33;8277:18;;;8270:61;8348:19;;23388:147:0::1;7946:427:1::0;23388:147:0::1;23546:18;:30:::0;;;23592:36:::1;::::0;772:25:1;;;23592:36:0::1;::::0;760:2:1;745:18;23592:36:0::1;626:177:1::0;22461:651:0;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;22606:15:::1;::::0;-1:-1:-1;;;;;22606:15:0;;::::1;22586:35:::0;;::::1;::::0;22564:125:::1;;;::::0;-1:-1:-1;;;22564:125:0;;8580:2:1;22564:125:0::1;::::0;::::1;8562:21:1::0;8619:2;8599:18;;;8592:30;8658:34;8638:18;;;8631:62;8729:10;8709:18;;;8702:38;8757:19;;22564:125:0::1;8378:404:1::0;22564:125:0::1;-1:-1:-1::0;;;;;22722:30:0;::::1;22700:123;;;::::0;-1:-1:-1;;;22700:123:0;;8989:2:1;22700:123:0::1;::::0;::::1;8971:21:1::0;9028:2;9008:18;;;9001:30;9067:34;9047:18;;;9040:62;9138:13;9118:18;;;9111:41;9169:19;;22700:123:0::1;8787:407:1::0;22700:123:0::1;-1:-1:-1::0;;;;;20826:19:0;;;:23;22834:116:::1;;;::::0;-1:-1:-1;;;22834:116:0;;9401:2:1;22834:116:0::1;::::0;::::1;9383:21:1::0;9440:2;9420:18;;;9413:30;9479:34;9459:18;;;9452:62;9550:7;9530:18;;;9523:35;9575:19;;22834:116:0::1;9199:401:1::0;22834:116:0::1;22961:15;:34:::0;;;::::1;-1:-1:-1::0;;;;;22961:34:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;23006:36:0;;;:19:::1;:36;::::0;;;;;:43;;;::::1;-1:-1:-1::0;23006:43:0::1;::::0;;23088:15;;23065:39;;23088:15;::::1;::::0;23065:39:::1;::::0;-1:-1:-1;23065:39:0::1;22461:651:::0;:::o;20865:354::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;-1:-1:-1;;;;;20999:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;20977:132:::1;;;::::0;-1:-1:-1;;;20977:132:0;;9807:2:1;20977:132:0::1;::::0;::::1;9789:21:1::0;9846:2;9826:18;;;9819:30;9885:34;9865:18;;;9858:62;9956:12;9936:18;;;9929:40;9986:19;;20977:132:0::1;9605:406:1::0;20977:132:0::1;-1:-1:-1::0;;;;;21120:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;21177:34;;1427:41:1;;;21177:34:0::1;::::0;1400:18:1;21177:34:0::1;;;;;;;;20865:354:::0;;:::o;19577:443::-;19626:7;19697:9;19737:2;19731:8;;;19727:285;;19748:42;19741:49;;;19577:443;:::o;19727:285::-;19810:2;19816;19810:8;19806:206;;19827:42;19820:49;;;19577:443;:::o;19806:206::-;19889:2;19895:1;19889:7;19885:127;;19905:42;19898:49;;;19577:443;:::o;19885:127::-;19970:42;19963:49;;;19577:443;:::o;21227:362::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;-1:-1:-1;;;;;21363:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;:42;::::1;;:30;::::0;;::::1;:42;;::::0;21341:134:::1;;;::::0;-1:-1:-1;;;21341:134:0;;9807:2:1;21341:134:0::1;::::0;::::1;9789:21:1::0;9846:2;9826:18;;;9819:30;9885:34;9865:18;;;9858:62;9956:12;9936:18;;;9929:40;9986:19;;21341:134:0::1;9605:406:1::0;21341:134:0::1;-1:-1:-1::0;;;;;21486:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;;;;:41;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;21545:36;;1427:41:1;;;21545:36:0::1;::::0;1400:18:1;21545:36:0::1;1287:187:1::0;23120:180:0;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;23197:11:::1;::::0;:23;::::1;;:11;::::0;;::::1;:23;;::::0;23189:70:::1;;;::::0;-1:-1:-1;;;23189:70:0;;10218:2:1;23189:70:0::1;::::0;::::1;10200:21:1::0;10257:2;10237:18;;;10230:30;10296:34;10276:18;;;10269:62;10367:4;10347:18;;;10340:32;10389:19;;23189:70:0::1;10016:398:1::0;23189:70:0::1;23270:11;:22:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;23120:180::o;20028:257::-;20079:7;20150:9;20192:2;20186:8;;;:19;;;20198:2;20204:1;20198:7;20186:19;20182:57;;;20236:3;20219:13;3366:12;;;3278:108;20219:13;20215:17;;:1;:17;:::i;:::-;20214:25;;;;:::i;:::-;20207:32;;;20028:257;:::o;20182:57::-;20261:16;3260:2;20261;:16;:::i;:::-;20257:20;;:1;:20;:::i;2263:281::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;-1:-1:-1;;;;;2366:22:0;::::1;2344:110;;;::::0;-1:-1:-1;;;2344:110:0;;12297:2:1;2344:110:0::1;::::0;::::1;12279:21:1::0;12336:2;12316:18;;;12309:30;12375:34;12355:18;;;12348:62;12446:8;12426:18;;;12419:36;12472:19;;2344:110:0::1;12095:402:1::0;2344:110:0::1;2491:6;::::0;2470:38:::1;::::0;-1:-1:-1;;;;;2470:38:0;;::::1;::::0;2491:6:::1;::::0;2470:38:::1;::::0;2491:6:::1;::::0;2470:38:::1;2519:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;2519:17:0;;;::::1;::::0;;;::::1;::::0;;2263:281::o;20293:441::-;2020:6;;-1:-1:-1;;;;;2020:6:0;1207:10;2020:22;2012:67;;;;-1:-1:-1;;;2012:67:0;;4848:2:1;2012:67:0;;;4830:21:1;;;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4978:18;;2012:67:0;4646:356:1;2012:67:0;20389:4:::1;-1:-1:-1::0;;;;;20372:22:0;::::1;::::0;20364:67:::1;;;::::0;-1:-1:-1;;;20364:67:0;;12704:2:1;20364:67:0::1;::::0;::::1;12686:21:1::0;;;12723:18;;;12716:30;12782:34;12762:18;;;12755:62;12834:18;;20364:67:0::1;12502:356:1::0;20364:67:0::1;-1:-1:-1::0;;;;;20446:21:0;::::1;20442:126;;20484:51;::::0;20492:10:::1;::::0;20513:21:::1;20484:51:::0;::::1;;;::::0;::::1;::::0;;;20513:21;20492:10;20484:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;7334:407:::0;:::o;20442:126::-:1;20640:35;::::0;;;;20669:4:::1;20640:35;::::0;::::1;1652:74:1::0;20605:5:0;;20578:17:::1;::::0;-1:-1:-1;;;;;20640:20:0;::::1;::::0;::::1;::::0;1625:18:1;;20640:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20686:40;::::0;;;;20706:10:::1;20686:40;::::0;::::1;13226:74:1::0;13316:18;;;13309:34;;;20622:53:0;;-1:-1:-1;;;;;;20686:19:0;::::1;::::0;::::1;::::0;13199:18:1;;20686:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20353:381;;20293:441:::0;:::o;7749:380::-;-1:-1:-1;;;;;7885:19:0;;7877:68;;;;-1:-1:-1;;;7877:68:0;;13806:2:1;7877:68:0;;;13788:21:1;13845:2;13825:18;;;13818:30;13884:34;13864:18;;;13857:62;13955:6;13935:18;;;13928:34;13979:19;;7877:68:0;13604:400:1;7877:68:0;-1:-1:-1;;;;;7964:21:0;;7956:68;;;;-1:-1:-1;;;7956:68:0;;14211:2:1;7956:68:0;;;14193:21:1;14250:2;14230:18;;;14223:30;14289:34;14269:18;;;14262:62;14360:4;14340:18;;;14333:32;14382:19;;7956:68:0;14009:398:1;7956:68:0;-1:-1:-1;;;;;8037:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8089:32;;772:25:1;;;8089:32:0;;745:18:1;8089:32:0;;;;;;;7749:380;;;:::o;23644:2001::-;-1:-1:-1;;;;;23776:18:0;;23768:68;;;;-1:-1:-1;;;23768:68:0;;14614:2:1;23768:68:0;;;14596:21:1;14653:2;14633:18;;;14626:30;14692:34;14672:18;;;14665:62;14763:7;14743:18;;;14736:35;14788:19;;23768:68:0;14412:401:1;23768:68:0;-1:-1:-1;;;;;23855:16:0;;23847:64;;;;-1:-1:-1;;;23847:64:0;;15020:2:1;23847:64:0;;;15002:21:1;15059:2;15039:18;;;15032:30;15098:34;15078:18;;;15071:62;15169:5;15149:18;;;15142:33;15192:19;;23847:64:0;14818:399:1;23847:64:0;23928:6;23938:1;23928:11;23924:93;;23956:28;23972:4;23978:2;23982:1;23956:15;:28::i;:::-;23644:2001;;;:::o;23924:93::-;24078:4;24029:28;3511:18;;;;;;;;;;;24136;;24112:42;;;;;;;24171:20;;-1:-1:-1;24183:8:0;;;;;;;24182:9;24171:20;:35;;;;-1:-1:-1;24195:11:0;;;;24171:35;:58;;;;-1:-1:-1;24216:13:0;;-1:-1:-1;;;;;24210:19:0;;;24216:13;;24210:19;24171:58;24167:414;;;24246:8;:15;;;;;;;;24320;;24303:14;;24246:15;;24303:32;;;:::i;:::-;24278:57;-1:-1:-1;24356:18:0;;24352:185;;24439:4;24395:23;3511:18;;;;;;;;;;;24487:15;;24464:57;;-1:-1:-1;;;;;24487:15:0;3511:18;24464:14;:57::i;:::-;24376:161;24352:185;-1:-1:-1;24553:8:0;:16;;;;;;24167:414;24609:8;;-1:-1:-1;;;;;24634:25:0;;24593:12;24634:25;;;:19;:25;;;;;;24609:8;;;;;;;24608:9;;24634:25;;:52;;-1:-1:-1;;;;;;24663:23:0;;;;;;:19;:23;;;;;;;;24634:52;24630:100;;;-1:-1:-1;24713:5:0;24630:100;24746:7;24742:852;;;24809:13;;24770:12;;-1:-1:-1;;;;;24809:13:0;;;24801:21;;;;24797:652;;24930:1;24914:13;;:17;:47;;;;-1:-1:-1;;;;;;24936:25:0;;;;;;:21;:25;;;;;;;;24935:26;24914:47;24910:311;;;24986:14;25037:3;25020:13;;25004;3366:12;;;3278:108;25004:13;:29;;;;:::i;:::-;25003:37;;;;:::i;:::-;24986:54;;25107:6;25097;:16;;25063:138;;;;-1:-1:-1;;;25063:138:0;;15424:2:1;25063:138:0;;;15406:21:1;15463:2;15443:18;;;15436:30;15502:34;15482:18;;;15475:62;15573:6;15553:18;;;15546:34;15597:19;;25063:138:0;15222:400:1;25063:138:0;24963:258;24910:311;25276:3;25258:14;;25249:6;:23;;;;:::i;:::-;25248:31;;;;:::i;:::-;25241:38;;24797:652;;;25311:13;;-1:-1:-1;;;;;25311:13:0;;;25305:19;;;;25301:148;;25381:3;25362:15;;25353:6;:24;;;;:::i;25301:148::-;-1:-1:-1;25432:1:0;25301:148;25463:14;25473:4;25463:14;;:::i;:::-;;-1:-1:-1;25496:8:0;;25492:91;;25525:42;25541:4;25555;25562;25525:15;:42::i;:::-;24755:839;24742:852;25604:33;25620:4;25626:2;25630:6;25604:15;:33::i;:::-;23757:1888;;;23644:2001;;;:::o;6735:591::-;-1:-1:-1;;;;;6819:21:0;;6811:67;;;;-1:-1:-1;;;6811:67:0;;6298:2:1;6811:67:0;;;6280:21:1;6337:2;6317:18;;;6310:30;6376:34;6356:18;;;6349:62;6447:3;6427:18;;;6420:31;6468:19;;6811:67:0;6096:397:1;6811:67:0;-1:-1:-1;;;;;6978:18:0;;6953:22;6978:18;;;;;;;;;;;7015:24;;;;7007:71;;;;-1:-1:-1;;;7007:71:0;;6700:2:1;7007:71:0;;;6682:21:1;6739:2;6719:18;;;6712:30;6778:34;6758:18;;;6751:62;6849:4;6829:18;;;6822:32;6871:19;;7007:71:0;6498:398:1;7007:71:0;-1:-1:-1;;;;;7114:18:0;;:9;:18;;;;;;;;;;7135:23;;;7114:44;;7180:12;:22;;7152:6;;7114:9;7180:22;;7152:6;;7180:22;:::i;:::-;;;;-1:-1:-1;;7220:37:0;;772:25:1;;;7246:1:0;;-1:-1:-1;;;;;7220:37:0;;;;;760:2:1;745:18;7220:37:0;;;;;;;23644:2001;;;:::o;5550:770::-;-1:-1:-1;;;;;5690:20:0;;5682:70;;;;-1:-1:-1;;;5682:70:0;;14614:2:1;5682:70:0;;;14596:21:1;14653:2;14633:18;;;14626:30;14692:34;14672:18;;;14665:62;14763:7;14743:18;;;14736:35;14788:19;;5682:70:0;14412:401:1;5682:70:0;-1:-1:-1;;;;;5771:23:0;;5763:71;;;;-1:-1:-1;;;5763:71:0;;15020:2:1;5763:71:0;;;15002:21:1;15059:2;15039:18;;;15032:30;15098:34;15078:18;;;15071:62;15169:5;15149:18;;;15142:33;15192:19;;5763:71:0;14818:399:1;5763:71:0;-1:-1:-1;;;;;5931:17:0;;5907:21;5931:17;;;;;;;;;;;5981:23;;;;5959:111;;;;-1:-1:-1;;;5959:111:0;;15962:2:1;5959:111:0;;;15944:21:1;16001:2;15981:18;;;15974:30;16040:34;16020:18;;;16013:62;16111:8;16091:18;;;16084:36;16137:19;;5959:111:0;15760:402:1;5959:111:0;-1:-1:-1;;;;;6106:17:0;;;:9;:17;;;;;;;;;;;6126:22;;;6106:42;;6170:20;;;;;;;;:30;;6142:6;;6106:9;6170:30;;6142:6;;6170:30;:::i;:::-;;;;;;;;6235:9;-1:-1:-1;;;;;6218:35:0;6227:6;-1:-1:-1;;;;;6218:35:0;;6246:6;6218:35;;;;772:25:1;;760:2;745:18;;626:177;6218:35:0;;;;;;;;6266:46;23644:2001;25653:683;25761:16;;;25775:1;25761:16;;;;;;;;25737:21;;25761:16;;;;;;;;;;-1:-1:-1;25761:16:0;25737:40;;25806:4;25788;25793:1;25788:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25788:23:0;;;:7;;;;;;;;;;:23;;;;25832:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;25788:7;;25832:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25822:4;25827:1;25822:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25822:32:0;;;:7;;;;;;;;;:32;25921:15;;:224;;;;;25889:21;;25921:15;;;;;:66;;:224;;26002:11;;25865:21;;26072:4;;26099;;26119:15;;25921:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26156:19;26202:13;26178:21;:37;;;;:::i;:::-;26156:59;;26227:9;26242:2;-1:-1:-1;;;;;26242:7:0;26257:11;26242:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26291:37:0;;;-1:-1:-1;;;;;18264:55:1;;18246:74;;18351:2;18336:18;;18329:34;;;18406:14;;18399:22;18379:18;;;18372:50;26291:37:0;;18406:14:1;;-1:-1:-1;26291:37:0;;;;;;18234:2:1;26291:37:0;;;25726:610;;;;25653:683;;:::o;14:607:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;808:154::-;-1:-1:-1;;;;;887:5:1;883:54;876:5;873:65;863:93;;952:1;949;942:12;967:315;1035:6;1043;1096:2;1084:9;1075:7;1071:23;1067:32;1064:52;;;1112:1;1109;1102:12;1064:52;1151:9;1138:23;1170:31;1195:5;1170:31;:::i;:::-;1220:5;1272:2;1257:18;;;;1244:32;;-1:-1:-1;;;967:315:1:o;1737:180::-;1796:6;1849:2;1837:9;1828:7;1824:23;1820:32;1817:52;;;1865:1;1862;1855:12;1817:52;-1:-1:-1;1888:23:1;;1737:180;-1:-1:-1;1737:180:1:o;1922:456::-;1999:6;2007;2015;2068:2;2056:9;2047:7;2043:23;2039:32;2036:52;;;2084:1;2081;2074:12;2036:52;2123:9;2110:23;2142:31;2167:5;2142:31;:::i;:::-;2192:5;-1:-1:-1;2249:2:1;2234:18;;2221:32;2262:33;2221:32;2262:33;:::i;:::-;1922:456;;2314:7;;-1:-1:-1;;;2368:2:1;2353:18;;;;2340:32;;1922:456::o;2803:247::-;2862:6;2915:2;2903:9;2894:7;2890:23;2886:32;2883:52;;;2931:1;2928;2921:12;2883:52;2970:9;2957:23;2989:31;3014:5;2989:31;:::i;:::-;3039:5;2803:247;-1:-1:-1;;;2803:247:1:o;3055:118::-;3141:5;3134:13;3127:21;3120:5;3117:32;3107:60;;3163:1;3160;3153:12;3178:382;3243:6;3251;3304:2;3292:9;3283:7;3279:23;3275:32;3272:52;;;3320:1;3317;3310:12;3272:52;3359:9;3346:23;3378:31;3403:5;3378:31;:::i;:::-;3428:5;-1:-1:-1;3485:2:1;3470:18;;3457:32;3498:30;3457:32;3498:30;:::i;:::-;3547:7;3537:17;;;3178:382;;;;;:::o;3565:388::-;3633:6;3641;3694:2;3682:9;3673:7;3669:23;3665:32;3662:52;;;3710:1;3707;3700:12;3662:52;3749:9;3736:23;3768:31;3793:5;3768:31;:::i;:::-;3818:5;-1:-1:-1;3875:2:1;3860:18;;3847:32;3888:33;3847:32;3888:33;:::i;3958:241::-;4014:6;4067:2;4055:9;4046:7;4042:23;4038:32;4035:52;;;4083:1;4080;4073:12;4035:52;4122:9;4109:23;4141:28;4163:5;4141:28;:::i;4204:437::-;4283:1;4279:12;;;;4326;;;4347:61;;4401:4;4393:6;4389:17;4379:27;;4347:61;4454:2;4446:6;4443:14;4423:18;4420:38;4417:218;;4491:77;4488:1;4481:88;4592:4;4589:1;4582:15;4620:4;4617:1;4610:15;4417:218;;4204:437;;;:::o;5777:184::-;5829:77;5826:1;5819:88;5926:4;5923:1;5916:15;5950:4;5947:1;5940:15;5966:125;6031:9;;;6052:10;;;6049:36;;;6065:18;;:::i;7667:274::-;7707:1;7733;7723:189;;7768:77;7765:1;7758:88;7869:4;7866:1;7859:15;7897:4;7894:1;7887:15;7723:189;-1:-1:-1;7926:9:1;;7667:274::o;10419:168::-;10492:9;;;10523;;10540:15;;;10534:22;;10520:37;10510:71;;10561:18;;:::i;10592:482::-;10681:1;10724:5;10681:1;10738:330;10759:7;10749:8;10746:21;10738:330;;;10878:4;10810:66;10806:77;10800:4;10797:87;10794:113;;;10887:18;;:::i;:::-;10937:7;10927:8;10923:22;10920:55;;;10957:16;;;;10920:55;11036:22;;;;10996:15;;;;10738:330;;;10742:3;10592:482;;;;;:::o;11079:866::-;11128:5;11158:8;11148:80;;-1:-1:-1;11199:1:1;11213:5;;11148:80;11247:4;11237:76;;-1:-1:-1;11284:1:1;11298:5;;11237:76;11329:4;11347:1;11342:59;;;;11415:1;11410:130;;;;11322:218;;11342:59;11372:1;11363:10;;11386:5;;;11410:130;11447:3;11437:8;11434:17;11431:43;;;11454:18;;:::i;:::-;-1:-1:-1;;11510:1:1;11496:16;;11525:5;;11322:218;;11624:2;11614:8;11611:16;11605:3;11599:4;11596:13;11592:36;11586:2;11576:8;11573:16;11568:2;11562:4;11559:12;11555:35;11552:77;11549:159;;;-1:-1:-1;11661:19:1;;;11693:5;;11549:159;11740:34;11765:8;11759:4;11740:34;:::i;:::-;11870:6;11802:66;11798:79;11789:7;11786:92;11783:118;;;11881:18;;:::i;:::-;11919:20;;11079:866;-1:-1:-1;;;11079:866:1:o;11950:140::-;12008:5;12037:47;12078:4;12068:8;12064:19;12058:4;12037:47;:::i;12863:184::-;12933:6;12986:2;12974:9;12965:7;12961:23;12957:32;12954:52;;;13002:1;12999;12992:12;12954:52;-1:-1:-1;13025:16:1;;12863:184;-1:-1:-1;12863:184:1:o;13354:245::-;13421:6;13474:2;13462:9;13453:7;13449:23;13445:32;13442:52;;;13490:1;13487;13480:12;13442:52;13522:9;13516:16;13541:28;13563:5;13541:28;:::i;15627:128::-;15694:9;;;15715:11;;;15712:37;;;15729:18;;:::i;16356:184::-;16408:77;16405:1;16398:88;16505:4;16502:1;16495:15;16529:4;16526:1;16519:15;16545:251;16615:6;16668:2;16656:9;16647:7;16643:23;16639:32;16636:52;;;16684:1;16681;16674:12;16636:52;16716:9;16710:16;16735:31;16760:5;16735:31;:::i;16801:1026::-;17063:4;17111:3;17100:9;17096:19;17142:6;17131:9;17124:25;17168:2;17206:6;17201:2;17190:9;17186:18;17179:34;17249:3;17244:2;17233:9;17229:18;17222:31;17273:6;17308;17302:13;17339:6;17331;17324:22;17377:3;17366:9;17362:19;17355:26;;17416:2;17408:6;17404:15;17390:29;;17437:1;17447:218;17461:6;17458:1;17455:13;17447:218;;;17526:13;;-1:-1:-1;;;;;17522:62:1;17510:75;;17640:15;;;;17605:12;;;;17483:1;17476:9;17447:218;;;-1:-1:-1;;;;;;;17721:55:1;;;;17716:2;17701:18;;17694:83;-1:-1:-1;;;17808:3:1;17793:19;17786:35;17682:3;16801:1026;-1:-1:-1;;;16801:1026:1:o

Swarm Source

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