ETH Price: $2,607.85 (+0.65%)
Gas: 1 Gwei

Token

0xB0B (BOB)
 

Overview

Max Total Supply

1,000,000 BOB

Holders

33

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
OXB0B

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-24
*/

//https://0xb0b.com
//https://t.me/OxBOBportal

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

interface ILpPair {
    function sync() external;
}

contract OXB0B is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;

    uint256 public tradingActiveBlock;
    uint256 public tradingActiveTs;
    uint256 public blockForPenaltyEnd;

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

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

    uint256 public buyTotalFees;
    uint256 public buymarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellmarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensFormarketing;
    uint256 public tokensForLiquidity;

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

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

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

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

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedmarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("0xB0B", "BOB") {

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

        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2

        dexRouter = IDexRouter(_dexRouter);

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

        uint256 totalSupply = 1 * 1e6 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 10000; 

        buymarketingFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buymarketingFee + buyLiquidityFee;

        sellmarketingFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellmarketingFee + sellLiquidityFee;

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

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

        marketingAddress = address(newOwner);

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

    receive() external payable {}

    function openTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(deadBlocks <= 4, "Cannot set more than 4 deadblocks");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        tradingActiveTs = block.timestamp;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

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

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

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buymarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buymarketingFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        sellmarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellmarketingFee + sellLiquidityFee;
    }

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

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

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

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;

        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){
                fees = amount * 98 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFormarketing += fees * buymarketingFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensFormarketing += fees * sellmarketingFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFormarketing += fees * buymarketingFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {

        if(tokensForLiquidity > 0 && balanceOf(address(this)) >= tokensForLiquidity) {
            super._transfer(address(this), address(lpPair),tokensForLiquidity);
            ILpPair(lpPair).sync();
        }
        tokensForLiquidity = 0;

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) {return;}

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

        swapTokensForEth(contractBalance);

        tokensFormarketing = balanceOf(address(this));
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedmarketingAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buymarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensFormarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600e805462ffffff191660019081179091556010805460ff191690911790553480156200002f575f80fd5b5060405180604001604052806005815260200164183c21182160d91b815250604051806040016040528060038152602001622127a160e91b81525081600390816200007b9190620007a9565b5060046200008a8282620007a9565b5050505f6200009e620003b160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062002e01833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000132573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000158919062000871565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000871565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000217573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023d919062000871565b6001600160a01b031660a081905262000258906001620003b5565b60a0516200026890600162000417565b69d3c21bcecceda1000000606462000282826002620008b4565b6200028e9190620008d4565b6006556064620002a0826002620008b4565b620002ac9190620008d4565b600755612710620002bf826001620008b4565b620002cb9190620008d4565b600955601960128190555f6013819055620002e691620008f4565b601155602360158190555f60168190556200030191620008f4565b60145562000311836001620003b5565b6200031e306001620003b5565b6200032d61dead6001620003b5565b6080516200033d906001620003b5565b6200034a83600162000481565b6200035730600162000481565b6200036661dead600162000481565b6080516200037690600162000481565b600a80546001600160a01b0319166001600160a01b0385161790556200039d83826200052d565b620003a8836200060f565b5050506200090a565b3390565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055620004468282620003b5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004cf5760405162461bcd60e51b815260206004820181905260248201525f8051602062002de183398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004c6565b8060025f828254620005989190620008f4565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005c6908490620008f4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006595760405162461bcd60e51b815260206004820181905260248201525f8051602062002de18339815191526044820152606401620004c6565b6001600160a01b038116620006c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004c6565b6005546040516001600160a01b038084169216905f8051602062002e01833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200073257607f821691505b6020821081036200075157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007a4575f81815260208120601f850160051c810160208610156200077f5750805b601f850160051c820191505b81811015620007a0578281556001016200078b565b5050505b505050565b81516001600160401b03811115620007c557620007c562000709565b620007dd81620007d684546200071d565b8462000757565b602080601f83116001811462000813575f8415620007fb5750858301515b5f19600386901b1c1916600185901b178555620007a0565b5f85815260208120601f198616915b82811015620008435788860151825594840194600190910190840162000822565b50858210156200086157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000882575f80fd5b81516001600160a01b038116811462000899575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008ce57620008ce620008a0565b92915050565b5f82620008ef57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008ce57620008ce620008a0565b60805160a0516124766200096b5f395f818161044801528181610c4401528181610d380152818161163201528181611c1c0152611c4501525f81816102ea015281816115f501528181611ee901528181611fa00152611fdf01526124765ff3fe608060405260043610610283575f3560e01c80637571336a11610155578063c0246668116100be578063e2f4560511610078578063e2f456051461078d578063e884f260146107a2578063ee40166e146107b6578063f11a24d3146107cb578063f2fde38b146107e0578063f6374342146107ff575f80fd5b8063c0246668146106be578063c876d0b9146106dd578063d1633649146106f6578063d257b34f14610715578063d85ba06314610734578063dd62ed3e14610749575f80fd5b8063a184e6dc1161010f578063a184e6dc1461060a578063a457c2d71461061f578063a62068ce1461063e578063a9059cbb14610653578063b62496f514610672578063bbc0c742146106a0575f80fd5b80637571336a1461057157806388e765ff1461059057806389c9e320146105a55780638da5cb5b146105ba57806395d89b41146105d75780639a7a23d6146105eb575f80fd5b806339509351116101f757806366d602ae116101b157806366d602ae146104cc5780636a486a8e146104e15780636ddd1713146104f657806370a0823114610515578063715018a614610549578063751039fc1461055d575f80fd5b80633950935114610418578063452ed4f1146104375780634a62bb651461046a57806351f205e41461048357806358a6d5311461049757806366ca9b83146104ad575f80fd5b806318160ddd1161024857806318160ddd1461038157806318d213e21461039f57806319466ebe146103b45780631a8145bb146103c957806323b872dd146103de578063313ce567146103fd575f80fd5b806302dbd8f81461028e57806306fdde03146102af5780630758d924146102d9578063095ea7b31461032457806310d5de5314610353575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a83660046120b3565b610814565b005b3480156102ba575f80fd5b506102c3610862565b6040516102d091906120d3565b60405180910390f35b3480156102e4575f80fd5b5061030c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d0565b34801561032f575f80fd5b5061034361033e366004612135565b6108f2565b60405190151581526020016102d0565b34801561035e575f80fd5b5061034361036d36600461215f565b601a6020525f908152604090205460ff1681565b34801561038c575f80fd5b506002545b6040519081526020016102d0565b3480156103aa575f80fd5b5061039160125481565b3480156103bf575f80fd5b5061039160175481565b3480156103d4575f80fd5b5061039160185481565b3480156103e9575f80fd5b506103436103f8366004612181565b610908565b348015610408575f80fd5b50604051601281526020016102d0565b348015610423575f80fd5b50610343610432366004612135565b6109b0565b348015610442575f80fd5b5061030c7f000000000000000000000000000000000000000000000000000000000000000081565b348015610475575f80fd5b50600e546103439060ff1681565b34801561048e575f80fd5b506102ad6109eb565b3480156104a2575f80fd5b50600d544310610343565b3480156104b8575f80fd5b506102ad6104c73660046120b3565b610af1565b3480156104d7575f80fd5b5061039160075481565b3480156104ec575f80fd5b5061039160145481565b348015610501575f80fd5b50600e546103439062010000900460ff1681565b348015610520575f80fd5b5061039161052f36600461215f565b6001600160a01b03165f9081526020819052604090205490565b348015610554575f80fd5b506102ad610b36565b348015610568575f80fd5b506102ad610ba9565b34801561057c575f80fd5b506102ad61058b3660046121bf565b610c13565b34801561059b575f80fd5b5061039160065481565b3480156105b0575f80fd5b50610391600c5481565b3480156105c5575f80fd5b506005546001600160a01b031661030c565b3480156105e2575f80fd5b506102c3610cfd565b3480156105f6575f80fd5b506102ad6106053660046121bf565b610d0c565b348015610615575f80fd5b5061039160155481565b34801561062a575f80fd5b50610343610639366004612135565b610e22565b348015610649575f80fd5b50610391600d5481565b34801561065e575f80fd5b5061034361066d366004612135565b610eba565b34801561067d575f80fd5b5061034361068c36600461215f565b601b6020525f908152604090205460ff1681565b3480156106ab575f80fd5b50600e5461034390610100900460ff1681565b3480156106c9575f80fd5b506102ad6106d83660046121bf565b610ec6565b3480156106e8575f80fd5b506010546103439060ff1681565b348015610701575f80fd5b506102ad6107103660046121fa565b610f4e565b348015610720575f80fd5b506102ad61072f3660046121fa565b61107f565b34801561073f575f80fd5b5061039160115481565b348015610754575f80fd5b50610391610763366004612211565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610798575f80fd5b5061039160095481565b3480156107ad575f80fd5b506102ad6111ca565b3480156107c1575f80fd5b50610391600b5481565b3480156107d6575f80fd5b5061039160135481565b3480156107eb575f80fd5b506102ad6107fa36600461215f565b611200565b34801561080a575f80fd5b5061039160165481565b6005546001600160a01b031633146108475760405162461bcd60e51b815260040161083e9061223d565b60405180910390fd5b6015829055601681905561085b8183612286565b6014555050565b60606003805461087190612299565b80601f016020809104026020016040519081016040528092919081815260200182805461089d90612299565b80156108e85780601f106108bf576101008083540402835291602001916108e8565b820191905f5260205f20905b8154815290600101906020018083116108cb57829003601f168201915b5050505050905090565b5f6108fe3384846112ea565b5060015b92915050565b5f61091484848461140d565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109985760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161083e565b6109a585338584036112ea565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108fe9185906109e6908690612286565b6112ea565b6005546001600160a01b03163314610a155760405162461bcd60e51b815260040161083e9061223d565b600954305f908152602081905260409020541015610a9d576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e606482015260840161083e565b6008805460ff19166001179055610ab2611bf0565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b815260040161083e9061223d565b60128290556013819055610b2f8183612286565b6011555050565b6005546001600160a01b03163314610b605760405162461bcd60e51b815260040161083e9061223d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bd35760405162461bcd60e51b815260040161083e9061223d565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610c3d5760405162461bcd60e51b815260040161083e9061223d565b80610cd3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610cd35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b606482015260840161083e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b60606004805461087190612299565b6005546001600160a01b03163314610d365760405162461bcd60e51b815260040161083e9061223d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ddd5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161083e565b610de78282611d14565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ea35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161083e565b610eb033858584036112ea565b5060019392505050565b5f6108fe33848461140d565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161083e9061223d565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f785760405162461bcd60e51b815260040161083e9061223d565b600e54610100900460ff1615610fd05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161083e565b600481111561102b5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20342064656164626c6f636b6044820152607360f81b606482015260840161083e565b600e805462ffff0019166201010017905543600b81905542600c55611051908290612286565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146110a95760405162461bcd60e51b815260040161083e9061223d565b620186a06110b660025490565b6110c19060016122d1565b6110cb91906122e8565b8110156111385760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161083e565b6103e861114460025490565b61114f9060016122d1565b61115991906122e8565b8111156111c55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b606482015260840161083e565b600955565b6005546001600160a01b031633146111f45760405162461bcd60e51b815260040161083e9061223d565b6010805460ff19169055565b6005546001600160a01b0316331461122a5760405162461bcd60e51b815260040161083e9061223d565b6001600160a01b03811661128f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083e565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661134c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083e565b6001600160a01b0382166113ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114335760405162461bcd60e51b815260040161083e90612307565b6001600160a01b0382166114595760405162461bcd60e51b815260040161083e9061234c565b5f81116114a85760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161083e565b600e54610100900460ff16611539576001600160a01b0383165f9081526019602052604090205460ff16806114f457506001600160a01b0382165f9081526019602052604090205460ff165b6115395760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161083e565b600e5460ff1615611896576005546001600160a01b0384811691161480159061157057506005546001600160a01b03838116911614155b801561158457506001600160a01b03821615155b801561159b57506001600160a01b03821661dead14155b80156115bf57506001600160a01b0383165f9081526019602052604090205460ff16155b80156115e357506001600160a01b0382165f9081526019602052604090205460ff16155b156118965760105460ff1615611741577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561166757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156117415761167760024361238f565b325f908152600f60205260409020541080156116b3575061169960024361238f565b6001600160a01b0383165f908152600f6020526040902054105b61171d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b606482015260840161083e565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff16801561178057506001600160a01b0382165f908152601a602052604090205460ff16155b156117ed576006548111156117e85760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161083e565b611896565b6001600160a01b0382165f908152601b602052604090205460ff16801561182c57506001600160a01b0383165f908152601a602052604090205460ff16155b15611896576007548111156118965760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b606482015260840161083e565b305f90815260208190526040902054600954811080159081906118c15750600e5462010000900460ff165b80156118d0575060085460ff16155b80156118f457506001600160a01b0385165f908152601b602052604090205460ff16155b801561191857506001600160a01b0385165f9081526019602052604090205460ff16155b801561193c57506001600160a01b0384165f9081526019602052604090205460ff16155b15611961576008805460ff19166001179055611956611bf0565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff16806119a157506001600160a01b0385165f9081526019602052604090205460ff165b156119a957505f5b5f8115611bdc57600d54431080156119d857506001600160a01b0387165f908152601b602052604090205460ff165b80156119fc57506001600160a01b0386165f908152601b602052604090205460ff16155b8015611a0957505f601154115b15611a8c576064611a1b8660626122d1565b611a2591906122e8565b905060115460135482611a3891906122d1565b611a4291906122e8565b60185f828254611a529190612286565b9091555050601154601254611a6790836122d1565b611a7191906122e8565b60175f828254611a819190612286565b90915550611bbe9050565b6001600160a01b0386165f908152601b602052604090205460ff168015611ab457505f601454115b15611b1557606460145486611ac991906122d1565b611ad391906122e8565b905060145460165482611ae691906122d1565b611af091906122e8565b60185f828254611b009190612286565b9091555050601454601554611a6790836122d1565b6001600160a01b0387165f908152601b602052604090205460ff168015611b3d57505f601154115b15611bbe57606460115486611b5291906122d1565b611b5c91906122e8565b905060115460135482611b6f91906122d1565b611b7991906122e8565b60185f828254611b899190612286565b9091555050601154601254611b9e90836122d1565b611ba891906122e8565b60175f828254611bb89190612286565b90915550505b8015611bcf57611bcf873083611d41565b611bd9818661238f565b94505b611be7878787611d41565b50505050505050565b5f601854118015611c115750601854305f9081526020819052604090205410155b15611cb257611c43307f0000000000000000000000000000000000000000000000000000000000000000601854611d41565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611c9b575f80fd5b505af1158015611cad573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611cd05750565b600954611cde90601e6122d1565b811115611cf657600954611cf390601e6122d1565b90505b611cff81611e94565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055610de78282612051565b6001600160a01b038316611d675760405162461bcd60e51b815260040161083e90612307565b6001600160a01b038216611d8d5760405162461bcd60e51b815260040161083e9061234c565b6001600160a01b0383165f9081526020819052604090205481811015611e045760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161083e565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e3a908490612286565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e8691815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ec757611ec76123a2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6791906123b6565b81600181518110611f7a57611f7a6123a2565b60200260200101906001600160a01b031690816001600160a01b031681525050611fc5307f0000000000000000000000000000000000000000000000000000000000000000846112ea565b600a5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926120209287925f928892919091169042906004016123d1565b5f604051808303815f87803b158015612037575f80fd5b505af1158015612049573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f80604083850312156120c4575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b818110156120fe578581018301518582016040015282016120e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612132575f80fd5b50565b5f8060408385031215612146575f80fd5b82356121518161211e565b946020939093013593505050565b5f6020828403121561216f575f80fd5b813561217a8161211e565b9392505050565b5f805f60608486031215612193575f80fd5b833561219e8161211e565b925060208401356121ae8161211e565b929592945050506040919091013590565b5f80604083850312156121d0575f80fd5b82356121db8161211e565b9150602083013580151581146121ef575f80fd5b809150509250929050565b5f6020828403121561220a575f80fd5b5035919050565b5f8060408385031215612222575f80fd5b823561222d8161211e565b915060208301356121ef8161211e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561090257610902612272565b600181811c908216806122ad57607f821691505b6020821081036122cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b808202811582820484141761090257610902612272565b5f8261230257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561090257610902612272565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156123c6575f80fd5b815161217a8161211e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561241f5784516001600160a01b0316835293830193918301916001016123fa565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220465c9e82ba7f5df6ac2226000c725d186f9ed0b2d6c358b3d06032dcf2d3e01f64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x608060405260043610610283575f3560e01c80637571336a11610155578063c0246668116100be578063e2f4560511610078578063e2f456051461078d578063e884f260146107a2578063ee40166e146107b6578063f11a24d3146107cb578063f2fde38b146107e0578063f6374342146107ff575f80fd5b8063c0246668146106be578063c876d0b9146106dd578063d1633649146106f6578063d257b34f14610715578063d85ba06314610734578063dd62ed3e14610749575f80fd5b8063a184e6dc1161010f578063a184e6dc1461060a578063a457c2d71461061f578063a62068ce1461063e578063a9059cbb14610653578063b62496f514610672578063bbc0c742146106a0575f80fd5b80637571336a1461057157806388e765ff1461059057806389c9e320146105a55780638da5cb5b146105ba57806395d89b41146105d75780639a7a23d6146105eb575f80fd5b806339509351116101f757806366d602ae116101b157806366d602ae146104cc5780636a486a8e146104e15780636ddd1713146104f657806370a0823114610515578063715018a614610549578063751039fc1461055d575f80fd5b80633950935114610418578063452ed4f1146104375780634a62bb651461046a57806351f205e41461048357806358a6d5311461049757806366ca9b83146104ad575f80fd5b806318160ddd1161024857806318160ddd1461038157806318d213e21461039f57806319466ebe146103b45780631a8145bb146103c957806323b872dd146103de578063313ce567146103fd575f80fd5b806302dbd8f81461028e57806306fdde03146102af5780630758d924146102d9578063095ea7b31461032457806310d5de5314610353575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102ad6102a83660046120b3565b610814565b005b3480156102ba575f80fd5b506102c3610862565b6040516102d091906120d3565b60405180910390f35b3480156102e4575f80fd5b5061030c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d0565b34801561032f575f80fd5b5061034361033e366004612135565b6108f2565b60405190151581526020016102d0565b34801561035e575f80fd5b5061034361036d36600461215f565b601a6020525f908152604090205460ff1681565b34801561038c575f80fd5b506002545b6040519081526020016102d0565b3480156103aa575f80fd5b5061039160125481565b3480156103bf575f80fd5b5061039160175481565b3480156103d4575f80fd5b5061039160185481565b3480156103e9575f80fd5b506103436103f8366004612181565b610908565b348015610408575f80fd5b50604051601281526020016102d0565b348015610423575f80fd5b50610343610432366004612135565b6109b0565b348015610442575f80fd5b5061030c7f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f781565b348015610475575f80fd5b50600e546103439060ff1681565b34801561048e575f80fd5b506102ad6109eb565b3480156104a2575f80fd5b50600d544310610343565b3480156104b8575f80fd5b506102ad6104c73660046120b3565b610af1565b3480156104d7575f80fd5b5061039160075481565b3480156104ec575f80fd5b5061039160145481565b348015610501575f80fd5b50600e546103439062010000900460ff1681565b348015610520575f80fd5b5061039161052f36600461215f565b6001600160a01b03165f9081526020819052604090205490565b348015610554575f80fd5b506102ad610b36565b348015610568575f80fd5b506102ad610ba9565b34801561057c575f80fd5b506102ad61058b3660046121bf565b610c13565b34801561059b575f80fd5b5061039160065481565b3480156105b0575f80fd5b50610391600c5481565b3480156105c5575f80fd5b506005546001600160a01b031661030c565b3480156105e2575f80fd5b506102c3610cfd565b3480156105f6575f80fd5b506102ad6106053660046121bf565b610d0c565b348015610615575f80fd5b5061039160155481565b34801561062a575f80fd5b50610343610639366004612135565b610e22565b348015610649575f80fd5b50610391600d5481565b34801561065e575f80fd5b5061034361066d366004612135565b610eba565b34801561067d575f80fd5b5061034361068c36600461215f565b601b6020525f908152604090205460ff1681565b3480156106ab575f80fd5b50600e5461034390610100900460ff1681565b3480156106c9575f80fd5b506102ad6106d83660046121bf565b610ec6565b3480156106e8575f80fd5b506010546103439060ff1681565b348015610701575f80fd5b506102ad6107103660046121fa565b610f4e565b348015610720575f80fd5b506102ad61072f3660046121fa565b61107f565b34801561073f575f80fd5b5061039160115481565b348015610754575f80fd5b50610391610763366004612211565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610798575f80fd5b5061039160095481565b3480156107ad575f80fd5b506102ad6111ca565b3480156107c1575f80fd5b50610391600b5481565b3480156107d6575f80fd5b5061039160135481565b3480156107eb575f80fd5b506102ad6107fa36600461215f565b611200565b34801561080a575f80fd5b5061039160165481565b6005546001600160a01b031633146108475760405162461bcd60e51b815260040161083e9061223d565b60405180910390fd5b6015829055601681905561085b8183612286565b6014555050565b60606003805461087190612299565b80601f016020809104026020016040519081016040528092919081815260200182805461089d90612299565b80156108e85780601f106108bf576101008083540402835291602001916108e8565b820191905f5260205f20905b8154815290600101906020018083116108cb57829003601f168201915b5050505050905090565b5f6108fe3384846112ea565b5060015b92915050565b5f61091484848461140d565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109985760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161083e565b6109a585338584036112ea565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916108fe9185906109e6908690612286565b6112ea565b6005546001600160a01b03163314610a155760405162461bcd60e51b815260040161083e9061223d565b600954305f908152602081905260409020541015610a9d576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e606482015260840161083e565b6008805460ff19166001179055610ab2611bf0565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b815260040161083e9061223d565b60128290556013819055610b2f8183612286565b6011555050565b6005546001600160a01b03163314610b605760405162461bcd60e51b815260040161083e9061223d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bd35760405162461bcd60e51b815260040161083e9061223d565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610c3d5760405162461bcd60e51b815260040161083e9061223d565b80610cd3577f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f76001600160a01b0316826001600160a01b031603610cd35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b606482015260840161083e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b60606004805461087190612299565b6005546001600160a01b03163314610d365760405162461bcd60e51b815260040161083e9061223d565b7f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f76001600160a01b0316826001600160a01b031603610ddd5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161083e565b610de78282611d14565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ea35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161083e565b610eb033858584036112ea565b5060019392505050565b5f6108fe33848461140d565b6005546001600160a01b03163314610ef05760405162461bcd60e51b815260040161083e9061223d565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f785760405162461bcd60e51b815260040161083e9061223d565b600e54610100900460ff1615610fd05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161083e565b600481111561102b5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20342064656164626c6f636b6044820152607360f81b606482015260840161083e565b600e805462ffff0019166201010017905543600b81905542600c55611051908290612286565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146110a95760405162461bcd60e51b815260040161083e9061223d565b620186a06110b660025490565b6110c19060016122d1565b6110cb91906122e8565b8110156111385760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161083e565b6103e861114460025490565b61114f9060016122d1565b61115991906122e8565b8111156111c55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b606482015260840161083e565b600955565b6005546001600160a01b031633146111f45760405162461bcd60e51b815260040161083e9061223d565b6010805460ff19169055565b6005546001600160a01b0316331461122a5760405162461bcd60e51b815260040161083e9061223d565b6001600160a01b03811661128f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083e565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661134c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083e565b6001600160a01b0382166113ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114335760405162461bcd60e51b815260040161083e90612307565b6001600160a01b0382166114595760405162461bcd60e51b815260040161083e9061234c565b5f81116114a85760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161083e565b600e54610100900460ff16611539576001600160a01b0383165f9081526019602052604090205460ff16806114f457506001600160a01b0382165f9081526019602052604090205460ff165b6115395760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161083e565b600e5460ff1615611896576005546001600160a01b0384811691161480159061157057506005546001600160a01b03838116911614155b801561158457506001600160a01b03821615155b801561159b57506001600160a01b03821661dead14155b80156115bf57506001600160a01b0383165f9081526019602052604090205460ff16155b80156115e357506001600160a01b0382165f9081526019602052604090205460ff16155b156118965760105460ff1615611741577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b03161415801561166757507f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f76001600160a01b0316826001600160a01b031614155b156117415761167760024361238f565b325f908152600f60205260409020541080156116b3575061169960024361238f565b6001600160a01b0383165f908152600f6020526040902054105b61171d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b606482015260840161083e565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff16801561178057506001600160a01b0382165f908152601a602052604090205460ff16155b156117ed576006548111156117e85760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161083e565b611896565b6001600160a01b0382165f908152601b602052604090205460ff16801561182c57506001600160a01b0383165f908152601a602052604090205460ff16155b15611896576007548111156118965760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b606482015260840161083e565b305f90815260208190526040902054600954811080159081906118c15750600e5462010000900460ff165b80156118d0575060085460ff16155b80156118f457506001600160a01b0385165f908152601b602052604090205460ff16155b801561191857506001600160a01b0385165f9081526019602052604090205460ff16155b801561193c57506001600160a01b0384165f9081526019602052604090205460ff16155b15611961576008805460ff19166001179055611956611bf0565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff16806119a157506001600160a01b0385165f9081526019602052604090205460ff165b156119a957505f5b5f8115611bdc57600d54431080156119d857506001600160a01b0387165f908152601b602052604090205460ff165b80156119fc57506001600160a01b0386165f908152601b602052604090205460ff16155b8015611a0957505f601154115b15611a8c576064611a1b8660626122d1565b611a2591906122e8565b905060115460135482611a3891906122d1565b611a4291906122e8565b60185f828254611a529190612286565b9091555050601154601254611a6790836122d1565b611a7191906122e8565b60175f828254611a819190612286565b90915550611bbe9050565b6001600160a01b0386165f908152601b602052604090205460ff168015611ab457505f601454115b15611b1557606460145486611ac991906122d1565b611ad391906122e8565b905060145460165482611ae691906122d1565b611af091906122e8565b60185f828254611b009190612286565b9091555050601454601554611a6790836122d1565b6001600160a01b0387165f908152601b602052604090205460ff168015611b3d57505f601154115b15611bbe57606460115486611b5291906122d1565b611b5c91906122e8565b905060115460135482611b6f91906122d1565b611b7991906122e8565b60185f828254611b899190612286565b9091555050601154601254611b9e90836122d1565b611ba891906122e8565b60175f828254611bb89190612286565b90915550505b8015611bcf57611bcf873083611d41565b611bd9818661238f565b94505b611be7878787611d41565b50505050505050565b5f601854118015611c115750601854305f9081526020819052604090205410155b15611cb257611c43307f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f7601854611d41565b7f0000000000000000000000009f9f4af8c84068f9f43fbc1b34ff47a7235382f76001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611c9b575f80fd5b505af1158015611cad573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611cd05750565b600954611cde90601e6122d1565b811115611cf657600954611cf390601e6122d1565b90505b611cff81611e94565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055610de78282612051565b6001600160a01b038316611d675760405162461bcd60e51b815260040161083e90612307565b6001600160a01b038216611d8d5760405162461bcd60e51b815260040161083e9061234c565b6001600160a01b0383165f9081526020819052604090205481811015611e045760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161083e565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e3a908490612286565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e8691815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ec757611ec76123a2565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6791906123b6565b81600181518110611f7a57611f7a6123a2565b60200260200101906001600160a01b031690816001600160a01b031681525050611fc5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112ea565b600a5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926120209287925f928892919091169042906004016123d1565b5f604051808303815f87803b158015612037575f80fd5b505af1158015612049573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f80604083850312156120c4575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b818110156120fe578581018301518582016040015282016120e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612132575f80fd5b50565b5f8060408385031215612146575f80fd5b82356121518161211e565b946020939093013593505050565b5f6020828403121561216f575f80fd5b813561217a8161211e565b9392505050565b5f805f60608486031215612193575f80fd5b833561219e8161211e565b925060208401356121ae8161211e565b929592945050506040919091013590565b5f80604083850312156121d0575f80fd5b82356121db8161211e565b9150602083013580151581146121ef575f80fd5b809150509250929050565b5f6020828403121561220a575f80fd5b5035919050565b5f8060408385031215612222575f80fd5b823561222d8161211e565b915060208301356121ef8161211e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561090257610902612272565b600181811c908216806122ad57607f821691505b6020821081036122cb57634e487b7160e01b5f52602260045260245ffd5b50919050565b808202811582820484141761090257610902612272565b5f8261230257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561090257610902612272565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156123c6575f80fd5b815161217a8161211e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561241f5784516001600160a01b0316835293830193918301916001016123fa565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220465c9e82ba7f5df6ac2226000c725d186f9ed0b2d6c358b3d06032dcf2d3e01f64736f6c63430008140033

Deployed Bytecode Sourcemap

10147:12942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16628:245;;;;;;;;;;-1:-1:-1;16628:245:0;;;;;:::i;:::-;;:::i;:::-;;3997:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10260:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;10260:37:0;820:221:1;4911:169:0;;;;;;;;;;-1:-1:-1;4911:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;4911:169:0;1502:187:1;11359:64:0;;;;;;;;;;-1:-1:-1;11359:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4318:108;;;;;;;;;;-1:-1:-1;4406:12:0;;4318:108;;;2092:25:1;;;2080:2;2065:18;4318:108:0;1946:177:1;10947:30:0;;;;;;;;;;;;;;;;11136:33;;;;;;;;;;;;;;;;11176;;;;;;;;;;;;;;;;5088:492;;;;;;;;;;-1:-1:-1;5088:492:0;;;;;:::i;:::-;;:::i;4217:93::-;;;;;;;;;;-1:-1:-1;4217:93:0;;4300:2;2731:36:1;;2719:2;2704:18;4217:93:0;2589:184:1;5588:215:0;;;;;;;;;;-1:-1:-1;5588:215:0;;;;;:::i;:::-;;:::i;10304:31::-;;;;;;;;;;;;;;;10566:33;;;;;;;;;;-1:-1:-1;10566:33:0;;;;;;;;22774:312;;;;;;;;;;;;;:::i;20858:120::-;;;;;;;;;;-1:-1:-1;20952:18:0;;20937:12;:33;20858:120;;16381:239;;;;;;;;;;-1:-1:-1;16381:239:0;;;;;:::i;:::-;;:::i;10223:28::-;;;;;;;;;;;;;;;;11023;;;;;;;;;;;;;;;;10646:31;;;;;;;;;;-1:-1:-1;10646:31:0;;;;;;;;;;;4434:127;;;;;;;;;;-1:-1:-1;4434:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4535:18:0;4508:7;4535:18;;;;;;;;;;;;4434:127;8632:150;;;;;;;;;;;;;:::i;14610:154::-;;;;;;;;;;;;;:::i;15562:260::-;;;;;;;;;;-1:-1:-1;15562:260:0;;;;;:::i;:::-;;:::i;10189:27::-;;;;;;;;;;;;;;;;10487:30;;;;;;;;;;;;;;;;8418:79;;;;;;;;;;-1:-1:-1;8483:6:0;;-1:-1:-1;;;;;8483:6:0;8418:79;;4105:104;;;;;;;;;;;;;:::i;15830:295::-;;;;;;;;;;-1:-1:-1;15830:295:0;;;;;:::i;:::-;;:::i;11058:31::-;;;;;;;;;;;;;;;;5811:413;;;;;;;;;;-1:-1:-1;5811:413:0;;;;;:::i;:::-;;:::i;10524:33::-;;;;;;;;;;;;;;;;4569:175;;;;;;;;;;-1:-1:-1;4569:175:0;;;;;:::i;:::-;;:::i;11581:58::-;;;;;;;;;;-1:-1:-1;11581:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10606:33;;;;;;;;;;-1:-1:-1;10606:33:0;;;;;;;;;;;16881:182;;;;;;;;;;-1:-1:-1;16881:182:0;;;;;:::i;:::-;;:::i;10865:39::-;;;;;;;;;;-1:-1:-1;10865:39:0;;;;;;;;14114:444;;;;;;;;;;-1:-1:-1;14114:444:0;;;;;:::i;:::-;;:::i;14993:346::-;;;;;;;;;;-1:-1:-1;14993:346:0;;;;;:::i;:::-;;:::i;10913:27::-;;;;;;;;;;;;;;;;4752:151;;;;;;;;;;-1:-1:-1;4752:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4868:18:0;;;4841:7;4868:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4752:151;10372:33;;;;;;;;;;;;;;;;14825:98;;;;;;;;;;;;;:::i;10447:33::-;;;;;;;;;;;;;;;;10984:30;;;;;;;;;;;;;;;;8790:244;;;;;;;;;;-1:-1:-1;8790:244:0;;;;;:::i;:::-;;:::i;11096:31::-;;;;;;;;;;;;;;;;16628:245;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;;;;;;;;;16728:16:::1;:32:::0;;;16771:16:::1;:32:::0;;;16830:35:::1;16790:13:::0;16747;16830:35:::1;:::i;:::-;16814:13;:51:::0;-1:-1:-1;;16628:245:0:o;3997:100::-;4051:13;4084:5;4077:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3997:100;:::o;4911:169::-;4994:4;5011:39;226:10;5034:7;5043:6;5011:8;:39::i;:::-;-1:-1:-1;5068:4:0;4911:169;;;;;:::o;5088:492::-;5228:4;5245:36;5255:6;5263:9;5274:6;5245:9;:36::i;:::-;-1:-1:-1;;;;;5321:19:0;;5294:24;5321:19;;;:11;:19;;;;;;;;226:10;5321:33;;;;;;;;5373:26;;;;5365:79;;;;-1:-1:-1;;;5365:79:0;;5195:2:1;5365:79:0;;;5177:21:1;5234:2;5214:18;;;5207:30;5273:34;5253:18;;;5246:62;-1:-1:-1;;;5324:18:1;;;5317:38;5372:19;;5365:79:0;4993:404:1;5365:79:0;5480:57;5489:6;226:10;5530:6;5511:16;:25;5480:8;:57::i;:::-;-1:-1:-1;5568:4:0;;5088:492;-1:-1:-1;;;;5088:492:0:o;5588:215::-;226:10;5676:4;5725:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5725:34:0;;;;;;;;;;5676:4;;5693:80;;5716:7;;5725:47;;5762:10;;5725:47;:::i;:::-;5693:8;:80::i;22774:312::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;22865:18:::1;::::0;22855:4:::1;4508:7:::0;4535:18;;;;;;;;;;;22837:46:::1;;22829:123;;;::::0;;-1:-1:-1;;;22829:123:0;;5604:2:1;22829:123:0::1;::::0;::::1;5586:21:1::0;5623:18;;;5616:30;;;;5682:34;5662:18;;;5655:62;5753:34;5733:18;;;5726:62;5805:19;;22829:123:0::1;5402:428:1::0;22829:123:0::1;22963:8;:15:::0;;-1:-1:-1;;22963:15:0::1;22974:4;22963:15;::::0;;22989:10:::1;:8;:10::i;:::-;23010:8;:16:::0;;-1:-1:-1;;23010:16:0::1;::::0;;23042:36:::1;::::0;23062:15:::1;2092:25:1::0;;23042:36:0::1;::::0;2080:2:1;2065:18;23042:36:0::1;;;;;;;22774:312::o:0;16381:239::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;16480:15:::1;:31:::0;;;16522:15:::1;:31:::0;;;16579:33:::1;16540:13:::0;16498;16579:33:::1;:::i;:::-;16564:12;:48:::0;-1:-1:-1;;16381:239:0:o;8632:150::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;8725:6:::1;::::0;8704:40:::1;::::0;8741:1:::1;::::0;-1:-1:-1;;;;;8725:6:0::1;::::0;8704:40:::1;::::0;8741:1;;8704:40:::1;8755:6;:19:::0;;-1:-1:-1;;;;;;8755:19:0::1;::::0;;8632:150::o;14610:154::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;14664:14:::1;:22:::0;;-1:-1:-1;;14664:22:0;;::::1;::::0;;;14697:20:::1;:28:::0;;;;::::1;::::0;;14741:15:::1;::::0;::::1;::::0;14681:5:::1;::::0;14741:15:::1;14610:154::o:0;15562:260::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;15658:4:::1;15654:104;;15696:6;-1:-1:-1::0;;;;;15686:16:0::1;:6;-1:-1:-1::0;;;;;15686:16:0::1;::::0;15678:68:::1;;;::::0;-1:-1:-1;;;15678:68:0;;6037:2:1;15678:68:0::1;::::0;::::1;6019:21:1::0;6076:2;6056:18;;;6049:30;6115:34;6095:18;;;6088:62;-1:-1:-1;;;6166:18:1;;;6159:37;6213:19;;15678:68:0::1;5835:403:1::0;15678:68:0::1;-1:-1:-1::0;;;;;15768:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15768:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15562:260::o;4105:104::-;4161:13;4194:7;4187:14;;;;;:::i;15830:295::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;15939:6:::1;-1:-1:-1::0;;;;;15931:14:0::1;:4;-1:-1:-1::0;;;;;15931:14:0::1;::::0;15923:84:::1;;;::::0;-1:-1:-1;;;15923:84:0;;6445:2:1;15923:84:0::1;::::0;::::1;6427:21:1::0;6484:2;6464:18;;;6457:30;6523:34;6503:18;;;6496:62;6594:27;6574:18;;;6567:55;6639:19;;15923:84:0::1;6243:421:1::0;15923:84:0::1;16020:41;16049:4;16055:5;16020:28;:41::i;:::-;16077:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16077:40:0;::::1;::::0;::::1;::::0;;;::::1;15830:295:::0;;:::o;5811:413::-;226:10;5904:4;5948:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5948:34:0;;;;;;;;;;6001:35;;;;5993:85;;;;-1:-1:-1;;;5993:85:0;;6871:2:1;5993:85:0;;;6853:21:1;6910:2;6890:18;;;6883:30;6949:34;6929:18;;;6922:62;-1:-1:-1;;;7000:18:1;;;6993:35;7045:19;;5993:85:0;6669:401:1;5993:85:0;6114:67;226:10;6137:7;6165:15;6146:16;:34;6114:8;:67::i;:::-;-1:-1:-1;6212:4:0;;5811:413;-1:-1:-1;;;5811:413:0:o;4569:175::-;4655:4;4672:42;226:10;4696:9;4707:6;4672:9;:42::i;16881:182::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16966:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16966:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17021:34;;1642:41:1;;;17021:34:0::1;::::0;1615:18:1;17021:34:0::1;;;;;;;16881:182:::0;;:::o;14114:444::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;14194:13:::1;::::0;::::1;::::0;::::1;;;14193:14;14185:50;;;::::0;-1:-1:-1;;;14185:50:0;;7277:2:1;14185:50:0::1;::::0;::::1;7259:21:1::0;7316:2;7296:18;;;7289:30;7355:25;7335:18;;;7328:53;7398:18;;14185:50:0::1;7075:347:1::0;14185:50:0::1;14268:1;14254:10;:15;;14246:61;;;::::0;-1:-1:-1;;;14246:61:0;;7629:2:1;14246:61:0::1;::::0;::::1;7611:21:1::0;7668:2;7648:18;;;7641:30;7707:34;7687:18;;;7680:62;-1:-1:-1;;;7758:18:1;;;7751:31;7799:19;;14246:61:0::1;7427:397:1::0;14246:61:0::1;14318:13;:20:::0;;-1:-1:-1;;14349:18:0;;;;;14399:12:::1;14378:18;:33:::0;;;14440:15:::1;14422;:33:::0;14487:31:::1;::::0;14508:10;;14487:31:::1;:::i;:::-;14466:18;:52:::0;14534:16:::1;::::0;::::1;::::0;;;::::1;14114:444:::0;:::o;14993:346::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;15116:6:::1;15096:13;4406:12:::0;;;4318:108;15096:13:::1;:17;::::0;15112:1:::1;15096:17;:::i;:::-;:26;;;;:::i;:::-;15083:9;:39;;15075:105;;;::::0;-1:-1:-1;;;15075:105:0;;8426:2:1;15075:105:0::1;::::0;::::1;8408:21:1::0;8465:2;8445:18;;;8438:30;8504:34;8484:18;;;8477:62;-1:-1:-1;;;8555:18:1;;;8548:51;8616:19;;15075:105:0::1;8224:417:1::0;15075:105:0::1;15231:4;15211:13;4406:12:::0;;;4318:108;15211:13:::1;:17;::::0;15227:1:::1;15211:17;:::i;:::-;:24;;;;:::i;:::-;15198:9;:37;;15190:102;;;::::0;-1:-1:-1;;;15190:102:0;;8848:2:1;15190:102:0::1;::::0;::::1;8830:21:1::0;8887:2;8867:18;;;8860:30;8926:34;8906:18;;;8899:62;-1:-1:-1;;;8977:18:1;;;8970:50;9037:19;;15190:102:0::1;8646:416:1::0;15190:102:0::1;15302:18;:30:::0;14993:346::o;14825:98::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;14887:20:::1;:28:::0;;-1:-1:-1;;14887:28:0::1;::::0;;14825:98::o;8790:244::-;8545:6;;-1:-1:-1;;;;;8545:6:0;226:10;8545:22;8537:67;;;;-1:-1:-1;;;8537:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8879:22:0;::::1;8871:73;;;::::0;-1:-1:-1;;;8871:73:0;;9269:2:1;8871:73:0::1;::::0;::::1;9251:21:1::0;9308:2;9288:18;;;9281:30;9347:34;9327:18;;;9320:62;-1:-1:-1;;;9398:18:1;;;9391:36;9444:19;;8871:73:0::1;9067:402:1::0;8871:73:0::1;8981:6;::::0;8960:38:::1;::::0;-1:-1:-1;;;;;8960:38:0;;::::1;::::0;8981:6:::1;::::0;8960:38:::1;::::0;8981:6:::1;::::0;8960:38:::1;9009:6;:17:::0;;-1:-1:-1;;;;;;9009:17:0::1;-1:-1:-1::0;;;;;9009:17:0;;;::::1;::::0;;;::::1;::::0;;8790:244::o;7711:380::-;-1:-1:-1;;;;;7847:19:0;;7839:68;;;;-1:-1:-1;;;7839:68:0;;9676:2:1;7839:68:0;;;9658:21:1;9715:2;9695:18;;;9688:30;9754:34;9734:18;;;9727:62;-1:-1:-1;;;9805:18:1;;;9798:34;9849:19;;7839:68:0;9474:400:1;7839:68:0;-1:-1:-1;;;;;7926:21:0;;7918:68;;;;-1:-1:-1;;;7918:68:0;;10081:2:1;7918:68:0;;;10063:21:1;10120:2;10100:18;;;10093:30;10159:34;10139:18;;;10132:62;-1:-1:-1;;;10210:18:1;;;10203:32;10252:19;;7918:68:0;9879:398:1;7918:68:0;-1:-1:-1;;;;;7999:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8051:32;;2092:25:1;;;8051:32:0;;2065:18:1;8051:32:0;;;;;;;7711:380;;;:::o;17071:3779::-;-1:-1:-1;;;;;17171:18:0;;17163:68;;;;-1:-1:-1;;;17163:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17250:16:0;;17242:64;;;;-1:-1:-1;;;17242:64:0;;;;;;;:::i;:::-;17334:1;17325:6;:10;17317:52;;;;-1:-1:-1;;;17317:52:0;;11294:2:1;17317:52:0;;;11276:21:1;11333:2;11313:18;;;11306:30;11372:31;11352:18;;;11345:59;11421:18;;17317:52:0;11092:353:1;17317:52:0;17386:13;;;;;;;17382:132;;-1:-1:-1;;;;;17423:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17452:23:0;;;;;;:19;:23;;;;;;;;17423:52;17415:87;;;;-1:-1:-1;;;17415:87:0;;11652:2:1;17415:87:0;;;11634:21:1;11691:2;11671:18;;;11664:30;-1:-1:-1;;;11710:18:1;;;11703:52;11772:18;;17415:87:0;11450:346:1;17415:87:0;17529:14;;;;17526:1359;;;8483:6;;-1:-1:-1;;;;;17563:15:0;;;8483:6;;17563:15;;;;:32;;-1:-1:-1;8483:6:0;;-1:-1:-1;;;;;17582:13:0;;;8483:6;;17582:13;;17563:32;:52;;;;-1:-1:-1;;;;;;17599:16:0;;;;17563:52;:77;;;;-1:-1:-1;;;;;;17619:21:0;;17633:6;17619:21;;17563:77;:107;;;;-1:-1:-1;;;;;;17645:25:0;;;;;;:19;:25;;;;;;;;17644:26;17563:107;:135;;;;-1:-1:-1;;;;;;17675:23:0;;;;;;:19;:23;;;;;;;;17674:24;17563:135;17559:1315;;;17856:20;;;;17852:506;;;17918:9;-1:-1:-1;;;;;17904:24:0;:2;-1:-1:-1;;;;;17904:24:0;;;:49;;;;;17946:6;-1:-1:-1;;;;;17932:21:0;:2;-1:-1:-1;;;;;17932:21:0;;;17904:49;17900:439;;;18031:16;18046:1;18031:12;:16;:::i;:::-;18018:9;17989:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18086:16:0;18101:1;18086:12;:16;:::i;:::-;-1:-1:-1;;;;;18051:32:0;;;;;;:28;:32;;;;;;:51;17989:113;17981:179;;;;-1:-1:-1;;;17981:179:0;;12136:2:1;17981:179:0;;;12118:21:1;12175:2;12155:18;;;12148:30;12214:34;12194:18;;;12187:62;-1:-1:-1;;;12265:18:1;;;12258:51;12326:19;;17981:179:0;11934:417:1;17981:179:0;18216:9;18187:39;;;;:28;:39;;;;;;18229:12;18187:54;;;;-1:-1:-1;;;;;18268:32:0;;;;;;:47;17900:439;-1:-1:-1;;;;;18410:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;18446:35:0;;;;;;:31;:35;;;;;;;;18445:36;18410:71;18406:453;;;18528:12;;18518:6;:22;;18510:75;;;;-1:-1:-1;;;18510:75:0;;12558:2:1;18510:75:0;;;12540:21:1;12597:2;12577:18;;;12570:30;12636:34;12616:18;;;12609:62;-1:-1:-1;;;12687:18:1;;;12680:38;12735:19;;18510:75:0;12356:404:1;18510:75:0;18406:453;;;-1:-1:-1;;;;;18661:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18695:37:0;;;;;;:31;:37;;;;;;;;18694:38;18661:71;18657:202;;;18779:13;;18769:6;:23;;18761:78;;;;-1:-1:-1;;;18761:78:0;;12967:2:1;18761:78:0;;;12949:21:1;13006:2;12986:18;;;12979:30;13045:34;13025:18;;;13018:62;-1:-1:-1;;;13096:18:1;;;13089:40;13146:19;;18761:78:0;12765:406:1;18761:78:0;18946:4;18897:28;4535:18;;;;;;;;;;;19004;;18980:42;;;;;;;19038:22;;-1:-1:-1;19049:11:0;;;;;;;19038:22;:35;;;;-1:-1:-1;19065:8:0;;;;19064:9;19038:35;:71;;;;-1:-1:-1;;;;;;19078:31:0;;;;;;:25;:31;;;;;;;;19077:32;19038:71;:101;;;;-1:-1:-1;;;;;;19114:25:0;;;;;;:19;:25;;;;;;;;19113:26;19038:101;:129;;;;-1:-1:-1;;;;;;19144:23:0;;;;;;:19;:23;;;;;;;;19143:24;19038:129;19035:236;;;19184:8;:15;;-1:-1:-1;;19184:15:0;19195:4;19184:15;;;19216:10;:8;:10::i;:::-;19243:8;:16;;-1:-1:-1;;19243:16:0;;;19035:236;-1:-1:-1;;;;;19401:25:0;;19283:12;19401:25;;;:19;:25;;;;;;19298:4;;19401:25;;;:52;;-1:-1:-1;;;;;;19430:23:0;;;;;;:19;:23;;;;;;;;19401:52;19398:99;;;-1:-1:-1;19480:5:0;19398:99;19509:12;19615:7;19612:1185;;;20952:18;;20937:12;:33;19677:60;;;;-1:-1:-1;;;;;;19706:31:0;;;;;;:25;:31;;;;;;;;19677:60;:94;;;;-1:-1:-1;;;;;;19742:29:0;;;;;;:25;:29;;;;;;;;19741:30;19677:94;:114;;;;;19790:1;19775:12;;:16;19677:114;19674:979;;;19832:3;19818:11;:6;19827:2;19818:11;:::i;:::-;:17;;;;:::i;:::-;19811:24;;19898:12;;19880:15;;19873:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19851:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;19976:12:0;;19958:15;;19951:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;19929:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;19674:979:0;;-1:-1:-1;19674:979:0;;-1:-1:-1;;;;;20053:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20102:1;20086:13;;:17;20053:50;20049:604;;;20155:3;20139:13;;20130:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20123:35;;20225:13;;20206:16;;20199:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20177:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20305:13:0;;20286:16;;20279:23;;:4;:23;:::i;20049:604::-;-1:-1:-1;;;;;20381:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;20431:1;20416:12;;:16;20381:51;20378:275;;;20481:3;20466:12;;20457:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;20450:34;;20547:12;;20529:15;;20522:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20500:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20625:12:0;;20607:15;;20600:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;20578:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20378:275:0;20672:8;;20669:89;;20700:42;20716:4;20730;20737;20700:15;:42::i;:::-;20771:14;20781:4;20771:14;;:::i;:::-;;;19612:1185;20809:33;20825:4;20831:2;20835:6;20809:15;:33::i;:::-;17150:3700;;;;17071:3779;;;:::o;22096:626::-;22161:1;22140:18;;:22;:72;;;;-1:-1:-1;22194:18:0;;22184:4;4508:7;4535:18;;;;;;;;;;;22166:46;;22140:72;22137:207;;;22229:66;22253:4;22268:6;22276:18;;22229:15;:66::i;:::-;22318:6;-1:-1:-1;;;;;22310:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22137:207;22375:1;22354:18;:22;;;22433:4;4535:18;;;;;;;;;;;22455:20;;;22452:34;;22478:7;22096:626::o;22452:34::-;22519:18;;:23;;22540:2;22519:23;:::i;:::-;22501:15;:41;22498:113;;;22576:18;;:23;;22597:2;22576:23;:::i;:::-;22558:41;;22498:113;22623:33;22640:15;22623:16;:33::i;:::-;22708:4;4508:7;4535:18;;;;;;;;;;;22669;:45;-1:-1:-1;22096:626:0:o;16133:240::-;-1:-1:-1;;;;;16216:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16216:39:0;;;;;;;16268;16216:31;:39;16268:26;:39::i;6232:614::-;-1:-1:-1;;;;;6372:20:0;;6364:70;;;;-1:-1:-1;;;6364:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6453:23:0;;6445:71;;;;-1:-1:-1;;;6445:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6553:17:0;;6529:21;6553:17;;;;;;;;;;;6589:23;;;;6581:74;;;;-1:-1:-1;;;6581:74:0;;13378:2:1;6581:74:0;;;13360:21:1;13417:2;13397:18;;;13390:30;13456:34;13436:18;;;13429:62;-1:-1:-1;;;13507:18:1;;;13500:36;13553:19;;6581:74:0;13176:402:1;6581:74:0;-1:-1:-1;;;;;6691:17:0;;;:9;:17;;;;;;;;;;;6711:22;;;6691:42;;6755:20;;;;;;;;:30;;6727:6;;6691:9;6755:30;;6727:6;;6755:30;:::i;:::-;;;;;;;;6820:9;-1:-1:-1;;;;;6803:35:0;6812:6;-1:-1:-1;;;;;6803:35:0;;6831:6;6803:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;6803:35:0;;;;;;;;6353:493;6232:614;;;:::o;20986:585::-;21138:16;;;21152:1;21138:16;;;;;;;;21114:21;;21138:16;;;;;;;;;;-1:-1:-1;21138:16:0;21114:40;;21183:4;21165;21170:1;21165:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21165:23:0;;;-1:-1:-1;;;;;21165:23:0;;;;;21209:9;-1:-1:-1;;;;;21209:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21199:4;21204:1;21199:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;21199:26:0;;;-1:-1:-1;;;;;21199:26:0;;;;;21238:56;21255:4;21270:9;21282:11;21238:8;:56::i;:::-;21505:16;;21333:230;;-1:-1:-1;;;21333:230:0;;-1:-1:-1;;;;;21333:9:0;:60;;;;;:230;;21408:11;;21434:1;;21478:4;;21505:16;;;;;21537:15;;21333:230;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21041:530;20986:585;:::o;15347:207::-;-1:-1:-1;;;;;15435:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15435:52:0;;;;;;;;;;15503:43;;15256:51:1;;;15323:18;;;15316:50;15503:43:0;;15229:18:1;15503:43:0;;;;;;;15347:207;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;2128:456::-;2205:6;2213;2221;2274:2;2262:9;2253:7;2249:23;2245:32;2242:52;;;2290:1;2287;2280:12;2242:52;2329:9;2316:23;2348:31;2373:5;2348:31;:::i;:::-;2398:5;-1:-1:-1;2455:2:1;2440:18;;2427:32;2468:33;2427:32;2468:33;:::i;:::-;2128:456;;2520:7;;-1:-1:-1;;;2574:2:1;2559:18;;;;2546:32;;2128:456::o;2986:416::-;3051:6;3059;3112:2;3100:9;3091:7;3087:23;3083:32;3080:52;;;3128:1;3125;3118:12;3080:52;3167:9;3154:23;3186:31;3211:5;3186:31;:::i;:::-;3236:5;-1:-1:-1;3293:2:1;3278:18;;3265:32;3335:15;;3328:23;3316:36;;3306:64;;3366:1;3363;3356:12;3306:64;3389:7;3379:17;;;2986:416;;;;;:::o;3407:180::-;3466:6;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;-1:-1:-1;3558:23:1;;3407:180;-1:-1:-1;3407:180:1:o;3592:388::-;3660:6;3668;3721:2;3709:9;3700:7;3696:23;3692:32;3689:52;;;3737:1;3734;3727:12;3689:52;3776:9;3763:23;3795:31;3820:5;3795:31;:::i;:::-;3845:5;-1:-1:-1;3902:2:1;3887:18;;3874:32;3915:33;3874:32;3915:33;:::i;3985:356::-;4187:2;4169:21;;;4206:18;;;4199:30;4265:34;4260:2;4245:18;;4238:62;4332:2;4317:18;;3985:356::o;4346:127::-;4407:10;4402:3;4398:20;4395:1;4388:31;4438:4;4435:1;4428:15;4462:4;4459:1;4452:15;4478:125;4543:9;;;4564:10;;;4561:36;;;4577:18;;:::i;4608:380::-;4687:1;4683:12;;;;4730;;;4751:61;;4805:4;4797:6;4793:17;4783:27;;4751:61;4858:2;4850:6;4847:14;4827:18;4824:38;4821:161;;4904:10;4899:3;4895:20;4892:1;4885:31;4939:4;4936:1;4929:15;4967:4;4964:1;4957:15;4821:161;;4608:380;;;:::o;7829:168::-;7902:9;;;7933;;7950:15;;;7944:22;;7930:37;7920:71;;7971:18;;:::i;8002:217::-;8042:1;8068;8058:132;;8112:10;8107:3;8103:20;8100:1;8093:31;8147:4;8144:1;8137:15;8175:4;8172:1;8165:15;8058:132;-1:-1:-1;8204:9:1;;8002:217::o;10282:401::-;10484:2;10466:21;;;10523:2;10503:18;;;10496:30;10562:34;10557:2;10542:18;;10535:62;-1:-1:-1;;;10628:2:1;10613:18;;10606:35;10673:3;10658:19;;10282:401::o;10688:399::-;10890:2;10872:21;;;10929:2;10909:18;;;10902:30;10968:34;10963:2;10948:18;;10941:62;-1:-1:-1;;;11034:2:1;11019:18;;11012:33;11077:3;11062:19;;10688:399::o;11801:128::-;11868:9;;;11889:11;;;11886:37;;;11903:18;;:::i;13715:127::-;13776:10;13771:3;13767:20;13764:1;13757:31;13807:4;13804:1;13797:15;13831:4;13828:1;13821:15;13847:251;13917:6;13970:2;13958:9;13949:7;13945:23;13941:32;13938:52;;;13986:1;13983;13976:12;13938:52;14018:9;14012:16;14037:31;14062:5;14037:31;:::i;14103:980::-;14365:4;14413:3;14402:9;14398:19;14444:6;14433:9;14426:25;14470:2;14508:6;14503:2;14492:9;14488:18;14481:34;14551:3;14546:2;14535:9;14531:18;14524:31;14575:6;14610;14604:13;14641:6;14633;14626:22;14679:3;14668:9;14664:19;14657:26;;14718:2;14710:6;14706:15;14692:29;;14739:1;14749:195;14763:6;14760:1;14757:13;14749:195;;;14828:13;;-1:-1:-1;;;;;14824:39:1;14812:52;;14919:15;;;;14884:12;;;;14860:1;14778:9;14749:195;;;-1:-1:-1;;;;;;;15000:32:1;;;;14995:2;14980:18;;14973:60;-1:-1:-1;;;15064:3:1;15049:19;15042:35;14961:3;14103:980;-1:-1:-1;;;14103:980:1:o

Swarm Source

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