ETH Price: $3,186.44 (-7.43%)
Gas: 2 Gwei

Token

Good Morning (GM)
 

Overview

Max Total Supply

80,085 GM

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,455 GM

Value
$0.00
0xf2a79C9c6f754B2a538836046CDf135C1B11a44f
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:
GM

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
// gm
//
// https://goodmorning.to
//

pragma solidity ^0.6.0;


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

    function _msgData() internal view virtual returns (bytes memory) {
        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;

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

    constructor () internal {
        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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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


library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

   
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

   
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @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(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @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");

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), 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);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}




// pragma solidity >=0.5.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;
}


// pragma solidity >=0.5.0;

interface IUniswapV2ERC20 {
    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;
}




// pragma solidity >=0.6.2;

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



// pragma solidity >=0.6.2;



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

pragma solidity 0.6.12;

contract GM is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public _burnPool = 0x0000000000000000000000000000000000000000;

    uint256 private minTokensBeforeSwap = 1600 * 10**18;

    uint256 internal _totalSupply;
    uint256 public _totalBurnedLpTokens;

    address private treasuryWallet;
    
    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingEnable;
    
    mapping(address => bool) public blacklist;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event UpdateTradingEnable();
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(
        address _treasuryWallet
    ) public ERC20("Good Morning", "GM") {
        // mint tokens which will initially belong to deployer
        // deployer should go seed the pair with some initial liquidity
        _mint(msg.sender, 80085 * 10**18);
        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
        treasuryWallet = _treasuryWallet;
    }
    
    /*
        override the internal _transfer function so that we can
        take the fee, and conditionally do the swap + liquditiy
    */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        if(from != owner() && to != owner()) {
            if(from != uniswapV2Pair) {
                require(!blacklist[from] && !blacklist[to], 'GM: the transaction was blocked.');
                if(to == address(uniswapV2Router) || to == uniswapV2Pair) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap;
                    if (
                        overMinTokenBalance &&
                        !inSwapAndLiquify &&
                        msg.sender != uniswapV2Pair &&
                        swapAndLiquifyEnabled
                    ) {
                        swapAndLiquify(contractTokenBalance);
                    }
                }
            }
            else {
                if(!tradingEnable)
                    blacklist[to] = true;
            }
            
            if(inSwapAndLiquify)
                super._transfer(from, to, amount);
            else {
                // calculate the number of tokens to take as a fee
                uint256 tokensToLock = calculateTokenFee(
                    amount,
                    2
                );
                
                // calculate the number of tokens to burn
                uint256 tokensToTreasury = calculateTokenFee(
                    amount,
                    1
                );
        
                // take the fee and send those tokens to this contract address
                // and then send the remainder of tokens to original recipient
                uint256 tokensToTransfer = amount.sub(tokensToLock).sub(tokensToTreasury);
        
                super._transfer(from, address(this), tokensToLock);
                super._transfer(from, treasuryWallet, tokensToTreasury);
                super._transfer(from, to, tokensToTransfer);
            }
        }
        else
            super._transfer(from, to, amount);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

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

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);
        

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

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

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

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

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

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );
    }
    
    
    /*
        calculates a percentage of tokens to hold as the fee
    */
    function calculateTokenFee(
        uint256 _amount,
        uint256 _feePercentage
    ) public pure returns (uint256 locked) {
        locked = _amount.mul(_feePercentage).div(100);
    }

    receive() external payable {}

    ///
    /// Ownership adjustments
    ///

    function updateMinTokensBeforeSwap(uint256 _minTokensBeforeSwap)
        public
        onlyOwner
    {
        minTokensBeforeSwap = _minTokensBeforeSwap;
        emit MinTokensBeforeSwapUpdated(_minTokensBeforeSwap);
    }

    function updateTradingEnable() public onlyOwner {
        require(!tradingEnable, 'GM: already trading enabled!');
        tradingEnable = true;
        emit UpdateTradingEnable();
    }

    function updateSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    function unblockWallet(address account) public onlyOwner {
        blacklist[account] = false;
    }

    function burnLiq(address _token, address _to, uint256 _amount) public onlyOwner {
        require(_to != address(0),"GM: transfer to zero address");
        
        IUniswapV2ERC20 token = IUniswapV2ERC20(_token);
        _totalBurnedLpTokens = _totalBurnedLpTokens.sub(_amount);
        
        token.transfer(_burnPool, _amount);
    }
    
    function getMinTokensBeforeSwap() public view returns (uint256) {
        return minTokensBeforeSwap;
    }
    
    function getSwapAndLiquifyEnabled() public view returns (bool) {
        return swapAndLiquifyEnabled;
    }
    
    function getTradingEnable() public view returns (bool) {
        return tradingEnable;
    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_treasuryWallet","type":"address"}],"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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[],"name":"UpdateTradingEnable","type":"event"},{"inputs":[],"name":"_burnPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurnedLpTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_feePercentage","type":"uint256"}],"name":"calculateTokenFee","outputs":[{"internalType":"uint256","name":"locked","type":"uint256"}],"stateMutability":"pure","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":"getMinTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minTokensBeforeSwap","type":"uint256"}],"name":"updateMinTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateTradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506856bc75e2d6310000006009556001600c60156101000a81548160ff0219169083151502179055503480156200007b57600080fd5b50604051620037923803806200379283398181016040526020811015620000a157600080fd5b81019080805190602001909291905050506040518060400160405280600c81526020017f476f6f64204d6f726e696e6700000000000000000000000000000000000000008152506040518060400160405280600281526020017f474d0000000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001369291906200079b565b5080600490805190602001906200014f9291906200079b565b506012600560006101000a81548160ff021916908360ff16021790555050506000620001806200052760201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200023b336910f56aa2f77c263400006200052f60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f957600080fd5b505afa1580156200030e573d6000803e3d6000fd5b505050506040513d60208110156200032557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003bb57600080fd5b505afa158015620003d0573d6000803e3d6000fd5b505050506040513d6020811015620003e757600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200046257600080fd5b505af115801562000477573d6000803e3d6000fd5b505050506040513d60208110156200048e57600080fd5b8101908080519060200190929190505050600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000841565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620005d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620005e7600083836200070d60201b60201c565b62000603816002546200071260201b62001c6d1790919060201c565b60028190555062000661816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200071260201b62001c6d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b60008082840190508381101562000791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620007de57805160ff19168380011785556200080f565b828001600101855582156200080f579182015b828111156200080e578251825591602001919060010190620007f1565b5b5090506200081e919062000822565b5090565b5b808211156200083d57600081600090555060010162000823565b5090565b612f4180620008516000396000f3fe6080604052600436106101dc5760003560e01c80634a74bb021161010257806397acdd1511610095578063dd62ed3e11610064578063dd62ed3e146109f6578063f2fde38b14610a7b578063f51d4df514610acc578063f9f92be414610af7576101e3565b806397acdd151461087e5780639f9a4e7f146108d7578063a457c2d714610914578063a9059cbb14610985576101e3565b8063857f22a3116100d1578063857f22a3146107695780638af02e7f146107965780638da5cb5b146107ad57806395d89b41146107ee576101e3565b80634a74bb0214610645578063689dc62d1461067257806370a08231146106ed578063715018a614610752576101e3565b8063220f66961161017a578063313ce56711610149578063313ce5671461053a578063394680bd14610568578063395093511461059357806349bd5a5e14610604576101e3565b8063220f66961461040057806323b872dd1461042d57806328d2bc91146104be5780632b4c8ec0146104ff576101e3565b80631693e8d4116101b65780631693e8d4146103165780631694505e1461034357806318160ddd146103845780631c8e1179146103af576101e3565b806306fdde03146101e8578063095ea7b3146102785780631157a414146102e9576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610b5e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b506102d16004803603604081101561029b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c00565b60405180821515815260200191505060405180910390f35b3480156102f557600080fd5b506102fe610c1e565b60405180821515815260200191505060405180910390f35b34801561032257600080fd5b5061032b610c35565b60405180821515815260200191505060405180910390f35b34801561034f57600080fd5b50610358610c48565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039057600080fd5b50610399610c6e565b6040518082815260200191505060405180910390f35b3480156103bb57600080fd5b506103fe600480360360208110156103d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c78565b005b34801561040c57600080fd5b50610415610d9d565b60405180821515815260200191505060405180910390f35b34801561043957600080fd5b506104a66004803603606081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610db0565b60405180821515815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3610e89565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050b57600080fd5b506105386004803603602081101561052257600080fd5b8101908080359060200190929190505050610eaf565b005b34801561054657600080fd5b5061054f610fba565b604051808260ff16815260200191505060405180910390f35b34801561057457600080fd5b5061057d610fd1565b6040518082815260200191505060405180910390f35b34801561059f57600080fd5b506105ec600480360360408110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdb565b60405180821515815260200191505060405180910390f35b34801561061057600080fd5b5061061961108e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065157600080fd5b5061065a6110b4565b60405180821515815260200191505060405180910390f35b34801561067e57600080fd5b506106eb6004803603606081101561069557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110c7565b005b3480156106f957600080fd5b5061073c6004803603602081101561071057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611329565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611371565b005b34801561077557600080fd5b5061077e6114fc565b60405180821515815260200191505060405180910390f35b3480156107a257600080fd5b506107ab611513565b005b3480156107b957600080fd5b506107c26116a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107fa57600080fd5b506108036116d3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561088a57600080fd5b506108c1600480360360408110156108a157600080fd5b810190808035906020019092919080359060200190929190505050611775565b6040518082815260200191505060405180910390f35b3480156108e357600080fd5b50610912600480360360208110156108fa57600080fd5b810190808035151590602001909291905050506117a5565b005b34801561092057600080fd5b5061096d6004803603604081101561093757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118c5565b60405180821515815260200191505060405180910390f35b34801561099157600080fd5b506109de600480360360408110156109a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611992565b60405180821515815260200191505060405180910390f35b348015610a0257600080fd5b50610a6560048036036040811015610a1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b0565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610aca60048036036020811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a37565b005b348015610ad857600080fd5b50610ae1611c47565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b4660048036036020811015610b1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b60405180821515815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b6000610c14610c0d611cf5565b8484611cfd565b6001905092915050565b6000600c60169054906101000a900460ff16905090565b600c60169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610c80611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c60149054906101000a900460ff1681565b6000610dbd848484611ef4565b610e7e84610dc9611cf5565b610e7985604051806060016040528060288152602001612e7660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e2f611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b611cfd565b600190509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb7611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806009819055507f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00816040518082815260200191505060405180910390a150565b6000600560009054906101000a900460ff16905090565b6000600954905090565b6000611084610fe8611cf5565b8461107f8560016000610ff9611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6d90919063ffffffff16565b611cfd565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60159054906101000a900460ff1681565b6110cf611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f474d3a207472616e7366657220746f207a65726f20616464726573730000000081525060200191505060405180910390fd5b600083905061124e82600b5461243990919063ffffffff16565b600b819055508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112e757600080fd5b505af11580156112fb573d6000803e3d6000fd5b505050506040513d602081101561131157600080fd5b81019080805190602001909291905050505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611379611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60159054906101000a900460ff16905090565b61151b611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600c60169054906101000a900460ff1615611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f474d3a20616c72656164792074726164696e6720656e61626c6564210000000081525060200191505060405180910390fd5b6001600c60166101000a81548160ff0219169083151502179055507fd9e29040b496bb05e69c27b488557877261751ea846666743c06155088bca35d60405160405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561176b5780601f106117405761010080835404028352916020019161176b565b820191906000526020600020905b81548152906001019060200180831161174e57829003601f168201915b5050505050905090565b600061179d606461178f848661248390919063ffffffff16565b61250990919063ffffffff16565b905092915050565b6117ad611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b60006119886118d2611cf5565b8461198385604051806060016040528060258152602001612ee760259139600160006118fc611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b611cfd565b6001905092915050565b60006119a661199f611cf5565b8484611ef4565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a3f611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612de76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b600080828401905083811015611ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ec36024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e0d6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b611efc6116a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f6a5750611f3a6116a9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561236857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461224257600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120685750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f474d3a20746865207472616e73616374696f6e2077617320626c6f636b65642e81525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806121835750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561223d57600061219330611329565b9050600060095482101590508080156121b95750600c60149054906101000a900460ff16155b80156122135750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561222b5750600c60159054906101000a900460ff165b1561223a5761223982612553565b5b50505b6122b0565b600c60169054906101000a900460ff166122af576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600c60149054906101000a900460ff16156122d5576122d0838383612635565b612363565b60006122e2826002611775565b905060006122f1836001611775565b9050600061231a8261230c858761243990919063ffffffff16565b61243990919063ffffffff16565b9050612327863085612635565b61235486600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612635565b61235f868683612635565b5050505b612374565b612373838383612635565b5b505050565b6000838311158290612426576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123eb5780820151818401526020810190506123d0565b50505050905090810190601f1680156124185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061247b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612379565b905092915050565b6000808314156124965760009050612503565b60008284029050828482816124a757fe5b04146124fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e556021913960400191505060405180910390fd5b809150505b92915050565b600061254b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128f6565b905092915050565b6001600c60146101000a81548160ff021916908315150217905550600061258460028361250990919063ffffffff16565b9050600061259b828461243990919063ffffffff16565b905060004790506125ab836129bc565b60006125c0824761243990919063ffffffff16565b90506125cc8382612c70565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000600c60146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e9e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dc46023913960400191505060405180910390fd5b61274c838383612dbe565b6127b781604051806060016040528060268152602001612e2f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831182906129a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561296757808201518184015260208101905061294c565b50505050905090810190601f1680156129945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816129ae57fe5b049050809150509392505050565b6060600267ffffffffffffffff811180156129d657600080fd5b50604051908082528060200260200182016040528015612a055781602001602082028036833780820191505090505b5090503081600081518110612a1657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab857600080fd5b505afa158015612acc573d6000803e3d6000fd5b505050506040513d6020811015612ae257600080fd5b810190808051906020019092919050505081600181518110612b0057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cfd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612c2b578082015181840152602081019050612c10565b505050509050019650505050505050600060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050505050565b612c9d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cfd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b50505050506040513d6060811015612d9257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc51c12f2c23092d8815e599f49344980fa52dce93de23c0b62e3c999ec85ffe64736f6c634300060c0033000000000000000000000000d496fcd7740175a4e7de6a55f0174c25f18bbe9c

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80634a74bb021161010257806397acdd1511610095578063dd62ed3e11610064578063dd62ed3e146109f6578063f2fde38b14610a7b578063f51d4df514610acc578063f9f92be414610af7576101e3565b806397acdd151461087e5780639f9a4e7f146108d7578063a457c2d714610914578063a9059cbb14610985576101e3565b8063857f22a3116100d1578063857f22a3146107695780638af02e7f146107965780638da5cb5b146107ad57806395d89b41146107ee576101e3565b80634a74bb0214610645578063689dc62d1461067257806370a08231146106ed578063715018a614610752576101e3565b8063220f66961161017a578063313ce56711610149578063313ce5671461053a578063394680bd14610568578063395093511461059357806349bd5a5e14610604576101e3565b8063220f66961461040057806323b872dd1461042d57806328d2bc91146104be5780632b4c8ec0146104ff576101e3565b80631693e8d4116101b65780631693e8d4146103165780631694505e1461034357806318160ddd146103845780631c8e1179146103af576101e3565b806306fdde03146101e8578063095ea7b3146102785780631157a414146102e9576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610b5e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b506102d16004803603604081101561029b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c00565b60405180821515815260200191505060405180910390f35b3480156102f557600080fd5b506102fe610c1e565b60405180821515815260200191505060405180910390f35b34801561032257600080fd5b5061032b610c35565b60405180821515815260200191505060405180910390f35b34801561034f57600080fd5b50610358610c48565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039057600080fd5b50610399610c6e565b6040518082815260200191505060405180910390f35b3480156103bb57600080fd5b506103fe600480360360208110156103d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c78565b005b34801561040c57600080fd5b50610415610d9d565b60405180821515815260200191505060405180910390f35b34801561043957600080fd5b506104a66004803603606081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610db0565b60405180821515815260200191505060405180910390f35b3480156104ca57600080fd5b506104d3610e89565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561050b57600080fd5b506105386004803603602081101561052257600080fd5b8101908080359060200190929190505050610eaf565b005b34801561054657600080fd5b5061054f610fba565b604051808260ff16815260200191505060405180910390f35b34801561057457600080fd5b5061057d610fd1565b6040518082815260200191505060405180910390f35b34801561059f57600080fd5b506105ec600480360360408110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fdb565b60405180821515815260200191505060405180910390f35b34801561061057600080fd5b5061061961108e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065157600080fd5b5061065a6110b4565b60405180821515815260200191505060405180910390f35b34801561067e57600080fd5b506106eb6004803603606081101561069557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110c7565b005b3480156106f957600080fd5b5061073c6004803603602081101561071057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611329565b6040518082815260200191505060405180910390f35b34801561075e57600080fd5b50610767611371565b005b34801561077557600080fd5b5061077e6114fc565b60405180821515815260200191505060405180910390f35b3480156107a257600080fd5b506107ab611513565b005b3480156107b957600080fd5b506107c26116a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107fa57600080fd5b506108036116d3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561088a57600080fd5b506108c1600480360360408110156108a157600080fd5b810190808035906020019092919080359060200190929190505050611775565b6040518082815260200191505060405180910390f35b3480156108e357600080fd5b50610912600480360360208110156108fa57600080fd5b810190808035151590602001909291905050506117a5565b005b34801561092057600080fd5b5061096d6004803603604081101561093757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118c5565b60405180821515815260200191505060405180910390f35b34801561099157600080fd5b506109de600480360360408110156109a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611992565b60405180821515815260200191505060405180910390f35b348015610a0257600080fd5b50610a6560048036036040811015610a1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119b0565b6040518082815260200191505060405180910390f35b348015610a8757600080fd5b50610aca60048036036020811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a37565b005b348015610ad857600080fd5b50610ae1611c47565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b4660048036036020811015610b1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b60405180821515815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf65780601f10610bcb57610100808354040283529160200191610bf6565b820191906000526020600020905b815481529060010190602001808311610bd957829003601f168201915b5050505050905090565b6000610c14610c0d611cf5565b8484611cfd565b6001905092915050565b6000600c60169054906101000a900460ff16905090565b600c60169054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610c80611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600c60149054906101000a900460ff1681565b6000610dbd848484611ef4565b610e7e84610dc9611cf5565b610e7985604051806060016040528060288152602001612e7660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e2f611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b611cfd565b600190509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb7611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806009819055507f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00816040518082815260200191505060405180910390a150565b6000600560009054906101000a900460ff16905090565b6000600954905090565b6000611084610fe8611cf5565b8461107f8560016000610ff9611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6d90919063ffffffff16565b611cfd565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60159054906101000a900460ff1681565b6110cf611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f474d3a207472616e7366657220746f207a65726f20616464726573730000000081525060200191505060405180910390fd5b600083905061124e82600b5461243990919063ffffffff16565b600b819055508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156112e757600080fd5b505af11580156112fb573d6000803e3d6000fd5b505050506040513d602081101561131157600080fd5b81019080805190602001909291905050505050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611379611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60159054906101000a900460ff16905090565b61151b611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600c60169054906101000a900460ff1615611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f474d3a20616c72656164792074726164696e6720656e61626c6564210000000081525060200191505060405180910390fd5b6001600c60166101000a81548160ff0219169083151502179055507fd9e29040b496bb05e69c27b488557877261751ea846666743c06155088bca35d60405160405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561176b5780601f106117405761010080835404028352916020019161176b565b820191906000526020600020905b81548152906001019060200180831161174e57829003601f168201915b5050505050905090565b600061179d606461178f848661248390919063ffffffff16565b61250990919063ffffffff16565b905092915050565b6117ad611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b60006119886118d2611cf5565b8461198385604051806060016040528060258152602001612ee760259139600160006118fc611cf5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b611cfd565b6001905092915050565b60006119a661199f611cf5565b8484611ef4565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a3f611cf5565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612de76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600d6020528060005260406000206000915054906101000a900460ff1681565b600080828401905083811015611ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612ec36024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e0d6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b611efc6116a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f6a5750611f3a6116a9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561236857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461224257600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120685750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f474d3a20746865207472616e73616374696f6e2077617320626c6f636b65642e81525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806121835750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561223d57600061219330611329565b9050600060095482101590508080156121b95750600c60149054906101000a900460ff16155b80156122135750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b801561222b5750600c60159054906101000a900460ff165b1561223a5761223982612553565b5b50505b6122b0565b600c60169054906101000a900460ff166122af576001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600c60149054906101000a900460ff16156122d5576122d0838383612635565b612363565b60006122e2826002611775565b905060006122f1836001611775565b9050600061231a8261230c858761243990919063ffffffff16565b61243990919063ffffffff16565b9050612327863085612635565b61235486600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612635565b61235f868683612635565b5050505b612374565b612373838383612635565b5b505050565b6000838311158290612426576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123eb5780820151818401526020810190506123d0565b50505050905090810190601f1680156124185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061247b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612379565b905092915050565b6000808314156124965760009050612503565b60008284029050828482816124a757fe5b04146124fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e556021913960400191505060405180910390fd5b809150505b92915050565b600061254b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128f6565b905092915050565b6001600c60146101000a81548160ff021916908315150217905550600061258460028361250990919063ffffffff16565b9050600061259b828461243990919063ffffffff16565b905060004790506125ab836129bc565b60006125c0824761243990919063ffffffff16565b90506125cc8382612c70565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405180848152602001838152602001828152602001935050505060405180910390a1505050506000600c60146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e9e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dc46023913960400191505060405180910390fd5b61274c838383612dbe565b6127b781604051806060016040528060268152602001612e2f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123799092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831182906129a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561296757808201518184015260208101905061294c565b50505050905090810190601f1680156129945780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816129ae57fe5b049050809150509392505050565b6060600267ffffffffffffffff811180156129d657600080fd5b50604051908082528060200260200182016040528015612a055781602001602082028036833780820191505090505b5090503081600081518110612a1657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab857600080fd5b505afa158015612acc573d6000803e3d6000fd5b505050506040513d6020811015612ae257600080fd5b810190808051906020019092919050505081600181518110612b0057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cfd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612c2b578082015181840152602081019050612c10565b505050509050019650505050505050600060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050505050565b612c9d30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611cfd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b50505050506040513d6060811015612d9257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc51c12f2c23092d8815e599f49344980fa52dce93de23c0b62e3c999ec85ffe64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d496fcd7740175a4e7de6a55f0174c25f18bbe9c

-----Decoded View---------------
Arg [0] : _treasuryWallet (address): 0xD496fcd7740175A4E7de6A55f0174C25F18bBE9c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d496fcd7740175a4e7de6a55f0174c25f18bbe9c


Deployed Bytecode Sourcemap

23338:8167:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7692:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9798:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31400:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23836:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23410:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8767:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30689:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23754:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10441:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23493:69;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30067:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8619:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31157:109;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11171:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23458:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23789:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30799:346;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8930:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1036:148;;;;;;;;;;;;;:::i;:::-;;31278:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30305:190;;;;;;;;;;;;;:::i;:::-;;822:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7894:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29777:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30503:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11892:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9262:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9500:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1192:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23667:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23874:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7692:83;7729:13;7762:5;7755:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7692:83;:::o;9798:169::-;9881:4;9898:39;9907:12;:10;:12::i;:::-;9921:7;9930:6;9898:8;:39::i;:::-;9955:4;9948:11;;9798:169;;;;:::o;31400:94::-;31449:4;31473:13;;;;;;;;;;;31466:20;;31400:94;:::o;23836:25::-;;;;;;;;;;;;;:::o;23410:41::-;;;;;;;;;;;;;:::o;8767:100::-;8820:7;8847:12;;8840:19;;8767:100;:::o;30689:102::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30778:5:::1;30757:9;:18;30767:7;30757:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;30689:102:::0;:::o;23754:28::-;;;;;;;;;;;;;:::o;10441:321::-;10547:4;10564:36;10574:6;10582:9;10593:6;10564:9;:36::i;:::-;10611:121;10620:6;10628:12;:10;:12::i;:::-;10642:89;10680:6;10642:89;;;;;;;;;;;;;;;;;:11;:19;10654:6;10642:19;;;;;;;;;;;;;;;:33;10662:12;:10;:12::i;:::-;10642:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10611:8;:121::i;:::-;10750:4;10743:11;;10441:321;;;;;:::o;23493:69::-;;;;;;;;;;;;;:::o;30067:230::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30205:20:::1;30183:19;:42;;;;30241:48;30268:20;30241:48;;;;;;;;;;;;;;;;;;30067:230:::0;:::o;8619:83::-;8660:5;8685:9;;;;;;;;;;;8678:16;;8619:83;:::o;31157:109::-;31212:7;31239:19;;31232:26;;31157:109;:::o;11171:218::-;11259:4;11276:83;11285:12;:10;:12::i;:::-;11299:7;11308:50;11347:10;11308:11;:25;11320:12;:10;:12::i;:::-;11308:25;;;;;;;;;;;;;;;:34;11334:7;11308:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11276:8;:83::i;:::-;11377:4;11370:11;;11171:218;;;;:::o;23458:28::-;;;;;;;;;;;;;:::o;23789:40::-;;;;;;;;;;;;;:::o;30799:346::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30913:1:::1;30898:17;;:3;:17;;;;30890:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;30968:21;31008:6;30968:47;;31049:33;31074:7;31049:20;;:24;;:33;;;;:::i;:::-;31026:20;:56;;;;31103:5;:14;;;31118:9;;;;;;;;;;;31129:7;31103:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;1019:1;30799:346:::0;;;:::o;8930:119::-;8996:7;9023:9;:18;9033:7;9023:18;;;;;;;;;;;;;;;;9016:25;;8930:119;;;:::o;1036:148::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1143:1:::1;1106:40;;1127:6;;;;;;;;;;;1106:40;;;;;;;;;;;;1174:1;1157:6;;:19;;;;;;;;;;;;;;;;;;1036:148::o:0;31278:110::-;31335:4;31359:21;;;;;;;;;;;31352:28;;31278:110;:::o;30305:190::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30373:13:::1;;;;;;;;;;;30372:14;30364:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;30446:4;30430:13;;:20;;;;;;;;;;;;;;;;;;30466:21;;;;;;;;;;30305:190::o:0;822:79::-;860:7;887:6;;;;;;;;;;;880:13;;822:79;:::o;7894:87::-;7933:13;7966:7;7959:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7894:87;:::o;29777:194::-;29891:14;29927:36;29959:3;29927:27;29939:14;29927:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;29918:45;;29777:194;;;;:::o;30503:174::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30607:8:::1;30583:21;;:32;;;;;;;;;;;;;;;;;;30631:38;30660:8;30631:38;;;;;;;;;;;;;;;;;;;;30503:174:::0;:::o;11892:269::-;11985:4;12002:129;12011:12;:10;:12::i;:::-;12025:7;12034:96;12073:15;12034:96;;;;;;;;;;;;;;;;;:11;:25;12046:12;:10;:12::i;:::-;12034:25;;;;;;;;;;;;;;;:34;12060:7;12034:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12002:8;:129::i;:::-;12149:4;12142:11;;11892:269;;;;:::o;9262:175::-;9348:4;9365:42;9375:12;:10;:12::i;:::-;9389:9;9400:6;9365:9;:42::i;:::-;9425:4;9418:11;;9262:175;;;;:::o;9500:151::-;9589:7;9616:11;:18;9628:5;9616:18;;;;;;;;;;;;;;;:27;9635:7;9616:27;;;;;;;;;;;;;;;;9609:34;;9500:151;;;;:::o;1192:244::-;959:12;:10;:12::i;:::-;949:22;;:6;;;;;;;;;;;:22;;;941:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1301:1:::1;1281:22;;:8;:22;;;;1273:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1391:8;1362:38;;1383:6;;;;;;;;;;;1362:38;;;;;;;;;;;;1420:8;1411:6;;:17;;;;;;;;;;;;;;;;;;1192:244:::0;:::o;23667:35::-;;;;:::o;23874:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1475:181::-;1533:7;1553:9;1569:1;1565;:5;1553:17;;1594:1;1589;:6;;1581:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:1;1640:8;;;1475:181;;;;:::o;139:106::-;192:15;227:10;220:17;;139:106;:::o;15037:346::-;15156:1;15139:19;;:5;:19;;;;15131:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15237:1;15218:21;;:7;:21;;;;15210:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15321:6;15291:11;:18;15303:5;15291:18;;;;;;;;;;;;;;;:27;15310:7;15291:27;;;;;;;;;;;;;;;:36;;;;15359:7;15343:32;;15352:5;15343:32;;;15368:6;15343:32;;;;;;;;;;;;;;;;;;15037:346;;;:::o;25146:2416::-;25563:7;:5;:7::i;:::-;25555:15;;:4;:15;;;;:32;;;;;25580:7;:5;:7::i;:::-;25574:13;;:2;:13;;;;25555:32;25552:2002;;;25615:13;;;;;;;;;;;25607:21;;:4;:21;;;25604:855;;25658:9;:15;25668:4;25658:15;;;;;;;;;;;;;;;;;;;;;;;;;25657:16;:34;;;;;25678:9;:13;25688:2;25678:13;;;;;;;;;;;;;;;;;;;;;;;;;25677:14;25657:34;25649:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25764:15;;;;;;;;;;;25750:30;;:2;:30;;;:53;;;;25790:13;;;;;;;;;;;25784:19;;:2;:19;;;25750:53;25747:583;;;25828:28;25859:24;25877:4;25859:9;:24::i;:::-;25828:55;;25906:24;25957:19;;25933:20;:43;;25906:70;;26029:19;:65;;;;;26078:16;;;;;;;;;;;26077:17;26029:65;:121;;;;;26137:13;;;;;;;;;;;26123:27;;:10;:27;;;;26029:121;:171;;;;;26179:21;;;;;;;;;;;26029:171;25999:312;;;26251:36;26266:20;26251:14;:36::i;:::-;25999:312;25747:583;;;25604:855;;;26387:13;;;;;;;;;;;26383:60;;26439:4;26423:9;:13;26433:2;26423:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;26383:60;25604:855;26490:16;;;;;;;;;;;26487:995;;;26525:33;26541:4;26547:2;26551:6;26525:15;:33::i;:::-;26487:995;;;26665:20;26688:89;26728:6;26757:1;26688:17;:89::i;:::-;26665:112;;26873:24;26900:89;26940:6;26969:1;26900:17;:89::i;:::-;26873:116;;27178:24;27205:46;27234:16;27205:24;27216:12;27205:6;:10;;:24;;;;:::i;:::-;:28;;:46;;;;:::i;:::-;27178:73;;27280:50;27296:4;27310;27317:12;27280:15;:50::i;:::-;27349:55;27365:4;27371:14;;;;;;;;;;;27387:16;27349:15;:55::i;:::-;27423:43;27439:4;27445:2;27449:16;27423:15;:43::i;:::-;26487:995;;;;25552:2002;;;27521:33;27537:4;27543:2;27547:6;27521:15;:33::i;:::-;25552:2002;25146:2416;;;:::o;1819:192::-;1905:7;1938:1;1933;:6;;1941:12;1925:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1965:9;1981:1;1977;:5;1965:17;;2002:1;1995:8;;;1819:192;;;;;:::o;1669:136::-;1727:7;1754:43;1758:1;1761;1754:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1747:50;;1669:136;;;;:::o;2025:471::-;2083:7;2333:1;2328;:6;2324:47;;;2358:1;2351:8;;;;2324:47;2383:9;2399:1;2395;:5;2383:17;;2428:1;2423;2419;:5;;;;;;:10;2411:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:1;2480:8;;;2025:471;;;;;:::o;2510:132::-;2568:7;2595:39;2599:1;2602;2595:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2588:46;;2510:132;;;;:::o;27570:987::-;24267:4;24248:16;;:23;;;;;;;;;;;;;;;;;;27706:12:::1;27721:27;27746:1;27721:20;:24;;:27;;;;:::i;:::-;27706:42;;27759:17;27779:30;27804:4;27779:20;:24;;:30;;;;:::i;:::-;27759:50;;28087:22;28112:21;28087:46;;28178:22;28195:4;28178:16;:22::i;:::-;28331:18;28352:41;28378:14;28352:21;:25;;:41;;;;:::i;:::-;28331:62;;28443:35;28456:9;28467:10;28443:12;:35::i;:::-;28506:43;28521:4;28527:10;28539:9;28506:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24282:1;;;;24313:5:::0;24294:16;;:24;;;;;;;;;;;;;;;;;;27570:987;:::o;12651:539::-;12775:1;12757:20;;:6;:20;;;;12749:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12859:1;12838:23;;:9;:23;;;;12830:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12914:47;12935:6;12943:9;12954:6;12914:20;:47::i;:::-;12994:71;13016:6;12994:71;;;;;;;;;;;;;;;;;:9;:17;13004:6;12994:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12974:9;:17;12984:6;12974:17;;;;;;;;;;;;;;;:91;;;;13099:32;13124:6;13099:9;:20;13109:9;13099:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13076:9;:20;13086:9;13076:20;;;;;;;;;;;;;;;:55;;;;13164:9;13147:35;;13156:6;13147:35;;;13175:6;13147:35;;;;;;;;;;;;;;;;;;12651:539;;;:::o;2656:278::-;2742:7;2774:1;2770;:5;2777:12;2762:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2801:9;2817:1;2813;:5;;;;;;2801:17;;2925:1;2918:8;;;2656:278;;;;;:::o;28565:589::-;28691:21;28729:1;28715:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28691:40;;28760:4;28742;28747:1;28742:7;;;;;;;;;;;;;:23;;;;;;;;;;;28786:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28776:4;28781:1;28776:7;;;;;;;;;;;;;:32;;;;;;;;;;;28821:62;28838:4;28853:15;;;;;;;;;;;28871:11;28821:8;:62::i;:::-;28922:15;;;;;;;;;;;:66;;;29003:11;29029:1;29073:4;29100;29120:15;28922:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28565:589;;:::o;29162:519::-;29310:62;29327:4;29342:15;;;;;;;;;;;29360:11;29310:8;:62::i;:::-;29415:15;;;;;;;;;;;:31;;;29454:9;29487:4;29507:11;29533:1;29576;29627:4;29647:15;29415:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29162:519;;:::o;16408:92::-;;;;:::o

Swarm Source

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