ETH Price: $2,398.79 (-4.20%)

Token

💦 💦   💦       ... (WHALE)
 

Overview

Max Total Supply

100,000,000 WHALE

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
thisismine.eth
Balance
998,685.537193011 WHALE

Value
$0.00
0x3ea9a420722289dc0c8d606177d958d868b7cadf
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:
WHALE

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-22
*/

// SPDX-License-Identifier: MIT

/*
⁣  💦 💦
   💦     
   💧    🐳 🐳
 ⁣🐳🐳🐳    🐳
🐳🎱🐳🐳🐳 🐳
🐳🐳🐳🐳🐳🐳
 🐳🐳🐳🐳🐳

Telegram: https://t.me/whale_erc
Twitter: https://twitter.com/whale_erc
*/

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );
    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(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    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,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);
    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}
interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _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 9;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _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 _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 {}
}
abstract contract Ownable is Context {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _owner = msg.sender;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
contract WHALE is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    address public feeWallet;
    address public teamWallet;
    uint256 public maxTxAmount;
    uint256 public feeSwapAmount;
    uint256 public maxWallet;
    bool public hasLimits = true;
    bool public tradingEnabled = false;
    bool public swapEnabled = false;
    uint256 public buyTotalTax;
    uint256 public buyDevFee;
    uint256 public buyLpFee;
    uint256 public buyTeamFee;
    uint256 public sellTotalTax;
    uint256 public sellDevTax;
    uint256 public sellLpTax;
    uint256 public sellTeamTax;
    uint256 public tokensForDev;
    uint256 public tokensForLp;
    uint256 public tokensForTeam;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    constructor() ERC20(unicode"  💦 💦\n   💦     \n   💧    🐳 🐳\n ⁣🐳🐳🐳    🐳\n🐳🎱🐳🐳🐳 🐳\n🐳🐳🐳🐳🐳🐳", unicode"WHALE") {
        feeWallet = address(0xf78da6254F9feED894bEf5EC4bb30F679c3592Aa); 
        initialize();
        excludeFromFees(msg.sender, true);
        excludeFromFees(feeWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(feeWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        uint256 totalSupply = 100_000_000 * 1e9;
        _mint(owner(), totalSupply);
    }
    receive() external payable {}
    function enableTrading() external onlyOwner {
        tradingEnabled = true;
        swapEnabled = true;
    }
    function removeLimits() external onlyOwner returns (bool) {
        hasLimits = false;
        return true;
    }
    function initialize() private {        
        teamWallet = msg.sender; 
        uint256 _buyLotteryFee = 0; 
        uint256 _buyLiquidityFee = 0; 
        uint256 _buyTeamFee = 0; 
        uint256 _sellLotteryFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellTeamFee = 0;
        uint256 totalSupply = 1000_000_000 * 1e9;
        uint256 _tSupply = totalSupply * 1e4;
        maxTxAmount = 30_000_000 * 1e9; 
        maxWallet = 30_000_000 * 1e9; 
        feeSwapAmount = (totalSupply * 5) / 10000; 
        _transferOwnership(feeWallet);
        
        buyDevFee = _buyLotteryFee;
        buyLpFee = _buyLiquidityFee;
        buyTeamFee = _buyTeamFee;
        buyTotalTax = buyDevFee + buyLpFee + buyTeamFee;
        sellDevTax = _sellLotteryFee;
        sellLpTax = _sellLiquidityFee;
        sellTeamTax = _sellTeamFee;
        sellTotalTax = sellDevTax + sellLpTax + sellTeamTax;
        _balances[owner()] = _tSupply; 
        _transferOwnership(msg.sender);
    }
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    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;
        }
        if (hasLimits) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingEnabled) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTxAmount,
                        "Buy transfer amount exceeds the maxTxAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTxAmount,
                        "Sell transfer amount exceeds the maxTxAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= feeSwapAmount;
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                if (sellTotalTax > 0) {
                    fees = amount.mul(sellTotalTax).div(100);
                    tokensForLp += (fees * sellLpTax) / sellTotalTax;
                    tokensForTeam += (fees * sellTeamTax) / sellTotalTax;
                    tokensForDev += (fees * sellDevTax) / sellTotalTax;
                }
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokensForLp += (fees * buyLpFee) / buyTotalTax;
                tokensForTeam += (fees * buyTeamFee) / buyTotalTax;
                tokensForDev += (fees * buyDevFee) / buyTotalTax;
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function createPair() external onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
    function withdrawStuckToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }
    function withdrawStuckEth(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{
            value: address(this).balance
        } ("");
        require(success);
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap = tokensForLp - contractBalance;
        uint256 totalTokensToSwap = tokensForLp +
            tokensForDev +
            tokensForTeam;
        bool success;
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }
        if (contractBalance > feeSwapAmount * 20) {
            contractBalance = feeSwapAmount * 20;
        }
        uint256 liquidityTokens = (contractBalance * tokensForLp) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForLottery = ethBalance.mul(tokensForDev).div(totalTokensToSwap - (tokensForLp / 2));
        uint256 ethForTeam = ethBalance.mul(tokensForTeam).div(totalTokensToSwap - (tokensForLp / 2));
        uint256 ethForLiquidity = ethBalance - ethForLottery - ethForTeam;
        tokensForLp = 0;
        tokensForDev = 0;
        tokensForTeam = 0;
        (success, ) = address(teamWallet).call{value: ethForTeam}("");
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLp
            );
        }
        (success, ) = address(teamWallet).call{value: address(this).balance}("");
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLpTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"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":"address","name":"toAddr","type":"address"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600d805462ffffff191660011790553480156200001f575f80fd5b506040518060e0016040528060ab81526020016200290660ab91396040805180820190915260058152645748414c4560d81b602082015260036200006483826200056f565b5060046200007382826200056f565b5050600580546001600160a01b031990811633179091556008805490911673f78da6254f9feed894bef5ec4bb30f679c3592aa17905550620000b462000166565b620000c133600162000278565b600854620000da906001600160a01b0316600162000278565b620000e730600162000278565b620000f661dead600162000278565b6200010333600162000324565b6008546200011c906001600160a01b0316600162000324565b6200012930600162000324565b6200013861dead600162000324565b67016345785d8a00006200015f620001586005546001600160a01b031690565b8262000398565b50620006a1565b600980546001600160a01b031916331790555f8080808080670de0b6b3a76400008162000196826127106200064b565b666a94d74f430000600a819055600c559050612710620001b88360056200064b565b620001c491906200066b565b600b55600854620001de906001600160a01b03166200047a565b600f8890556010879055601186905585620001fa888a6200068b565b6200020691906200068b565b600e55601385905560148490556015839055826200022585876200068b565b6200023191906200068b565b601255805f806200024a6005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556200026e336200047a565b5050505050505050565b6005546001600160a01b03163314620002c65760405162461bcd60e51b815260206004820181905260248201525f80516020620029b183398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146200036e5760405162461bcd60e51b815260206004820181905260248201525f80516020620029b18339815191526044820152606401620002bd565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b038216620003f05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002bd565b8060025f8282546200040391906200068b565b90915550506001600160a01b0382165f9081526020819052604081208054839290620004319084906200068b565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004f957607f821691505b6020821081036200051857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004cb575f81815260208120601f850160051c81016020861015620005465750805b601f850160051c820191505b81811015620005675782815560010162000552565b505050505050565b81516001600160401b038111156200058b576200058b620004d0565b620005a3816200059c8454620004e4565b846200051e565b602080601f831160018114620005d9575f8415620005c15750858301515b5f19600386901b1c1916600185901b17855562000567565b5f85815260208120601f198616915b828110156200060957888601518255948401946001909101908401620005e8565b50858210156200062757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000665576200066562000637565b92915050565b5f826200068657634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000665576200066562000637565b61225780620006af5f395ff3fe60806040526004361061026d575f3560e01c80638a8c523c1161014a578063b62496f5116100be578063f08c007311610078578063f08c007314610707578063f25f4b561461071c578063f2fde38b1461073b578063f48c36f41461075a578063f8b45b0514610773578063fde83a3414610788575f80fd5b8063b62496f51461062d578063bc205ad31461065b578063be6918831461067a578063c02466681461068f578063dd62ed3e146106ae578063e27a55fe146106f2575f80fd5b80639c3b4fdc1161010f5780639c3b4fdc1461059c5780639e78fb4f146105b15780639fccce32146105c5578063a457c2d7146105da578063a8ae6d64146105f9578063a9059cbb1461060e575f80fd5b80638a8c523c1461052d5780638c0b5e22146105415780638da5cb5b1461055657806395d89b41146105735780639c2e4ac614610587575f80fd5b80634ada218b116101e157806370a08231116101a657806370a082311461047c578063715018a6146104b0578063751039fc146104c65780637571336a146104da5780637ca8448a146104f95780638a0c84e214610518575f80fd5b80634ada218b146103f657806359927044146104145780635df6e68e146104335780636ddd1713146104485780636fd3acb414610467575f80fd5b80632302a5d3116102325780632302a5d31461035457806323b872dd1461036957806327c8f83514610388578063313ce5671461039d57806339509351146103b857806349bd5a5e146103d7575f80fd5b806306fdde0314610278578063095ea7b3146102a257806310d5de53146102d15780631694505e146102ff57806318160ddd14610336575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c61079d565b6040516102999190611e6f565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc366004611ece565b61082d565b6040519015158152602001610299565b3480156102dc575f80fd5b506102c16102eb366004611ef8565b601a6020525f908152604090205460ff1681565b34801561030a575f80fd5b5060065461031e906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b348015610341575f80fd5b506002545b604051908152602001610299565b34801561035f575f80fd5b5061034660145481565b348015610374575f80fd5b506102c1610383366004611f13565b610843565b348015610393575f80fd5b5061031e61dead81565b3480156103a8575f80fd5b5060405160098152602001610299565b3480156103c3575f80fd5b506102c16103d2366004611ece565b6108f0565b3480156103e2575f80fd5b5060075461031e906001600160a01b031681565b348015610401575f80fd5b50600d546102c190610100900460ff1681565b34801561041f575f80fd5b5060095461031e906001600160a01b031681565b34801561043e575f80fd5b50610346600e5481565b348015610453575f80fd5b50600d546102c19062010000900460ff1681565b348015610472575f80fd5b5061034660105481565b348015610487575f80fd5b50610346610496366004611ef8565b6001600160a01b03165f9081526020819052604090205490565b3480156104bb575f80fd5b506104c461092b565b005b3480156104d1575f80fd5b506102c1610960565b3480156104e5575f80fd5b506104c46104f4366004611f5e565b61099c565b348015610504575f80fd5b506104c4610513366004611ef8565b6109f0565b348015610523575f80fd5b5061034660175481565b348015610538575f80fd5b506104c4610a79565b34801561054c575f80fd5b50610346600a5481565b348015610561575f80fd5b506005546001600160a01b031661031e565b34801561057e575f80fd5b5061028c610ab6565b348015610592575f80fd5b5061034660115481565b3480156105a7575f80fd5b50610346600f5481565b3480156105bc575f80fd5b506104c4610ac5565b3480156105d0575f80fd5b5061034660165481565b3480156105e5575f80fd5b506102c16105f4366004611ece565b610cab565b348015610604575f80fd5b50610346600b5481565b348015610619575f80fd5b506102c1610628366004611ece565b610d43565b348015610638575f80fd5b506102c1610647366004611ef8565b601b6020525f908152604090205460ff1681565b348015610666575f80fd5b506104c4610675366004611f95565b610d4f565b348015610685575f80fd5b5061034660135481565b34801561069a575f80fd5b506104c46106a9366004611f5e565b610eb1565b3480156106b9575f80fd5b506103466106c8366004611f95565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106fd575f80fd5b5061034660125481565b348015610712575f80fd5b5061034660155481565b348015610727575f80fd5b5060085461031e906001600160a01b031681565b348015610746575f80fd5b506104c4610755366004611ef8565b610f39565b348015610765575f80fd5b50600d546102c19060ff1681565b34801561077e575f80fd5b50610346600c5481565b348015610793575f80fd5b5061034660185481565b6060600380546107ac90611fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546107d890611fc1565b80156108235780601f106107fa57610100808354040283529160200191610823565b820191905f5260205f20905b81548152906001019060200180831161080657829003601f168201915b5050505050905090565b5f610839338484610fd1565b5060015b92915050565b5f61084f8484846110f4565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108d85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108e58533858403610fd1565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161083991859061092690869061200d565b610fd1565b6005546001600160a01b031633146109555760405162461bcd60e51b81526004016108cf90612020565b61095e5f6117d0565b565b6005545f906001600160a01b0316331461098c5760405162461bcd60e51b81526004016108cf90612020565b50600d805460ff19169055600190565b6005546001600160a01b031633146109c65760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a1a5760405162461bcd60e51b81526004016108cf90612020565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a63576040519150601f19603f3d011682016040523d82523d5f602084013e610a68565b606091505b5050905080610a75575f80fd5b5050565b6005546001600160a01b03163314610aa35760405162461bcd60e51b81526004016108cf90612020565b600d805462ffff00191662010100179055565b6060600480546107ac90611fc1565b6005546001600160a01b03163314610aef5760405162461bcd60e51b81526004016108cf90612020565b737a250d5630b4cf539739df2c5dacb4c659f2488d610b0f81600161099c565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8a9190612055565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf99190612055565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c679190612055565b600780546001600160a01b0319166001600160a01b03929092169182179055610c9190600161099c565b600754610ca8906001600160a01b03166001611821565b50565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108cf565b610d393385858403610fd1565b5060019392505050565b5f6108393384846110f4565b6005546001600160a01b03163314610d795760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b038216610dcf5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108cf565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e379190612070565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eab9190612087565b50505050565b6005546001600160a01b03163314610edb5760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b038116610fc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cf565b610ca8816117d0565b6001600160a01b0383166110335760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cf565b6001600160a01b0382166110945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cf565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661111a5760405162461bcd60e51b81526004016108cf906120a2565b6001600160a01b0382166111405760405162461bcd60e51b81526004016108cf906120e7565b805f036111575761115283835f611874565b505050565b600d5460ff16156114b2576005546001600160a01b0384811691161480159061118e57506005546001600160a01b03838116911614155b80156111a257506001600160a01b03821615155b80156111b957506001600160a01b03821661dead14155b80156111cf5750600754600160a01b900460ff16155b156114b257600d54610100900460ff16611265576001600160a01b0383165f9081526019602052604090205460ff168061122057506001600160a01b0382165f9081526019602052604090205460ff165b6112655760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108cf565b6001600160a01b0383165f908152601b602052604090205460ff1680156112a457506001600160a01b0382165f908152601a602052604090205460ff16155b1561137e57600a548111156113105760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b60648201526084016108cf565b600c546001600160a01b0383165f90815260208190526040902054611335908361200d565b11156113795760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cf565b6114b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156113bd57506001600160a01b0383165f908152601a602052604090205460ff16155b1561142a57600a548111156113795760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b60648201526084016108cf565b6001600160a01b0382165f908152601a602052604090205460ff166114b257600c546001600160a01b0383165f9081526020819052604090205461146e908361200d565b11156114b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cf565b305f90815260208190526040902054600b54811080159081906114dd5750600d5462010000900460ff165b80156114f35750600754600160a01b900460ff16155b801561151757506001600160a01b0385165f908152601b602052604090205460ff16155b801561153b57506001600160a01b0385165f9081526019602052604090205460ff16155b801561155f57506001600160a01b0384165f9081526019602052604090205460ff16155b1561158d576007805460ff60a01b1916600160a01b17905561157f6119c6565b6007805460ff60a01b191690555b6007546001600160a01b0386165f9081526019602052604090205460ff600160a01b9092048216159116806115d957506001600160a01b0385165f9081526019602052604090205460ff165b156115e157505f5b5f81156117bc576001600160a01b0386165f908152601b602052604090205460ff16156116c657601254156116c157611630606461162a60125488611c2590919063ffffffff16565b90611c37565b905060125460145482611643919061212a565b61164d9190612141565b60175f82825461165d919061200d565b9091555050601254601554611672908361212a565b61167c9190612141565b60185f82825461168c919061200d565b90915550506012546013546116a1908361212a565b6116ab9190612141565b60165f8282546116bb919061200d565b90915550505b61179e565b6001600160a01b0387165f908152601b602052604090205460ff1680156116ee57505f600e54115b1561179e5761170d606461162a600e5488611c2590919063ffffffff16565b9050600e5460105482611720919061212a565b61172a9190612141565b60175f82825461173a919061200d565b9091555050600e5460115461174f908361212a565b6117599190612141565b60185f828254611769919061200d565b9091555050600e54600f5461177e908361212a565b6117889190612141565b60165f828254611798919061200d565b90915550505b80156117af576117af873083611874565b6117b98186612160565b94505b6117c7878787611874565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661189a5760405162461bcd60e51b81526004016108cf906120a2565b6001600160a01b0382166118c05760405162461bcd60e51b81526004016108cf906120e7565b6001600160a01b0383165f90815260208190526040902054818110156119375760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108cf565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061196d90849061200d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119b991815260200190565b60405180910390a3610eab565b305f9081526020819052604081205490505f816017546119e69190612160565b90505f6018546016546017546119fc919061200d565b611a06919061200d565b90505f831580611a14575081155b15611a1f5750505050565b600b54611a2d90601461212a565b841115611a4557600b54611a4290601461212a565b93505b5f60028360175487611a57919061212a565b611a619190612141565b611a6b9190612141565b90505f611a788683611c42565b905047611a8482611c4d565b5f611a8f4783611c42565b90505f611abc6002601754611aa49190612141565b611aae9089612160565b60165461162a908590611c25565b90505f611ae96002601754611ad19190612141565b611adb908a612160565b60185461162a908690611c25565b90505f81611af78486612160565b611b019190612160565b5f6017819055601681905560188190556009546040519293506001600160a01b031691849181818185875af1925050503d805f8114611b5b576040519150601f19603f3d011682016040523d82523d5f602084013e611b60565b606091505b50909850508615801590611b7357505f81115b15611bc657611b828782611d9d565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611c10576040519150601f19603f3d011682016040523d82523d5f602084013e611c15565b606091505b5050505050505050505050505050565b5f611c30828461212a565b9392505050565b5f611c308284612141565b5f611c308284612160565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c8057611c80612173565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfb9190612055565b81600181518110611d0e57611d0e612173565b6001600160a01b039283166020918202929092010152600654611d349130911684610fd1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d6c9085905f90869030904290600401612187565b5f604051808303815f87803b158015611d83575f80fd5b505af1158015611d95573d5f803e3d5ffd5b505050505050565b600654611db59030906001600160a01b031684610fd1565b6006546001600160a01b031663f305d7198230855f80611ddd6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e6891906121f6565b5050505050565b5f6020808352835180828501525f5b81811015611e9a57858101830151858201604001528201611e7e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ca8575f80fd5b5f8060408385031215611edf575f80fd5b8235611eea81611eba565b946020939093013593505050565b5f60208284031215611f08575f80fd5b8135611c3081611eba565b5f805f60608486031215611f25575f80fd5b8335611f3081611eba565b92506020840135611f4081611eba565b929592945050506040919091013590565b8015158114610ca8575f80fd5b5f8060408385031215611f6f575f80fd5b8235611f7a81611eba565b91506020830135611f8a81611f51565b809150509250929050565b5f8060408385031215611fa6575f80fd5b8235611fb181611eba565b91506020830135611f8a81611eba565b600181811c90821680611fd557607f821691505b602082108103611ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083d5761083d611ff9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612065575f80fd5b8151611c3081611eba565b5f60208284031215612080575f80fd5b5051919050565b5f60208284031215612097575f80fd5b8151611c3081611f51565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761083d5761083d611ff9565b5f8261215b57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561083d5761083d611ff9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121d55784516001600160a01b0316835293830193918301916001016121b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612208575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fe0018a7c94183aace26c6190b2a4a20b434ae17b8d29849b7d00620dd3a53b264736f6c63430008150033e28082e28082f09f92a6e28082f09f92a60ae28082e28082e28082f09f92a6e28082e28082e28082e28082e280820ae28082e28082e28082f09f92a7e28082e28082e28082e28082f09f90b3e28082f09f90b30ae28082e281a3f09f90b3f09f90b3f09f90b3e28082e28082e28082e28082f09f90b30af09f90b3f09f8eb1f09f90b3f09f90b3f09f90b3e28082f09f90b30af09f90b3f09f90b3f09f90b3f09f90b3f09f90b3f09f90b34f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061026d575f3560e01c80638a8c523c1161014a578063b62496f5116100be578063f08c007311610078578063f08c007314610707578063f25f4b561461071c578063f2fde38b1461073b578063f48c36f41461075a578063f8b45b0514610773578063fde83a3414610788575f80fd5b8063b62496f51461062d578063bc205ad31461065b578063be6918831461067a578063c02466681461068f578063dd62ed3e146106ae578063e27a55fe146106f2575f80fd5b80639c3b4fdc1161010f5780639c3b4fdc1461059c5780639e78fb4f146105b15780639fccce32146105c5578063a457c2d7146105da578063a8ae6d64146105f9578063a9059cbb1461060e575f80fd5b80638a8c523c1461052d5780638c0b5e22146105415780638da5cb5b1461055657806395d89b41146105735780639c2e4ac614610587575f80fd5b80634ada218b116101e157806370a08231116101a657806370a082311461047c578063715018a6146104b0578063751039fc146104c65780637571336a146104da5780637ca8448a146104f95780638a0c84e214610518575f80fd5b80634ada218b146103f657806359927044146104145780635df6e68e146104335780636ddd1713146104485780636fd3acb414610467575f80fd5b80632302a5d3116102325780632302a5d31461035457806323b872dd1461036957806327c8f83514610388578063313ce5671461039d57806339509351146103b857806349bd5a5e146103d7575f80fd5b806306fdde0314610278578063095ea7b3146102a257806310d5de53146102d15780631694505e146102ff57806318160ddd14610336575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c61079d565b6040516102999190611e6f565b60405180910390f35b3480156102ad575f80fd5b506102c16102bc366004611ece565b61082d565b6040519015158152602001610299565b3480156102dc575f80fd5b506102c16102eb366004611ef8565b601a6020525f908152604090205460ff1681565b34801561030a575f80fd5b5060065461031e906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b348015610341575f80fd5b506002545b604051908152602001610299565b34801561035f575f80fd5b5061034660145481565b348015610374575f80fd5b506102c1610383366004611f13565b610843565b348015610393575f80fd5b5061031e61dead81565b3480156103a8575f80fd5b5060405160098152602001610299565b3480156103c3575f80fd5b506102c16103d2366004611ece565b6108f0565b3480156103e2575f80fd5b5060075461031e906001600160a01b031681565b348015610401575f80fd5b50600d546102c190610100900460ff1681565b34801561041f575f80fd5b5060095461031e906001600160a01b031681565b34801561043e575f80fd5b50610346600e5481565b348015610453575f80fd5b50600d546102c19062010000900460ff1681565b348015610472575f80fd5b5061034660105481565b348015610487575f80fd5b50610346610496366004611ef8565b6001600160a01b03165f9081526020819052604090205490565b3480156104bb575f80fd5b506104c461092b565b005b3480156104d1575f80fd5b506102c1610960565b3480156104e5575f80fd5b506104c46104f4366004611f5e565b61099c565b348015610504575f80fd5b506104c4610513366004611ef8565b6109f0565b348015610523575f80fd5b5061034660175481565b348015610538575f80fd5b506104c4610a79565b34801561054c575f80fd5b50610346600a5481565b348015610561575f80fd5b506005546001600160a01b031661031e565b34801561057e575f80fd5b5061028c610ab6565b348015610592575f80fd5b5061034660115481565b3480156105a7575f80fd5b50610346600f5481565b3480156105bc575f80fd5b506104c4610ac5565b3480156105d0575f80fd5b5061034660165481565b3480156105e5575f80fd5b506102c16105f4366004611ece565b610cab565b348015610604575f80fd5b50610346600b5481565b348015610619575f80fd5b506102c1610628366004611ece565b610d43565b348015610638575f80fd5b506102c1610647366004611ef8565b601b6020525f908152604090205460ff1681565b348015610666575f80fd5b506104c4610675366004611f95565b610d4f565b348015610685575f80fd5b5061034660135481565b34801561069a575f80fd5b506104c46106a9366004611f5e565b610eb1565b3480156106b9575f80fd5b506103466106c8366004611f95565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156106fd575f80fd5b5061034660125481565b348015610712575f80fd5b5061034660155481565b348015610727575f80fd5b5060085461031e906001600160a01b031681565b348015610746575f80fd5b506104c4610755366004611ef8565b610f39565b348015610765575f80fd5b50600d546102c19060ff1681565b34801561077e575f80fd5b50610346600c5481565b348015610793575f80fd5b5061034660185481565b6060600380546107ac90611fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546107d890611fc1565b80156108235780601f106107fa57610100808354040283529160200191610823565b820191905f5260205f20905b81548152906001019060200180831161080657829003601f168201915b5050505050905090565b5f610839338484610fd1565b5060015b92915050565b5f61084f8484846110f4565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108d85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6108e58533858403610fd1565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161083991859061092690869061200d565b610fd1565b6005546001600160a01b031633146109555760405162461bcd60e51b81526004016108cf90612020565b61095e5f6117d0565b565b6005545f906001600160a01b0316331461098c5760405162461bcd60e51b81526004016108cf90612020565b50600d805460ff19169055600190565b6005546001600160a01b031633146109c65760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a1a5760405162461bcd60e51b81526004016108cf90612020565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610a63576040519150601f19603f3d011682016040523d82523d5f602084013e610a68565b606091505b5050905080610a75575f80fd5b5050565b6005546001600160a01b03163314610aa35760405162461bcd60e51b81526004016108cf90612020565b600d805462ffff00191662010100179055565b6060600480546107ac90611fc1565b6005546001600160a01b03163314610aef5760405162461bcd60e51b81526004016108cf90612020565b737a250d5630b4cf539739df2c5dacb4c659f2488d610b0f81600161099c565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610b66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8a9190612055565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf99190612055565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c679190612055565b600780546001600160a01b0319166001600160a01b03929092169182179055610c9190600161099c565b600754610ca8906001600160a01b03166001611821565b50565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108cf565b610d393385858403610fd1565b5060019392505050565b5f6108393384846110f4565b6005546001600160a01b03163314610d795760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b038216610dcf5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016108cf565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e379190612070565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eab9190612087565b50505050565b6005546001600160a01b03163314610edb5760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108cf90612020565b6001600160a01b038116610fc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cf565b610ca8816117d0565b6001600160a01b0383166110335760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cf565b6001600160a01b0382166110945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cf565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661111a5760405162461bcd60e51b81526004016108cf906120a2565b6001600160a01b0382166111405760405162461bcd60e51b81526004016108cf906120e7565b805f036111575761115283835f611874565b505050565b600d5460ff16156114b2576005546001600160a01b0384811691161480159061118e57506005546001600160a01b03838116911614155b80156111a257506001600160a01b03821615155b80156111b957506001600160a01b03821661dead14155b80156111cf5750600754600160a01b900460ff16155b156114b257600d54610100900460ff16611265576001600160a01b0383165f9081526019602052604090205460ff168061122057506001600160a01b0382165f9081526019602052604090205460ff165b6112655760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108cf565b6001600160a01b0383165f908152601b602052604090205460ff1680156112a457506001600160a01b0382165f908152601a602052604090205460ff16155b1561137e57600a548111156113105760405162461bcd60e51b815260206004820152602c60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526b36b0bc2a3c20b6b7bab73a1760a11b60648201526084016108cf565b600c546001600160a01b0383165f90815260208190526040902054611335908361200d565b11156113795760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cf565b6114b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156113bd57506001600160a01b0383165f908152601a602052604090205460ff16155b1561142a57600a548111156113795760405162461bcd60e51b815260206004820152602d60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526c1036b0bc2a3c20b6b7bab73a1760991b60648201526084016108cf565b6001600160a01b0382165f908152601a602052604090205460ff166114b257600c546001600160a01b0383165f9081526020819052604090205461146e908361200d565b11156114b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108cf565b305f90815260208190526040902054600b54811080159081906114dd5750600d5462010000900460ff165b80156114f35750600754600160a01b900460ff16155b801561151757506001600160a01b0385165f908152601b602052604090205460ff16155b801561153b57506001600160a01b0385165f9081526019602052604090205460ff16155b801561155f57506001600160a01b0384165f9081526019602052604090205460ff16155b1561158d576007805460ff60a01b1916600160a01b17905561157f6119c6565b6007805460ff60a01b191690555b6007546001600160a01b0386165f9081526019602052604090205460ff600160a01b9092048216159116806115d957506001600160a01b0385165f9081526019602052604090205460ff165b156115e157505f5b5f81156117bc576001600160a01b0386165f908152601b602052604090205460ff16156116c657601254156116c157611630606461162a60125488611c2590919063ffffffff16565b90611c37565b905060125460145482611643919061212a565b61164d9190612141565b60175f82825461165d919061200d565b9091555050601254601554611672908361212a565b61167c9190612141565b60185f82825461168c919061200d565b90915550506012546013546116a1908361212a565b6116ab9190612141565b60165f8282546116bb919061200d565b90915550505b61179e565b6001600160a01b0387165f908152601b602052604090205460ff1680156116ee57505f600e54115b1561179e5761170d606461162a600e5488611c2590919063ffffffff16565b9050600e5460105482611720919061212a565b61172a9190612141565b60175f82825461173a919061200d565b9091555050600e5460115461174f908361212a565b6117599190612141565b60185f828254611769919061200d565b9091555050600e54600f5461177e908361212a565b6117889190612141565b60165f828254611798919061200d565b90915550505b80156117af576117af873083611874565b6117b98186612160565b94505b6117c7878787611874565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661189a5760405162461bcd60e51b81526004016108cf906120a2565b6001600160a01b0382166118c05760405162461bcd60e51b81526004016108cf906120e7565b6001600160a01b0383165f90815260208190526040902054818110156119375760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108cf565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061196d90849061200d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119b991815260200190565b60405180910390a3610eab565b305f9081526020819052604081205490505f816017546119e69190612160565b90505f6018546016546017546119fc919061200d565b611a06919061200d565b90505f831580611a14575081155b15611a1f5750505050565b600b54611a2d90601461212a565b841115611a4557600b54611a4290601461212a565b93505b5f60028360175487611a57919061212a565b611a619190612141565b611a6b9190612141565b90505f611a788683611c42565b905047611a8482611c4d565b5f611a8f4783611c42565b90505f611abc6002601754611aa49190612141565b611aae9089612160565b60165461162a908590611c25565b90505f611ae96002601754611ad19190612141565b611adb908a612160565b60185461162a908690611c25565b90505f81611af78486612160565b611b019190612160565b5f6017819055601681905560188190556009546040519293506001600160a01b031691849181818185875af1925050503d805f8114611b5b576040519150601f19603f3d011682016040523d82523d5f602084013e611b60565b606091505b50909850508615801590611b7357505f81115b15611bc657611b828782611d9d565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b039091169047905f81818185875af1925050503d805f8114611c10576040519150601f19603f3d011682016040523d82523d5f602084013e611c15565b606091505b5050505050505050505050505050565b5f611c30828461212a565b9392505050565b5f611c308284612141565b5f611c308284612160565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c8057611c80612173565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cd7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfb9190612055565b81600181518110611d0e57611d0e612173565b6001600160a01b039283166020918202929092010152600654611d349130911684610fd1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d6c9085905f90869030904290600401612187565b5f604051808303815f87803b158015611d83575f80fd5b505af1158015611d95573d5f803e3d5ffd5b505050505050565b600654611db59030906001600160a01b031684610fd1565b6006546001600160a01b031663f305d7198230855f80611ddd6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611e43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e6891906121f6565b5050505050565b5f6020808352835180828501525f5b81811015611e9a57858101830151858201604001528201611e7e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ca8575f80fd5b5f8060408385031215611edf575f80fd5b8235611eea81611eba565b946020939093013593505050565b5f60208284031215611f08575f80fd5b8135611c3081611eba565b5f805f60608486031215611f25575f80fd5b8335611f3081611eba565b92506020840135611f4081611eba565b929592945050506040919091013590565b8015158114610ca8575f80fd5b5f8060408385031215611f6f575f80fd5b8235611f7a81611eba565b91506020830135611f8a81611f51565b809150509250929050565b5f8060408385031215611fa6575f80fd5b8235611fb181611eba565b91506020830135611f8a81611eba565b600181811c90821680611fd557607f821691505b602082108103611ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561083d5761083d611ff9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612065575f80fd5b8151611c3081611eba565b5f60208284031215612080575f80fd5b5051919050565b5f60208284031215612097575f80fd5b8151611c3081611f51565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761083d5761083d611ff9565b5f8261215b57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561083d5761083d611ff9565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156121d55784516001600160a01b0316835293830193918301916001016121b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612208575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fe0018a7c94183aace26c6190b2a4a20b434ae17b8d29849b7d00620dd3a53b264736f6c63430008150033

Deployed Bytecode Sourcemap

14978:11347:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9456:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10355:169;;;;;;;;;;-1:-1:-1;10355:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10355:169:0;1023:187:1;15915:63:0;;;;;;;;;;-1:-1:-1;15915:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15051:41;;;;;;;;;;-1:-1:-1;15051:41:0;;;;-1:-1:-1;;;;;15051:41:0;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;15051:41:0;1467:229:1;9770:108:0;;;;;;;;;;-1:-1:-1;9858:12:0;;9770:108;;;1847:25:1;;;1835:2;1820:18;9770:108:0;1701:177:1;15690:24:0;;;;;;;;;;;;;;;;10530:488;;;;;;;;;;-1:-1:-1;10530:488:0;;;;;:::i;:::-;;:::i;15134:53::-;;;;;;;;;;;;15180:6;15134:53;;9672:92;;;;;;;;;;-1:-1:-1;9672:92:0;;9755:1;2694:36:1;;2682:2;2667:18;9672:92:0;2552:184:1;11024:215:0;;;;;;;;;;-1:-1:-1;11024:215:0;;;;;:::i;:::-;;:::i;15099:28::-;;;;;;;;;;-1:-1:-1;15099:28:0;;;;-1:-1:-1;;;;;15099:28:0;;;15419:34;;;;;;;;;;-1:-1:-1;15419:34:0;;;;;;;;;;;15253:25;;;;;;;;;;-1:-1:-1;15253:25:0;;;;-1:-1:-1;;;;;15253:25:0;;;15498:26;;;;;;;;;;;;;;;;15460:31;;;;;;;;;;-1:-1:-1;15460:31:0;;;;;;;;;;;15562:23;;;;;;;;;;;;;;;;9884:127;;;;;;;;;;-1:-1:-1;9884:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9985:18:0;9958:7;9985:18;;;;;;;;;;;;9884:127;14466:103;;;;;;;;;;;;;:::i;:::-;;17433:116;;;;;;;;;;;;;:::i;18579:167::-;;;;;;;;;;-1:-1:-1;18579:167:0;;;;;:::i;:::-;;:::i;24440:196::-;;;;;;;;;;-1:-1:-1;24440:196:0;;;;;:::i;:::-;;:::i;15788:26::-;;;;;;;;;;;;;;;;17314:113;;;;;;;;;;;;;:::i;15285:26::-;;;;;;;;;;;;;;;;14247:87;;;;;;;;;;-1:-1:-1;14320:6:0;;-1:-1:-1;;;;;14320:6:0;14247:87;;9562:104;;;;;;;;;;;;;:::i;15592:25::-;;;;;;;;;;;;;;;;15531:24;;;;;;;;;;;;;;;;23202:570;;;;;;;;;;;;;:::i;15754:27::-;;;;;;;;;;;;;;;;11245:411;;;;;;;;;;-1:-1:-1;11245:411:0;;;;;:::i;:::-;;:::i;15318:28::-;;;;;;;;;;;;;;;;10017:175;;;;;;;;;;-1:-1:-1;10017:175:0;;;;;:::i;:::-;;:::i;15985:57::-;;;;;;;;;;-1:-1:-1;15985:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24146:288;;;;;;;;;;-1:-1:-1;24146:288:0;;;;;:::i;:::-;;:::i;15658:25::-;;;;;;;;;;;;;;;;19230:182;;;;;;;;;;-1:-1:-1;19230:182:0;;;;;:::i;:::-;;:::i;10198:151::-;;;;;;;;;;-1:-1:-1;10198:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10314:18:0;;;10287:7;10314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10198:151;15624:27;;;;;;;;;;;;;;;;15721:26;;;;;;;;;;;;;;;;15222:24;;;;;;;;;;-1:-1:-1;15222:24:0;;;;-1:-1:-1;;;;;15222:24:0;;;14575:201;;;;;;;;;;-1:-1:-1;14575:201:0;;;;;:::i;:::-;;:::i;15384:28::-;;;;;;;;;;-1:-1:-1;15384:28:0;;;;;;;;15353:24;;;;;;;;;;;;;;;;15821:28;;;;;;;;;;;;;;;;9456:100;9510:13;9543:5;9536:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9456:100;:::o;10355:169::-;10438:4;10455:39;2835:10;10478:7;10487:6;10455:8;:39::i;:::-;-1:-1:-1;10512:4:0;10355:169;;;;;:::o;10530:488::-;10670:4;10687:36;10697:6;10705:9;10716:6;10687:9;:36::i;:::-;-1:-1:-1;;;;;10761:19:0;;10734:24;10761:19;;;:11;:19;;;;;;;;2835:10;10761:33;;;;;;;;10813:26;;;;10805:79;;;;-1:-1:-1;;;10805:79:0;;4231:2:1;10805:79:0;;;4213:21:1;4270:2;4250:18;;;4243:30;4309:34;4289:18;;;4282:62;-1:-1:-1;;;4360:18:1;;;4353:38;4408:19;;10805:79:0;;;;;;;;;10920:57;10929:6;2835:10;10970:6;10951:16;:25;10920:8;:57::i;:::-;-1:-1:-1;11006:4:0;;10530:488;-1:-1:-1;;;;10530:488:0:o;11024:215::-;2835:10;11112:4;11161:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11161:34:0;;;;;;;;;;11112:4;;11129:80;;11152:7;;11161:47;;11198:10;;11161:47;:::i;:::-;11129:8;:80::i;14466:103::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;14531:30:::1;14558:1;14531:18;:30::i;:::-;14466:103::o:0;17433:116::-;14320:6;;17485:4;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;-1:-1:-1;17502:9:0::1;:17:::0;;-1:-1:-1;;17502:17:0::1;::::0;;;17433:116;:::o;18579:167::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18692:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18692:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18579:167::o;24440:196::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;24513:12:::1;24531:6;-1:-1:-1::0;;;;;24531:11:0::1;24564:21;24531:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24512:89;;;24620:7;24612:16;;;::::0;::::1;;24501:135;24440:196:::0;:::o;17314:113::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;17369:14:::1;:21:::0;;-1:-1:-1;;17401:18:0;;;;;17314:113::o;9562:104::-;9618:13;9651:7;9644:14;;;;;:::i;23202:570::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;23325:42:::1;23389:58;23325:42:::0;23442:4:::1;23389:25;:58::i;:::-;23458:15;:34:::0;;-1:-1:-1;;;;;;23458:34:0::1;-1:-1:-1::0;;;;;23458:34:0;::::1;::::0;;::::1;::::0;;;23537:26:::1;::::0;;-1:-1:-1;;;23537:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;23458:34;23537:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23519:70:0::1;;23598:4;23605:16;-1:-1:-1::0;;;;;23605:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23519:110;::::0;-1:-1:-1;;;;;;23519:110:0::1;::::0;;;;;;-1:-1:-1;;;;;5757:15:1;;;23519:110:0::1;::::0;::::1;5739:34:1::0;5809:15;;5789:18;;;5782:43;5674:18;;23519:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23503:13;:126:::0;;-1:-1:-1;;;;;;23503:126:0::1;-1:-1:-1::0;;;;;23503:126:0;;;::::1;::::0;;::::1;::::0;;23640:55:::1;::::0;-1:-1:-1;23640:25:0::1;:55::i;:::-;23743:13;::::0;23706:58:::1;::::0;-1:-1:-1;;;;;23743:13:0::1;::::0;23706:28:::1;:58::i;:::-;23243:529;23202:570::o:0;11245:411::-;2835:10;11338:4;11382:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11382:34:0;;;;;;;;;;11435:35;;;;11427:85;;;;-1:-1:-1;;;11427:85:0;;6038:2:1;11427:85:0;;;6020:21:1;6077:2;6057:18;;;6050:30;6116:34;6096:18;;;6089:62;-1:-1:-1;;;6167:18:1;;;6160:35;6212:19;;11427:85:0;5836:401:1;11427:85:0;11548:67;2835:10;11571:7;11599:15;11580:16;:34;11548:8;:67::i;:::-;-1:-1:-1;11644:4:0;;11245:411;-1:-1:-1;;;11245:411:0:o;10017:175::-;10103:4;10120:42;2835:10;10144:9;10155:6;10120:9;:42::i;24146:288::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24241:20:0;::::1;24233:59;;;::::0;-1:-1:-1;;;24233:59:0;;6444:2:1;24233:59:0::1;::::0;::::1;6426:21:1::0;6483:2;6463:18;;;6456:30;6522:28;6502:18;;;6495:56;6568:18;;24233:59:0::1;6242:350:1::0;24233:59:0::1;24330:39;::::0;-1:-1:-1;;;24330:39:0;;24363:4:::1;24330:39;::::0;::::1;1639:51:1::0;24303:24:0::1;::::0;-1:-1:-1;;;;;24330:24:0;::::1;::::0;::::1;::::0;1612:18:1;;24330:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24380:46;::::0;-1:-1:-1;;;24380:46:0;;-1:-1:-1;;;;;6978:32:1;;;24380:46:0::1;::::0;::::1;6960:51:1::0;7027:18;;;7020:34;;;24303:66:0;;-1:-1:-1;24380:23:0;;::::1;::::0;::::1;::::0;6933:18:1;;24380:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24222:212;24146:288:::0;;:::o;19230:182::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19315:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19315:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19370:34;;1163:41:1;;;19370:34:0::1;::::0;1136:18:1;19370:34:0::1;;;;;;;19230:182:::0;;:::o;14575:201::-;14320:6;;-1:-1:-1;;;;;14320:6:0;2835:10;14380:23;14372:68;;;;-1:-1:-1;;;14372:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14664:22:0;::::1;14656:73;;;::::0;-1:-1:-1;;;14656:73:0;;7517:2:1;14656:73:0::1;::::0;::::1;7499:21:1::0;7556:2;7536:18;;;7529:30;7595:34;7575:18;;;7568:62;-1:-1:-1;;;7646:18:1;;;7639:36;7692:19;;14656:73:0::1;7315:402:1::0;14656:73:0::1;14740:28;14759:8;14740:18;:28::i;13381:378::-:0;-1:-1:-1;;;;;13517:19:0;;13509:68;;;;-1:-1:-1;;;13509:68:0;;7924:2:1;13509:68:0;;;7906:21:1;7963:2;7943:18;;;7936:30;8002:34;7982:18;;;7975:62;-1:-1:-1;;;8053:18:1;;;8046:34;8097:19;;13509:68:0;7722:400:1;13509:68:0;-1:-1:-1;;;;;13596:21:0;;13588:68;;;;-1:-1:-1;;;13588:68:0;;8329:2:1;13588:68:0;;;8311:21:1;8368:2;8348:18;;;8341:30;8407:34;8387:18;;;8380:62;-1:-1:-1;;;8458:18:1;;;8451:32;8500:19;;13588:68:0;8127:398:1;13588:68:0;-1:-1:-1;;;;;13667:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13719:32;;1847:25:1;;;13719:32:0;;1820:18:1;13719:32:0;;;;;;;13381:378;;;:::o;19610:3586::-;-1:-1:-1;;;;;19742:18:0;;19734:68;;;;-1:-1:-1;;;19734:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19821:16:0;;19813:64;;;;-1:-1:-1;;;19813:64:0;;;;;;;:::i;:::-;19892:6;19902:1;19892:11;19888:93;;19920:28;19936:4;19942:2;19946:1;19920:15;:28::i;:::-;19610:3586;;;:::o;19888:93::-;19995:9;;;;19991:1595;;;14320:6;;-1:-1:-1;;;;;20043:15:0;;;14320:6;;20043:15;;;;:49;;-1:-1:-1;14320:6:0;;-1:-1:-1;;;;;20079:13:0;;;14320:6;;20079:13;;20043:49;:86;;;;-1:-1:-1;;;;;;20113:16:0;;;;20043:86;:128;;;;-1:-1:-1;;;;;;20150:21:0;;20164:6;20150:21;;20043:128;:158;;;;-1:-1:-1;20193:8:0;;-1:-1:-1;;;20193:8:0;;;;20192:9;20043:158;20021:1554;;;20241:14;;;;;;;20236:224;;-1:-1:-1;;;;;20314:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;20343:23:0;;;;;;:19;:23;;;;;;;;20314:52;20280:160;;;;-1:-1:-1;;;20280:160:0;;9542:2:1;20280:160:0;;;9524:21:1;9581:2;9561:18;;;9554:30;-1:-1:-1;;;9600:18:1;;;9593:52;9662:18;;20280:160:0;9340:346:1;20280:160:0;-1:-1:-1;;;;;20504:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;20561:35:0;;;;;;:31;:35;;;;;;;;20560:36;20504:92;20478:1082;;;20683:11;;20673:6;:21;;20639:151;;;;-1:-1:-1;;;20639:151:0;;9893:2:1;20639:151:0;;;9875:21:1;9932:2;9912:18;;;9905:30;9971:34;9951:18;;;9944:62;-1:-1:-1;;;10022:18:1;;;10015:42;10074:19;;20639:151:0;9691:408:1;20639:151:0;20873:9;;-1:-1:-1;;;;;9985:18:0;;9958:7;9985:18;;;;;;;;;;;20847:22;;:6;:22;:::i;:::-;:35;;20813:140;;;;-1:-1:-1;;;20813:140:0;;10306:2:1;20813:140:0;;;10288:21:1;10345:2;10325:18;;;10318:30;-1:-1:-1;;;10364:18:1;;;10357:49;10423:18;;20813:140:0;10104:343:1;20813:140:0;20478:1082;;;-1:-1:-1;;;;;21022:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21077:37:0;;;;;;:31;:37;;;;;;;;21076:38;21022:92;20996:564;;;21201:11;;21191:6;:21;;21157:152;;;;-1:-1:-1;;;21157:152:0;;10654:2:1;21157:152:0;;;10636:21:1;10693:2;10673:18;;;10666:30;10732:34;10712:18;;;10705:62;-1:-1:-1;;;10783:18:1;;;10776:43;10836:19;;21157:152:0;10452:409:1;20996:564:0;-1:-1:-1;;;;;21340:35:0;;;;;;:31;:35;;;;;;;;21335:225;;21460:9;;-1:-1:-1;;;;;9985:18:0;;9958:7;9985:18;;;;;;;;;;;21434:22;;:6;:22;:::i;:::-;:35;;21400:140;;;;-1:-1:-1;;;21400:140:0;;10306:2:1;21400:140:0;;;10288:21:1;10345:2;10325:18;;;10318:30;-1:-1:-1;;;10364:18:1;;;10357:49;10423:18;;21400:140:0;10104:343:1;21400:140:0;21645:4;21596:28;9985:18;;;;;;;;;;;21701:13;;21677:37;;;;;;;21743:35;;-1:-1:-1;21767:11:0;;;;;;;21743:35;:61;;;;-1:-1:-1;21796:8:0;;-1:-1:-1;;;21796:8:0;;;;21795:9;21743:61;:110;;;;-1:-1:-1;;;;;;21822:31:0;;;;;;:25;:31;;;;;;;;21821:32;21743:110;:153;;;;-1:-1:-1;;;;;;21871:25:0;;;;;;:19;:25;;;;;;;;21870:26;21743:153;:194;;;;-1:-1:-1;;;;;;21914:23:0;;;;;;:19;:23;;;;;;;;21913:24;21743:194;21725:322;;;21964:8;:15;;-1:-1:-1;;;;21964:15:0;-1:-1:-1;;;21964:15:0;;;21994:10;:8;:10::i;:::-;22019:8;:16;;-1:-1:-1;;;;22019:16:0;;;21725:322;22073:8;;-1:-1:-1;;;;;22096:25:0;;22057:12;22096:25;;;:19;:25;;;;;;22073:8;-1:-1:-1;;;22073:8:0;;;;;22072:9;;22096:25;;:52;;-1:-1:-1;;;;;;22125:23:0;;;;;;:19;:23;;;;;;;;22096:52;22092:100;;;-1:-1:-1;22175:5:0;22092:100;22202:12;22233:7;22229:916;;;-1:-1:-1;;;;;22261:29:0;;;;;;:25;:29;;;;;;;;22257:743;;;22315:12;;:16;22311:324;;22363:33;22392:3;22363:24;22374:12;;22363:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;22356:40;;22455:12;;22442:9;;22435:4;:16;;;;:::i;:::-;22434:33;;;;:::i;:::-;22419:11;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;22530:12:0;;22515:11;;22508:18;;:4;:18;:::i;:::-;22507:35;;;;:::i;:::-;22490:13;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;22603:12:0;;22589:10;;22582:17;;:4;:17;:::i;:::-;22581:34;;;;:::i;:::-;22565:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;22311:324:0;22257:743;;;-1:-1:-1;;;;;22673:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;22722:1;22708:11;;:15;22673:50;22669:331;;;22751:32;22779:3;22751:23;22762:11;;22751:6;:10;;:23;;;;:::i;:32::-;22744:39;;22837:11;;22825:8;;22818:4;:15;;;;:::i;:::-;22817:31;;;;:::i;:::-;22802:11;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;22906:11:0;;22892:10;;22885:17;;:4;:17;:::i;:::-;22884:33;;;;:::i;:::-;22867:13;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;22973:11:0;;22960:9;;22953:16;;:4;:16;:::i;:::-;22952:32;;;;:::i;:::-;22936:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;22669:331:0;23018:8;;23014:91;;23047:42;23063:4;23077;23084;23047:15;:42::i;:::-;23119:14;23129:4;23119:14;;:::i;:::-;;;22229:916;23155:33;23171:4;23177:2;23181:6;23155:15;:33::i;:::-;19723:3473;;;;19610:3586;;;:::o;14782:191::-;14875:6;;;-1:-1:-1;;;;;14892:17:0;;;-1:-1:-1;;;;;;14892:17:0;;;;;;;14925:40;;14875:6;;;14892:17;14875:6;;14925:40;;14856:16;;14925:40;14845:128;14782:191;:::o;19418:186::-;-1:-1:-1;;;;;19501:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19501:39:0;;;;;;;;;;19556:40;;19501:39;;:31;19556:40;;;19418:186;;:::o;11662:725::-;-1:-1:-1;;;;;11802:20:0;;11794:70;;;;-1:-1:-1;;;11794:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11883:23:0;;11875:71;;;;-1:-1:-1;;;11875:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12039:17:0;;12015:21;12039:17;;;;;;;;;;;12075:23;;;;12067:74;;;;-1:-1:-1;;;12067:74:0;;11596:2:1;12067:74:0;;;11578:21:1;11635:2;11615:18;;;11608:30;11674:34;11654:18;;;11647:62;-1:-1:-1;;;11725:18:1;;;11718:36;11771:19;;12067:74:0;11394:402:1;12067:74:0;-1:-1:-1;;;;;12177:17:0;;;:9;:17;;;;;;;;;;;12197:22;;;12177:42;;12241:20;;;;;;;;:30;;12213:6;;12177:9;12241:30;;12213:6;;12241:30;:::i;:::-;;;;;;;;12304:9;-1:-1:-1;;;;;12287:35:0;12296:6;-1:-1:-1;;;;;12287:35:0;;12315:6;12287:35;;;;1847:25:1;;1835:2;1820:18;;1701:177;12287:35:0;;;;;;;;12333:46;19610:3586;24642:1680;24725:4;24681:23;9985:18;;;;;;;;;;;24681:50;;24742:20;24779:15;24765:11;;:29;;;;:::i;:::-;24742:52;;24805:25;24888:13;;24860:12;;24833:11;;:39;;;;:::i;:::-;:68;;;;:::i;:::-;24805:96;-1:-1:-1;24912:12:0;24939:20;;;:46;;-1:-1:-1;24963:22:0;;24939:46;24935:85;;;25002:7;;;;24642:1680::o;24935:85::-;25052:13;;:18;;25068:2;25052:18;:::i;:::-;25034:15;:36;25030:105;;;25105:13;;:18;;25121:2;25105:18;:::i;:::-;25087:36;;25030:105;25145:23;25251:1;25218:17;25190:11;;25172:15;:29;;;;:::i;:::-;25171:64;;;;:::i;:::-;:81;;;;:::i;:::-;25145:107;-1:-1:-1;25263:26:0;25292:36;:15;25145:107;25292:19;:36::i;:::-;25263:65;-1:-1:-1;25367:21:0;25399:36;25263:65;25399:16;:36::i;:::-;25446:18;25467:44;:21;25493:17;25467:25;:44::i;:::-;25446:65;;25522:21;25546:71;25614:1;25600:11;;:15;;;;:::i;:::-;25579:37;;:17;:37;:::i;:::-;25561:12;;25546:28;;:10;;:14;:28::i;:71::-;25522:95;;25628:18;25649:72;25718:1;25704:11;;:15;;;;:::i;:::-;25683:37;;:17;:37;:::i;:::-;25664:13;;25649:29;;:10;;:14;:29::i;:72::-;25628:93;-1:-1:-1;25732:23:0;25628:93;25758:26;25771:13;25758:10;:26;:::i;:::-;:39;;;;:::i;:::-;25822:1;25808:11;:15;;;25834:12;:16;;;25861:13;:17;;;25911:10;;25903:47;;25732:65;;-1:-1:-1;;;;;;25911:10:0;;25935;;25903:47;25822:1;25903:47;25935:10;25911;25903:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25889:61:0;;-1:-1:-1;;25965:19:0;;;;;:42;;;26006:1;25988:15;:19;25965:42;25961:271;;;26024:46;26037:15;26054;26024:12;:46::i;:::-;26194:11;;26090:130;;;12003:25:1;;;12059:2;12044:18;;12037:34;;;12087:18;;;12080:34;;;;26090:130:0;;;;;;11991:2:1;26090:130:0;;;25961:271;26264:10;;26256:58;;-1:-1:-1;;;;;26264:10:0;;;;26288:21;;26256:58;;;;26288:21;26264:10;26256:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;24642:1680:0:o;1675:98::-;1733:7;1760:5;1764:1;1760;:5;:::i;:::-;1753:12;1675:98;-1:-1:-1;;;1675:98:0:o;1779:::-;1837:7;1864:5;1868:1;1864;:5;:::i;1571:98::-;1629:7;1656:5;1660:1;1656;:5;:::i;18752:472::-;18842:16;;;18856:1;18842:16;;;;;;;;18818:21;;18842:16;;;;;;;;;;-1:-1:-1;18842:16:0;18818:40;;18887:4;18869;18874:1;18869:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18869:23:0;;;:7;;;;;;;;;;:23;;;;18913:15;;:22;;;-1:-1:-1;;;18913:22:0;;;;:15;;;;;:20;;:22;;;;;18869:7;;18913:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18903:4;18908:1;18903:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18903:32:0;;;:7;;;;;;;;;:32;18978:15;;18946:62;;18963:4;;18978:15;18996:11;18946:8;:62::i;:::-;19019:15;;:197;;-1:-1:-1;;;19019:197:0;;-1:-1:-1;;;;;19019:15:0;;;;:66;;:197;;19100:11;;19019:15;;19143:4;;19170;;19190:15;;19019:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18807:417;18752:472;:::o;23778:362::-;23891:15;;23859:62;;23876:4;;-1:-1:-1;;;;;23891:15:0;23909:11;23859:8;:62::i;:::-;23932:15;;-1:-1:-1;;;;;23932:15:0;:31;23971:9;24004:4;24024:11;23932:15;;24084:7;14320:6;;-1:-1:-1;;;;;14320:6:0;;14247:87;24084:7;23932:200;;;;;;-1:-1:-1;;;;;;23932:200:0;;;-1:-1:-1;;;;;13733:15:1;;;23932:200:0;;;13715:34:1;13765:18;;;13758:34;;;;13808:18;;;13801:34;;;;13851:18;;;13844:34;13915:15;;;13894:19;;;13887:44;24106:15:0;13947:19:1;;;13940:35;13649:19;;23932:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23778:362;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:118::-;2827:5;2820:13;2813:21;2806:5;2803:32;2793:60;;2849:1;2846;2839:12;2864:382;2929:6;2937;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;3045:9;3032:23;3064:31;3089:5;3064:31;:::i;:::-;3114:5;-1:-1:-1;3171:2:1;3156:18;;3143:32;3184:30;3143:32;3184:30;:::i;:::-;3233:7;3223:17;;;2864:382;;;;;:::o;3251:388::-;3319:6;3327;3380:2;3368:9;3359:7;3355:23;3351:32;3348:52;;;3396:1;3393;3386:12;3348:52;3435:9;3422:23;3454:31;3479:5;3454:31;:::i;:::-;3504:5;-1:-1:-1;3561:2:1;3546:18;;3533:32;3574:33;3533:32;3574:33;:::i;3644:380::-;3723:1;3719:12;;;;3766;;;3787:61;;3841:4;3833:6;3829:17;3819:27;;3787:61;3894:2;3886:6;3883:14;3863:18;3860:38;3857:161;;3940:10;3935:3;3931:20;3928:1;3921:31;3975:4;3972:1;3965:15;4003:4;4000:1;3993:15;3857:161;;3644:380;;;:::o;4438:127::-;4499:10;4494:3;4490:20;4487:1;4480:31;4530:4;4527:1;4520:15;4554:4;4551:1;4544:15;4570:125;4635:9;;;4656:10;;;4653:36;;;4669:18;;:::i;4700:356::-;4902:2;4884:21;;;4921:18;;;4914:30;4980:34;4975:2;4960:18;;4953:62;5047:2;5032:18;;4700:356::o;5271:251::-;5341:6;5394:2;5382:9;5373:7;5369:23;5365:32;5362:52;;;5410:1;5407;5400:12;5362:52;5442:9;5436:16;5461:31;5486:5;5461:31;:::i;6597:184::-;6667:6;6720:2;6708:9;6699:7;6695:23;6691:32;6688:52;;;6736:1;6733;6726:12;6688:52;-1:-1:-1;6759:16:1;;6597:184;-1:-1:-1;6597:184:1:o;7065:245::-;7132:6;7185:2;7173:9;7164:7;7160:23;7156:32;7153:52;;;7201:1;7198;7191:12;7153:52;7233:9;7227:16;7252:28;7274:5;7252:28;:::i;8530:401::-;8732:2;8714:21;;;8771:2;8751:18;;;8744:30;8810:34;8805:2;8790:18;;8783:62;-1:-1:-1;;;8876:2:1;8861:18;;8854:35;8921:3;8906:19;;8530:401::o;8936:399::-;9138:2;9120:21;;;9177:2;9157:18;;;9150:30;9216:34;9211:2;9196:18;;9189:62;-1:-1:-1;;;9282:2:1;9267:18;;9260:33;9325:3;9310:19;;8936:399::o;10866:168::-;10939:9;;;10970;;10987:15;;;10981:22;;10967:37;10957:71;;11008:18;;:::i;11039:217::-;11079:1;11105;11095:132;;11149:10;11144:3;11140:20;11137:1;11130:31;11184:4;11181:1;11174:15;11212:4;11209:1;11202:15;11095:132;-1:-1:-1;11241:9:1;;11039:217::o;11261:128::-;11328:9;;;11349:11;;;11346:37;;;11363:18;;:::i;12257:127::-;12318:10;12313:3;12309:20;12306:1;12299:31;12349:4;12346:1;12339:15;12373:4;12370:1;12363:15;12389:980;12651:4;12699:3;12688:9;12684:19;12730:6;12719:9;12712:25;12756:2;12794:6;12789:2;12778:9;12774:18;12767:34;12837:3;12832:2;12821:9;12817:18;12810:31;12861:6;12896;12890:13;12927:6;12919;12912:22;12965:3;12954:9;12950:19;12943:26;;13004:2;12996:6;12992:15;12978:29;;13025:1;13035:195;13049:6;13046:1;13043:13;13035:195;;;13114:13;;-1:-1:-1;;;;;13110:39:1;13098:52;;13205:15;;;;13170:12;;;;13146:1;13064:9;13035:195;;;-1:-1:-1;;;;;;;13286:32:1;;;;13281:2;13266:18;;13259:60;-1:-1:-1;;;13350:3:1;13335:19;13328:35;13247:3;12389:980;-1:-1:-1;;;12389:980:1:o;13986:306::-;14074:6;14082;14090;14143:2;14131:9;14122:7;14118:23;14114:32;14111:52;;;14159:1;14156;14149:12;14111:52;14188:9;14182:16;14172:26;;14238:2;14227:9;14223:18;14217:25;14207:35;;14282:2;14271:9;14267:18;14261:25;14251:35;;13986:306;;;;;:::o

Swarm Source

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