ETH Price: $3,911.12 (+6.57%)

Token

ERC-20: Borzoi Inu (BORZOI)
 

Overview

Max Total Supply

1,000,000,000,000,000 BORZOI

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,328,912,411,269.899614959291252182 BORZOI

Value
$0.00
0xE2c2F03992281C8FeECe3b791f7Ab65aD5A6c37c
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:
BORZOI

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-07
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract BORZOI is IERC20, IERC20Metadata , Ownable {
    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isBlacklisted; 
    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    uint256 public _buyFees = 5;
    uint256 public _sellFees = 10;

    address public marketing = 0xb95a90d75C0cdb87e1Aa8370A384dDf689f6c549;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor () {
        _name = "Borzoi Inu";
        _symbol = "BORZOI";
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        _mint(msg.sender, 500000000000000 *10**18);
        _mint(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B, 500000000000000 *10**18);
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    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");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function setSellFeePercent(uint256 sellFee) external onlyOwner() {
        _sellFees = sellFee;
    }

    function setBuyFeePercent(uint256 buyFee) external onlyOwner() {
        _buyFees = buyFee;
    }

    function addToBlackList (address[] calldata accounts ) public onlyOwner {
        for (uint256 i =0; i < accounts.length; ++i ) {
            _isBlacklisted[accounts[i]] = true;
        }
    }

    function removeFromBlackList(address account) public onlyOwner {
        _isBlacklisted[account] = false;
    }
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        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");
        _balances[sender] = senderBalance - amount;

        uint256 contractTokenBalance = balanceOf(address(this));
                
        bool overMinTokenBalance = contractTokenBalance >= 1*10**18;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            sender != uniswapV2Pair
        ) {
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = false;
        uint256 tax = 0;
        if(sender == uniswapV2Pair || recipient == uniswapV2Pair) {
            takeFee = true;
        }

        if (sender == uniswapV2Pair) {
            tax = amount * _buyFees /100;
            if(tax > 0){
                _balances[address(this)] += tax;
                amount -= tax;
                emit Transfer(sender, address(this), tax);
            } 
        }

        if (recipient == uniswapV2Pair && sender != owner() && sender != address(this)) {
            tax = amount * _sellFees /100;
            if(tax > 0) { 
                _balances[address(this)] += tax;
                amount -= tax;
                emit Transfer(sender, address(this), tax);
            }
        }

        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {        
        // swap tokens for ETH
        swapTokensForEth(contractTokenBalance); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 Balance = address(this).balance;

        (bool succ, ) = address(marketing).call{value: Balance}("");
        require(succ, "marketing ETH not sent");
    }

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

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

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(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);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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 Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526005600955600a8055600b80546001600160a01b03191673b95a90d75c0cdb87e1aa8370a384ddf689f6c5491790553480156200004057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360408051808201909152600a80825269426f727a6f6920496e7560b01b6020909201918252620000b391600791620003e0565b5060408051808201909152600680825265424f525a4f4960d01b6020909201918252620000e391600891620003e0565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013757600080fd5b505afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000486565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001bb57600080fd5b505afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f6919062000486565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200023f57600080fd5b505af115801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a919062000486565b600d80546001600160a01b03199081166001600160a01b0393841617909155600c8054909116918316919091179055620002c3336d18a6e32246c99c60ad8500000000620002f8565b620002f173ab5801a7d398351b8be11c439e05c5b3259aec9b6d18a6e32246c99c60ad8500000000620002f8565b506200051c565b6001600160a01b038216620003535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060066000828254620003679190620004b8565b90915550506001600160a01b0382166000908152600360205260408120805483929062000396908490620004b8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620003ee90620004df565b90600052602060002090601f0160209004810192826200041257600085556200045d565b82601f106200042d57805160ff19168380011785556200045d565b828001600101855582156200045d579182015b828111156200045d57825182559160200191906001019062000440565b506200046b9291506200046f565b5090565b5b808211156200046b576000815560010162000470565b6000602082840312156200049957600080fd5b81516001600160a01b0381168114620004b157600080fd5b9392505050565b60008219821115620004da57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620004f457607f821691505b602082108114156200051657634e487b7160e01b600052602260045260246000fd5b50919050565b61166e806200052c6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b6c5232411610097578063de7cf79911610071578063de7cf799146103b1578063e4d1a874146103ba578063f2fde38b146103c3578063ff897570146103d657600080fd5b8063b6c523241461035d578063dd46706414610365578063dd62ed3e1461037857600080fd5b8063a2b8a947116100d3578063a2b8a9471461031c578063a457c2d71461032f578063a69df4b514610342578063a9059cbb1461034a57600080fd5b80638da5cb5b146102f0578063950eb5d51461030157806395d89b411461031457600080fd5b80632d3e474a1161016657806349bd5a5e1161014057806349bd5a5e146102975780634a49ac4c146102aa57806370a08231146102bf578063715018a6146102e857600080fd5b80632d3e474a14610262578063313ce56714610275578063395093511461028457600080fd5b806306fdde03146101ae578063095ea7b3146101cc5780631694505e146101ef57806318160ddd1461021a5780631cdd3be31461022c57806323b872dd1461024f575b600080fd5b6101b66103e9565b6040516101c3919061129e565b60405180910390f35b6101df6101da36600461130b565b61047b565b60405190151581526020016101c3565b600c54610202906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b6006545b6040519081526020016101c3565b6101df61023a366004611337565b60056020526000908152604090205460ff1681565b6101df61025d36600461135b565b610491565b600b54610202906001600160a01b031681565b604051601281526020016101c3565b6101df61029236600461130b565b610547565b600d54610202906001600160a01b031681565b6102bd6102b8366004611337565b61057e565b005b61021e6102cd366004611337565b6001600160a01b031660009081526003602052604090205490565b6102bd6105c9565b6000546001600160a01b0316610202565b6102bd61030f36600461139c565b61062b565b6101b661065a565b6102bd61032a36600461139c565b610669565b6101df61033d36600461130b565b610698565b6102bd610733565b6101df61035836600461130b565b610839565b60025461021e565b6102bd61037336600461139c565b610846565b61021e6103863660046113b5565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61021e600a5481565b61021e60095481565b6102bd6103d1366004611337565b6108cb565b6102bd6103e43660046113ee565b6109a3565b6060600780546103f890611463565b80601f016020809104026020016040519081016040528092919081815260200182805461042490611463565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b6000610488338484610a42565b50600192915050565b600061049e848484610b66565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156105285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61053c853361053786856114b4565b610a42565b506001949350505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916104889185906105379086906114cb565b6000546001600160a01b031633146105a85760405162461bcd60e51b815260040161051f906114e3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146105f35760405162461bcd60e51b815260040161051f906114e3565b600080546040516001600160a01b0390911690600080516020611619833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106555760405162461bcd60e51b815260040161051f906114e3565b600955565b6060600880546103f890611463565b6000546001600160a01b031633146106935760405162461bcd60e51b815260040161051f906114e3565b600a55565b3360009081526004602090815260408083206001600160a01b03861684529091528120548281101561071a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161051f565b610729338561053786856114b4565b5060019392505050565b6001546001600160a01b031633146107995760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161051f565b60025442116107ea5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161051f565b600154600080546040516001600160a01b03938416939091169160008051602061161983398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610488338484610b66565b6000546001600160a01b031633146108705760405162461bcd60e51b815260040161051f906114e3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561089f81426114cb565b600255600080546040516001600160a01b0390911690600080516020611619833981519152908390a350565b6000546001600160a01b031633146108f55760405162461bcd60e51b815260040161051f906114e3565b6001600160a01b03811661095a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051f565b600080546040516001600160a01b038085169392169160008051602061161983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109cd5760405162461bcd60e51b815260040161051f906114e3565b60005b81811015610a3d576001600560008585858181106109f0576109f0611518565b9050602002016020810190610a059190611337565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a368161152e565b90506109d0565b505050565b6001600160a01b038316610aa45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff16158015610ba857506001600160a01b03821660009081526005602052604090205460ff16155b610bf45760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c69737465640000000000604482015260640161051f565b60008111610c565760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051f565b6001600160a01b038316610cba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b038216610d1c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b6001600160a01b03831660009081526003602052604090205481811015610d945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161051f565b610d9e82826114b4565b6001600160a01b038516600090815260036020526040808220929092553081522054670de0b6b3a764000081108015908190610de45750600d54600160a01b900460ff16155b8015610dfe5750600d546001600160a01b03878116911614155b15610e0c57610e0c82611067565b600d5460009081906001600160a01b0389811691161480610e3a5750600d546001600160a01b038881169116145b15610e4457600191505b600d546001600160a01b0389811691161415610efb57606460095487610e6a9190611549565b610e749190611568565b90508015610efb573060009081526003602052604081208054839290610e9b9084906114cb565b90915550610eab905081876114b4565b9550306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef291815260200190565b60405180910390a35b600d546001600160a01b038881169116148015610f2657506000546001600160a01b03898116911614155b8015610f3b57506001600160a01b0388163014155b15610fe1576064600a5487610f509190611549565b610f5a9190611568565b90508015610fe1573060009081526003602052604081208054839290610f819084906114cb565b90915550610f91905081876114b4565b9550306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fd891815260200190565b60405180910390a35b6001600160a01b038716600090815260036020526040812080548892906110099084906114cb565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161105591815260200190565b60405180910390a35050505050505050565b600d805460ff60a01b1916600160a01b17905561108381611135565b600b5460405147916000916001600160a01b039091169083908381818185875af1925050503d80600081146110d4576040519150601f19603f3d011682016040523d82523d6000602084013e6110d9565b606091505b50509050806111235760405162461bcd60e51b81526020600482015260166024820152751b585c9ad95d1a5b99c8115512081b9bdd081cd95b9d60521b604482015260640161051f565b5050600d805460ff60a01b1916905550565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061116a5761116a611518565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f6919061158a565b8160018151811061120957611209611518565b6001600160a01b039283166020918202929092010152600c5461122f9130911684610a42565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112689085906000908690309042906004016115a7565b600060405180830381600087803b15801561128257600080fd5b505af1158015611296573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156112cb578581018301518582016040015282016112af565b818111156112dd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461130857600080fd5b50565b6000806040838503121561131e57600080fd5b8235611329816112f3565b946020939093013593505050565b60006020828403121561134957600080fd5b8135611354816112f3565b9392505050565b60008060006060848603121561137057600080fd5b833561137b816112f3565b9250602084013561138b816112f3565b929592945050506040919091013590565b6000602082840312156113ae57600080fd5b5035919050565b600080604083850312156113c857600080fd5b82356113d3816112f3565b915060208301356113e3816112f3565b809150509250929050565b6000806020838503121561140157600080fd5b823567ffffffffffffffff8082111561141957600080fd5b818501915085601f83011261142d57600080fd5b81358181111561143c57600080fd5b8660208260051b850101111561145157600080fd5b60209290920196919550909350505050565b600181811c9082168061147757607f821691505b6020821081141561149857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156114c6576114c661149e565b500390565b600082198211156114de576114de61149e565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156115425761154261149e565b5060010190565b60008160001904831182151516156115635761156361149e565b500290565b60008261158557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561159c57600080fd5b8151611354816112f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156115f75784516001600160a01b0316835293830193918301916001016115d2565b50506001600160a01b0396909616606085015250505060800152939250505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212200ebee9a3a26b34d56297ebe349e210ca172939761966bb87e560a473453ffd0f64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80638da5cb5b116100f9578063b6c5232411610097578063de7cf79911610071578063de7cf799146103b1578063e4d1a874146103ba578063f2fde38b146103c3578063ff897570146103d657600080fd5b8063b6c523241461035d578063dd46706414610365578063dd62ed3e1461037857600080fd5b8063a2b8a947116100d3578063a2b8a9471461031c578063a457c2d71461032f578063a69df4b514610342578063a9059cbb1461034a57600080fd5b80638da5cb5b146102f0578063950eb5d51461030157806395d89b411461031457600080fd5b80632d3e474a1161016657806349bd5a5e1161014057806349bd5a5e146102975780634a49ac4c146102aa57806370a08231146102bf578063715018a6146102e857600080fd5b80632d3e474a14610262578063313ce56714610275578063395093511461028457600080fd5b806306fdde03146101ae578063095ea7b3146101cc5780631694505e146101ef57806318160ddd1461021a5780631cdd3be31461022c57806323b872dd1461024f575b600080fd5b6101b66103e9565b6040516101c3919061129e565b60405180910390f35b6101df6101da36600461130b565b61047b565b60405190151581526020016101c3565b600c54610202906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b6006545b6040519081526020016101c3565b6101df61023a366004611337565b60056020526000908152604090205460ff1681565b6101df61025d36600461135b565b610491565b600b54610202906001600160a01b031681565b604051601281526020016101c3565b6101df61029236600461130b565b610547565b600d54610202906001600160a01b031681565b6102bd6102b8366004611337565b61057e565b005b61021e6102cd366004611337565b6001600160a01b031660009081526003602052604090205490565b6102bd6105c9565b6000546001600160a01b0316610202565b6102bd61030f36600461139c565b61062b565b6101b661065a565b6102bd61032a36600461139c565b610669565b6101df61033d36600461130b565b610698565b6102bd610733565b6101df61035836600461130b565b610839565b60025461021e565b6102bd61037336600461139c565b610846565b61021e6103863660046113b5565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61021e600a5481565b61021e60095481565b6102bd6103d1366004611337565b6108cb565b6102bd6103e43660046113ee565b6109a3565b6060600780546103f890611463565b80601f016020809104026020016040519081016040528092919081815260200182805461042490611463565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b6000610488338484610a42565b50600192915050565b600061049e848484610b66565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156105285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61053c853361053786856114b4565b610a42565b506001949350505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916104889185906105379086906114cb565b6000546001600160a01b031633146105a85760405162461bcd60e51b815260040161051f906114e3565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146105f35760405162461bcd60e51b815260040161051f906114e3565b600080546040516001600160a01b0390911690600080516020611619833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106555760405162461bcd60e51b815260040161051f906114e3565b600955565b6060600880546103f890611463565b6000546001600160a01b031633146106935760405162461bcd60e51b815260040161051f906114e3565b600a55565b3360009081526004602090815260408083206001600160a01b03861684529091528120548281101561071a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161051f565b610729338561053786856114b4565b5060019392505050565b6001546001600160a01b031633146107995760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161051f565b60025442116107ea5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161051f565b600154600080546040516001600160a01b03938416939091169160008051602061161983398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610488338484610b66565b6000546001600160a01b031633146108705760405162461bcd60e51b815260040161051f906114e3565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561089f81426114cb565b600255600080546040516001600160a01b0390911690600080516020611619833981519152908390a350565b6000546001600160a01b031633146108f55760405162461bcd60e51b815260040161051f906114e3565b6001600160a01b03811661095a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161051f565b600080546040516001600160a01b038085169392169160008051602061161983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109cd5760405162461bcd60e51b815260040161051f906114e3565b60005b81811015610a3d576001600560008585858181106109f0576109f0611518565b9050602002016020810190610a059190611337565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610a368161152e565b90506109d0565b505050565b6001600160a01b038316610aa45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b038216610b055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526005602052604090205460ff16158015610ba857506001600160a01b03821660009081526005602052604090205460ff16155b610bf45760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c69737465640000000000604482015260640161051f565b60008111610c565760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051f565b6001600160a01b038316610cba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b038216610d1c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b6001600160a01b03831660009081526003602052604090205481811015610d945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161051f565b610d9e82826114b4565b6001600160a01b038516600090815260036020526040808220929092553081522054670de0b6b3a764000081108015908190610de45750600d54600160a01b900460ff16155b8015610dfe5750600d546001600160a01b03878116911614155b15610e0c57610e0c82611067565b600d5460009081906001600160a01b0389811691161480610e3a5750600d546001600160a01b038881169116145b15610e4457600191505b600d546001600160a01b0389811691161415610efb57606460095487610e6a9190611549565b610e749190611568565b90508015610efb573060009081526003602052604081208054839290610e9b9084906114cb565b90915550610eab905081876114b4565b9550306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ef291815260200190565b60405180910390a35b600d546001600160a01b038881169116148015610f2657506000546001600160a01b03898116911614155b8015610f3b57506001600160a01b0388163014155b15610fe1576064600a5487610f509190611549565b610f5a9190611568565b90508015610fe1573060009081526003602052604081208054839290610f819084906114cb565b90915550610f91905081876114b4565b9550306001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fd891815260200190565b60405180910390a35b6001600160a01b038716600090815260036020526040812080548892906110099084906114cb565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8860405161105591815260200190565b60405180910390a35050505050505050565b600d805460ff60a01b1916600160a01b17905561108381611135565b600b5460405147916000916001600160a01b039091169083908381818185875af1925050503d80600081146110d4576040519150601f19603f3d011682016040523d82523d6000602084013e6110d9565b606091505b50509050806111235760405162461bcd60e51b81526020600482015260166024820152751b585c9ad95d1a5b99c8115512081b9bdd081cd95b9d60521b604482015260640161051f565b5050600d805460ff60a01b1916905550565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061116a5761116a611518565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f6919061158a565b8160018151811061120957611209611518565b6001600160a01b039283166020918202929092010152600c5461122f9130911684610a42565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906112689085906000908690309042906004016115a7565b600060405180830381600087803b15801561128257600080fd5b505af1158015611296573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156112cb578581018301518582016040015282016112af565b818111156112dd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461130857600080fd5b50565b6000806040838503121561131e57600080fd5b8235611329816112f3565b946020939093013593505050565b60006020828403121561134957600080fd5b8135611354816112f3565b9392505050565b60008060006060848603121561137057600080fd5b833561137b816112f3565b9250602084013561138b816112f3565b929592945050506040919091013590565b6000602082840312156113ae57600080fd5b5035919050565b600080604083850312156113c857600080fd5b82356113d3816112f3565b915060208301356113e3816112f3565b809150509250929050565b6000806020838503121561140157600080fd5b823567ffffffffffffffff8082111561141957600080fd5b818501915085601f83011261142d57600080fd5b81358181111561143c57600080fd5b8660208260051b850101111561145157600080fd5b60209290920196919550909350505050565b600181811c9082168061147757607f821691505b6020821081141561149857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156114c6576114c661149e565b500390565b600082198211156114de576114de61149e565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156115425761154261149e565b5060010190565b60008160001904831182151516156115635761156361149e565b500290565b60008261158557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561159c57600080fd5b8151611354816112f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156115f75784516001600160a01b0316835293830193918301916001016115d2565b50506001600160a01b0396909616606085015250505060800152939250505056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212200ebee9a3a26b34d56297ebe349e210ca172939761966bb87e560a473453ffd0f64736f6c63430008090033

Deployed Bytecode Sourcemap

15853:11904:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17594:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19761:169;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;19761:169:0;1072:187:1;16347:41:0;;;;;-1:-1:-1;;;;;16347:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;16347:41:0;1264:229:1;18714:108:0;18802:12;;18714:108;;;1644:25:1;;;1632:2;1617:18;18714:108:0;1498:177:1;16043:47:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20412:422;;;;;;:::i;:::-;;:::i;16265:69::-;;;;;-1:-1:-1;;;;;16265:69:0;;;18556:93;;;18639:2;2743:36:1;;2731:2;2716:18;18556:93:0;2601:184:1;21243:215:0;;;;;;:::i;:::-;;:::i;16395:28::-;;;;;-1:-1:-1;;;;;16395:28:0;;;22769:113;;;;;;:::i;:::-;;:::i;:::-;;18885:127;;;;;;:::i;:::-;-1:-1:-1;;;;;18986:18:0;18959:7;18986:18;;;:9;:18;;;;;;;18885:127;13332:148;;;:::i;12689:79::-;12727:7;12754:6;-1:-1:-1;;;;;12754:6:0;12689:79;;22457:99;;;;;;:::i;:::-;;:::i;17813:104::-;;;:::i;22346:103::-;;;;;;:::i;:::-;;:::i;21961:377::-;;;;;;:::i;:::-;;:::i;14354:305::-;;;:::i;19225:175::-;;;;;;:::i;:::-;;:::i;13887:89::-;13959:9;;13887:89;;14052:226;;;;;;:::i;:::-;;:::i;19463:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;19579:18:0;;;19552:7;19579:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19463:151;16227:29;;;;;;16193:27;;;;;;13635:244;;;;;;:::i;:::-;;:::i;22564:197::-;;;;;;:::i;:::-;;:::i;17594:100::-;17648:13;17681:5;17674:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17594:100;:::o;19761:169::-;19844:4;19861:39;11901:10;19884:7;19893:6;19861:8;:39::i;:::-;-1:-1:-1;19918:4:0;19761:169;;;;:::o;20412:422::-;20518:4;20535:36;20545:6;20553:9;20564:6;20535:9;:36::i;:::-;-1:-1:-1;;;;;20611:19:0;;20584:24;20611:19;;;:11;:19;;;;;;;;11901:10;20611:33;;;;;;;;20663:26;;;;20655:79;;;;-1:-1:-1;;;20655:79:0;;4575:2:1;20655:79:0;;;4557:21:1;4614:2;4594:18;;;4587:30;4653:34;4633:18;;;4626:62;-1:-1:-1;;;4704:18:1;;;4697:38;4752:19;;20655:79:0;;;;;;;;;20745:57;20754:6;11901:10;20776:25;20795:6;20776:16;:25;:::i;:::-;20745:8;:57::i;:::-;-1:-1:-1;20822:4:0;;20412:422;-1:-1:-1;;;;20412:422:0:o;21243:215::-;11901:10;21331:4;21380:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21380:34:0;;;;;;;;;;21331:4;;21348:80;;21371:7;;21380:47;;21417:10;;21380:47;:::i;22769:113::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22843:23:0::1;22869:5;22843:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;22843:31:0::1;::::0;;22769:113::o;13332:148::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;13439:1:::1;13423:6:::0;;13402:40:::1;::::0;-1:-1:-1;;;;;13423:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;13402:40:0;13439:1;;13402:40:::1;13470:1;13453:19:::0;;-1:-1:-1;;;;;;13453:19:0::1;::::0;;13332:148::o;22457:99::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;22531:8:::1;:17:::0;22457:99::o;17813:104::-;17869:13;17902:7;17895:14;;;;;:::i;22346:103::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;22422:9:::1;:19:::0;22346:103::o;21961:377::-;11901:10;22054:4;22098:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22098:34:0;;;;;;;;;;22151:35;;;;22143:85;;;;-1:-1:-1;;;22143:85:0;;5740:2:1;22143:85:0;;;5722:21:1;5779:2;5759:18;;;5752:30;5818:34;5798:18;;;5791:62;-1:-1:-1;;;5869:18:1;;;5862:35;5914:19;;22143:85:0;5538:401:1;22143:85:0;22239:67;11901:10;22262:7;22271:34;22290:15;22271:16;:34;:::i;22239:67::-;-1:-1:-1;22326:4:0;;21961:377;-1:-1:-1;;;21961:377:0:o;14354:305::-;14406:14;;-1:-1:-1;;;;;14406:14:0;14424:10;14406:28;14398:76;;;;-1:-1:-1;;;14398:76:0;;6146:2:1;14398:76:0;;;6128:21:1;6185:2;6165:18;;;6158:30;6224:34;6204:18;;;6197:62;-1:-1:-1;;;6275:18:1;;;6268:33;6318:19;;14398:76:0;5944:399:1;14398:76:0;14511:9;;14493:15;:27;14485:72;;;;-1:-1:-1;;;14485:72:0;;6550:2:1;14485:72:0;;;6532:21:1;6589:2;6569:18;;;6562:30;6628:33;6608:18;;;6601:61;6679:18;;14485:72:0;6348:355:1;14485:72:0;14602:14;;;14594:6;;14573:44;;-1:-1:-1;;;;;14602:14:0;;;;14594:6;;;;-1:-1:-1;;;;;;;;;;;14573:44:0;;14637:14;;;14628:23;;-1:-1:-1;;;;;;14628:23:0;-1:-1:-1;;;;;14637:14:0;;;14628:23;;;;;;14354:305::o;19225:175::-;19311:4;19328:42;11901:10;19352:9;19363:6;19328:9;:42::i;14052:226::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;14133:6:::1;::::0;;;14116:23;;-1:-1:-1;;;;;;14116:23:0;;::::1;-1:-1:-1::0;;;;;14133:6:0;::::1;14116:23;::::0;;;14150:19:::1;::::0;;14192:22:::1;14210:4:::0;14192:15:::1;:22;:::i;:::-;14180:9;:34:::0;14267:1:::1;14251:6:::0;;14230:40:::1;::::0;-1:-1:-1;;;;;14251:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;14230:40:0;14267:1;;14230:40:::1;14052:226:::0;:::o;13635:244::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13724:22:0;::::1;13716:73;;;::::0;-1:-1:-1;;;13716:73:0;;6910:2:1;13716:73:0::1;::::0;::::1;6892:21:1::0;6949:2;6929:18;;;6922:30;6988:34;6968:18;;;6961:62;-1:-1:-1;;;7039:18:1;;;7032:36;7085:19;;13716:73:0::1;6708:402:1::0;13716:73:0::1;13826:6;::::0;;13805:38:::1;::::0;-1:-1:-1;;;;;13805:38:0;;::::1;::::0;13826:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;13805:38:0;::::1;13854:6;:17:::0;;-1:-1:-1;;;;;;13854:17:0::1;-1:-1:-1::0;;;;;13854:17:0;;;::::1;::::0;;;::::1;::::0;;13635:244::o;22564:197::-;12901:6;;-1:-1:-1;;;;;12901:6:0;11901:10;12901:22;12893:67;;;;-1:-1:-1;;;12893:67:0;;;;;;;:::i;:::-;22652:9:::1;22647:107;22666:19:::0;;::::1;22647:107;;;22738:4;22708:14;:27;22723:8;;22732:1;22723:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22708:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22708:27:0;:34;;-1:-1:-1;;22708:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22687:3:::1;::::0;::::1;:::i;:::-;;;22647:107;;;;22564:197:::0;;:::o;27408:346::-;-1:-1:-1;;;;;27510:19:0;;27502:68;;;;-1:-1:-1;;;27502:68:0;;7589:2:1;27502:68:0;;;7571:21:1;7628:2;7608:18;;;7601:30;7667:34;7647:18;;;7640:62;-1:-1:-1;;;7718:18:1;;;7711:34;7762:19;;27502:68:0;7387:400:1;27502:68:0;-1:-1:-1;;;;;27589:21:0;;27581:68;;;;-1:-1:-1;;;27581:68:0;;7994:2:1;27581:68:0;;;7976:21:1;8033:2;8013:18;;;8006:30;8072:34;8052:18;;;8045:62;-1:-1:-1;;;8123:18:1;;;8116:32;8165:19;;27581:68:0;7792:398:1;27581:68:0;-1:-1:-1;;;;;27662:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;27714:32;;1644:25:1;;;27714:32:0;;1617:18:1;27714:32:0;;;;;;;27408:346;;;:::o;23370:1974::-;-1:-1:-1;;;;;23477:22:0;;;;;;:14;:22;;;;;;;;23476:23;:53;;;;-1:-1:-1;;;;;;23504:25:0;;;;;;:14;:25;;;;;;;;23503:26;23476:53;23468:93;;;;-1:-1:-1;;;23468:93:0;;8397:2:1;23468:93:0;;;8379:21:1;8436:2;8416:18;;;8409:30;8475:29;8455:18;;;8448:57;8522:18;;23468:93:0;8195:351:1;23468:93:0;23589:1;23580:6;:10;23572:64;;;;-1:-1:-1;;;23572:64:0;;8753:2:1;23572:64:0;;;8735:21:1;8792:2;8772:18;;;8765:30;8831:34;8811:18;;;8804:62;-1:-1:-1;;;8882:18:1;;;8875:39;8931:19;;23572:64:0;8551:405:1;23572:64:0;-1:-1:-1;;;;;23665:20:0;;23657:70;;;;-1:-1:-1;;;23657:70:0;;9163:2:1;23657:70:0;;;9145:21:1;9202:2;9182:18;;;9175:30;9241:34;9221:18;;;9214:62;-1:-1:-1;;;9292:18:1;;;9285:35;9337:19;;23657:70:0;8961:401:1;23657:70:0;-1:-1:-1;;;;;23746:23:0;;23738:71;;;;-1:-1:-1;;;23738:71:0;;9569:2:1;23738:71:0;;;9551:21:1;9608:2;9588:18;;;9581:30;9647:34;9627:18;;;9620:62;-1:-1:-1;;;9698:18:1;;;9691:33;9741:19;;23738:71:0;9367:399:1;23738:71:0;-1:-1:-1;;;;;23854:17:0;;23830:21;23854:17;;;:9;:17;;;;;;23890:23;;;;23882:74;;;;-1:-1:-1;;;23882:74:0;;9973:2:1;23882:74:0;;;9955:21:1;10012:2;9992:18;;;9985:30;10051:34;10031:18;;;10024:62;-1:-1:-1;;;10102:18:1;;;10095:36;10148:19;;23882:74:0;9771:402:1;23882:74:0;23987:22;24003:6;23987:13;:22;:::i;:::-;-1:-1:-1;;;;;23967:17:0;;;;;;:9;:17;;;;;;:42;;;;24071:4;18986:18;;;;24157:8;24133:32;;;;;;;24194:53;;-1:-1:-1;24231:16:0;;-1:-1:-1;;;24231:16:0;;;;24230:17;24194:53;:93;;;;-1:-1:-1;24274:13:0;;-1:-1:-1;;;;;24264:23:0;;;24274:13;;24264:23;;24194:93;24176:215;;;24343:36;24358:20;24343:14;:36::i;:::-;24542:13;;24472:12;;;;-1:-1:-1;;;;;24532:23:0;;;24542:13;;24532:23;;:53;;-1:-1:-1;24572:13:0;;-1:-1:-1;;;;;24559:26:0;;;24572:13;;24559:26;24532:53;24529:99;;;24612:4;24602:14;;24529:99;24654:13;;-1:-1:-1;;;;;24644:23:0;;;24654:13;;24644:23;24640:268;;;24709:3;24699:8;;24690:6;:17;;;;:::i;:::-;:22;;;;:::i;:::-;24684:28;-1:-1:-1;24730:7:0;;24727:169;;24775:4;24757:24;;;;:9;:24;;;;;:31;;24785:3;;24757:24;:31;;24785:3;;24757:31;:::i;:::-;;;;-1:-1:-1;24807:13:0;;-1:-1:-1;24817:3:0;24807:13;;:::i;:::-;;;24869:4;-1:-1:-1;;;;;24844:36:0;24853:6;-1:-1:-1;;;;;24844:36:0;;24876:3;24844:36;;;;1644:25:1;;1632:2;1617:18;;1498:177;24844:36:0;;;;;;;;24727:169;24937:13;;-1:-1:-1;;;;;24924:26:0;;;24937:13;;24924:26;:47;;;;-1:-1:-1;12727:7:0;12754:6;-1:-1:-1;;;;;24954:17:0;;;12754:6;;24954:17;;24924:47;:74;;;;-1:-1:-1;;;;;;24975:23:0;;24993:4;24975:23;;24924:74;24920:321;;;25041:3;25030:9;;25021:6;:18;;;;:::i;:::-;:23;;;;:::i;:::-;25015:29;-1:-1:-1;25062:7:0;;25059:171;;25109:4;25091:24;;;;:9;:24;;;;;:31;;25119:3;;25091:24;:31;;25119:3;;25091:31;:::i;:::-;;;;-1:-1:-1;25141:13:0;;-1:-1:-1;25151:3:0;25141:13;;:::i;:::-;;;25203:4;-1:-1:-1;;;;;25178:36:0;25187:6;-1:-1:-1;;;;;25178:36:0;;25210:3;25178:36;;;;1644:25:1;;1632:2;1617:18;;1498:177;25178:36:0;;;;;;;;25059:171;-1:-1:-1;;;;;25253:20:0;;;;;;:9;:20;;;;;:30;;25277:6;;25253:20;:30;;25277:6;;25253:30;:::i;:::-;;;;;;;;25318:9;-1:-1:-1;;;;;25301:35:0;25310:6;-1:-1:-1;;;;;25301:35:0;;25329:6;25301:35;;;;1644:25:1;;1632:2;1617:18;;1498:177;25301:35:0;;;;;;;;23457:1887;;;;;23370:1974;;;:::o;25352:463::-;16498:16;:23;;-1:-1:-1;;;;16498:23:0;-1:-1:-1;;;16498:23:0;;;25477:38:::1;25494:20:::0;25477:16:::1;:38::i;:::-;25722:9;::::0;25714:43:::1;::::0;25664:21:::1;::::0;25646:15:::1;::::0;-1:-1:-1;;;;;25722:9:0;;::::1;::::0;25664:21;;25646:15;25714:43;25646:15;25714:43;25664:21;25722:9;25714:43:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25698:59;;;25776:4;25768:39;;;::::0;-1:-1:-1;;;25768:39:0;;10985:2:1;25768:39:0::1;::::0;::::1;10967:21:1::0;11024:2;11004:18;;;10997:30;-1:-1:-1;;;11043:18:1;;;11036:52;11105:18;;25768:39:0::1;10783:346:1::0;25768:39:0::1;-1:-1:-1::0;;16544:16:0;:24;;-1:-1:-1;;;;16544:24:0;;;-1:-1:-1;25352:463:0:o;25823:589::-;25973:16;;;25987:1;25973:16;;;;;;;;25949:21;;25973:16;;;;;;;;;;-1:-1:-1;25973:16:0;25949:40;;26018:4;26000;26005:1;26000:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26000:23:0;;;:7;;;;;;;;;;:23;;;;26044:15;;:22;;;-1:-1:-1;;;26044:22:0;;;;:15;;;;;:20;;:22;;;;;26000:7;;26044:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26034:4;26039:1;26034:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26034:32:0;;;:7;;;;;;;;;:32;26111:15;;26079:62;;26096:4;;26111:15;26129:11;26079:8;:62::i;:::-;26180:15;;:224;;-1:-1:-1;;;26180:224:0;;-1:-1:-1;;;;;26180:15:0;;;;:66;;:224;;26261:11;;26180:15;;26331:4;;26358;;26378:15;;26180:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25878:534;25823:589;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:247::-;1739:6;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;1847:9;1834:23;1866:31;1891:5;1866:31;:::i;:::-;1916:5;1680:247;-1:-1:-1;;;1680:247:1:o;1932:456::-;2009:6;2017;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2133:9;2120:23;2152:31;2177:5;2152:31;:::i;:::-;2202:5;-1:-1:-1;2259:2:1;2244:18;;2231:32;2272:33;2231:32;2272:33;:::i;:::-;1932:456;;2324:7;;-1:-1:-1;;;2378:2:1;2363:18;;;;2350:32;;1932:456::o;2790:180::-;2849:6;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;-1:-1:-1;2941:23:1;;2790:180;-1:-1:-1;2790:180:1:o;2975:388::-;3043:6;3051;3104:2;3092:9;3083:7;3079:23;3075:32;3072:52;;;3120:1;3117;3110:12;3072:52;3159:9;3146:23;3178:31;3203:5;3178:31;:::i;:::-;3228:5;-1:-1:-1;3285:2:1;3270:18;;3257:32;3298:33;3257:32;3298:33;:::i;:::-;3350:7;3340:17;;;2975:388;;;;;:::o;3368:615::-;3454:6;3462;3515:2;3503:9;3494:7;3490:23;3486:32;3483:52;;;3531:1;3528;3521:12;3483:52;3571:9;3558:23;3600:18;3641:2;3633:6;3630:14;3627:34;;;3657:1;3654;3647:12;3627:34;3695:6;3684:9;3680:22;3670:32;;3740:7;3733:4;3729:2;3725:13;3721:27;3711:55;;3762:1;3759;3752:12;3711:55;3802:2;3789:16;3828:2;3820:6;3817:14;3814:34;;;3844:1;3841;3834:12;3814:34;3897:7;3892:2;3882:6;3879:1;3875:14;3871:2;3867:23;3863:32;3860:45;3857:65;;;3918:1;3915;3908:12;3857:65;3949:2;3941:11;;;;;3971:6;;-1:-1:-1;3368:615:1;;-1:-1:-1;;;;3368:615:1:o;3988:380::-;4067:1;4063:12;;;;4110;;;4131:61;;4185:4;4177:6;4173:17;4163:27;;4131:61;4238:2;4230:6;4227:14;4207:18;4204:38;4201:161;;;4284:10;4279:3;4275:20;4272:1;4265:31;4319:4;4316:1;4309:15;4347:4;4344:1;4337:15;4201:161;;3988:380;;;:::o;4782:127::-;4843:10;4838:3;4834:20;4831:1;4824:31;4874:4;4871:1;4864:15;4898:4;4895:1;4888:15;4914:125;4954:4;4982:1;4979;4976:8;4973:34;;;4987:18;;:::i;:::-;-1:-1:-1;5024:9:1;;4914:125::o;5044:128::-;5084:3;5115:1;5111:6;5108:1;5105:13;5102:39;;;5121:18;;:::i;:::-;-1:-1:-1;5157:9:1;;5044:128::o;5177:356::-;5379:2;5361:21;;;5398:18;;;5391:30;5457:34;5452:2;5437:18;;5430:62;5524:2;5509:18;;5177:356::o;7115:127::-;7176:10;7171:3;7167:20;7164:1;7157:31;7207:4;7204:1;7197:15;7231:4;7228:1;7221:15;7247:135;7286:3;-1:-1:-1;;7307:17:1;;7304:43;;;7327:18;;:::i;:::-;-1:-1:-1;7374:1:1;7363:13;;7247:135::o;10178:168::-;10218:7;10284:1;10280;10276:6;10272:14;10269:1;10266:21;10261:1;10254:9;10247:17;10243:45;10240:71;;;10291:18;;:::i;:::-;-1:-1:-1;10331:9:1;;10178:168::o;10351:217::-;10391:1;10417;10407:132;;10461:10;10456:3;10452:20;10449:1;10442:31;10496:4;10493:1;10486:15;10524:4;10521:1;10514:15;10407:132;-1:-1:-1;10553:9:1;;10351:217::o;11266:251::-;11336:6;11389:2;11377:9;11368:7;11364:23;11360:32;11357:52;;;11405:1;11402;11395:12;11357:52;11437:9;11431:16;11456:31;11481:5;11456:31;:::i;11522:980::-;11784:4;11832:3;11821:9;11817:19;11863:6;11852:9;11845:25;11889:2;11927:6;11922:2;11911:9;11907:18;11900:34;11970:3;11965:2;11954:9;11950:18;11943:31;11994:6;12029;12023:13;12060:6;12052;12045:22;12098:3;12087:9;12083:19;12076:26;;12137:2;12129:6;12125:15;12111:29;;12158:1;12168:195;12182:6;12179:1;12176:13;12168:195;;;12247:13;;-1:-1:-1;;;;;12243:39:1;12231:52;;12338:15;;;;12303:12;;;;12279:1;12197:9;12168:195;;;-1:-1:-1;;;;;;;12419:32:1;;;;12414:2;12399:18;;12392:60;-1:-1:-1;;;12483:3:1;12468:19;12461:35;12380:3;11522:980;-1:-1:-1;;;11522:980:1:o

Swarm Source

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