ETH Price: $2,728.48 (+4.66%)

Token

Tsukalien (TALIEN)
 

Overview

Max Total Supply

843,969,260,625.715582841597157427 TALIEN

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,860,898,477.53085800838671856 TALIEN

Value
$0.00
0x5420068feee6d271bde52875e02aa6cdd583480a
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:
TSUKALIEN

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-27
*/

/**

🌐 https://tsukalien.com
💬 https://t.me/TSUKALIEN
🐤 https://twitter.com/TSUKALIEN
📃 https://medium.com/@TSUKALIEN


                                        ,   ,
                                        $,  $,     ,
                                        "ss.$ss. .s'
                                ,     .ss$$$$$$$$$$s,
                                $. s$$$$$$$$$$$$$$`$$Ss
                                "$$$$$$$$$$$$$$$$$$o$$$       ,
                               s$$$$$$$$$$$$$$$$$$$$$$$$s,  ,s
                              s$$$$$$$$$"$$$$$$""""$$$$$$"$$$$$,
                              s$$$$$$$$$$s""$$$$ssssss"$$$$$$$$"
                             s$$$$$$$$$$'         `"""ss"$"$s""
                             s$$$$$$$$$$,              `"""""$  .s$$s
                             s$$$$$$$$$$$$s,...               `s$$'  `
                         `ssss$$$$$$$$$$$$$$$$$$$$####s.     .$$"$.   , s-
                           `""""$$$$$$$$$$$$$$$$$$$$#####$$$$$$"     $.$'
                                 "$$$$$$$$$$$$$$$$$$$$$####s""     .$$$|
                                  "$$$$$$$$$$$$$$$$$$$$$$$$##s    .$$" $
                                   $$""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"   `
                                  $$"  "$"$$$$$$$$$$$$$$$$$$$$S""""'
                             ,   ,"     '  $$$$$$$$$$$$$$$$####s
                             $.          .s$$$$$$$$$$$$$$$$$####"
                 ,           "$s.   ..ssS$$$$$$$$$$$$$$$$$$$####"
                 $           .$$$S$$$$$$$$$$$$$$$$$$$$$$$$#####"
                 Ss     ..sS$$$$$$$$$$$$$$$$$$$$$$$$$$$######""
                  "$$sS$$$$$$$$$$$$$$$$$$$$$$$$$$$########"
           ,      s$$$$$$$$$$$$$$$$$$$$$$$$#########""'
           $    s$$$$$$$$$$$$$$$$$$$$$#######""'      s'         ,
           $$..$$$$$$$$$$$$$$$$$$######"'       ....,$$....    ,$
            "$$$$$$$$$$$$$$$######"' ,     .sS$$$$$$$$$$$$$$$$s$$
              $$$$$$$$$$$$#####"     $, .s$$$$$$$$$$$$$$$$$$$$$$$$s.
   )          $$$$$$$$$$$#####'      `$$$$$$$$$###########$$$$$$$$$$$.
  ((          $$$$$$$$$$$#####       $$$$$$$$###"       "####$$$$$$$$$$
  ) \         $$$$$$$$$$$$####.     $$$$$$###"             "###$$$$$$$$$   s'
 (   )        $$$$$$$$$$$$$####.   $$$$$###"                ####$$$$$$$$s$$'
 )  ( (       $$"$$$$$$$$$$$#####.$$$$$###'    TSUKALIEN   .###$$$$$$$$$$"
 (  )  )   _,$"   $$$$$$$$$$$$######.$$##'                .###$$$$$$$$$$
 ) (  ( \.         "$$$$$$$$$$$$$#######,,,.          ..####$$$$$$$$$$$"
(   )$ )  )        ,$$$$$$$$$$$$$$$$$$####################$$$$$$$$$$$"
(   ($$  ( \     _sS"  `"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$S$$,
 )  )$$$s ) )  .      .   `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"'  `$$
  (   $$$Ss/  .$,    .$,,s$$$$$$##S$$$$$$$$$$$$$$$$$$$$$$$$S""        '
    \)_$$$$$$$$$$$$$$$$$$$$$$$##"  $$        `$$.        `$$.
        `"S$$$$$$$$$$$$$$$$$#"      $          `$          `$
            `"""""""""""""'         '           '           '

*/

// SPDX-License-Identifier: MIT
                                                    
pragma solidity 0.8.9;

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

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

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

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private swapping;

    address public buybackburnWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyTotalFees;
    uint256 public buyBuybackburnFee;
    
    uint256 public sellTotalFees;
    uint256 public sellBuybackburnFee;
    
    uint256 public tokensForBuybackburn;

    mapping(address => uint256) public ethSpent;
    mapping(address => uint256) public tokensBought;
    mapping(address => bool) public isExtraFeeExempt;

    uint256 public walletDumpPercent;
    uint256 public teleportFee;
    uint256 public sellInterval;

    mapping(address => bool) public blacklist;
    mapping(address => uint256) private lastBlock;
    bool public autoBL = true;
    uint256 private firstBlock;

    uint256 private maxBalance; 
    uint256 private minPriceRatio;
    mapping(address => uint256) private lastSell;
    uint256 private deadBlocks;
    
    /******************/

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

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

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event buybackburnWalletUpdated(address indexed newWallet, address indexed oldWallet);

    event BlacklistSingle(address bot, bool blacklisted);

    event BlacklistBulk(address [] bots, bool blacklisted);
    
    constructor() ERC20("Tsukalien", "TALIEN") {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        
        
        uint256 _buyBuybackburnFee = 5;
        uint256 _sellBuybackburnFee = 5;

        teleportFee = 90;
        walletDumpPercent = 1;
        sellInterval = 1 hours;
        
        uint256 totalSupply = 1 * 1e12 * 1e18;
        
        maxTransactionAmount = totalSupply * 2 / 100; // 2% max buy
        maxWallet = totalSupply * 2 / 100; // 2% max wallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        maxBalance = totalSupply * 5 / 1000; // 0.5% max early buy
        minPriceRatio = 25000000000; // min price paid to not get extra tax 0.5% @ 0.2 eth

        buyBuybackburnFee = _buyBuybackburnFee;
        buyTotalFees = buyBuybackburnFee;
        
        sellBuybackburnFee = _sellBuybackburnFee;
        sellTotalFees = sellBuybackburnFee;
        
        buybackburnWallet = address(0x000062815d0FE6303b163934d5B14491C0C353A9);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0xD9C88F14861fF83194D5eE270719b96632A55a01), true);
        excludeFromFees(address(0xAE8a89c737E7423Def56F6e39bf4052B112D6078), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {

  	}

    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        tradingActive = true;
        deadBlocks = _deadBlocks;
        swapEnabled = true;
        firstBlock = block.number;
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
    
    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
    function updateBuyFees(uint256 _buybackburnFee) external onlyOwner {
        buyBuybackburnFee = _buybackburnFee;
        buyTotalFees = buyBuybackburnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }
    
    function updateSellFees(uint256 _buybackburnFee) external onlyOwner {
        sellBuybackburnFee = _buybackburnFee;
        sellTotalFees = sellBuybackburnFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }
    
    function updateBuybackburnWallet(address newWallet) external onlyOwner {
        emit buybackburnWalletUpdated(newWallet, buybackburnWallet);
        buybackburnWallet = newWallet;
    }

    function updateTeleportSettings(uint256 _teleportFee, uint256 _walletDumpPercent, uint256 _sellInterval) public onlyOwner {
        require(_teleportFee <= 30, "Invalid teleport fee, should be less than 30.");
        require(_walletDumpPercent >= 30, "Invalid wallet dump percent, should be more than 30.");
        require(_sellInterval >= 30 && _sellInterval <= 10800, "Invalid sell interval, should be between 30 and 10800 seconds.");
        walletDumpPercent = _walletDumpPercent;
        teleportFee = _teleportFee;
        sellInterval = _sellInterval;
    }
    

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!(blacklist[to] || blacklist[from]), "Blacklisted.");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 extraFee = 0;
        uint256 burnAmount;

        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                
                
                if( !isExtraFeeExempt[from]) { // not exempt from extra fees
                    require(ethSpent[from] > 0, "Cannot sell on a wallet that did not buy.");
                    if(( (balanceOf(from) * walletDumpPercent / 100 < amount // seling more than % of wallet allowed
                        || lastSell[from] + sellInterval > block.timestamp) // OR sold twice within the hour
                        && tokensBought[from] > maxBalance // AND has more tokens than the early max
                        && tokensBought[from] / ethSpent[from] > minPriceRatio) // AND spent too little on the tokens
                        || lastBlock[from] == block.number // OR bought and sold in same block
                        ) 
                        {
                            extraFee = teleportFee;
                        }
                }

                lastSell[from] = block.timestamp;

                fees = amount.mul(sellTotalFees + extraFee).div(100);
                tokensForBuybackburn += fees * sellBuybackburnFee / (sellTotalFees + extraFee);
                burnAmount = fees * extraFee / (sellTotalFees + extraFee);
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount.mul(buyTotalFees).div(100);
                tokensForBuybackburn += fees * buyBuybackburnFee / buyTotalFees;
                lastBlock[to] = block.number;
                (uint256 r0, uint256 r1,) = IUniswapV2Pair(uniswapV2Pair).getReserves();

                ethSpent[to] += IUniswapV2Pair(uniswapV2Pair).token0() == uniswapV2Router.WETH() ? 
                    uniswapV2Router.getAmountIn(amount, r0, r1) : uniswapV2Router.getAmountIn(amount, r1, r0); // sometimes pair order is switched

                tokensBought[to] += amount;

                if (autoBL && block.number <= firstBlock + deadBlocks) {
                    blacklistSingle(to, true);
                }
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees - burnAmount);
                if(burnAmount >  0){ 
                    super._burn(from, burnAmount);
                }
            }
        	
        	amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
        
        if(contractBalance == 0 || tokensForBuybackburn == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){ //never sell more than 20x the swap tokens at amount
          contractBalance = swapTokensAtAmount * 20;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance;
        
        tokensForBuybackburn = 0;
        
        (success,) = address(buybackburnWallet).call{value: ethBalance}("");

    }

    function blacklistBatch(address [] calldata bots, bool bl) public onlyOwner {
        for(uint256 i; i < bots.length; i++) {
            blacklist[bots[i]] = bl;
        }
        emit BlacklistBulk(bots, bl);
    }

    function blacklistSingle(address bot, bool bl) public onlyOwner {
        blacklist[bot] = bl;
        emit BlacklistSingle(bot, bl);
    }

    function unBlacklistBatch(address [] calldata bots) public {
        require (msg.sender == buybackburnWallet); // can unbl after renounced
        for(uint256 i; i < bots.length; i++) {
            blacklist[bots[i]] = false;
        }
        emit BlacklistBulk(bots, false);
    }

    function setIsExtraFeeExempt(address [] calldata users, bool x) public onlyOwner {
        for(uint256 i; i < users.length; i++) {
            isExtraFeeExempt[users[i]] = x;
        }
    }
    
    function payout() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function tokenPayout() public {
        require (msg.sender == buybackburnWallet);
        IERC20(address(this)).transfer(msg.sender, balanceOf(address(this)));
    }

    function toggleAutoBL() public onlyOwner {
        autoBL = !autoBL;
    }

    function setTeleport(uint256 ratio, uint256 tokenAmount) public onlyOwner {
        minPriceRatio = ratio;
        maxBalance = tokenAmount;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"bots","type":"address[]"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"BlacklistBulk","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bot","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"BlacklistSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"buybackburnWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBL","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"bl","type":"bool"}],"name":"blacklistBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"},{"internalType":"bool","name":"bl","type":"bool"}],"name":"blacklistSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBuybackburnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackburnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethSpent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExtraFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBuybackburnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"x","type":"bool"}],"name":"setIsExtraFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"setTeleport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teleportFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAutoBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenPayout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBuybackburn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"bots","type":"address[]"}],"name":"unBlacklistBatch","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":"_buybackburnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackburnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buybackburnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teleportFee","type":"uint256"},{"internalType":"uint256","name":"_walletDumpPercent","type":"uint256"},{"internalType":"uint256","name":"_sellInterval","type":"uint256"}],"name":"updateTeleportSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDumpPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805462ffffff19166001908117909155601a805460ff191690911790553480156200003057600080fd5b5060408051808201825260098152682a39bab5b0b634b2b760b91b6020808301918252835180850190945260068452652a20a624a2a760d11b908401528151919291620000809160039162000782565b5080516200009690600490602084019062000782565b5050506000620000ab620004a260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011b816001620004a6565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200017057600080fd5b505afa15801562000185573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ab919062000828565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f457600080fd5b505afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000828565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027857600080fd5b505af11580156200028d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000828565b600780546001600160a01b0319166001600160a01b03929092169182179055620002df906001620004a6565b600754620002f8906001600160a01b0316600162000520565b605a6016556001601555610e106017556005806c0c9f2c9cd04674edea4000000060646200032882600262000869565b6200033491906200088b565b60095560646200034682600262000869565b6200035291906200088b565b600b556127106200036582600562000869565b6200037191906200088b565b600a556103e86200038482600562000869565b6200039091906200088b565b601c556405d21dba00601d55600e839055600d8390556010829055600f829055600880546001600160a01b0319167162815d0fe6303b163934d5b14491c0c353a9179055620003f3620003eb6005546001600160a01b031690565b600162000574565b6200040030600162000574565b6200040f61dead600162000574565b6200043073d9c88f14861ff83194d5ee270719b96632a55a01600162000574565b6200045173ae8a89c737e7423def56f6e39bf4052b112d6078600162000574565b62000470620004686005546001600160a01b031690565b6001620004a6565b6200047d306001620004a6565b6200048c61dead6001620004a6565b6200049833826200061c565b5050505062000906565b3390565b6005546001600160a01b03163314620004f55760405162461bcd60e51b8152602060048201819052602482015260008051602062003c7d83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005bf5760405162461bcd60e51b8152602060048201819052602482015260008051602062003c7d8339815191526044820152606401620004ec565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006745760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ec565b62000690816002546200071860201b6200192d1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006c39183906200192d62000718821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620007278385620008ae565b9050838110156200077b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004ec565b9392505050565b8280546200079090620008c9565b90600052602060002090601f016020900481019282620007b45760008555620007ff565b82601f10620007cf57805160ff1916838001178555620007ff565b82800160010185558215620007ff579182015b82811115620007ff578251825591602001919060010190620007e2565b506200080d92915062000811565b5090565b5b808211156200080d576000815560010162000812565b6000602082840312156200083b57600080fd5b81516001600160a01b03811681146200077b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000886576200088662000853565b500290565b600082620008a957634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008c457620008c462000853565b500190565b600181811c90821680620008de57607f821691505b602082108114156200090057634e487b7160e01b600052602260045260246000fd5b50919050565b61336780620009166000396000f3fe6080604052600436106103855760003560e01c806383f2430d116101d1578063c540428d11610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610a58578063f8b45b0514610a78578063f9f92be414610a8e578063fca35f8b14610abe57600080fd5b8063dd62ed3e146109c7578063dfa95b4b14610a0d578063e2f4560514610a22578063eba4c33314610a3857600080fd5b8063d257b34f116100dc578063d257b34f1461095b578063d358f8911461097b578063d851ec1214610991578063d85ba063146109b157600080fd5b8063c540428d146108fe578063c8c8ebe414610918578063cd93aeed1461092e57600080fd5b80639a7a23d61161016f578063a9059cbb11610149578063a9059cbb1461086f578063b62496f51461088f578063bbc0c742146108bf578063c0246668146108de57600080fd5b80639a7a23d61461080f578063a457c2d71461082f578063a7c3dbdb1461084f57600080fd5b80638da5cb5b116101ab5780638da5cb5b1461079c5780638f6d8770146107ba578063924de9b7146107da57806395d89b41146107fa57600080fd5b806383f2430d1461075157806387b551b5146107675780638d396a271461077c57600080fd5b806342843d11116102b65780636ddd17131161025457806371fc46881161022357806371fc4688146106dc578063751039fc146106fc5780637571336a1461071157806382aa7c681461073157600080fd5b80636ddd1713146106675780636f7531c61461068757806370a08231146106a7578063715018a6146106c757600080fd5b80634a8727f0116102905780634a8727f0146105ee5780634fbee1931461060457806363bd1d4a1461063c5780636a486a8e1461065157600080fd5b806342843d111461059457806349bd5a5e146105b45780634a62bb65146105d457600080fd5b806323b872dd11610323578063343100ac116102fd578063343100ac1461050c5780633636b1441461052257806337f89a2614610552578063395093511461057457600080fd5b806323b872dd146104a3578063264d7797146104c3578063313ce567146104f057600080fd5b806310d5de531161035f57806310d5de531461041057806313ace281146104405780631694505e1461045657806318160ddd1461048e57600080fd5b806306fdde0314610391578063095ea7b3146103bc5780630cea6ec0146103ec57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610ade565b6040516103b39190612ca2565b60405180910390f35b3480156103c857600080fd5b506103dc6103d7366004612d0c565b610b70565b60405190151581526020016103b3565b3480156103f857600080fd5b5061040260155481565b6040519081526020016103b3565b34801561041c57600080fd5b506103dc61042b366004612d38565b60216020526000908152604090205460ff1681565b34801561044c57600080fd5b5061040260165481565b34801561046257600080fd5b50600654610476906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b34801561049a57600080fd5b50600254610402565b3480156104af57600080fd5b506103dc6104be366004612d55565b610b87565b3480156104cf57600080fd5b506104026104de366004612d38565b60136020526000908152604090205481565b3480156104fc57600080fd5b50604051601281526020016103b3565b34801561051857600080fd5b5061040260105481565b34801561052e57600080fd5b506103dc61053d366004612d38565b60146020526000908152604090205460ff1681565b34801561055e57600080fd5b5061057261056d366004612df0565b610bf0565b005b34801561058057600080fd5b506103dc61058f366004612d0c565b610cd5565b3480156105a057600080fd5b506105726105af366004612df0565b610d0b565b3480156105c057600080fd5b50600754610476906001600160a01b031681565b3480156105e057600080fd5b50600c546103dc9060ff1681565b3480156105fa57600080fd5b5061040260115481565b34801561061057600080fd5b506103dc61061f366004612d38565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561064857600080fd5b50610572610dac565b34801561065d57600080fd5b50610402600f5481565b34801561067357600080fd5b50600c546103dc9062010000900460ff1681565b34801561069357600080fd5b506105726106a2366004612e47565b610e05565b3480156106b357600080fd5b506104026106c2366004612d38565b610f9a565b3480156106d357600080fd5b50610572610fb5565b3480156106e857600080fd5b506105726106f7366004612e73565b611029565b34801561070857600080fd5b506103dc6110ae565b34801561071d57600080fd5b5061057261072c366004612e8c565b6110eb565b34801561073d57600080fd5b5061057261074c366004612e73565b611140565b34801561075d57600080fd5b5061040260175481565b34801561077357600080fd5b50610572611189565b34801561078857600080fd5b50610572610797366004612e8c565b61122e565b3480156107a857600080fd5b506005546001600160a01b0316610476565b3480156107c657600080fd5b506105726107d5366004612d38565b6112bc565b3480156107e657600080fd5b506105726107f5366004612ec5565b611343565b34801561080657600080fd5b506103a6611389565b34801561081b57600080fd5b5061057261082a366004612e8c565b611398565b34801561083b57600080fd5b506103dc61084a366004612d0c565b611454565b34801561085b57600080fd5b50600854610476906001600160a01b031681565b34801561087b57600080fd5b506103dc61088a366004612d0c565b6114a3565b34801561089b57600080fd5b506103dc6108aa366004612d38565b60226020526000908152604090205460ff1681565b3480156108cb57600080fd5b50600c546103dc90610100900460ff1681565b3480156108ea57600080fd5b506105726108f9366004612e8c565b6114b0565b34801561090a57600080fd5b50601a546103dc9060ff1681565b34801561092457600080fd5b5061040260095481565b34801561093a57600080fd5b50610402610949366004612d38565b60126020526000908152604090205481565b34801561096757600080fd5b506103dc610976366004612e73565b611537565b34801561098757600080fd5b50610402600e5481565b34801561099d57600080fd5b506105726109ac366004612ee2565b61168c565b3480156109bd57600080fd5b50610402600d5481565b3480156109d357600080fd5b506104026109e2366004612f24565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1957600080fd5b5061057261174a565b348015610a2e57600080fd5b50610402600a5481565b348015610a4457600080fd5b50610572610a53366004612e73565b611788565b348015610a6457600080fd5b50610572610a73366004612d38565b61180d565b348015610a8457600080fd5b50610402600b5481565b348015610a9a57600080fd5b506103dc610aa9366004612d38565b60186020526000908152604090205460ff1681565b348015610aca57600080fd5b50610572610ad9366004612f52565b6118f8565b606060038054610aed90612f74565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990612f74565b8015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b5050505050905090565b6000610b7d338484611993565b5060015b92915050565b6000610b94848484611ab8565b610be68433610be1856040518060600160405280602881526020016132e5602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906126ad565b611993565b5060019392505050565b6005546001600160a01b03163314610c235760405162461bcd60e51b8152600401610c1a90612faf565b60405180910390fd5b60005b82811015610c94578160186000868685818110610c4557610c45612fe4565b9050602002016020810190610c5a9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c8c81613010565b915050610c26565b507f5ce37d8a4b2dda4093fefa4102334f7bb1c80bc3b8504c399bf46521af97265c838383604051610cc89392919061302b565b60405180910390a1505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b7d918590610be1908661192d565b6005546001600160a01b03163314610d355760405162461bcd60e51b8152600401610c1a90612faf565b60005b82811015610da6578160146000868685818110610d5757610d57612fe4565b9050602002016020810190610d6c9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d9e81613010565b915050610d38565b50505050565b6005546001600160a01b03163314610dd65760405162461bcd60e51b8152600401610c1a90612faf565b60405133904780156108fc02916000818181858888f19350505050158015610e02573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610e2f5760405162461bcd60e51b8152600401610c1a90612faf565b601e831115610e965760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642074656c65706f7274206665652c2073686f756c642062652060448201526c3632b9b9903a3430b71019981760991b6064820152608401610c1a565b601e821015610f045760405162461bcd60e51b815260206004820152603460248201527f496e76616c69642077616c6c65742064756d702070657263656e742c2073686f6044820152733ab6321031329036b7b932903a3430b71019981760611b6064820152608401610c1a565b601e8110158015610f175750612a308111155b610f895760405162461bcd60e51b815260206004820152603e60248201527f496e76616c69642073656c6c20696e74657276616c2c2073686f756c6420626560448201527f206265747765656e20333020616e64203130383030207365636f6e64732e00006064820152608401610c1a565b601591909155601691909155601755565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610fdf5760405162461bcd60e51b8152600401610c1a90612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110535760405162461bcd60e51b8152600401610c1a90612faf565b600e819055600d8190556014811115610e025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610c1a565b6005546000906001600160a01b031633146110db5760405162461bcd60e51b8152600401610c1a90612faf565b50600c805460ff19169055600190565b6005546001600160a01b031633146111155760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610c1a90612faf565b600c8054601f9290925562ffff00199091166201010017905543601b55565b6008546001600160a01b031633146111a057600080fd5b3063a9059cbb336111b083610f9a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190613084565b6005546001600160a01b031633146112585760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f7eea0c199412a4c7847e9ff554491a5c6bd663046ea523fa709739847752023491015b60405180910390a15050565b6005546001600160a01b031633146112e65760405162461bcd60e51b8152600401610c1a90612faf565b6008546040516001600160a01b03918216918316907f3d3cc3351cf0ac5f943d4f176ea772b9a81c05d54d6000575dee681db9b1434090600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461136d5760405162461bcd60e51b8152600401610c1a90612faf565b600c8054911515620100000262ff000019909216919091179055565b606060048054610aed90612f74565b6005546001600160a01b031633146113c25760405162461bcd60e51b8152600401610c1a90612faf565b6007546001600160a01b03838116911614156114465760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c1a565b61145082826126e7565b5050565b6000610b7d3384610be18560405180606001604052806025815260200161330d602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906126ad565b6000610b7d338484611ab8565b6005546001600160a01b031633146114da5760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146115645760405162461bcd60e51b8152600401610c1a90612faf565b620186a061157160025490565b61157c9060016130a1565b61158691906130c0565b8210156115f35760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c1a565b6103e86115ff60025490565b61160a90600a6130a1565b61161491906130c0565b82111561167e5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610c1a565b50600a81905560015b919050565b6008546001600160a01b031633146116a357600080fd5b60005b81811015611715576000601860008585858181106116c6576116c6612fe4565b90506020020160208101906116db9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061170d81613010565b9150506116a6565b507f5ce37d8a4b2dda4093fefa4102334f7bb1c80bc3b8504c399bf46521af97265c828260006040516112b09392919061302b565b6005546001600160a01b031633146117745760405162461bcd60e51b8152600401610c1a90612faf565b601a805460ff19811660ff90911615179055565b6005546001600160a01b031633146117b25760405162461bcd60e51b8152600401610c1a90612faf565b6010819055600f8190556019811115610e025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610c1a565b6005546001600160a01b031633146118375760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03811661189c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c1a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119225760405162461bcd60e51b8152600401610c1a90612faf565b601d91909155601c55565b60008061193a83856130e2565b90508381101561198c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c1a565b9392505050565b6001600160a01b0383166119f55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c1a565b6001600160a01b038216611a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c1a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ade5760405162461bcd60e51b8152600401610c1a906130fa565b6001600160a01b038216611b045760405162461bcd60e51b8152600401610c1a9061313f565b6001600160a01b03821660009081526018602052604090205460ff1680611b4357506001600160a01b03831660009081526018602052604090205460ff165b15611b7f5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610c1a565b80611b9557611b908383600061273b565b505050565b600c5460ff1615611ee9576005546001600160a01b03848116911614801590611bcc57506005546001600160a01b03838116911614155b8015611be057506001600160a01b03821615155b8015611bf757506001600160a01b03821661dead14155b8015611c0d5750600754600160a01b900460ff16155b15611ee957600c54610100900460ff16611ca3576001600160a01b038316600090815260208052604090205460ff1680611c5e57506001600160a01b038216600090815260208052604090205460ff165b611ca35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c1a565b6001600160a01b03831660009081526022602052604090205460ff168015611ce457506001600160a01b03821660009081526021602052604090205460ff16155b15611db857600954811115611d595760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c1a565b600b54611d6583610f9a565b611d6f90836130e2565b1115611db35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c1a565b611ee9565b6001600160a01b03821660009081526022602052604090205460ff168015611df957506001600160a01b03831660009081526021602052604090205460ff16155b15611e6f57600954811115611db35760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c1a565b6001600160a01b03821660009081526021602052604090205460ff16611ee957600b54611e9b83610f9a565b611ea590836130e2565b1115611ee95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c1a565b6000611ef430610f9a565b600a5490915081108015908190611f135750600c5462010000900460ff165b8015611f295750600754600160a01b900460ff16155b8015611f4e57506001600160a01b03851660009081526022602052604090205460ff16155b8015611f7257506001600160a01b038516600090815260208052604090205460ff16155b8015611f9657506001600160a01b038416600090815260208052604090205460ff16155b15611fc4576007805460ff60a01b1916600160a01b179055611fb6612844565b6007805460ff60a01b191690555b6007546001600160a01b038616600090815260208052604090205460ff600160a01b90920482161591168061201057506001600160a01b038516600090815260208052604090205460ff165b15612019575060005b60008060008315612697576001600160a01b03881660009081526022602052604090205460ff16801561204e57506000600f54115b15612271576001600160a01b03891660009081526014602052604090205460ff166121ca576001600160a01b0389166000908152601260205260409020546120ea5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742073656c6c206f6e20612077616c6c6574207468617420646964604482015268103737ba10313abc9760b91b6064820152608401610c1a565b8660646015546120f98c610f9a565b61210391906130a1565b61210d91906130c0565b108061213d57506017546001600160a01b038a166000908152601e6020526040902054429161213b916130e2565b115b80156121625750601c546001600160a01b038a16600090815260136020526040902054115b801561219d5750601d546001600160a01b038a1660009081526012602090815260408083205460139092529091205461219b91906130c0565b115b806121bf57506001600160a01b03891660009081526019602052604090205443145b156121ca5760165491505b6001600160a01b0389166000908152601e60205260409020429055600f5461220b90606490612205906121fe9086906130e2565b8a906128fd565b9061297c565b925081600f5461221b91906130e2565b60105461222890856130a1565b61223291906130c0565b6011600082825461224391906130e2565b9091555050600f546122569083906130e2565b61226083856130a1565b61226a91906130c0565b9050612660565b6001600160a01b03891660009081526022602052604090205460ff16801561229b57506000600d54115b15612660576122ba6064612205600d548a6128fd90919063ffffffff16565b9250600d54600e54846122cd91906130a1565b6122d791906130c0565b601160008282546122e891906130e2565b90915550506001600160a01b038089166000908152601960205260408082204390556007548151630240bc6b60e21b8152915192938493911691630902f1ac916004808301926060929190829003018186803b15801561234757600080fd5b505afa15801561235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237f9190613199565b506001600160701b031691506001600160701b03169150600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e457600080fd5b505afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c91906131de565b6001600160a01b0316600760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561247357600080fd5b505afa158015612487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ab91906131de565b6001600160a01b031614612548576006546040516385f8c25960e01b8152600481018b905260248101839052604481018490526001600160a01b03909116906385f8c2599060640160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254391906131fb565b6125d2565b6006546040516385f8c25960e01b8152600481018b905260248101849052604481018390526001600160a01b03909116906385f8c2599060640160206040518083038186803b15801561259a57600080fd5b505afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d291906131fb565b6001600160a01b038b16600090815260126020526040812080549091906125fa9084906130e2565b90915550506001600160a01b038a16600090815260136020526040812080548b92906126279084906130e2565b9091555050601a5460ff16801561264d5750601f54601b5461264991906130e2565b4311155b1561265d5761265d8a600161122e565b50505b821561268a5761267a89306126758487613214565b61273b565b801561268a5761268a89826129be565b6126948388613214565b96505b6126a289898961273b565b505050505050505050565b600081848411156126d15760405162461bcd60e51b8152600401610c1a9190612ca2565b5060006126de8486613214565b95945050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166127615760405162461bcd60e51b8152600401610c1a906130fa565b6001600160a01b0382166127875760405162461bcd60e51b8152600401610c1a9061313f565b6127c4816040518060600160405280602681526020016132bf602691396001600160a01b03861660009081526020819052604090205491906126ad565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546127f3908261192d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611aab565b600061284f30610f9a565b905060008115806128605750601154155b15612869575050565b600a546128779060146130a1565b82111561288f57600a5461288c9060146130a1565b91505b8161289981612ac9565b600060115560085460405147916001600160a01b031690829060006040518083038185875af1925050503d80600081146128ef576040519150601f19603f3d011682016040523d82523d6000602084013e6128f4565b606091505b50505050505050565b60008261290c57506000610b81565b600061291883856130a1565b90508261292585836130c0565b1461198c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c1a565b600061198c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c32565b6001600160a01b038216612a1e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c1a565b612a5b8160405180606001604052806022815260200161329d602291396001600160a01b03851660009081526020819052604090205491906126ad565b6001600160a01b038316600090815260208190526040902055600254612a819082612c60565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612afe57612afe612fe4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b5257600080fd5b505afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a91906131de565b81600181518110612b9d57612b9d612fe4565b6001600160a01b039283166020918202929092010152600654612bc39130911684611993565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bfc90859060009086903090429060040161322b565b600060405180830381600087803b158015612c1657600080fd5b505af1158015612c2a573d6000803e3d6000fd5b505050505050565b60008183612c535760405162461bcd60e51b8152600401610c1a9190612ca2565b5060006126de84866130c0565b600061198c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126ad565b600060208083528351808285015260005b81811015612ccf57858101830151858201604001528201612cb3565b81811115612ce1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e0257600080fd5b60008060408385031215612d1f57600080fd5b8235612d2a81612cf7565b946020939093013593505050565b600060208284031215612d4a57600080fd5b813561198c81612cf7565b600080600060608486031215612d6a57600080fd5b8335612d7581612cf7565b92506020840135612d8581612cf7565b929592945050506040919091013590565b60008083601f840112612da857600080fd5b50813567ffffffffffffffff811115612dc057600080fd5b6020830191508360208260051b8501011115612ddb57600080fd5b9250929050565b8015158114610e0257600080fd5b600080600060408486031215612e0557600080fd5b833567ffffffffffffffff811115612e1c57600080fd5b612e2886828701612d96565b9094509250506020840135612e3c81612de2565b809150509250925092565b600080600060608486031215612e5c57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e8557600080fd5b5035919050565b60008060408385031215612e9f57600080fd5b8235612eaa81612cf7565b91506020830135612eba81612de2565b809150509250929050565b600060208284031215612ed757600080fd5b813561198c81612de2565b60008060208385031215612ef557600080fd5b823567ffffffffffffffff811115612f0c57600080fd5b612f1885828601612d96565b90969095509350505050565b60008060408385031215612f3757600080fd5b8235612f4281612cf7565b91506020830135612eba81612cf7565b60008060408385031215612f6557600080fd5b50508035926020909101359150565b600181811c90821680612f8857607f821691505b60208210811415612fa957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561302457613024612ffa565b5060010190565b6040808252810183905260008460608301825b8681101561306e57823561305181612cf7565b6001600160a01b031682526020928301929091019060010161303e565b5080925050508215156020830152949350505050565b60006020828403121561309657600080fd5b815161198c81612de2565b60008160001904831182151516156130bb576130bb612ffa565b500290565b6000826130dd57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130f5576130f5612ffa565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80516001600160701b038116811461168757600080fd5b6000806000606084860312156131ae57600080fd5b6131b784613182565b92506131c560208501613182565b9150604084015163ffffffff81168114612e3c57600080fd5b6000602082840312156131f057600080fd5b815161198c81612cf7565b60006020828403121561320d57600080fd5b5051919050565b60008282101561322657613226612ffa565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561327b5784516001600160a01b031683529383019391830191600101613256565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122025202a31381a484d5e72daf646ebe4f939ce5a758b27866d6cd089807bb5760264736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106103855760003560e01c806383f2430d116101d1578063c540428d11610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610a58578063f8b45b0514610a78578063f9f92be414610a8e578063fca35f8b14610abe57600080fd5b8063dd62ed3e146109c7578063dfa95b4b14610a0d578063e2f4560514610a22578063eba4c33314610a3857600080fd5b8063d257b34f116100dc578063d257b34f1461095b578063d358f8911461097b578063d851ec1214610991578063d85ba063146109b157600080fd5b8063c540428d146108fe578063c8c8ebe414610918578063cd93aeed1461092e57600080fd5b80639a7a23d61161016f578063a9059cbb11610149578063a9059cbb1461086f578063b62496f51461088f578063bbc0c742146108bf578063c0246668146108de57600080fd5b80639a7a23d61461080f578063a457c2d71461082f578063a7c3dbdb1461084f57600080fd5b80638da5cb5b116101ab5780638da5cb5b1461079c5780638f6d8770146107ba578063924de9b7146107da57806395d89b41146107fa57600080fd5b806383f2430d1461075157806387b551b5146107675780638d396a271461077c57600080fd5b806342843d11116102b65780636ddd17131161025457806371fc46881161022357806371fc4688146106dc578063751039fc146106fc5780637571336a1461071157806382aa7c681461073157600080fd5b80636ddd1713146106675780636f7531c61461068757806370a08231146106a7578063715018a6146106c757600080fd5b80634a8727f0116102905780634a8727f0146105ee5780634fbee1931461060457806363bd1d4a1461063c5780636a486a8e1461065157600080fd5b806342843d111461059457806349bd5a5e146105b45780634a62bb65146105d457600080fd5b806323b872dd11610323578063343100ac116102fd578063343100ac1461050c5780633636b1441461052257806337f89a2614610552578063395093511461057457600080fd5b806323b872dd146104a3578063264d7797146104c3578063313ce567146104f057600080fd5b806310d5de531161035f57806310d5de531461041057806313ace281146104405780631694505e1461045657806318160ddd1461048e57600080fd5b806306fdde0314610391578063095ea7b3146103bc5780630cea6ec0146103ec57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610ade565b6040516103b39190612ca2565b60405180910390f35b3480156103c857600080fd5b506103dc6103d7366004612d0c565b610b70565b60405190151581526020016103b3565b3480156103f857600080fd5b5061040260155481565b6040519081526020016103b3565b34801561041c57600080fd5b506103dc61042b366004612d38565b60216020526000908152604090205460ff1681565b34801561044c57600080fd5b5061040260165481565b34801561046257600080fd5b50600654610476906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b34801561049a57600080fd5b50600254610402565b3480156104af57600080fd5b506103dc6104be366004612d55565b610b87565b3480156104cf57600080fd5b506104026104de366004612d38565b60136020526000908152604090205481565b3480156104fc57600080fd5b50604051601281526020016103b3565b34801561051857600080fd5b5061040260105481565b34801561052e57600080fd5b506103dc61053d366004612d38565b60146020526000908152604090205460ff1681565b34801561055e57600080fd5b5061057261056d366004612df0565b610bf0565b005b34801561058057600080fd5b506103dc61058f366004612d0c565b610cd5565b3480156105a057600080fd5b506105726105af366004612df0565b610d0b565b3480156105c057600080fd5b50600754610476906001600160a01b031681565b3480156105e057600080fd5b50600c546103dc9060ff1681565b3480156105fa57600080fd5b5061040260115481565b34801561061057600080fd5b506103dc61061f366004612d38565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561064857600080fd5b50610572610dac565b34801561065d57600080fd5b50610402600f5481565b34801561067357600080fd5b50600c546103dc9062010000900460ff1681565b34801561069357600080fd5b506105726106a2366004612e47565b610e05565b3480156106b357600080fd5b506104026106c2366004612d38565b610f9a565b3480156106d357600080fd5b50610572610fb5565b3480156106e857600080fd5b506105726106f7366004612e73565b611029565b34801561070857600080fd5b506103dc6110ae565b34801561071d57600080fd5b5061057261072c366004612e8c565b6110eb565b34801561073d57600080fd5b5061057261074c366004612e73565b611140565b34801561075d57600080fd5b5061040260175481565b34801561077357600080fd5b50610572611189565b34801561078857600080fd5b50610572610797366004612e8c565b61122e565b3480156107a857600080fd5b506005546001600160a01b0316610476565b3480156107c657600080fd5b506105726107d5366004612d38565b6112bc565b3480156107e657600080fd5b506105726107f5366004612ec5565b611343565b34801561080657600080fd5b506103a6611389565b34801561081b57600080fd5b5061057261082a366004612e8c565b611398565b34801561083b57600080fd5b506103dc61084a366004612d0c565b611454565b34801561085b57600080fd5b50600854610476906001600160a01b031681565b34801561087b57600080fd5b506103dc61088a366004612d0c565b6114a3565b34801561089b57600080fd5b506103dc6108aa366004612d38565b60226020526000908152604090205460ff1681565b3480156108cb57600080fd5b50600c546103dc90610100900460ff1681565b3480156108ea57600080fd5b506105726108f9366004612e8c565b6114b0565b34801561090a57600080fd5b50601a546103dc9060ff1681565b34801561092457600080fd5b5061040260095481565b34801561093a57600080fd5b50610402610949366004612d38565b60126020526000908152604090205481565b34801561096757600080fd5b506103dc610976366004612e73565b611537565b34801561098757600080fd5b50610402600e5481565b34801561099d57600080fd5b506105726109ac366004612ee2565b61168c565b3480156109bd57600080fd5b50610402600d5481565b3480156109d357600080fd5b506104026109e2366004612f24565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1957600080fd5b5061057261174a565b348015610a2e57600080fd5b50610402600a5481565b348015610a4457600080fd5b50610572610a53366004612e73565b611788565b348015610a6457600080fd5b50610572610a73366004612d38565b61180d565b348015610a8457600080fd5b50610402600b5481565b348015610a9a57600080fd5b506103dc610aa9366004612d38565b60186020526000908152604090205460ff1681565b348015610aca57600080fd5b50610572610ad9366004612f52565b6118f8565b606060038054610aed90612f74565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990612f74565b8015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b5050505050905090565b6000610b7d338484611993565b5060015b92915050565b6000610b94848484611ab8565b610be68433610be1856040518060600160405280602881526020016132e5602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906126ad565b611993565b5060019392505050565b6005546001600160a01b03163314610c235760405162461bcd60e51b8152600401610c1a90612faf565b60405180910390fd5b60005b82811015610c94578160186000868685818110610c4557610c45612fe4565b9050602002016020810190610c5a9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c8c81613010565b915050610c26565b507f5ce37d8a4b2dda4093fefa4102334f7bb1c80bc3b8504c399bf46521af97265c838383604051610cc89392919061302b565b60405180910390a1505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b7d918590610be1908661192d565b6005546001600160a01b03163314610d355760405162461bcd60e51b8152600401610c1a90612faf565b60005b82811015610da6578160146000868685818110610d5757610d57612fe4565b9050602002016020810190610d6c9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d9e81613010565b915050610d38565b50505050565b6005546001600160a01b03163314610dd65760405162461bcd60e51b8152600401610c1a90612faf565b60405133904780156108fc02916000818181858888f19350505050158015610e02573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610e2f5760405162461bcd60e51b8152600401610c1a90612faf565b601e831115610e965760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642074656c65706f7274206665652c2073686f756c642062652060448201526c3632b9b9903a3430b71019981760991b6064820152608401610c1a565b601e821015610f045760405162461bcd60e51b815260206004820152603460248201527f496e76616c69642077616c6c65742064756d702070657263656e742c2073686f6044820152733ab6321031329036b7b932903a3430b71019981760611b6064820152608401610c1a565b601e8110158015610f175750612a308111155b610f895760405162461bcd60e51b815260206004820152603e60248201527f496e76616c69642073656c6c20696e74657276616c2c2073686f756c6420626560448201527f206265747765656e20333020616e64203130383030207365636f6e64732e00006064820152608401610c1a565b601591909155601691909155601755565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610fdf5760405162461bcd60e51b8152600401610c1a90612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110535760405162461bcd60e51b8152600401610c1a90612faf565b600e819055600d8190556014811115610e025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610c1a565b6005546000906001600160a01b031633146110db5760405162461bcd60e51b8152600401610c1a90612faf565b50600c805460ff19169055600190565b6005546001600160a01b031633146111155760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610c1a90612faf565b600c8054601f9290925562ffff00199091166201010017905543601b55565b6008546001600160a01b031633146111a057600080fd5b3063a9059cbb336111b083610f9a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190613084565b6005546001600160a01b031633146112585760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f7eea0c199412a4c7847e9ff554491a5c6bd663046ea523fa709739847752023491015b60405180910390a15050565b6005546001600160a01b031633146112e65760405162461bcd60e51b8152600401610c1a90612faf565b6008546040516001600160a01b03918216918316907f3d3cc3351cf0ac5f943d4f176ea772b9a81c05d54d6000575dee681db9b1434090600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461136d5760405162461bcd60e51b8152600401610c1a90612faf565b600c8054911515620100000262ff000019909216919091179055565b606060048054610aed90612f74565b6005546001600160a01b031633146113c25760405162461bcd60e51b8152600401610c1a90612faf565b6007546001600160a01b03838116911614156114465760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c1a565b61145082826126e7565b5050565b6000610b7d3384610be18560405180606001604052806025815260200161330d602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906126ad565b6000610b7d338484611ab8565b6005546001600160a01b031633146114da5760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146115645760405162461bcd60e51b8152600401610c1a90612faf565b620186a061157160025490565b61157c9060016130a1565b61158691906130c0565b8210156115f35760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c1a565b6103e86115ff60025490565b61160a90600a6130a1565b61161491906130c0565b82111561167e5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101892903a37ba30b61039bab838363c9760711b6064820152608401610c1a565b50600a81905560015b919050565b6008546001600160a01b031633146116a357600080fd5b60005b81811015611715576000601860008585858181106116c6576116c6612fe4565b90506020020160208101906116db9190612d38565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061170d81613010565b9150506116a6565b507f5ce37d8a4b2dda4093fefa4102334f7bb1c80bc3b8504c399bf46521af97265c828260006040516112b09392919061302b565b6005546001600160a01b031633146117745760405162461bcd60e51b8152600401610c1a90612faf565b601a805460ff19811660ff90911615179055565b6005546001600160a01b031633146117b25760405162461bcd60e51b8152600401610c1a90612faf565b6010819055600f8190556019811115610e025760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610c1a565b6005546001600160a01b031633146118375760405162461bcd60e51b8152600401610c1a90612faf565b6001600160a01b03811661189c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c1a565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119225760405162461bcd60e51b8152600401610c1a90612faf565b601d91909155601c55565b60008061193a83856130e2565b90508381101561198c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c1a565b9392505050565b6001600160a01b0383166119f55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c1a565b6001600160a01b038216611a565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c1a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ade5760405162461bcd60e51b8152600401610c1a906130fa565b6001600160a01b038216611b045760405162461bcd60e51b8152600401610c1a9061313f565b6001600160a01b03821660009081526018602052604090205460ff1680611b4357506001600160a01b03831660009081526018602052604090205460ff165b15611b7f5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610c1a565b80611b9557611b908383600061273b565b505050565b600c5460ff1615611ee9576005546001600160a01b03848116911614801590611bcc57506005546001600160a01b03838116911614155b8015611be057506001600160a01b03821615155b8015611bf757506001600160a01b03821661dead14155b8015611c0d5750600754600160a01b900460ff16155b15611ee957600c54610100900460ff16611ca3576001600160a01b038316600090815260208052604090205460ff1680611c5e57506001600160a01b038216600090815260208052604090205460ff165b611ca35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c1a565b6001600160a01b03831660009081526022602052604090205460ff168015611ce457506001600160a01b03821660009081526021602052604090205460ff16155b15611db857600954811115611d595760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c1a565b600b54611d6583610f9a565b611d6f90836130e2565b1115611db35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c1a565b611ee9565b6001600160a01b03821660009081526022602052604090205460ff168015611df957506001600160a01b03831660009081526021602052604090205460ff16155b15611e6f57600954811115611db35760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c1a565b6001600160a01b03821660009081526021602052604090205460ff16611ee957600b54611e9b83610f9a565b611ea590836130e2565b1115611ee95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c1a565b6000611ef430610f9a565b600a5490915081108015908190611f135750600c5462010000900460ff165b8015611f295750600754600160a01b900460ff16155b8015611f4e57506001600160a01b03851660009081526022602052604090205460ff16155b8015611f7257506001600160a01b038516600090815260208052604090205460ff16155b8015611f9657506001600160a01b038416600090815260208052604090205460ff16155b15611fc4576007805460ff60a01b1916600160a01b179055611fb6612844565b6007805460ff60a01b191690555b6007546001600160a01b038616600090815260208052604090205460ff600160a01b90920482161591168061201057506001600160a01b038516600090815260208052604090205460ff165b15612019575060005b60008060008315612697576001600160a01b03881660009081526022602052604090205460ff16801561204e57506000600f54115b15612271576001600160a01b03891660009081526014602052604090205460ff166121ca576001600160a01b0389166000908152601260205260409020546120ea5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742073656c6c206f6e20612077616c6c6574207468617420646964604482015268103737ba10313abc9760b91b6064820152608401610c1a565b8660646015546120f98c610f9a565b61210391906130a1565b61210d91906130c0565b108061213d57506017546001600160a01b038a166000908152601e6020526040902054429161213b916130e2565b115b80156121625750601c546001600160a01b038a16600090815260136020526040902054115b801561219d5750601d546001600160a01b038a1660009081526012602090815260408083205460139092529091205461219b91906130c0565b115b806121bf57506001600160a01b03891660009081526019602052604090205443145b156121ca5760165491505b6001600160a01b0389166000908152601e60205260409020429055600f5461220b90606490612205906121fe9086906130e2565b8a906128fd565b9061297c565b925081600f5461221b91906130e2565b60105461222890856130a1565b61223291906130c0565b6011600082825461224391906130e2565b9091555050600f546122569083906130e2565b61226083856130a1565b61226a91906130c0565b9050612660565b6001600160a01b03891660009081526022602052604090205460ff16801561229b57506000600d54115b15612660576122ba6064612205600d548a6128fd90919063ffffffff16565b9250600d54600e54846122cd91906130a1565b6122d791906130c0565b601160008282546122e891906130e2565b90915550506001600160a01b038089166000908152601960205260408082204390556007548151630240bc6b60e21b8152915192938493911691630902f1ac916004808301926060929190829003018186803b15801561234757600080fd5b505afa15801561235b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237f9190613199565b506001600160701b031691506001600160701b03169150600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e457600080fd5b505afa1580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c91906131de565b6001600160a01b0316600760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561247357600080fd5b505afa158015612487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ab91906131de565b6001600160a01b031614612548576006546040516385f8c25960e01b8152600481018b905260248101839052604481018490526001600160a01b03909116906385f8c2599060640160206040518083038186803b15801561250b57600080fd5b505afa15801561251f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254391906131fb565b6125d2565b6006546040516385f8c25960e01b8152600481018b905260248101849052604481018390526001600160a01b03909116906385f8c2599060640160206040518083038186803b15801561259a57600080fd5b505afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d291906131fb565b6001600160a01b038b16600090815260126020526040812080549091906125fa9084906130e2565b90915550506001600160a01b038a16600090815260136020526040812080548b92906126279084906130e2565b9091555050601a5460ff16801561264d5750601f54601b5461264991906130e2565b4311155b1561265d5761265d8a600161122e565b50505b821561268a5761267a89306126758487613214565b61273b565b801561268a5761268a89826129be565b6126948388613214565b96505b6126a289898961273b565b505050505050505050565b600081848411156126d15760405162461bcd60e51b8152600401610c1a9190612ca2565b5060006126de8486613214565b95945050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166127615760405162461bcd60e51b8152600401610c1a906130fa565b6001600160a01b0382166127875760405162461bcd60e51b8152600401610c1a9061313f565b6127c4816040518060600160405280602681526020016132bf602691396001600160a01b03861660009081526020819052604090205491906126ad565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546127f3908261192d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611aab565b600061284f30610f9a565b905060008115806128605750601154155b15612869575050565b600a546128779060146130a1565b82111561288f57600a5461288c9060146130a1565b91505b8161289981612ac9565b600060115560085460405147916001600160a01b031690829060006040518083038185875af1925050503d80600081146128ef576040519150601f19603f3d011682016040523d82523d6000602084013e6128f4565b606091505b50505050505050565b60008261290c57506000610b81565b600061291883856130a1565b90508261292585836130c0565b1461198c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c1a565b600061198c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c32565b6001600160a01b038216612a1e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c1a565b612a5b8160405180606001604052806022815260200161329d602291396001600160a01b03851660009081526020819052604090205491906126ad565b6001600160a01b038316600090815260208190526040902055600254612a819082612c60565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612afe57612afe612fe4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b5257600080fd5b505afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a91906131de565b81600181518110612b9d57612b9d612fe4565b6001600160a01b039283166020918202929092010152600654612bc39130911684611993565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bfc90859060009086903090429060040161322b565b600060405180830381600087803b158015612c1657600080fd5b505af1158015612c2a573d6000803e3d6000fd5b505050505050565b60008183612c535760405162461bcd60e51b8152600401610c1a9190612ca2565b5060006126de84866130c0565b600061198c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126ad565b600060208083528351808285015260005b81811015612ccf57858101830151858201604001528201612cb3565b81811115612ce1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e0257600080fd5b60008060408385031215612d1f57600080fd5b8235612d2a81612cf7565b946020939093013593505050565b600060208284031215612d4a57600080fd5b813561198c81612cf7565b600080600060608486031215612d6a57600080fd5b8335612d7581612cf7565b92506020840135612d8581612cf7565b929592945050506040919091013590565b60008083601f840112612da857600080fd5b50813567ffffffffffffffff811115612dc057600080fd5b6020830191508360208260051b8501011115612ddb57600080fd5b9250929050565b8015158114610e0257600080fd5b600080600060408486031215612e0557600080fd5b833567ffffffffffffffff811115612e1c57600080fd5b612e2886828701612d96565b9094509250506020840135612e3c81612de2565b809150509250925092565b600080600060608486031215612e5c57600080fd5b505081359360208301359350604090920135919050565b600060208284031215612e8557600080fd5b5035919050565b60008060408385031215612e9f57600080fd5b8235612eaa81612cf7565b91506020830135612eba81612de2565b809150509250929050565b600060208284031215612ed757600080fd5b813561198c81612de2565b60008060208385031215612ef557600080fd5b823567ffffffffffffffff811115612f0c57600080fd5b612f1885828601612d96565b90969095509350505050565b60008060408385031215612f3757600080fd5b8235612f4281612cf7565b91506020830135612eba81612cf7565b60008060408385031215612f6557600080fd5b50508035926020909101359150565b600181811c90821680612f8857607f821691505b60208210811415612fa957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561302457613024612ffa565b5060010190565b6040808252810183905260008460608301825b8681101561306e57823561305181612cf7565b6001600160a01b031682526020928301929091019060010161303e565b5080925050508215156020830152949350505050565b60006020828403121561309657600080fd5b815161198c81612de2565b60008160001904831182151516156130bb576130bb612ffa565b500290565b6000826130dd57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156130f5576130f5612ffa565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80516001600160701b038116811461168757600080fd5b6000806000606084860312156131ae57600080fd5b6131b784613182565b92506131c560208501613182565b9150604084015163ffffffff81168114612e3c57600080fd5b6000602082840312156131f057600080fd5b815161198c81612cf7565b60006020828403121561320d57600080fd5b5051919050565b60008282101561322657613226612ffa565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561327b5784516001600160a01b031683529383019391830191600101613256565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122025202a31381a484d5e72daf646ebe4f939ce5a758b27866d6cd089807bb5760264736f6c63430008090033

Deployed Bytecode Sourcemap

30442:15642:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10562:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12729:169;;;;;;;;;;-1:-1:-1;12729:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;12729:169:0;1072:187:1;31281:32:0;;;;;;;;;;;;;;;;;;;1410:25:1;;;1398:2;1383:18;31281:32:0;1264:177:1;31857:64:0;;;;;;;;;;-1:-1:-1;31857:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31320:26;;;;;;;;;;;;;;;;30521:41;;;;;;;;;;-1:-1:-1;30521:41:0;;;;-1:-1:-1;;;;;30521:41:0;;;;;;-1:-1:-1;;;;;1889:32:1;;;1871:51;;1859:2;1844:18;30521:41:0;1698:230:1;11682:108:0;;;;;;;;;;-1:-1:-1;11770:12:0;;11682:108;;13380:355;;;;;;;;;;-1:-1:-1;13380:355:0;;;;;:::i;:::-;;:::i;31170:47::-;;;;;;;;;;-1:-1:-1;31170:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;11524:93;;;;;;;;;;-1:-1:-1;11524:93:0;;11607:2;2536:36:1;;2524:2;2509:18;11524:93:0;2394:184:1;31030:33:0;;;;;;;;;;;;;;;;31224:48;;;;;;;;;;-1:-1:-1;31224:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;44675:220;;;;;;;;;;-1:-1:-1;44675:220:0;;;;;:::i;:::-;;:::i;:::-;;14144:218;;;;;;;;;;-1:-1:-1;14144:218:0;;;;;:::i;:::-;;:::i;45350:194::-;;;;;;;;;;-1:-1:-1;45350:194:0;;;;;:::i;:::-;;:::i;30569:28::-;;;;;;;;;;-1:-1:-1;30569:28:0;;;;-1:-1:-1;;;;;30569:28:0;;;30796:33;;;;;;;;;;-1:-1:-1;30796:33:0;;;;;;;;31076:35;;;;;;;;;;;;;;;;38086:125;;;;;;;;;;-1:-1:-1;38086:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;38175:28:0;38151:4;38175:28;;;:19;:28;;;;;;;;;38086:125;45556:105;;;;;;;;;;;;;:::i;30995:28::-;;;;;;;;;;;;;;;;30876:31;;;;;;;;;;-1:-1:-1;30876:31:0;;;;;;;;;;;37499:573;;;;;;;;;;-1:-1:-1;37499:573:0;;;;;:::i;:::-;;:::i;11853:127::-;;;;;;;;;;-1:-1:-1;11853:127:0;;;;;:::i;:::-;;:::i;25027:148::-;;;;;;;;;;;;;:::i;36165:235::-;;;;;;;;;;-1:-1:-1;36165:235:0;;;;;:::i;:::-;;:::i;35222:120::-;;;;;;;;;;;;;:::i;35808:144::-;;;;;;;;;;-1:-1:-1;35808:144:0;;;;;:::i;:::-;;:::i;34964:202::-;;;;;;;;;;-1:-1:-1;34964:202:0;;;;;:::i;:::-;;:::i;31353:27::-;;;;;;;;;;;;;;;;45669:169;;;;;;;;;;;;;:::i;44903:142::-;;;;;;;;;;-1:-1:-1;44903:142:0;;;;;:::i;:::-;;:::i;24385:79::-;;;;;;;;;;-1:-1:-1;24450:6:0;;-1:-1:-1;;;;;24450:6:0;24385:79;;37302:189;;;;;;;;;;-1:-1:-1;37302:189:0;;;;;:::i;:::-;;:::i;36052:101::-;;;;;;;;;;-1:-1:-1;36052:101:0;;;;;:::i;:::-;;:::i;10781:104::-;;;;;;;;;;;;;:::i;36850:244::-;;;;;;;;;;-1:-1:-1;36850:244:0;;;;;:::i;:::-;;:::i;14865:269::-;;;;;;;;;;-1:-1:-1;14865:269:0;;;;;:::i;:::-;;:::i;30636:32::-;;;;;;;;;;-1:-1:-1;30636:32:0;;;;-1:-1:-1;;;;;30636:32:0;;;12193:175;;;;;;;;;;-1:-1:-1;12193:175:0;;;;;:::i;:::-;;:::i;32079:58::-;;;;;;;;;;-1:-1:-1;32079:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30836:33;;;;;;;;;;-1:-1:-1;30836:33:0;;;;;;;;;;;36660:182;;;;;;;;;;-1:-1:-1;36660:182:0;;;;;:::i;:::-;;:::i;31489:25::-;;;;;;;;;;-1:-1:-1;31489:25:0;;;;;;;;30681:35;;;;;;;;;;;;;;;;31120:43;;;;;;;;;;-1:-1:-1;31120:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;35416:380;;;;;;;;;;-1:-1:-1;35416:380:0;;;;;:::i;:::-;;:::i;30950:32::-;;;;;;;;;;;;;;;;45053:289;;;;;;;;;;-1:-1:-1;45053:289:0;;;;;:::i;:::-;;:::i;30916:27::-;;;;;;;;;;;;;;;;12431:151;;;;;;;;;;-1:-1:-1;12431:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;12547:18:0;;;12520:7;12547:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12431:151;45846:76;;;;;;;;;;;;;:::i;30723:33::-;;;;;;;;;;;;;;;;36412:240;;;;;;;;;;-1:-1:-1;36412:240:0;;;;;:::i;:::-;;:::i;25330:244::-;;;;;;;;;;-1:-1:-1;25330:244:0;;;;;:::i;:::-;;:::i;30763:24::-;;;;;;;;;;;;;;;;31389:41;;;;;;;;;;-1:-1:-1;31389:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;45930:149;;;;;;;;;;-1:-1:-1;45930:149:0;;;;;:::i;:::-;;:::i;10562:100::-;10616:13;10649:5;10642:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10562:100;:::o;12729:169::-;12812:4;12829:39;3280:10;12852:7;12861:6;12829:8;:39::i;:::-;-1:-1:-1;12886:4:0;12729:169;;;;;:::o;13380:355::-;13520:4;13537:36;13547:6;13555:9;13566:6;13537:9;:36::i;:::-;13584:121;13593:6;3280:10;13615:89;13653:6;13615:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13615:19:0;;;;;;:11;:19;;;;;;;;3280:10;13615:33;;;;;;;;;;:37;:89::i;:::-;13584:8;:121::i;:::-;-1:-1:-1;13723:4:0;13380:355;;;;;:::o;44675:220::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;;;;;;;;;44766:9:::1;44762:87;44777:15:::0;;::::1;44762:87;;;44835:2;44814:9;:18;44824:4;;44829:1;44824:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44814:18:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;44814:18:0;:23;;-1:-1:-1;;44814:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44794:3;::::1;::::0;::::1;:::i;:::-;;;;44762:87;;;;44864:23;44878:4;;44884:2;44864:23;;;;;;;;:::i;:::-;;;;;;;;44675:220:::0;;;:::o;14144:218::-;3280:10;14232:4;14281:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14281:34:0;;;;;;;;;;14232:4;;14249:83;;14272:7;;14281:50;;14320:10;14281:38;:50::i;45350:194::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;45446:9:::1;45442:95;45457:16:::0;;::::1;45442:95;;;45524:1;45495:16;:26;45512:5;;45518:1;45512:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;45495:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;45495:26:0;:30;;-1:-1:-1;;45495:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;45475:3;::::1;::::0;::::1;:::i;:::-;;;;45442:95;;;;45350:194:::0;;;:::o;45556:105::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;45602:51:::1;::::0;45610:10:::1;::::0;45631:21:::1;45602:51:::0;::::1;;;::::0;::::1;::::0;;;45631:21;45610:10;45602:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;45556:105::o:0;37499:573::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;37656:2:::1;37640:12;:18;;37632:76;;;::::0;-1:-1:-1;;;37632:76:0;;8235:2:1;37632:76:0::1;::::0;::::1;8217:21:1::0;8274:2;8254:18;;;8247:30;8313:34;8293:18;;;8286:62;-1:-1:-1;;;8364:18:1;;;8357:43;8417:19;;37632:76:0::1;8033:409:1::0;37632:76:0::1;37749:2;37727:18;:24;;37719:89;;;::::0;-1:-1:-1;;;37719:89:0;;8649:2:1;37719:89:0::1;::::0;::::1;8631:21:1::0;8688:2;8668:18;;;8661:30;8727:34;8707:18;;;8700:62;-1:-1:-1;;;8778:18:1;;;8771:50;8838:19;;37719:89:0::1;8447:416:1::0;37719:89:0::1;37844:2;37827:13;:19;;:45;;;;;37867:5;37850:13;:22;;37827:45;37819:120;;;::::0;-1:-1:-1;;;37819:120:0;;9070:2:1;37819:120:0::1;::::0;::::1;9052:21:1::0;9109:2;9089:18;;;9082:30;9148:34;9128:18;;;9121:62;9219:32;9199:18;;;9192:60;9269:19;;37819:120:0::1;8868:426:1::0;37819:120:0::1;37950:17;:38:::0;;;;37999:11:::1;:26:::0;;;;38036:12:::1;:28:::0;37499:573::o;11853:127::-;-1:-1:-1;;;;;11954:18:0;11927:7;11954:18;;;;;;;;;;;;11853:127::o;25027:148::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;25118:6:::1;::::0;25097:40:::1;::::0;25134:1:::1;::::0;-1:-1:-1;;;;;25118:6:0::1;::::0;25097:40:::1;::::0;25134:1;;25097:40:::1;25148:6;:19:::0;;-1:-1:-1;;;;;;25148:19:0::1;::::0;;25027:148::o;36165:235::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;36243:17:::1;:35:::0;;;36289:12:::1;:32:::0;;;36356:2:::1;36340:18:::0;::::1;;36332:60;;;::::0;-1:-1:-1;;;36332:60:0;;9501:2:1;36332:60:0::1;::::0;::::1;9483:21:1::0;9540:2;9520:18;;;9513:30;9579:31;9559:18;;;9552:59;9628:18;;36332:60:0::1;9299:353:1::0;35222:120:0;24597:6;;35274:4;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;-1:-1:-1;35290:14:0::1;:22:::0;;-1:-1:-1;;35290:22:0::1;::::0;;;35222:120;:::o;35808:144::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35898:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;35898:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35808:144::o;34964:202::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;35038:13:::1;:20:::0;;35069:10:::1;:24:::0;;;;-1:-1:-1;;35104:18:0;;;;;;;35146:12:::1;35133:10;:25:::0;34964:202::o;45669:169::-;45733:17;;-1:-1:-1;;;;;45733:17:0;45719:10;:31;45710:41;;;;;;45777:4;45762:30;45793:10;45805:24;45777:4;45805:9;:24::i;:::-;45762:68;;-1:-1:-1;;;;;;45762:68:0;;;;;;;-1:-1:-1;;;;;9849:32:1;;;45762:68:0;;;9831:51:1;9898:18;;;9891:34;9804:18;;45762:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;44903:142::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44978:14:0;::::1;;::::0;;;:9:::1;:14;::::0;;;;;;;;:19;;-1:-1:-1;;44978:19:0::1;::::0;::::1;;::::0;;::::1;::::0;;;45013:24;;10354:51:1;;;10421:18;;;10414:50;45013:24:0::1;::::0;10327:18:1;45013:24:0::1;;;;;;;;44903:142:::0;;:::o;37302:189::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;37425:17:::1;::::0;37389:54:::1;::::0;-1:-1:-1;;;;;37425:17:0;;::::1;::::0;37389:54;::::1;::::0;::::1;::::0;37425:17:::1;::::0;37389:54:::1;37454:17;:29:::0;;-1:-1:-1;;;;;;37454:29:0::1;-1:-1:-1::0;;;;;37454:29:0;;;::::1;::::0;;;::::1;::::0;;37302:189::o;36052:101::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;36124:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;36124:21:0;;::::1;::::0;;;::::1;::::0;;36052:101::o;10781:104::-;10837:13;10870:7;10863:14;;;;;:::i;36850:244::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;36957:13:::1;::::0;-1:-1:-1;;;;;36949:21:0;;::::1;36957:13:::0;::::1;36949:21;;36941:91;;;::::0;-1:-1:-1;;;36941:91:0;;10677:2:1;36941:91:0::1;::::0;::::1;10659:21:1::0;10716:2;10696:18;;;10689:30;10755:34;10735:18;;;10728:62;10826:27;10806:18;;;10799:55;10871:19;;36941:91:0::1;10475:421:1::0;36941:91:0::1;37045:41;37074:4;37080:5;37045:28;:41::i;:::-;36850:244:::0;;:::o;14865:269::-;14958:4;14975:129;3280:10;14998:7;15007:96;15046:15;15007:96;;;;;;;;;;;;;;;;;3280:10;15007:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15007:34:0;;;;;;;;;;;;:38;:96::i;12193:175::-;12279:4;12296:42;3280:10;12320:9;12331:6;12296:9;:42::i;36660:182::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36745:28:0;::::1;;::::0;;;:19:::1;:28:::0;;;;;;;;:39;;-1:-1:-1;;36745:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36800:34;;1212:41:1;;;36800:34:0::1;::::0;1185:18:1;36800:34:0::1;;;;;;;36660:182:::0;;:::o;35416:380::-;24597:6;;35497:4;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;35553:6:::1;35533:13;11770:12:::0;;;11682:108;35533:13:::1;:17;::::0;35549:1:::1;35533:17;:::i;:::-;:26;;;;:::i;:::-;35520:9;:39;;35512:105;;;::::0;-1:-1:-1;;;35512:105:0;;11498:2:1;35512:105:0::1;::::0;::::1;11480:21:1::0;11537:2;11517:18;;;11510:30;11576:34;11556:18;;;11549:62;-1:-1:-1;;;11627:18:1;;;11620:51;11688:19;;35512:105:0::1;11296:417:1::0;35512:105:0::1;35669:4;35648:13;11770:12:::0;;;11682:108;35648:13:::1;:18;::::0;35664:2:::1;35648:18;:::i;:::-;:25;;;;:::i;:::-;35635:9;:38;;35627:101;;;::::0;-1:-1:-1;;;35627:101:0;;11920:2:1;35627:101:0::1;::::0;::::1;11902:21:1::0;11959:2;11939:18;;;11932:30;11998:34;11978:18;;;11971:62;-1:-1:-1;;;12049:18:1;;;12042:48;12107:19;;35627:101:0::1;11718:414:1::0;35627:101:0::1;-1:-1:-1::0;35738:18:0::1;:30:::0;;;35785:4:::1;24667:1;35416:380:::0;;;:::o;45053:289::-;45146:17;;-1:-1:-1;;;;;45146:17:0;45132:10;:31;45123:41;;;;;;45207:9;45203:90;45218:15;;;45203:90;;;45276:5;45255:9;:18;45265:4;;45270:1;45265:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45255:18:0;;;;;;;;;;;;-1:-1:-1;45255:18:0;:26;;-1:-1:-1;;45255:26:0;;;;;;;;;;45235:3;;;;:::i;:::-;;;;45203:90;;;;45308:26;45322:4;;45328:5;45308:26;;;;;;;;:::i;45846:76::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;45908:6:::1;::::0;;-1:-1:-1;;45898:16:0;::::1;45908:6;::::0;;::::1;45907:7;45898:16;::::0;;45846:76::o;36412:240::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;36491:18:::1;:36:::0;;;36538:13:::1;:34:::0;;;36608:2:::1;36591:19:::0;::::1;;36583:61;;;::::0;-1:-1:-1;;;36583:61:0;;12339:2:1;36583:61:0::1;::::0;::::1;12321:21:1::0;12378:2;12358:18;;;12351:30;12417:31;12397:18;;;12390:59;12466:18;;36583:61:0::1;12137:353:1::0;25330:244:0;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25419:22:0;::::1;25411:73;;;::::0;-1:-1:-1;;;25411:73:0;;12697:2:1;25411:73:0::1;::::0;::::1;12679:21:1::0;12736:2;12716:18;;;12709:30;12775:34;12755:18;;;12748:62;-1:-1:-1;;;12826:18:1;;;12819:36;12872:19;;25411:73:0::1;12495:402:1::0;25411:73:0::1;25521:6;::::0;25500:38:::1;::::0;-1:-1:-1;;;;;25500:38:0;;::::1;::::0;25521:6:::1;::::0;25500:38:::1;::::0;25521:6:::1;::::0;25500:38:::1;25549:6;:17:::0;;-1:-1:-1;;;;;;25549:17:0::1;-1:-1:-1::0;;;;;25549:17:0;;;::::1;::::0;;;::::1;::::0;;25330:244::o;45930:149::-;24597:6;;-1:-1:-1;;;;;24597:6:0;3280:10;24597:22;24589:67;;;;-1:-1:-1;;;24589:67:0;;;;;;;:::i;:::-;46015:13:::1;:21:::0;;;;46047:10:::1;:24:::0;45930:149::o;19429:181::-;19487:7;;19519:5;19523:1;19519;:5;:::i;:::-;19507:17;;19548:1;19543;:6;;19535:46;;;;-1:-1:-1;;;19535:46:0;;13237:2:1;19535:46:0;;;13219:21:1;13276:2;13256:18;;;13249:30;13315:29;13295:18;;;13288:57;13362:18;;19535:46:0;13035:351:1;19535:46:0;19601:1;19429:181;-1:-1:-1;;;19429:181:0:o;18051:380::-;-1:-1:-1;;;;;18187:19:0;;18179:68;;;;-1:-1:-1;;;18179:68:0;;13593:2:1;18179:68:0;;;13575:21:1;13632:2;13612:18;;;13605:30;13671:34;13651:18;;;13644:62;-1:-1:-1;;;13722:18:1;;;13715:34;13766:19;;18179:68:0;13391:400:1;18179:68:0;-1:-1:-1;;;;;18266:21:0;;18258:68;;;;-1:-1:-1;;;18258:68:0;;13998:2:1;18258:68:0;;;13980:21:1;14037:2;14017:18;;;14010:30;14076:34;14056:18;;;14049:62;-1:-1:-1;;;14127:18:1;;;14120:32;14169:19;;18258:68:0;13796:398:1;18258:68:0;-1:-1:-1;;;;;18339:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18391:32;;1410:25:1;;;18391:32:0;;1383:18:1;18391:32:0;;;;;;;;18051:380;;;:::o;38223:5143::-;-1:-1:-1;;;;;38355:18:0;;38347:68;;;;-1:-1:-1;;;38347:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38434:16:0;;38426:64;;;;-1:-1:-1;;;38426:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38511:13:0;;;;;;:9;:13;;;;;;;;;:32;;-1:-1:-1;;;;;;38528:15:0;;;;;;:9;:15;;;;;;;;38511:32;38509:35;38501:60;;;;-1:-1:-1;;;38501:60:0;;15211:2:1;38501:60:0;;;15193:21:1;15250:2;15230:18;;;15223:30;-1:-1:-1;;;15269:18:1;;;15262:42;15321:18;;38501:60:0;15009:336:1;38501:60:0;38576:11;38573:92;;38604:28;38620:4;38626:2;38630:1;38604:15;:28::i;:::-;38223:5143;;;:::o;38573:92::-;38688:14;;;;38685:1264;;;24450:6;;-1:-1:-1;;;;;38740:15:0;;;24450:6;;38740:15;;;;:49;;-1:-1:-1;24450:6:0;;-1:-1:-1;;;;;38776:13:0;;;24450:6;;38776:13;;38740:49;:86;;;;-1:-1:-1;;;;;;38810:16:0;;;;38740:86;:128;;;;-1:-1:-1;;;;;;38847:21:0;;38861:6;38847:21;;38740:128;:158;;;;-1:-1:-1;38890:8:0;;-1:-1:-1;;;38890:8:0;;;;38889:9;38740:158;38718:1220;;;38936:13;;;;;;;38932:148;;-1:-1:-1;;;;;38981:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;39010:23:0;;;;;;:19;:23;;;;;;;;38981:52;38973:87;;;;-1:-1:-1;;;38973:87:0;;15552:2:1;38973:87:0;;;15534:21:1;15591:2;15571:18;;;15564:30;-1:-1:-1;;;15610:18:1;;;15603:52;15672:18;;38973:87:0;15350:346:1;38973:87:0;-1:-1:-1;;;;;39149:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;39185:35:0;;;;;;:31;:35;;;;;;;;39184:36;39149:71;39145:778;;;39267:20;;39257:6;:30;;39249:96;;;;-1:-1:-1;;;39249:96:0;;15903:2:1;39249:96:0;;;15885:21:1;15942:2;15922:18;;;15915:30;15981:34;15961:18;;;15954:62;-1:-1:-1;;;16032:18:1;;;16025:51;16093:19;;39249:96:0;15701:417:1;39249:96:0;39406:9;;39389:13;39399:2;39389:9;:13::i;:::-;39380:22;;:6;:22;:::i;:::-;:35;;39372:67;;;;-1:-1:-1;;;39372:67:0;;16325:2:1;39372:67:0;;;16307:21:1;16364:2;16344:18;;;16337:30;-1:-1:-1;;;16383:18:1;;;16376:49;16442:18;;39372:67:0;16123:343:1;39372:67:0;39145:778;;;-1:-1:-1;;;;;39533:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;39567:37:0;;;;;;:31;:37;;;;;;;;39566:38;39533:71;39529:394;;;39651:20;;39641:6;:30;;39633:97;;;;-1:-1:-1;;;39633:97:0;;16673:2:1;39633:97:0;;;16655:21:1;16712:2;16692:18;;;16685:30;16751:34;16731:18;;;16724:62;-1:-1:-1;;;16802:18:1;;;16795:52;16864:19;;39633:97:0;16471:418:1;39529:394:0;-1:-1:-1;;;;;39777:35:0;;;;;;:31;:35;;;;;;;;39773:150;;39870:9;;39853:13;39863:2;39853:9;:13::i;:::-;39844:22;;:6;:22;:::i;:::-;:35;;39836:67;;;;-1:-1:-1;;;39836:67:0;;16325:2:1;39836:67:0;;;16307:21:1;16364:2;16344:18;;;16337:30;-1:-1:-1;;;16383:18:1;;;16376:49;16442:18;;39836:67:0;16123:343:1;39836:67:0;39963:28;39994:24;40012:4;39994:9;:24::i;:::-;40078:18;;39963:55;;-1:-1:-1;40054:42:0;;;;;;;40127:35;;-1:-1:-1;40151:11:0;;;;;;;40127:35;:61;;;;-1:-1:-1;40180:8:0;;-1:-1:-1;;;40180:8:0;;;;40179:9;40127:61;:110;;;;-1:-1:-1;;;;;;40206:31:0;;;;;;:25;:31;;;;;;;;40205:32;40127:110;:153;;;;-1:-1:-1;;;;;;40255:25:0;;;;;;:19;:25;;;;;;;;40254:26;40127:153;:194;;;;-1:-1:-1;;;;;;40298:23:0;;;;;;:19;:23;;;;;;;;40297:24;40127:194;40109:338;;;40348:8;:15;;-1:-1:-1;;;;40348:15:0;-1:-1:-1;;;40348:15:0;;;40392:10;:8;:10::i;:::-;40419:8;:16;;-1:-1:-1;;;;40419:16:0;;;40109:338;40475:8;;-1:-1:-1;;;;;40584:25:0;;40459:12;40584:25;;;:19;:25;;;;;;40475:8;-1:-1:-1;;;40475:8:0;;;;;40474:9;;40584:25;;:52;;-1:-1:-1;;;;;;40613:23:0;;;;;;:19;:23;;;;;;;;40584:52;40581:99;;;-1:-1:-1;40663:5:0;40581:99;40700:12;40729:16;40760:18;40868:7;40865:2450;;;-1:-1:-1;;;;;40919:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;40968:1;40952:13;;:17;40919:50;40915:2108;;;-1:-1:-1;;;;;41030:22:0;;;;;;:16;:22;;;;;;;;41025:854;;-1:-1:-1;;;;;41115:14:0;;41132:1;41115:14;;;:8;:14;;;;;;41107:72;;;;-1:-1:-1;;;41107:72:0;;17096:2:1;41107:72:0;;;17078:21:1;17135:2;17115:18;;;17108:30;17174:34;17154:18;;;17147:62;-1:-1:-1;;;17225:18:1;;;17218:39;17274:19;;41107:72:0;16894:405:1;41107:72:0;41252:6;41246:3;41226:17;;41208:15;41218:4;41208:9;:15::i;:::-;:35;;;;:::i;:::-;:41;;;;:::i;:::-;:50;:166;;;-1:-1:-1;41344:12:0;;-1:-1:-1;;;;;41327:14:0;;;;;;:8;:14;;;;;;41359:15;;41327:29;;;:::i;:::-;:47;41208:166;41207:261;;;;-1:-1:-1;41458:10:0;;-1:-1:-1;;;;;41437:18:0;;;;;;:12;:18;;;;;;:31;41207:261;:383;;;;-1:-1:-1;41577:13:0;;-1:-1:-1;;;;;41560:14:0;;;;;;:8;:14;;;;;;;;;41539:12;:18;;;;;;;:35;;41560:14;41539:35;:::i;:::-;:51;41207:383;41205:484;;;-1:-1:-1;;;;;;41658:15:0;;;;;;:9;:15;;;;;;41677:12;41658:31;41205:484;41202:658;;;41821:11;;41810:22;;41202:658;-1:-1:-1;;;;;41899:14:0;;;;;;:8;:14;;;;;41916:15;41899:32;;41970:13;;41959:45;;42000:3;;41959:36;;41970:24;;41986:8;;41970:24;:::i;:::-;41959:6;;:10;:36::i;:::-;:40;;:45::i;:::-;41952:52;;42092:8;42076:13;;:24;;;;:::i;:::-;42054:18;;42047:25;;:4;:25;:::i;:::-;:54;;;;:::i;:::-;42023:20;;:78;;;;;;;:::i;:::-;;;;-1:-1:-1;;42152:13:0;;:24;;42168:8;;42152:24;:::i;:::-;42133:15;42140:8;42133:4;:15;:::i;:::-;:44;;;;:::i;:::-;42120:57;;40915:2108;;;-1:-1:-1;;;;;42238:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;42288:1;42273:12;;:16;42238:51;42235:788;;;42314:33;42343:3;42314:24;42325:12;;42314:6;:10;;:24;;;;:::i;:33::-;42307:40;;42417:12;;42397:17;;42390:4;:24;;;;:::i;:::-;:39;;;;:::i;:::-;42366:20;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;42448:13:0;;;;;;;:9;:13;;;;;;42464:12;42448:28;;42538:13;;42523:43;;-1:-1:-1;;;42523:43:0;;;;42448:13;;;;42538;;;42523:41;;:43;;;;;;;;;;;;;;42538:13;42523:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42495:71;-1:-1:-1;;;;;42495:71:0;;;-1:-1:-1;;;;;42495:71:0;;;42645:15;;;;;;;;;-1:-1:-1;;;;;42645:15:0;-1:-1:-1;;;;;42645:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42603:64:0;42618:13;;;;;;;;;-1:-1:-1;;;;;42618:13:0;-1:-1:-1;;;;;42603:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42603:64:0;;:178;;42738:15;;:43;;-1:-1:-1;;;42738:43:0;;;;;18410:25:1;;;18451:18;;;18444:34;;;18494:18;;;18487:34;;;-1:-1:-1;;;;;42738:15:0;;;;:27;;18383:18:1;;42738:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42603:178;;;42692:15;;:43;;-1:-1:-1;;;42692:43:0;;;;;18410:25:1;;;18451:18;;;18444:34;;;18494:18;;;18487:34;;;-1:-1:-1;;;;;42692:15:0;;;;:27;;18383:18:1;;42692:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42587:12:0;;;;;;:8;:12;;;;;:194;;:12;;;:194;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;42838:16:0;;;;;;:12;:16;;;;;:26;;42858:6;;42838:16;:26;;42858:6;;42838:26;:::i;:::-;;;;-1:-1:-1;;42889:6:0;;;;:49;;;;;42928:10;;42915;;:23;;;;:::i;:::-;42899:12;:39;;42889:49;42885:123;;;42963:25;42979:2;42983:4;42963:15;:25::i;:::-;42291:732;;42235:788;43054:8;;43051:216;;43086:55;43102:4;43116;43123:17;43130:10;43123:4;:17;:::i;:::-;43086:15;:55::i;:::-;43163:15;;43160:92;;43203:29;43215:4;43221:10;43203:11;:29::i;:::-;43289:14;43299:4;43289:14;;:::i;:::-;;;40865:2450;43325:33;43341:4;43347:2;43351:6;43325:15;:33::i;:::-;38336:5030;;;;;;38223:5143;;;:::o;20332:192::-;20418:7;20454:12;20446:6;;;;20438:29;;;;-1:-1:-1;;;20438:29:0;;;;;;;;:::i;:::-;-1:-1:-1;20478:9:0;20490:5;20494:1;20490;:5;:::i;:::-;20478:17;20332:192;-1:-1:-1;;;;;20332:192:0:o;37102:188::-;-1:-1:-1;;;;;37185:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;37185:39:0;;;;;;;;;;37242:40;;37185:39;;:31;37242:40;;;37102:188;;:::o;15624:573::-;-1:-1:-1;;;;;15764:20:0;;15756:70;;;;-1:-1:-1;;;15756:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15845:23:0;;15837:71;;;;-1:-1:-1;;;15837:71:0;;;;;;;:::i;:::-;16001;16023:6;16001:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16001:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;15981:17:0;;;:9;:17;;;;;;;;;;;:91;;;;16106:20;;;;;;;:32;;16131:6;16106:24;:32::i;:::-;-1:-1:-1;;;;;16083:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;16154:35;1410:25:1;;;16083:20:0;;16154:35;;;;;;1383:18:1;16154:35:0;1264:177:1;43983:684:0;44022:23;44048:24;44066:4;44048:9;:24::i;:::-;44022:50;-1:-1:-1;44083:12:0;44119:20;;;:49;;-1:-1:-1;44143:20:0;;:25;44119:49;44116:63;;;44171:7;;43983:684::o;44116:63::-;44212:18;;:23;;44233:2;44212:23;:::i;:::-;44194:15;:41;44191:164;;;44320:18;;:23;;44341:2;44320:23;:::i;:::-;44302:41;;44191:164;44396:15;44424:36;44396:15;44424:16;:36::i;:::-;44482:18;44545:20;:24;44611:17;;44603:54;;44503:21;;-1:-1:-1;;;;;44611:17:0;;44503:21;;44603:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;43983:684:0:o;20783:471::-;20841:7;21086:6;21082:47;;-1:-1:-1;21116:1:0;21109:8;;21082:47;21141:9;21153:5;21157:1;21153;:5;:::i;:::-;21141:17;-1:-1:-1;21186:1:0;21177:5;21181:1;21141:17;21177:5;:::i;:::-;:10;21169:56;;;;-1:-1:-1;;;21169:56:0;;19263:2:1;21169:56:0;;;19245:21:1;19302:2;19282:18;;;19275:30;19341:34;19321:18;;;19314:62;-1:-1:-1;;;19392:18:1;;;19385:31;19433:19;;21169:56:0;19061:397:1;21730:132:0;21788:7;21815:39;21819:1;21822;21815:39;;;;;;;;;;;;;;;;;:3;:39::i;17195:418::-;-1:-1:-1;;;;;17279:21:0;;17271:67;;;;-1:-1:-1;;;17271:67:0;;19665:2:1;17271:67:0;;;19647:21:1;19704:2;19684:18;;;19677:30;19743:34;19723:18;;;19716:62;-1:-1:-1;;;19794:18:1;;;19787:31;19835:19;;17271:67:0;19463:397:1;17271:67:0;17434:68;17457:6;17434:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17434:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;17413:18:0;;:9;:18;;;;;;;;;;:89;17528:12;;:24;;17545:6;17528:16;:24::i;:::-;17513:12;:39;17568:37;;1410:25:1;;;17594:1:0;;-1:-1:-1;;;;;17568:37:0;;;;;1398:2:1;1383:18;17568:37:0;;;;;;;17195:418;;:::o;43374:601::-;43526:16;;;43540:1;43526:16;;;;;;;;43502:21;;43526:16;;;;;;;;;;-1:-1:-1;43526:16:0;43502:40;;43571:4;43553;43558:1;43553:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43553:23:0;;;:7;;;;;;;;;;:23;;;;43597:15;;:22;;;-1:-1:-1;;;43597:22:0;;;;:15;;;;;:20;;:22;;;;;43553:7;;43597:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43587:4;43592:1;43587:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43587:32:0;;;:7;;;;;;;;;:32;43664:15;;43632:62;;43649:4;;43664:15;43682:11;43632:8;:62::i;:::-;43733:15;;:224;;-1:-1:-1;;;43733:224:0;;-1:-1:-1;;;;;43733:15:0;;;;:66;;:224;;43814:11;;43733:15;;43884:4;;43911;;43931:15;;43733:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43429:546;43374:601;:::o;22358:278::-;22444:7;22479:12;22472:5;22464:28;;;;-1:-1:-1;;;22464:28:0;;;;;;;;:::i;:::-;-1:-1:-1;22503:9:0;22515:5;22519:1;22515;:5;:::i;19893:136::-;19951:7;19978:43;19982:1;19985;19978:43;;;;;;;;;;;;;;;;;:3;:43::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1933:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;2583:367::-;2646:8;2656:6;2710:3;2703:4;2695:6;2691:17;2687:27;2677:55;;2728:1;2725;2718:12;2677:55;-1:-1:-1;2751:20:1;;2794:18;2783:30;;2780:50;;;2826:1;2823;2816:12;2780:50;2863:4;2855:6;2851:17;2839:29;;2923:3;2916:4;2906:6;2903:1;2899:14;2891:6;2887:27;2883:38;2880:47;2877:67;;;2940:1;2937;2930:12;2877:67;2583:367;;;;;:::o;2955:118::-;3041:5;3034:13;3027:21;3020:5;3017:32;3007:60;;3063:1;3060;3053:12;3078:566;3170:6;3178;3186;3239:2;3227:9;3218:7;3214:23;3210:32;3207:52;;;3255:1;3252;3245:12;3207:52;3295:9;3282:23;3328:18;3320:6;3317:30;3314:50;;;3360:1;3357;3350:12;3314:50;3399:70;3461:7;3452:6;3441:9;3437:22;3399:70;:::i;:::-;3488:8;;-1:-1:-1;3373:96:1;-1:-1:-1;;3573:2:1;3558:18;;3545:32;3586:28;3545:32;3586:28;:::i;:::-;3633:5;3623:15;;;3078:566;;;;;:::o;3857:316::-;3934:6;3942;3950;4003:2;3991:9;3982:7;3978:23;3974:32;3971:52;;;4019:1;4016;4009:12;3971:52;-1:-1:-1;;4042:23:1;;;4112:2;4097:18;;4084:32;;-1:-1:-1;4163:2:1;4148:18;;;4135:32;;3857:316;-1:-1:-1;3857:316:1:o;4178:180::-;4237:6;4290:2;4278:9;4269:7;4265:23;4261:32;4258:52;;;4306:1;4303;4296:12;4258:52;-1:-1:-1;4329:23:1;;4178:180;-1:-1:-1;4178:180:1:o;4363:382::-;4428:6;4436;4489:2;4477:9;4468:7;4464:23;4460:32;4457:52;;;4505:1;4502;4495:12;4457:52;4544:9;4531:23;4563:31;4588:5;4563:31;:::i;:::-;4613:5;-1:-1:-1;4670:2:1;4655:18;;4642:32;4683:30;4642:32;4683:30;:::i;:::-;4732:7;4722:17;;;4363:382;;;;;:::o;4750:241::-;4806:6;4859:2;4847:9;4838:7;4834:23;4830:32;4827:52;;;4875:1;4872;4865:12;4827:52;4914:9;4901:23;4933:28;4955:5;4933:28;:::i;4996:437::-;5082:6;5090;5143:2;5131:9;5122:7;5118:23;5114:32;5111:52;;;5159:1;5156;5149:12;5111:52;5199:9;5186:23;5232:18;5224:6;5221:30;5218:50;;;5264:1;5261;5254:12;5218:50;5303:70;5365:7;5356:6;5345:9;5341:22;5303:70;:::i;:::-;5392:8;;5277:96;;-1:-1:-1;4996:437:1;-1:-1:-1;;;;4996:437:1:o;5438:388::-;5506:6;5514;5567:2;5555:9;5546:7;5542:23;5538:32;5535:52;;;5583:1;5580;5573:12;5535:52;5622:9;5609:23;5641:31;5666:5;5641:31;:::i;:::-;5691:5;-1:-1:-1;5748:2:1;5733:18;;5720:32;5761:33;5720:32;5761:33;:::i;5831:248::-;5899:6;5907;5960:2;5948:9;5939:7;5935:23;5931:32;5928:52;;;5976:1;5973;5966:12;5928:52;-1:-1:-1;;5999:23:1;;;6069:2;6054:18;;;6041:32;;-1:-1:-1;5831:248:1:o;6084:380::-;6163:1;6159:12;;;;6206;;;6227:61;;6281:4;6273:6;6269:17;6259:27;;6227:61;6334:2;6326:6;6323:14;6303:18;6300:38;6297:161;;;6380:10;6375:3;6371:20;6368:1;6361:31;6415:4;6412:1;6405:15;6443:4;6440:1;6433:15;6297:161;;6084:380;;;:::o;6469:356::-;6671:2;6653:21;;;6690:18;;;6683:30;6749:34;6744:2;6729:18;;6722:62;6816:2;6801:18;;6469:356::o;6830:127::-;6891:10;6886:3;6882:20;6879:1;6872:31;6922:4;6919:1;6912:15;6946:4;6943:1;6936:15;6962:127;7023:10;7018:3;7014:20;7011:1;7004:31;7054:4;7051:1;7044:15;7078:4;7075:1;7068:15;7094:135;7133:3;-1:-1:-1;;7154:17:1;;7151:43;;;7174:18;;:::i;:::-;-1:-1:-1;7221:1:1;7210:13;;7094:135::o;7234:794::-;7456:2;7468:21;;;7441:18;;7524:22;;;7408:4;7603:6;7577:2;7562:18;;7408:4;7637:304;7651:6;7648:1;7645:13;7637:304;;;7726:6;7713:20;7746:31;7771:5;7746:31;:::i;:::-;-1:-1:-1;;;;;7802:31:1;7790:44;;7857:4;7916:15;;;;7881:12;;;;7830:1;7666:9;7637:304;;;7641:3;7958;7950:11;;;;8013:6;8006:14;7999:22;7992:4;7981:9;7977:20;7970:52;7234:794;;;;;;:::o;9936:245::-;10003:6;10056:2;10044:9;10035:7;10031:23;10027:32;10024:52;;;10072:1;10069;10062:12;10024:52;10104:9;10098:16;10123:28;10145:5;10123:28;:::i;10901:168::-;10941:7;11007:1;11003;10999:6;10995:14;10992:1;10989:21;10984:1;10977:9;10970:17;10966:45;10963:71;;;11014:18;;:::i;:::-;-1:-1:-1;11054:9:1;;10901:168::o;11074:217::-;11114:1;11140;11130:132;;11184:10;11179:3;11175:20;11172:1;11165:31;11219:4;11216:1;11209:15;11247:4;11244:1;11237:15;11130:132;-1:-1:-1;11276:9:1;;11074:217::o;12902:128::-;12942:3;12973:1;12969:6;12966:1;12963:13;12960:39;;;12979:18;;:::i;:::-;-1:-1:-1;13015:9:1;;12902:128::o;14199:401::-;14401:2;14383:21;;;14440:2;14420:18;;;14413:30;14479:34;14474:2;14459:18;;14452:62;-1:-1:-1;;;14545:2:1;14530:18;;14523:35;14590:3;14575:19;;14199:401::o;14605:399::-;14807:2;14789:21;;;14846:2;14826:18;;;14819:30;14885:34;14880:2;14865:18;;14858:62;-1:-1:-1;;;14951:2:1;14936:18;;14929:33;14994:3;14979:19;;14605:399::o;17304:188::-;17383:13;;-1:-1:-1;;;;;17425:42:1;;17415:53;;17405:81;;17482:1;17479;17472:12;17497:450;17584:6;17592;17600;17653:2;17641:9;17632:7;17628:23;17624:32;17621:52;;;17669:1;17666;17659:12;17621:52;17692:40;17722:9;17692:40;:::i;:::-;17682:50;;17751:49;17796:2;17785:9;17781:18;17751:49;:::i;:::-;17741:59;;17843:2;17832:9;17828:18;17822:25;17887:10;17880:5;17876:22;17869:5;17866:33;17856:61;;17913:1;17910;17903:12;17952:251;18022:6;18075:2;18063:9;18054:7;18050:23;18046:32;18043:52;;;18091:1;18088;18081:12;18043:52;18123:9;18117:16;18142:31;18167:5;18142:31;:::i;18532:184::-;18602:6;18655:2;18643:9;18634:7;18630:23;18626:32;18623:52;;;18671:1;18668;18661:12;18623:52;-1:-1:-1;18694:16:1;;18532:184;-1:-1:-1;18532:184:1:o;18721:125::-;18761:4;18789:1;18786;18783:8;18780:34;;;18794:18;;:::i;:::-;-1:-1:-1;18831:9:1;;18721:125::o;19997:980::-;20259:4;20307:3;20296:9;20292:19;20338:6;20327:9;20320:25;20364:2;20402:6;20397:2;20386:9;20382:18;20375:34;20445:3;20440:2;20429:9;20425:18;20418:31;20469:6;20504;20498:13;20535:6;20527;20520:22;20573:3;20562:9;20558:19;20551:26;;20612:2;20604:6;20600:15;20586:29;;20633:1;20643:195;20657:6;20654:1;20651:13;20643:195;;;20722:13;;-1:-1:-1;;;;;20718:39:1;20706:52;;20813:15;;;;20778:12;;;;20754:1;20672:9;20643:195;;;-1:-1:-1;;;;;;;20894:32:1;;;;20889:2;20874:18;;20867:60;-1:-1:-1;;;20958:3:1;20943:19;20936:35;20855:3;19997:980;-1:-1:-1;;;19997:980:1:o

Swarm Source

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