ETH Price: $3,322.36 (+2.23%)
Gas: 3 Gwei

Token

Shin Inu (SHIN)
 

Overview

Max Total Supply

742,315,971,222.234121692790905607 SHIN

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,632,440,009.000000013748191026 SHIN

Value
$0.00
0xB7BB4454eb4DDcA78C17b2911a0d0183984985B9
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:
ShinInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 7 of 7: shin.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "../ERC20.sol";
import "../Ownable.sol";
import "../SafeMath.sol";

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

    mapping(address => bool) private pair;

    uint256 private start;
    uint256 private end;

    bool private starting;

    uint256 private maxWalletTimer;
    uint256 private maxWallet;
    uint256 private maxTransaction;

    constructor() ERC20("Shin Inu", "SHIN") {

        starting = true;
        end = 25;
        maxWallet = 20 * 10 ** 9 * 10 ** decimals();
        maxTransaction = 20 * 10 ** 9 * 10 ** decimals();
        maxWalletTimer = 1649617200;

        _mint(msg.sender, 1 * 10 ** 12 * 10 ** decimals());
    }

    function burn(uint256 amount) public {
        _burn(msg.sender, amount * 10 ** decimals());
    }

    function addPair(address toPair) public onlyOwner {
        require(!pair[toPair], "This pair is already excluded");

        pair[toPair] = true;

    }

    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");
        uint256 current = block.number;

        if(starting) {
            start = block.number;
            starting = false;
        }

       if(current <= start.add(end) && from != owner() && to != owner()) {
           uint256 send = amount.mul(1).div(100);
           super._transfer(from, to, send);
           super._transfer(from, address(this), amount.sub(send));
           _burn(address(this), balanceOf(address(this)));
       }

       else if(block.timestamp < maxWalletTimer && from != owner() && to != owner() && pair[to]) {
                require(amount <= maxTransaction, "Transfer amount exceeds maximum transaction");
                super._transfer(from, to, amount);
       }

        else if(block.timestamp < maxWalletTimer && from != owner() && to != owner() && pair[from]) {
                uint256 balance = balanceOf(to);
                require(balance.add(amount) <= maxWallet, "Transfer amount exceeds maximum wallet");
                require(amount <= maxTransaction, "Transfer amount exceeds maximum transaction");

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

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

File 1 of 7: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 2 of 7: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";
import "../IERC20Metadata.sol";
import "../Context.sol";

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(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);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @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 Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 3 of 7: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        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);
}

File 4 of 7: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

File 5 of 7: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract 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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 7: SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"toPair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600881526020017f5368696e20496e750000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5348494e000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200040d565b508060049080519060200190620000af9291906200040d565b505050620000d2620000c6620001b360201b60201c565b620001bb60201b60201c565b6001600960006101000a81548160ff0219169083151502179055506019600881905550620001056200028160201b60201c565b600a620001139190620005fd565b6404a817c8006200012591906200073a565b600b819055506200013b6200028160201b60201c565b600a620001499190620005fd565b6404a817c8006200015b91906200073a565b600c819055506362532930600a81905550620001ad33620001816200028160201b60201c565b600a6200018f9190620005fd565b64e8d4a51000620001a191906200073a565b6200028a60201b60201c565b6200087c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f490620004f5565b60405180910390fd5b62000311600083836200040360201b60201c565b806002600082825462000325919062000545565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200037c919062000545565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003e3919062000517565b60405180910390a3620003ff600083836200040860201b60201c565b5050565b505050565b505050565b8280546200041b90620007b2565b90600052602060002090601f0160209004810192826200043f57600085556200048b565b82601f106200045a57805160ff19168380011785556200048b565b828001600101855582156200048b579182015b828111156200048a5782518255916020019190600101906200046d565b5b5090506200049a91906200049e565b5090565b5b80821115620004b95760008160009055506001016200049f565b5090565b6000620004cc601f8362000534565b9150620004d98262000853565b602082019050919050565b620004ef816200079b565b82525050565b600060208201905081810360008301526200051081620004bd565b9050919050565b60006020820190506200052e6000830184620004e4565b92915050565b600082825260208201905092915050565b600062000552826200079b565b91506200055f836200079b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005975762000596620007e8565b5b828201905092915050565b6000808291508390505b6001851115620005f457808604811115620005cc57620005cb620007e8565b5b6001851615620005dc5780820291505b8081029050620005ec8562000846565b9450620005ac565b94509492505050565b60006200060a826200079b565b91506200061783620007a5565b9250620006467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200064e565b905092915050565b60008262000660576001905062000733565b8162000670576000905062000733565b81600181146200068957600281146200069457620006ca565b600191505062000733565b60ff841115620006a957620006a8620007e8565b5b8360020a915084821115620006c357620006c2620007e8565b5b5062000733565b5060208310610133831016604e8410600b8410161715620007045782820a905083811115620006fe57620006fd620007e8565b5b62000733565b620007138484846001620005a2565b925090508184048111156200072d576200072c620007e8565b5b81810290505b9392505050565b600062000747826200079b565b915062000754836200079b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000790576200078f620007e8565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620007cb57607f821691505b60208210811415620007e257620007e162000817565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6125ad806200088c6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb146102b1578063c2b7bbb6146102e1578063dd62ed3e146102fd578063f2fde38b1461032d57610100565b8063715018a61461023b5780638da5cb5b1461024557806395d89b4114610263578063a457c2d71461028157610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806342966c68146101ef57806370a082311461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610349565b60405161011a9190611b4a565b60405180910390f35b61013d60048036038101906101389190611850565b6103db565b60405161014a9190611b2f565b60405180910390f35b61015b6103fe565b6040516101689190611d2c565b60405180910390f35b61018b60048036038101906101869190611801565b610408565b6040516101989190611b2f565b60405180910390f35b6101a9610437565b6040516101b69190611d47565b60405180910390f35b6101d960048036038101906101d49190611850565b610440565b6040516101e69190611b2f565b60405180910390f35b6102096004803603810190610204919061188c565b6104ea565b005b6102256004803603810190610220919061179c565b610515565b6040516102329190611d2c565b60405180910390f35b61024361055d565b005b61024d6105e5565b60405161025a9190611b14565b60405180910390f35b61026b61060f565b6040516102789190611b4a565b60405180910390f35b61029b60048036038101906102969190611850565b6106a1565b6040516102a89190611b2f565b60405180910390f35b6102cb60048036038101906102c69190611850565b61078b565b6040516102d89190611b2f565b60405180910390f35b6102fb60048036038101906102f6919061179c565b6107ae565b005b610317600480360381019061031291906117c5565b610912565b6040516103249190611d2c565b60405180910390f35b6103476004803603810190610342919061179c565b610999565b005b6060600380546103589061208c565b80601f01602080910402602001604051908101604052809291908181526020018280546103849061208c565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b5050505050905090565b6000806103e6610a91565b90506103f3818585610a99565b600191505092915050565b6000600254905090565b600080610413610a91565b9050610420858285610c64565b61042b858585610cf0565b60019150509392505050565b60006012905090565b60008061044b610a91565b90506104df818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104da9190611d7e565b610a99565b600191505092915050565b610512336104f6610437565b600a6105029190611e58565b8361050d9190611f76565b6111f2565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610565610a91565b73ffffffffffffffffffffffffffffffffffffffff166105836105e5565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090611c6c565b60405180910390fd5b6105e360006113c9565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461061e9061208c565b80601f016020809104026020016040519081016040528092919081815260200182805461064a9061208c565b80156106975780601f1061066c57610100808354040283529160200191610697565b820191906000526020600020905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b6000806106ac610a91565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611d0c565b60405180910390fd5b61077f8286868403610a99565b60019250505092915050565b600080610796610a91565b90506107a3818585610cf0565b600191505092915050565b6107b6610a91565b73ffffffffffffffffffffffffffffffffffffffff166107d46105e5565b73ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190611c6c565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90611bac565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109a1610a91565b73ffffffffffffffffffffffffffffffffffffffff166109bf6105e5565b73ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90611c6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90611bcc565b60405180910390fd5b610a8e816113c9565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090611cec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090611bec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c579190611d2c565b60405180910390a3505050565b6000610c708484610912565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cea5781811015610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390611c0c565b60405180910390fd5b610ce98484848403610a99565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790611ccc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790611b6c565b60405180910390fd5b6000439050600960009054906101000a900460ff1615610e0d57436007819055506000600960006101000a81548160ff0219169083151502179055505b610e2460085460075461148f90919063ffffffff16565b8111158015610e665750610e366105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610ea55750610e756105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610f15576000610ed36064610ec56001866114a590919063ffffffff16565b6114bb90919063ffffffff16565b9050610ee08585836114d1565b610efd8530610ef8848761175290919063ffffffff16565b6114d1565b610f0f30610f0a30610515565b6111f2565b506111ec565b600a5442108015610f595750610f296105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610f985750610f686105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fed5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561104757600c54821115611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90611c4c565b60405180910390fd5b6110428484846114d1565b6111eb565b600a544210801561108b575061105b6105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156110ca575061109a6105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561111f5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156111de57600061112f84610515565b9050600b54611147848361148f90919063ffffffff16565b1115611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90611c8c565b60405180910390fd5b600c548311156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490611c4c565b60405180910390fd5b6111d88585856114d1565b506111ea565b6111e98484846114d1565b5b5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990611cac565b60405180910390fd5b61126e82600083611768565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90611b8c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461134b9190611fd0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113b09190611d2c565b60405180910390a36113c48360008461176d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361149d9190611d7e565b905092915050565b600081836114b39190611f76565b905092915050565b600081836114c99190611dd4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153890611ccc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890611b6c565b60405180910390fd5b6115bc838383611768565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990611c2c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116d59190611d7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117399190611d2c565b60405180910390a361174c84848461176d565b50505050565b600081836117609190611fd0565b905092915050565b505050565b505050565b60008135905061178181612549565b92915050565b60008135905061179681612560565b92915050565b6000602082840312156117ae57600080fd5b60006117bc84828501611772565b91505092915050565b600080604083850312156117d857600080fd5b60006117e685828601611772565b92505060206117f785828601611772565b9150509250929050565b60008060006060848603121561181657600080fd5b600061182486828701611772565b935050602061183586828701611772565b925050604061184686828701611787565b9150509250925092565b6000806040838503121561186357600080fd5b600061187185828601611772565b925050602061188285828601611787565b9150509250929050565b60006020828403121561189e57600080fd5b60006118ac84828501611787565b91505092915050565b6118be81612004565b82525050565b6118cd81612016565b82525050565b60006118de82611d62565b6118e88185611d6d565b93506118f8818560208601612059565b6119018161214b565b840191505092915050565b6000611919602383611d6d565b915061192482612169565b604082019050919050565b600061193c602283611d6d565b9150611947826121b8565b604082019050919050565b600061195f601d83611d6d565b915061196a82612207565b602082019050919050565b6000611982602683611d6d565b915061198d82612230565b604082019050919050565b60006119a5602283611d6d565b91506119b08261227f565b604082019050919050565b60006119c8601d83611d6d565b91506119d3826122ce565b602082019050919050565b60006119eb602683611d6d565b91506119f6826122f7565b604082019050919050565b6000611a0e602b83611d6d565b9150611a1982612346565b604082019050919050565b6000611a31602083611d6d565b9150611a3c82612395565b602082019050919050565b6000611a54602683611d6d565b9150611a5f826123be565b604082019050919050565b6000611a77602183611d6d565b9150611a828261240d565b604082019050919050565b6000611a9a602583611d6d565b9150611aa58261245c565b604082019050919050565b6000611abd602483611d6d565b9150611ac8826124ab565b604082019050919050565b6000611ae0602583611d6d565b9150611aeb826124fa565b604082019050919050565b611aff81612042565b82525050565b611b0e8161204c565b82525050565b6000602082019050611b2960008301846118b5565b92915050565b6000602082019050611b4460008301846118c4565b92915050565b60006020820190508181036000830152611b6481846118d3565b905092915050565b60006020820190508181036000830152611b858161190c565b9050919050565b60006020820190508181036000830152611ba58161192f565b9050919050565b60006020820190508181036000830152611bc581611952565b9050919050565b60006020820190508181036000830152611be581611975565b9050919050565b60006020820190508181036000830152611c0581611998565b9050919050565b60006020820190508181036000830152611c25816119bb565b9050919050565b60006020820190508181036000830152611c45816119de565b9050919050565b60006020820190508181036000830152611c6581611a01565b9050919050565b60006020820190508181036000830152611c8581611a24565b9050919050565b60006020820190508181036000830152611ca581611a47565b9050919050565b60006020820190508181036000830152611cc581611a6a565b9050919050565b60006020820190508181036000830152611ce581611a8d565b9050919050565b60006020820190508181036000830152611d0581611ab0565b9050919050565b60006020820190508181036000830152611d2581611ad3565b9050919050565b6000602082019050611d416000830184611af6565b92915050565b6000602082019050611d5c6000830184611b05565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d8982612042565b9150611d9483612042565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dc957611dc86120be565b5b828201905092915050565b6000611ddf82612042565b9150611dea83612042565b925082611dfa57611df96120ed565b5b828204905092915050565b6000808291508390505b6001851115611e4f57808604811115611e2b57611e2a6120be565b5b6001851615611e3a5780820291505b8081029050611e488561215c565b9450611e0f565b94509492505050565b6000611e6382612042565b9150611e6e8361204c565b9250611e9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ea3565b905092915050565b600082611eb35760019050611f6f565b81611ec15760009050611f6f565b8160018114611ed75760028114611ee157611f10565b6001915050611f6f565b60ff841115611ef357611ef26120be565b5b8360020a915084821115611f0a57611f096120be565b5b50611f6f565b5060208310610133831016604e8410600b8410161715611f455782820a905083811115611f4057611f3f6120be565b5b611f6f565b611f528484846001611e05565b92509050818404811115611f6957611f686120be565b5b81810290505b9392505050565b6000611f8182612042565b9150611f8c83612042565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fc557611fc46120be565b5b828202905092915050565b6000611fdb82612042565b9150611fe683612042565b925082821015611ff957611ff86120be565b5b828203905092915050565b600061200f82612022565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561207757808201518184015260208101905061205c565b83811115612086576000848401525b50505050565b600060028204905060018216806120a457607f821691505b602082108114156120b8576120b761211c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e742065786365656473206d6178696d756d2060008201527f7472616e73616374696f6e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e742065786365656473206d6178696d756d2060008201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61255281612004565b811461255d57600080fd5b50565b61256981612042565b811461257457600080fd5b5056fea26469706673582212205d8ebccc1e7a33b3ab9ea7974bd682946d1b4247f5556b71b19124ff5daf2a1664736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb146102b1578063c2b7bbb6146102e1578063dd62ed3e146102fd578063f2fde38b1461032d57610100565b8063715018a61461023b5780638da5cb5b1461024557806395d89b4114610263578063a457c2d71461028157610100565b8063313ce567116100d3578063313ce567146101a157806339509351146101bf57806342966c68146101ef57806370a082311461020b57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610349565b60405161011a9190611b4a565b60405180910390f35b61013d60048036038101906101389190611850565b6103db565b60405161014a9190611b2f565b60405180910390f35b61015b6103fe565b6040516101689190611d2c565b60405180910390f35b61018b60048036038101906101869190611801565b610408565b6040516101989190611b2f565b60405180910390f35b6101a9610437565b6040516101b69190611d47565b60405180910390f35b6101d960048036038101906101d49190611850565b610440565b6040516101e69190611b2f565b60405180910390f35b6102096004803603810190610204919061188c565b6104ea565b005b6102256004803603810190610220919061179c565b610515565b6040516102329190611d2c565b60405180910390f35b61024361055d565b005b61024d6105e5565b60405161025a9190611b14565b60405180910390f35b61026b61060f565b6040516102789190611b4a565b60405180910390f35b61029b60048036038101906102969190611850565b6106a1565b6040516102a89190611b2f565b60405180910390f35b6102cb60048036038101906102c69190611850565b61078b565b6040516102d89190611b2f565b60405180910390f35b6102fb60048036038101906102f6919061179c565b6107ae565b005b610317600480360381019061031291906117c5565b610912565b6040516103249190611d2c565b60405180910390f35b6103476004803603810190610342919061179c565b610999565b005b6060600380546103589061208c565b80601f01602080910402602001604051908101604052809291908181526020018280546103849061208c565b80156103d15780601f106103a6576101008083540402835291602001916103d1565b820191906000526020600020905b8154815290600101906020018083116103b457829003601f168201915b5050505050905090565b6000806103e6610a91565b90506103f3818585610a99565b600191505092915050565b6000600254905090565b600080610413610a91565b9050610420858285610c64565b61042b858585610cf0565b60019150509392505050565b60006012905090565b60008061044b610a91565b90506104df818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104da9190611d7e565b610a99565b600191505092915050565b610512336104f6610437565b600a6105029190611e58565b8361050d9190611f76565b6111f2565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610565610a91565b73ffffffffffffffffffffffffffffffffffffffff166105836105e5565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090611c6c565b60405180910390fd5b6105e360006113c9565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461061e9061208c565b80601f016020809104026020016040519081016040528092919081815260200182805461064a9061208c565b80156106975780601f1061066c57610100808354040283529160200191610697565b820191906000526020600020905b81548152906001019060200180831161067a57829003601f168201915b5050505050905090565b6000806106ac610a91565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611d0c565b60405180910390fd5b61077f8286868403610a99565b60019250505092915050565b600080610796610a91565b90506107a3818585610cf0565b600191505092915050565b6107b6610a91565b73ffffffffffffffffffffffffffffffffffffffff166107d46105e5565b73ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082190611c6c565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90611bac565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109a1610a91565b73ffffffffffffffffffffffffffffffffffffffff166109bf6105e5565b73ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90611c6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90611bcc565b60405180910390fd5b610a8e816113c9565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090611cec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090611bec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c579190611d2c565b60405180910390a3505050565b6000610c708484610912565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cea5781811015610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390611c0c565b60405180910390fd5b610ce98484848403610a99565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790611ccc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790611b6c565b60405180910390fd5b6000439050600960009054906101000a900460ff1615610e0d57436007819055506000600960006101000a81548160ff0219169083151502179055505b610e2460085460075461148f90919063ffffffff16565b8111158015610e665750610e366105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610ea55750610e756105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610f15576000610ed36064610ec56001866114a590919063ffffffff16565b6114bb90919063ffffffff16565b9050610ee08585836114d1565b610efd8530610ef8848761175290919063ffffffff16565b6114d1565b610f0f30610f0a30610515565b6111f2565b506111ec565b600a5442108015610f595750610f296105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610f985750610f686105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fed5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561104757600c54821115611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90611c4c565b60405180910390fd5b6110428484846114d1565b6111eb565b600a544210801561108b575061105b6105e5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156110ca575061109a6105e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561111f5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156111de57600061112f84610515565b9050600b54611147848361148f90919063ffffffff16565b1115611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90611c8c565b60405180910390fd5b600c548311156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490611c4c565b60405180910390fd5b6111d88585856114d1565b506111ea565b6111e98484846114d1565b5b5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125990611cac565b60405180910390fd5b61126e82600083611768565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90611b8c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461134b9190611fd0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113b09190611d2c565b60405180910390a36113c48360008461176d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818361149d9190611d7e565b905092915050565b600081836114b39190611f76565b905092915050565b600081836114c99190611dd4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153890611ccc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890611b6c565b60405180910390fd5b6115bc838383611768565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990611c2c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116d59190611d7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117399190611d2c565b60405180910390a361174c84848461176d565b50505050565b600081836117609190611fd0565b905092915050565b505050565b505050565b60008135905061178181612549565b92915050565b60008135905061179681612560565b92915050565b6000602082840312156117ae57600080fd5b60006117bc84828501611772565b91505092915050565b600080604083850312156117d857600080fd5b60006117e685828601611772565b92505060206117f785828601611772565b9150509250929050565b60008060006060848603121561181657600080fd5b600061182486828701611772565b935050602061183586828701611772565b925050604061184686828701611787565b9150509250925092565b6000806040838503121561186357600080fd5b600061187185828601611772565b925050602061188285828601611787565b9150509250929050565b60006020828403121561189e57600080fd5b60006118ac84828501611787565b91505092915050565b6118be81612004565b82525050565b6118cd81612016565b82525050565b60006118de82611d62565b6118e88185611d6d565b93506118f8818560208601612059565b6119018161214b565b840191505092915050565b6000611919602383611d6d565b915061192482612169565b604082019050919050565b600061193c602283611d6d565b9150611947826121b8565b604082019050919050565b600061195f601d83611d6d565b915061196a82612207565b602082019050919050565b6000611982602683611d6d565b915061198d82612230565b604082019050919050565b60006119a5602283611d6d565b91506119b08261227f565b604082019050919050565b60006119c8601d83611d6d565b91506119d3826122ce565b602082019050919050565b60006119eb602683611d6d565b91506119f6826122f7565b604082019050919050565b6000611a0e602b83611d6d565b9150611a1982612346565b604082019050919050565b6000611a31602083611d6d565b9150611a3c82612395565b602082019050919050565b6000611a54602683611d6d565b9150611a5f826123be565b604082019050919050565b6000611a77602183611d6d565b9150611a828261240d565b604082019050919050565b6000611a9a602583611d6d565b9150611aa58261245c565b604082019050919050565b6000611abd602483611d6d565b9150611ac8826124ab565b604082019050919050565b6000611ae0602583611d6d565b9150611aeb826124fa565b604082019050919050565b611aff81612042565b82525050565b611b0e8161204c565b82525050565b6000602082019050611b2960008301846118b5565b92915050565b6000602082019050611b4460008301846118c4565b92915050565b60006020820190508181036000830152611b6481846118d3565b905092915050565b60006020820190508181036000830152611b858161190c565b9050919050565b60006020820190508181036000830152611ba58161192f565b9050919050565b60006020820190508181036000830152611bc581611952565b9050919050565b60006020820190508181036000830152611be581611975565b9050919050565b60006020820190508181036000830152611c0581611998565b9050919050565b60006020820190508181036000830152611c25816119bb565b9050919050565b60006020820190508181036000830152611c45816119de565b9050919050565b60006020820190508181036000830152611c6581611a01565b9050919050565b60006020820190508181036000830152611c8581611a24565b9050919050565b60006020820190508181036000830152611ca581611a47565b9050919050565b60006020820190508181036000830152611cc581611a6a565b9050919050565b60006020820190508181036000830152611ce581611a8d565b9050919050565b60006020820190508181036000830152611d0581611ab0565b9050919050565b60006020820190508181036000830152611d2581611ad3565b9050919050565b6000602082019050611d416000830184611af6565b92915050565b6000602082019050611d5c6000830184611b05565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d8982612042565b9150611d9483612042565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dc957611dc86120be565b5b828201905092915050565b6000611ddf82612042565b9150611dea83612042565b925082611dfa57611df96120ed565b5b828204905092915050565b6000808291508390505b6001851115611e4f57808604811115611e2b57611e2a6120be565b5b6001851615611e3a5780820291505b8081029050611e488561215c565b9450611e0f565b94509492505050565b6000611e6382612042565b9150611e6e8361204c565b9250611e9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ea3565b905092915050565b600082611eb35760019050611f6f565b81611ec15760009050611f6f565b8160018114611ed75760028114611ee157611f10565b6001915050611f6f565b60ff841115611ef357611ef26120be565b5b8360020a915084821115611f0a57611f096120be565b5b50611f6f565b5060208310610133831016604e8410600b8410161715611f455782820a905083811115611f4057611f3f6120be565b5b611f6f565b611f528484846001611e05565b92509050818404811115611f6957611f686120be565b5b81810290505b9392505050565b6000611f8182612042565b9150611f8c83612042565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fc557611fc46120be565b5b828202905092915050565b6000611fdb82612042565b9150611fe683612042565b925082821015611ff957611ff86120be565b5b828203905092915050565b600061200f82612022565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561207757808201518184015260208101905061205c565b83811115612086576000848401525b50505050565b600060028204905060018216806120a457607f821691505b602082108114156120b8576120b761211c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e742065786365656473206d6178696d756d2060008201527f7472616e73616374696f6e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e742065786365656473206d6178696d756d2060008201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61255281612004565b811461255d57600080fd5b50565b61256981612042565b811461257457600080fd5b5056fea26469706673582212205d8ebccc1e7a33b3ab9ea7974bd682946d1b4247f5556b71b19124ff5daf2a1664736f6c63430008040033

Deployed Bytecode Sourcemap

132:2326:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2138:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4415:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3226:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5174:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3075:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5855:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;741:98:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3390:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1662:101:4;;;:::i;:::-;;1030:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2349:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6578:429;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3711:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;845:153:6;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3958:149:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1912:198:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2138:98:1;2192:13;2224:5;2217:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2138:98;:::o;4415:197::-;4498:4;4514:13;4530:12;:10;:12::i;:::-;4514:28;;4552:32;4561:5;4568:7;4577:6;4552:8;:32::i;:::-;4601:4;4594:11;;;4415:197;;;;:::o;3226:106::-;3287:7;3313:12;;3306:19;;3226:106;:::o;5174:286::-;5301:4;5317:15;5335:12;:10;:12::i;:::-;5317:30;;5357:38;5373:4;5379:7;5388:6;5357:15;:38::i;:::-;5405:27;5415:4;5421:2;5425:6;5405:9;:27::i;:::-;5449:4;5442:11;;;5174:286;;;;;:::o;3075:91::-;3133:5;3157:2;3150:9;;3075:91;:::o;5855:236::-;5943:4;5959:13;5975:12;:10;:12::i;:::-;5959:28;;5997:66;6006:5;6013:7;6052:10;6022:11;:18;6034:5;6022:18;;;;;;;;;;;;;;;:27;6041:7;6022:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5997:8;:66::i;:::-;6080:4;6073:11;;;5855:236;;;;:::o;741:98:6:-;788:44;794:10;821;:8;:10::i;:::-;815:2;:16;;;;:::i;:::-;806:6;:25;;;;:::i;:::-;788:5;:44::i;:::-;741:98;:::o;3390:125:1:-;3464:7;3490:9;:18;3500:7;3490:18;;;;;;;;;;;;;;;;3483:25;;3390:125;;;:::o;1662:101:4:-;1253:12;:10;:12::i;:::-;1242:23;;:7;:5;:7::i;:::-;:23;;;1234:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1726:30:::1;1753:1;1726:18;:30::i;:::-;1662:101::o:0;1030:85::-;1076:7;1102:6;;;;;;;;;;;1095:13;;1030:85;:::o;2349:102:1:-;2405:13;2437:7;2430:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:102;:::o;6578:429::-;6671:4;6687:13;6703:12;:10;:12::i;:::-;6687:28;;6725:24;6752:11;:18;6764:5;6752:18;;;;;;;;;;;;;;;:27;6771:7;6752:27;;;;;;;;;;;;;;;;6725:54;;6817:15;6797:16;:35;;6789:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6908:60;6917:5;6924:7;6952:15;6933:16;:34;6908:8;:60::i;:::-;6996:4;6989:11;;;;6578:429;;;;:::o;3711:189::-;3790:4;3806:13;3822:12;:10;:12::i;:::-;3806:28;;3844;3854:5;3861:2;3865:6;3844:9;:28::i;:::-;3889:4;3882:11;;;3711:189;;;;:::o;845:153:6:-;1253:12:4;:10;:12::i;:::-;1242:23;;:7;:5;:7::i;:::-;:23;;;1234:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;914:4:6::1;:12;919:6;914:12;;;;;;;;;;;;;;;;;;;;;;;;;913:13;905:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;986:4;971;:12;976:6;971:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;845:153:::0;:::o;3958:149:1:-;4047:7;4073:11;:18;4085:5;4073:18;;;;;;;;;;;;;;;:27;4092:7;4073:27;;;;;;;;;;;;;;;;4066:34;;3958:149;;;;:::o;1912:198:4:-;1253:12;:10;:12::i;:::-;1242:23;;:7;:5;:7::i;:::-;:23;;;1234:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2020:1:::1;2000:22;;:8;:22;;;;1992:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2075:28;2094:8;2075:18;:28::i;:::-;1912:198:::0;:::o;640:96:0:-;693:7;719:10;712:17;;640:96;:::o;10105:370:1:-;10253:1;10236:19;;:5;:19;;;;10228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10333:1;10314:21;;:7;:21;;;;10306:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10415:6;10385:11;:18;10397:5;10385:18;;;;;;;;;;;;;;;:27;10404:7;10385:27;;;;;;;;;;;;;;;:36;;;;10452:7;10436:32;;10445:5;10436:32;;;10461:6;10436:32;;;;;;:::i;:::-;;;;;;;;10105:370;;;:::o;10752:441::-;10882:24;10909:25;10919:5;10926:7;10909:9;:25::i;:::-;10882:52;;10968:17;10948:16;:37;10944:243;;11029:6;11009:16;:26;;11001:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11111:51;11120:5;11127:7;11155:6;11136:16;:25;11111:8;:51::i;:::-;10944:243;10752:441;;;;:::o;1004:1452:6:-;1147:1;1131:18;;:4;:18;;;;1123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1223:1;1209:16;;:2;:16;;;;1201:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;1275:15;1293:12;1275:30;;1319:8;;;;;;;;;;;1316:88;;;1351:12;1343:5;:20;;;;1388:5;1377:8;;:16;;;;;;;;;;;;;;;;;;1316:88;1427:14;1437:3;;1427:5;;:9;;:14;;;;:::i;:::-;1416:7;:25;;:44;;;;;1453:7;:5;:7::i;:::-;1445:15;;:4;:15;;;;1416:44;:61;;;;;1470:7;:5;:7::i;:::-;1464:13;;:2;:13;;;;1416:61;1413:1037;;;1492:12;1507:22;1525:3;1507:13;1518:1;1507:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;1492:37;;1542:31;1558:4;1564:2;1568:4;1542:15;:31::i;:::-;1586:54;1602:4;1616;1623:16;1634:4;1623:6;:10;;:16;;;;:::i;:::-;1586:15;:54::i;:::-;1653:46;1667:4;1674:24;1692:4;1674:9;:24::i;:::-;1653:5;:46::i;:::-;1413:1037;;;;1744:14;;1726:15;:32;:51;;;;;1770:7;:5;:7::i;:::-;1762:15;;:4;:15;;;;1726:51;:68;;;;;1787:7;:5;:7::i;:::-;1781:13;;:2;:13;;;;1726:68;:80;;;;;1798:4;:8;1803:2;1798:8;;;;;;;;;;;;;;;;;;;;;;;;;1726:80;1723:727;;;1844:14;;1834:6;:24;;1826:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;1924:33;1940:4;1946:2;1950:6;1924:15;:33::i;:::-;1723:727;;;2003:14;;1985:15;:32;:51;;;;;2029:7;:5;:7::i;:::-;2021:15;;:4;:15;;;;1985:51;:68;;;;;2046:7;:5;:7::i;:::-;2040:13;;:2;:13;;;;1985:68;:82;;;;;2057:4;:10;2062:4;2057:10;;;;;;;;;;;;;;;;;;;;;;;;;1985:82;1982:468;;;2087:15;2105:13;2115:2;2105:9;:13::i;:::-;2087:31;;2167:9;;2144:19;2156:6;2144:7;:11;;:19;;;;:::i;:::-;:32;;2136:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;2255:14;;2245:6;:24;;2237:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;2336:33;2352:4;2358:2;2362:6;2336:15;:33::i;:::-;1982:468;;;;2407:33;2423:4;2429:2;2433:6;2407:15;:33::i;:::-;1982:468;1723:727;1413:1037;1004:1452;;;;:::o;9106:576:1:-;9208:1;9189:21;;:7;:21;;;;9181:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:49;9280:7;9297:1;9301:6;9259:20;:49::i;:::-;9319:22;9344:9;:18;9354:7;9344:18;;;;;;;;;;;;;;;;9319:43;;9398:6;9380:14;:24;;9372:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9515:6;9498:14;:23;9477:9;:18;9487:7;9477:18;;;;;;;;;;;;;;;:44;;;;9557:6;9541:12;;:22;;;;;;;:::i;:::-;;;;;;;;9605:1;9579:37;;9588:7;9579:37;;;9609:6;9579:37;;;;;;:::i;:::-;;;;;;;;9627:48;9647:7;9664:1;9668:6;9627:19;:48::i;:::-;9106:576;;;:::o;2264:187:4:-;2337:16;2356:6;;;;;;;;;;;2337:25;;2381:8;2372:6;;:17;;;;;;;;;;;;;;;;;;2435:8;2404:40;;2425:8;2404:40;;;;;;;;;;;;2264:187;;:::o;2741:96:5:-;2799:7;2829:1;2825;:5;;;;:::i;:::-;2818:12;;2741:96;;;;:::o;3451:::-;3509:7;3539:1;3535;:5;;;;:::i;:::-;3528:12;;3451:96;;;;:::o;3836:::-;3894:7;3924:1;3920;:5;;;;:::i;:::-;3913:12;;3836:96;;;;:::o;7470:651:1:-;7612:1;7596:18;;:4;:18;;;;7588:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7688:1;7674:16;;:2;:16;;;;7666:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7741:38;7762:4;7768:2;7772:6;7741:20;:38::i;:::-;7790:19;7812:9;:15;7822:4;7812:15;;;;;;;;;;;;;;;;7790:37;;7860:6;7845:11;:21;;7837:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7975:6;7961:11;:20;7943:9;:15;7953:4;7943:15;;;;;;;;;;;;;;;:38;;;;8018:6;8001:9;:13;8011:2;8001:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8055:2;8040:26;;8049:4;8040:26;;;8059:6;8040:26;;;;;;:::i;:::-;;;;;;;;8077:37;8097:4;8103:2;8107:6;8077:19;:37::i;:::-;7470:651;;;;:::o;3108:96:5:-;3166:7;3196:1;3192;:5;;;;:::i;:::-;3185:12;;3108:96;;;;:::o;11777:121:1:-;;;;:::o;12486:120::-;;;;:::o;7:139:7:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;633:6;641;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;1055:6;1063;1071;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;1604:6;1612;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;2008:6;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;2544:3;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:366::-;2968:3;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3065:93;3154:3;3065:93;:::i;:::-;3183:2;3178:3;3174:12;3167:19;;2972:220;;;:::o;3198:366::-;3340:3;3361:67;3425:2;3420:3;3361:67;:::i;:::-;3354:74;;3437:93;3526:3;3437:93;:::i;:::-;3555:2;3550:3;3546:12;3539:19;;3344:220;;;:::o;3570:366::-;3712:3;3733:67;3797:2;3792:3;3733:67;:::i;:::-;3726:74;;3809:93;3898:3;3809:93;:::i;:::-;3927:2;3922:3;3918:12;3911:19;;3716:220;;;:::o;3942:366::-;4084:3;4105:67;4169:2;4164:3;4105:67;:::i;:::-;4098:74;;4181:93;4270:3;4181:93;:::i;:::-;4299:2;4294:3;4290:12;4283:19;;4088:220;;;:::o;4314:366::-;4456:3;4477:67;4541:2;4536:3;4477:67;:::i;:::-;4470:74;;4553:93;4642:3;4553:93;:::i;:::-;4671:2;4666:3;4662:12;4655:19;;4460:220;;;:::o;4686:366::-;4828:3;4849:67;4913:2;4908:3;4849:67;:::i;:::-;4842:74;;4925:93;5014:3;4925:93;:::i;:::-;5043:2;5038:3;5034:12;5027:19;;4832:220;;;:::o;5058:366::-;5200:3;5221:67;5285:2;5280:3;5221:67;:::i;:::-;5214:74;;5297:93;5386:3;5297:93;:::i;:::-;5415:2;5410:3;5406:12;5399:19;;5204:220;;;:::o;5430:366::-;5572:3;5593:67;5657:2;5652:3;5593:67;:::i;:::-;5586:74;;5669:93;5758:3;5669:93;:::i;:::-;5787:2;5782:3;5778:12;5771:19;;5576:220;;;:::o;5802:366::-;5944:3;5965:67;6029:2;6024:3;5965:67;:::i;:::-;5958:74;;6041:93;6130:3;6041:93;:::i;:::-;6159:2;6154:3;6150:12;6143:19;;5948:220;;;:::o;6174:366::-;6316:3;6337:67;6401:2;6396:3;6337:67;:::i;:::-;6330:74;;6413:93;6502:3;6413:93;:::i;:::-;6531:2;6526:3;6522:12;6515:19;;6320:220;;;:::o;6546:366::-;6688:3;6709:67;6773:2;6768:3;6709:67;:::i;:::-;6702:74;;6785:93;6874:3;6785:93;:::i;:::-;6903:2;6898:3;6894:12;6887:19;;6692:220;;;:::o;6918:366::-;7060:3;7081:67;7145:2;7140:3;7081:67;:::i;:::-;7074:74;;7157:93;7246:3;7157:93;:::i;:::-;7275:2;7270:3;7266:12;7259:19;;7064:220;;;:::o;7290:366::-;7432:3;7453:67;7517:2;7512:3;7453:67;:::i;:::-;7446:74;;7529:93;7618:3;7529:93;:::i;:::-;7647:2;7642:3;7638:12;7631:19;;7436:220;;;:::o;7662:366::-;7804:3;7825:67;7889:2;7884:3;7825:67;:::i;:::-;7818:74;;7901:93;7990:3;7901:93;:::i;:::-;8019:2;8014:3;8010:12;8003:19;;7808:220;;;:::o;8034:118::-;8121:24;8139:5;8121:24;:::i;:::-;8116:3;8109:37;8099:53;;:::o;8158:112::-;8241:22;8257:5;8241:22;:::i;:::-;8236:3;8229:35;8219:51;;:::o;8276:222::-;8369:4;8407:2;8396:9;8392:18;8384:26;;8420:71;8488:1;8477:9;8473:17;8464:6;8420:71;:::i;:::-;8374:124;;;;:::o;8504:210::-;8591:4;8629:2;8618:9;8614:18;8606:26;;8642:65;8704:1;8693:9;8689:17;8680:6;8642:65;:::i;:::-;8596:118;;;;:::o;8720:313::-;8833:4;8871:2;8860:9;8856:18;8848:26;;8920:9;8914:4;8910:20;8906:1;8895:9;8891:17;8884:47;8948:78;9021:4;9012:6;8948:78;:::i;:::-;8940:86;;8838:195;;;;:::o;9039:419::-;9205:4;9243:2;9232:9;9228:18;9220:26;;9292:9;9286:4;9282:20;9278:1;9267:9;9263:17;9256:47;9320:131;9446:4;9320:131;:::i;:::-;9312:139;;9210:248;;;:::o;9464:419::-;9630:4;9668:2;9657:9;9653:18;9645:26;;9717:9;9711:4;9707:20;9703:1;9692:9;9688:17;9681:47;9745:131;9871:4;9745:131;:::i;:::-;9737:139;;9635:248;;;:::o;9889:419::-;10055:4;10093:2;10082:9;10078:18;10070:26;;10142:9;10136:4;10132:20;10128:1;10117:9;10113:17;10106:47;10170:131;10296:4;10170:131;:::i;:::-;10162:139;;10060:248;;;:::o;10314:419::-;10480:4;10518:2;10507:9;10503:18;10495:26;;10567:9;10561:4;10557:20;10553:1;10542:9;10538:17;10531:47;10595:131;10721:4;10595:131;:::i;:::-;10587:139;;10485:248;;;:::o;10739:419::-;10905:4;10943:2;10932:9;10928:18;10920:26;;10992:9;10986:4;10982:20;10978:1;10967:9;10963:17;10956:47;11020:131;11146:4;11020:131;:::i;:::-;11012:139;;10910:248;;;:::o;11164:419::-;11330:4;11368:2;11357:9;11353:18;11345:26;;11417:9;11411:4;11407:20;11403:1;11392:9;11388:17;11381:47;11445:131;11571:4;11445:131;:::i;:::-;11437:139;;11335:248;;;:::o;11589:419::-;11755:4;11793:2;11782:9;11778:18;11770:26;;11842:9;11836:4;11832:20;11828:1;11817:9;11813:17;11806:47;11870:131;11996:4;11870:131;:::i;:::-;11862:139;;11760:248;;;:::o;12014:419::-;12180:4;12218:2;12207:9;12203:18;12195:26;;12267:9;12261:4;12257:20;12253:1;12242:9;12238:17;12231:47;12295:131;12421:4;12295:131;:::i;:::-;12287:139;;12185:248;;;:::o;12439:419::-;12605:4;12643:2;12632:9;12628:18;12620:26;;12692:9;12686:4;12682:20;12678:1;12667:9;12663:17;12656:47;12720:131;12846:4;12720:131;:::i;:::-;12712:139;;12610:248;;;:::o;12864:419::-;13030:4;13068:2;13057:9;13053:18;13045:26;;13117:9;13111:4;13107:20;13103:1;13092:9;13088:17;13081:47;13145:131;13271:4;13145:131;:::i;:::-;13137:139;;13035:248;;;:::o;13289:419::-;13455:4;13493:2;13482:9;13478:18;13470:26;;13542:9;13536:4;13532:20;13528:1;13517:9;13513:17;13506:47;13570:131;13696:4;13570:131;:::i;:::-;13562:139;;13460:248;;;:::o;13714:419::-;13880:4;13918:2;13907:9;13903:18;13895:26;;13967:9;13961:4;13957:20;13953:1;13942:9;13938:17;13931:47;13995:131;14121:4;13995:131;:::i;:::-;13987:139;;13885:248;;;:::o;14139:419::-;14305:4;14343:2;14332:9;14328:18;14320:26;;14392:9;14386:4;14382:20;14378:1;14367:9;14363:17;14356:47;14420:131;14546:4;14420:131;:::i;:::-;14412:139;;14310:248;;;:::o;14564:419::-;14730:4;14768:2;14757:9;14753:18;14745:26;;14817:9;14811:4;14807:20;14803:1;14792:9;14788:17;14781:47;14845:131;14971:4;14845:131;:::i;:::-;14837:139;;14735:248;;;:::o;14989:222::-;15082:4;15120:2;15109:9;15105:18;15097:26;;15133:71;15201:1;15190:9;15186:17;15177:6;15133:71;:::i;:::-;15087:124;;;;:::o;15217:214::-;15306:4;15344:2;15333:9;15329:18;15321:26;;15357:67;15421:1;15410:9;15406:17;15397:6;15357:67;:::i;:::-;15311:120;;;;:::o;15437:99::-;15489:6;15523:5;15517:12;15507:22;;15496:40;;;:::o;15542:169::-;15626:11;15660:6;15655:3;15648:19;15700:4;15695:3;15691:14;15676:29;;15638:73;;;;:::o;15717:305::-;15757:3;15776:20;15794:1;15776:20;:::i;:::-;15771:25;;15810:20;15828:1;15810:20;:::i;:::-;15805:25;;15964:1;15896:66;15892:74;15889:1;15886:81;15883:2;;;15970:18;;:::i;:::-;15883:2;16014:1;16011;16007:9;16000:16;;15761:261;;;;:::o;16028:185::-;16068:1;16085:20;16103:1;16085:20;:::i;:::-;16080:25;;16119:20;16137:1;16119:20;:::i;:::-;16114:25;;16158:1;16148:2;;16163:18;;:::i;:::-;16148:2;16205:1;16202;16198:9;16193:14;;16070:143;;;;:::o;16219:848::-;16280:5;16287:4;16311:6;16302:15;;16335:5;16326:14;;16349:712;16370:1;16360:8;16357:15;16349:712;;;16465:4;16460:3;16456:14;16450:4;16447:24;16444:2;;;16474:18;;:::i;:::-;16444:2;16524:1;16514:8;16510:16;16507:2;;;16939:4;16932:5;16928:16;16919:25;;16507:2;16989:4;16983;16979:15;16971:23;;17019:32;17042:8;17019:32;:::i;:::-;17007:44;;16349:712;;;16292:775;;;;;;;:::o;17073:281::-;17131:5;17155:23;17173:4;17155:23;:::i;:::-;17147:31;;17199:25;17215:8;17199:25;:::i;:::-;17187:37;;17243:104;17280:66;17270:8;17264:4;17243:104;:::i;:::-;17234:113;;17137:217;;;;:::o;17360:1073::-;17414:5;17605:8;17595:2;;17626:1;17617:10;;17628:5;;17595:2;17654:4;17644:2;;17671:1;17662:10;;17673:5;;17644:2;17740:4;17788:1;17783:27;;;;17824:1;17819:191;;;;17733:277;;17783:27;17801:1;17792:10;;17803:5;;;17819:191;17864:3;17854:8;17851:17;17848:2;;;17871:18;;:::i;:::-;17848:2;17920:8;17917:1;17913:16;17904:25;;17955:3;17948:5;17945:14;17942:2;;;17962:18;;:::i;:::-;17942:2;17995:5;;;17733:277;;18119:2;18109:8;18106:16;18100:3;18094:4;18091:13;18087:36;18069:2;18059:8;18056:16;18051:2;18045:4;18042:12;18038:35;18022:111;18019:2;;;18175:8;18169:4;18165:19;18156:28;;18210:3;18203:5;18200:14;18197:2;;;18217:18;;:::i;:::-;18197:2;18250:5;;18019:2;18290:42;18328:3;18318:8;18312:4;18309:1;18290:42;:::i;:::-;18275:57;;;;18364:4;18359:3;18355:14;18348:5;18345:25;18342:2;;;18373:18;;:::i;:::-;18342:2;18422:4;18415:5;18411:16;18402:25;;17420:1013;;;;;;:::o;18439:348::-;18479:7;18502:20;18520:1;18502:20;:::i;:::-;18497:25;;18536:20;18554:1;18536:20;:::i;:::-;18531:25;;18724:1;18656:66;18652:74;18649:1;18646:81;18641:1;18634:9;18627:17;18623:105;18620:2;;;18731:18;;:::i;:::-;18620:2;18779:1;18776;18772:9;18761:20;;18487:300;;;;:::o;18793:191::-;18833:4;18853:20;18871:1;18853:20;:::i;:::-;18848:25;;18887:20;18905:1;18887:20;:::i;:::-;18882:25;;18926:1;18923;18920:8;18917:2;;;18931:18;;:::i;:::-;18917:2;18976:1;18973;18969:9;18961:17;;18838:146;;;;:::o;18990:96::-;19027:7;19056:24;19074:5;19056:24;:::i;:::-;19045:35;;19035:51;;;:::o;19092:90::-;19126:7;19169:5;19162:13;19155:21;19144:32;;19134:48;;;:::o;19188:126::-;19225:7;19265:42;19258:5;19254:54;19243:65;;19233:81;;;:::o;19320:77::-;19357:7;19386:5;19375:16;;19365:32;;;:::o;19403:86::-;19438:7;19478:4;19471:5;19467:16;19456:27;;19446:43;;;:::o;19495:307::-;19563:1;19573:113;19587:6;19584:1;19581:13;19573:113;;;19672:1;19667:3;19663:11;19657:18;19653:1;19648:3;19644:11;19637:39;19609:2;19606:1;19602:10;19597:15;;19573:113;;;19704:6;19701:1;19698:13;19695:2;;;19784:1;19775:6;19770:3;19766:16;19759:27;19695:2;19544:258;;;;:::o;19808:320::-;19852:6;19889:1;19883:4;19879:12;19869:22;;19936:1;19930:4;19926:12;19957:18;19947:2;;20013:4;20005:6;20001:17;19991:27;;19947:2;20075;20067:6;20064:14;20044:18;20041:38;20038:2;;;20094:18;;:::i;:::-;20038:2;19859:269;;;;:::o;20134:180::-;20182:77;20179:1;20172:88;20279:4;20276:1;20269:15;20303:4;20300:1;20293:15;20320:180;20368:77;20365:1;20358:88;20465:4;20462:1;20455:15;20489:4;20486:1;20479:15;20506:180;20554:77;20551:1;20544:88;20651:4;20648:1;20641:15;20675:4;20672:1;20665:15;20692:102;20733:6;20784:2;20780:7;20775:2;20768:5;20764:14;20760:28;20750:38;;20740:54;;;:::o;20800:102::-;20842:8;20889:5;20886:1;20882:13;20861:34;;20851:51;;;:::o;20908:222::-;21048:34;21044:1;21036:6;21032:14;21025:58;21117:5;21112:2;21104:6;21100:15;21093:30;21014:116;:::o;21136:221::-;21276:34;21272:1;21264:6;21260:14;21253:58;21345:4;21340:2;21332:6;21328:15;21321:29;21242:115;:::o;21363:179::-;21503:31;21499:1;21491:6;21487:14;21480:55;21469:73;:::o;21548:225::-;21688:34;21684:1;21676:6;21672:14;21665:58;21757:8;21752:2;21744:6;21740:15;21733:33;21654:119;:::o;21779:221::-;21919:34;21915:1;21907:6;21903:14;21896:58;21988:4;21983:2;21975:6;21971:15;21964:29;21885:115;:::o;22006:179::-;22146:31;22142:1;22134:6;22130:14;22123:55;22112:73;:::o;22191:225::-;22331:34;22327:1;22319:6;22315:14;22308:58;22400:8;22395:2;22387:6;22383:15;22376:33;22297:119;:::o;22422:230::-;22562:34;22558:1;22550:6;22546:14;22539:58;22631:13;22626:2;22618:6;22614:15;22607:38;22528:124;:::o;22658:182::-;22798:34;22794:1;22786:6;22782:14;22775:58;22764:76;:::o;22846:225::-;22986:34;22982:1;22974:6;22970:14;22963:58;23055:8;23050:2;23042:6;23038:15;23031:33;22952:119;:::o;23077:220::-;23217:34;23213:1;23205:6;23201:14;23194:58;23286:3;23281:2;23273:6;23269:15;23262:28;23183:114;:::o;23303:224::-;23443:34;23439:1;23431:6;23427:14;23420:58;23512:7;23507:2;23499:6;23495:15;23488:32;23409:118;:::o;23533:223::-;23673:34;23669:1;23661:6;23657:14;23650:58;23742:6;23737:2;23729:6;23725:15;23718:31;23639:117;:::o;23762:224::-;23902:34;23898:1;23890:6;23886:14;23879:58;23971:7;23966:2;23958:6;23954:15;23947:32;23868:118;:::o;23992:122::-;24065:24;24083:5;24065:24;:::i;:::-;24058:5;24055:35;24045:2;;24104:1;24101;24094:12;24045:2;24035:79;:::o;24120:122::-;24193:24;24211:5;24193:24;:::i;:::-;24186:5;24183:35;24173:2;;24232:1;24229;24222:12;24173:2;24163:79;:::o

Swarm Source

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