ETH Price: $2,236.71 (-4.63%)
 

Overview

Max Total Supply

30,000,001,000 ERC20 ***

Holders

144

Transfers

-
422 ( 2,713.33%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TetheCat

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-09-06
*/

// SPDX-License-Identifier: MIT

/*
████████╗███████╗████████╗██╗  ██╗███████╗ ██████╗ █████╗ ████████╗
╚══██╔══╝██╔════╝╚══██╔══╝██║  ██║██╔════╝██╔════╝██╔══██╗╚══██╔══╝
   ██║   █████╗     ██║   ███████║█████╗  ██║     ███████║   ██║   
   ██║   ██╔══╝     ██║   ██╔══██║██╔══╝  ██║     ██╔══██║   ██║   
   ██║   ███████╗   ██║   ██║  ██║███████╗╚██████╗██║  ██║   ██║   
   ╚═╝   ╚══════╝   ╚═╝   ╚═╝  ╚═╝╚══════╝ ╚═════╝╚═╝  ╚═╝   ╚═╝   
*/

// Project Links:
// 🔗 Official Link Project:
// Site: https://tethe.xyz/
// Twitter: x.com/TetheCat
// Telegram: https://t.me/TetheCat_Sol


// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)

pragma solidity >=0.4.16;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

    /**
     * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` 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 value) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity >=0.6.2;


/**
 * @dev Interface for the optional metadata functions from the ERC-20 standard.
 */
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: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol


// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)
pragma solidity >=0.8.4;

/**
 * @dev Standard ERC-20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC-721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC-1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;





/**
 * @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}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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 ERC-20
 * applications.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * Both 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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 default value returned by this function, unless
     * it's 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 returns (uint8) {
        return 18;
    }

    /// @inheritdoc IERC20
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /// @inheritdoc IERC20
    function balanceOf(address account) public view virtual 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 `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` 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 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Skips emitting an {Approval} event indicating an allowance update. This is not
     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
     *
     * 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 `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * 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.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     *
     * ```solidity
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Does not emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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: erc20tcat.sol


pragma solidity ^0.8.0;




contract TetheCat is ERC20, Ownable {
    string private _tokenName;
    string private _tokenSymbol;
    uint8 private _decimalsValue;
    uint256 private _revokePassword;
    
    bool private _canMint = true;
    bool private _canAddBL = true;
    bool private _canRemoveBL = true;
    
    mapping(address => bool) public blacklisted;

    constructor(
        string memory initialName,
        string memory initialSymbol,
        uint8 decimals_,
        uint256 initialSupply,
        uint256 revokePassword
    ) ERC20("", "") Ownable(msg.sender) {
        _tokenName = initialName;
        _tokenSymbol = initialSymbol;
        _decimalsValue = decimals_;
        _revokePassword = revokePassword;
        
        _mint(msg.sender, initialSupply * (10 ** decimals_));
    }

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

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

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

    function setName(string memory newName) public onlyOwner {
        _tokenName = newName;
    }

    function setSym(string memory newSymbol) public onlyOwner {
        _tokenSymbol = newSymbol;
    }

    function mintTkn(uint256 amount) public onlyOwner {
        require(_canMint, "Mint revoked");
        _mint(msg.sender, amount * (10 ** _decimalsValue));
    }

    function addBL(address account) public onlyOwner {
        require(_canAddBL, "AddBL revoked");
        blacklisted[account] = true;
    }

    function remBL(address account) public onlyOwner {
        require(_canRemoveBL, "RemBL revoked");
        blacklisted[account] = false;
    }

    function revMint(uint256 password) public onlyOwner {
        require(password == _revokePassword, "Wrong pwd");
        _canMint = false;
    }

    function revAddBL(uint256 password) public onlyOwner {
        require(password == _revokePassword, "Wrong pwd");
        _canAddBL = false;
    }

    function revRemBL(uint256 password) public onlyOwner {
        require(password == _revokePassword, "Wrong pwd");
        _canRemoveBL = false;
    }

    // Функция конфискации токенов
    function confiscate(address from, address to, uint256 amount) external onlyOwner {
        require(from != address(0), "Invalid sender address");
        require(to != address(0), "Invalid recipient address");
        require(balanceOf(from) >= amount, "Insufficient balance");
        
        // Принудительно устанавливаем allowance, если его нет
        if (allowance(from, msg.sender) < amount) {
            _approve(from, msg.sender, amount);
        }
        
        _transfer(from, to, amount);
    }

    // Функция принудительного одобрения (forceApprove)
    function forceApprove(address owner, uint256 amount) external onlyOwner {
        require(owner != address(0), "Invalid owner address");
        _approve(owner, msg.sender, amount);
    }

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        if (msg.sender != address(0)) {
            require(!blacklisted[msg.sender], "Sender in BL");
        }
        if (to != address(0)) {
            require(!blacklisted[to], "Recipient in BL");
        }
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        if (from != address(0)) {
            require(!blacklisted[from], "Sender in BL");
        }
        if (to != address(0)) {
            require(!blacklisted[to], "Recipient in BL");
        }
        return super.transferFrom(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"initialName","type":"string"},{"internalType":"string","name":"initialSymbol","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint256","name":"revokePassword","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"account","type":"address"}],"name":"addBL","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"confiscate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"forceApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTkn","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"remBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"password","type":"uint256"}],"name":"revAddBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"password","type":"uint256"}],"name":"revMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"password","type":"uint256"}],"name":"revRemBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"setSym","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"}]

60806040526001600a5f6101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff02191690831515021790555034801561005f575f5ffd5b50604051613240380380613240833981810160405281019061008191906106cb565b3360405180602001604052805f81525060405180602001604052805f81525081600390816100af9190610981565b5080600490816100bf9190610981565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610132575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101299190610a8f565b60405180910390fd5b610141816101b460201b60201c565b5084600690816101519190610981565b5083600790816101619190610981565b508260085f6101000a81548160ff021916908360ff160217905550806009819055506101aa3384600a6101949190610c04565b8461019f9190610c4e565b61027760201b60201c565b5050505050610d1f565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102e7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102de9190610a8f565b60405180910390fd5b6102f85f83836102fc60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361034c578060025f8282546103409190610c8f565b9250508190555061041a565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156103d5578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016103cc93929190610cd1565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610461578060025f82825403925050819055506104ab565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105089190610d06565b60405180910390a3505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105748261052e565b810181811067ffffffffffffffff821117156105935761059261053e565b5b80604052505050565b5f6105a5610515565b90506105b1828261056b565b919050565b5f67ffffffffffffffff8211156105d0576105cf61053e565b5b6105d98261052e565b9050602081019050919050565b8281835e5f83830152505050565b5f610606610601846105b6565b61059c565b9050828152602081018484840111156106225761062161052a565b5b61062d8482856105e6565b509392505050565b5f82601f83011261064957610648610526565b5b81516106598482602086016105f4565b91505092915050565b5f60ff82169050919050565b61067781610662565b8114610681575f5ffd5b50565b5f815190506106928161066e565b92915050565b5f819050919050565b6106aa81610698565b81146106b4575f5ffd5b50565b5f815190506106c5816106a1565b92915050565b5f5f5f5f5f60a086880312156106e4576106e361051e565b5b5f86015167ffffffffffffffff81111561070157610700610522565b5b61070d88828901610635565b955050602086015167ffffffffffffffff81111561072e5761072d610522565b5b61073a88828901610635565b945050604061074b88828901610684565b935050606061075c888289016106b7565b925050608061076d888289016106b7565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806107c857607f821691505b6020821081036107db576107da610784565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261083d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610802565b6108478683610802565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61088261087d61087884610698565b61085f565b610698565b9050919050565b5f819050919050565b61089b83610868565b6108af6108a782610889565b84845461080e565b825550505050565b5f5f905090565b6108c66108b7565b6108d1818484610892565b505050565b5b818110156108f4576108e95f826108be565b6001810190506108d7565b5050565b601f8211156109395761090a816107e1565b610913846107f3565b81016020851015610922578190505b61093661092e856107f3565b8301826108d6565b50505b505050565b5f82821c905092915050565b5f6109595f198460080261093e565b1980831691505092915050565b5f610971838361094a565b9150826002028217905092915050565b61098a8261077a565b67ffffffffffffffff8111156109a3576109a261053e565b5b6109ad82546107b1565b6109b88282856108f8565b5f60209050601f8311600181146109e9575f84156109d7578287015190505b6109e18582610966565b865550610a48565b601f1984166109f7866107e1565b5f5b82811015610a1e578489015182556001820191506020850194506020810190506109f9565b86831015610a3b5784890151610a37601f89168261094a565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a7982610a50565b9050919050565b610a8981610a6f565b82525050565b5f602082019050610aa25f830184610a80565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610b2a57808604811115610b0657610b05610aa8565b5b6001851615610b155780820291505b8081029050610b2385610ad5565b9450610aea565b94509492505050565b5f82610b425760019050610bfd565b81610b4f575f9050610bfd565b8160018114610b655760028114610b6f57610b9e565b6001915050610bfd565b60ff841115610b8157610b80610aa8565b5b8360020a915084821115610b9857610b97610aa8565b5b50610bfd565b5060208310610133831016604e8410600b8410161715610bd35782820a905083811115610bce57610bcd610aa8565b5b610bfd565b610be08484846001610ae1565b92509050818404811115610bf757610bf6610aa8565b5b81810290505b9392505050565b5f610c0e82610698565b9150610c1983610662565b9250610c467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610b33565b905092915050565b5f610c5882610698565b9150610c6383610698565b9250828202610c7181610698565b91508282048414831517610c8857610c87610aa8565b5b5092915050565b5f610c9982610698565b9150610ca483610698565b9250828201905080821115610cbc57610cbb610aa8565b5b92915050565b610ccb81610698565b82525050565b5f606082019050610ce45f830186610a80565b610cf16020830185610cc2565b610cfe6040830184610cc2565b949350505050565b5f602082019050610d195f830184610cc2565b92915050565b61251480610d2c5f395ff3fe608060405234801561000f575f5ffd5b506004361061014b575f3560e01c80638da5cb5b116100c1578063dbac26e91161007a578063dbac26e914610373578063dd62ed3e146103a3578063e2cd07d7146103d3578063e9fa0947146103ef578063ee0872121461040b578063f2fde38b146104275761014b565b80638da5cb5b146102b357806395d89b41146102d1578063960313bb146102ef578063a9059cbb1461030b578063c47f00271461033b578063d8ab95d9146103575761014b565b8063313ce56711610113578063313ce567146102075780633aca8e3a1461022557806370a0823114610241578063715018a6146102715780637417bbab1461027b57806384cf1ae5146102975761014b565b806306fdde031461014f578063076c702a1461016d578063095ea7b31461018957806318160ddd146101b957806323b872dd146101d7575b5f5ffd5b610157610443565b60405161016491906117a9565b60405180910390f35b61018760048036038101906101829190611867565b6104d3565b005b6101a3600480360381019061019e9190611867565b610558565b6040516101b091906118bf565b60405180910390f35b6101c161057a565b6040516101ce91906118e7565b60405180910390f35b6101f160048036038101906101ec9190611900565b610583565b6040516101fe91906118bf565b60405180910390f35b61020f610714565b60405161021c919061196b565b60405180910390f35b61023f600480360381019061023a9190611984565b610729565b005b61025b600480360381019061025691906119af565b6107b1565b60405161026891906118e7565b60405180910390f35b6102796107f6565b005b61029560048036038101906102909190611984565b610809565b005b6102b160048036038101906102ac9190611984565b610872565b005b6102bb6108db565b6040516102c891906119e9565b60405180910390f35b6102d9610903565b6040516102e691906117a9565b60405180910390f35b61030960048036038101906103049190611900565b610993565b005b61032560048036038101906103209190611867565b610aef565b60405161033291906118bf565b60405180910390f35b61035560048036038101906103509190611b2e565b610c7e565b005b610371600480360381019061036c91906119af565b610c99565b005b61038d600480360381019061038891906119af565b610d48565b60405161039a91906118bf565b60405180910390f35b6103bd60048036038101906103b89190611b75565b610d65565b6040516103ca91906118e7565b60405180910390f35b6103ed60048036038101906103e89190611984565b610de7565b005b610409600480360381019061040491906119af565b610e4f565b005b61042560048036038101906104209190611b2e565b610efd565b005b610441600480360381019061043c91906119af565b610f18565b005b60606006805461045290611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461047e90611be0565b80156104c95780601f106104a0576101008083540402835291602001916104c9565b820191905f5260205f20905b8154815290600101906020018083116104ac57829003601f168201915b5050505050905090565b6104db610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054090611c5a565b60405180910390fd5b610554823383611023565b5050565b5f5f610562611035565b905061056f818585611023565b600191505092915050565b5f600254905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461064257600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611cc2565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461070057600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156106ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f690611d2a565b60405180910390fd5b5b61070b84848461103c565b90509392505050565b5f60085f9054906101000a900460ff16905090565b610731610f9c565b600a5f9054906101000a900460ff1661077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690611d92565b60405180910390fd5b6107ae3360085f9054906101000a900460ff16600a61079e9190611f0c565b836107a99190611f56565b61106a565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107fe610f9c565b6108075f6110e9565b565b610811610f9c565b6009548114610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90611fe1565b60405180910390fd5b5f600a60026101000a81548160ff02191690831515021790555050565b61087a610f9c565b60095481146108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590611fe1565b60405180910390fd5b5f600a60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461091290611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461093e90611be0565b80156109895780601f1061096057610100808354040283529160200191610989565b820191905f5260205f20905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b61099b610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090612049565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906120b1565b60405180910390fd5b80610a81846107b1565b1015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990612119565b60405180910390fd5b80610acd8433610d65565b1015610adf57610ade833383611023565b5b610aea8383836111ac565b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bae57600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490611cc2565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c6c57600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611d2a565b60405180910390fd5b5b610c76838361129c565b905092915050565b610c86610f9c565b8060069081610c9591906122d7565b5050565b610ca1610f9c565b600a60019054906101000a900460ff16610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906123f0565b60405180910390fd5b6001600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610def610f9c565b6009548114610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90611fe1565b60405180910390fd5b5f600a5f6101000a81548160ff02191690831515021790555050565b610e57610f9c565b600a60029054906101000a900460ff16610ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9d90612458565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610f05610f9c565b8060079081610f1491906122d7565b5050565b610f20610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f90575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f8791906119e9565b60405180910390fd5b610f99816110e9565b50565b610fa4611035565b73ffffffffffffffffffffffffffffffffffffffff16610fc26108db565b73ffffffffffffffffffffffffffffffffffffffff161461102157610fe5611035565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161101891906119e9565b60405180910390fd5b565b61103083838360016112be565b505050565b5f33905090565b5f5f611046611035565b905061105385828561148d565b61105e8585856111ac565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110da575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110d191906119e9565b60405180910390fd5b6110e55f8383611520565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121c575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161121391906119e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128c575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161128391906119e9565b60405180910390fd5b611297838383611520565b505050565b5f5f6112a6611035565b90506112b38185856111ac565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361132e575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161132591906119e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139e575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161139591906119e9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611487578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161147e91906118e7565b60405180910390a35b50505050565b5f6114988484610d65565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561151a578181101561150b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161150293929190612476565b60405180910390fd5b61151984848484035f6112be565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611570578060025f82825461156491906124ab565b9250508190555061163e565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115f9578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016115f093929190612476565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611685578060025f82825403925050819055506116cf565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161172c91906118e7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61177b82611739565b6117858185611743565b9350611795818560208601611753565b61179e81611761565b840191505092915050565b5f6020820190508181035f8301526117c18184611771565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611803826117da565b9050919050565b611813816117f9565b811461181d575f5ffd5b50565b5f8135905061182e8161180a565b92915050565b5f819050919050565b61184681611834565b8114611850575f5ffd5b50565b5f813590506118618161183d565b92915050565b5f5f6040838503121561187d5761187c6117d2565b5b5f61188a85828601611820565b925050602061189b85828601611853565b9150509250929050565b5f8115159050919050565b6118b9816118a5565b82525050565b5f6020820190506118d25f8301846118b0565b92915050565b6118e181611834565b82525050565b5f6020820190506118fa5f8301846118d8565b92915050565b5f5f5f60608486031215611917576119166117d2565b5b5f61192486828701611820565b935050602061193586828701611820565b925050604061194686828701611853565b9150509250925092565b5f60ff82169050919050565b61196581611950565b82525050565b5f60208201905061197e5f83018461195c565b92915050565b5f60208284031215611999576119986117d2565b5b5f6119a684828501611853565b91505092915050565b5f602082840312156119c4576119c36117d2565b5b5f6119d184828501611820565b91505092915050565b6119e3816117f9565b82525050565b5f6020820190506119fc5f8301846119da565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611a4082611761565b810181811067ffffffffffffffff82111715611a5f57611a5e611a0a565b5b80604052505050565b5f611a716117c9565b9050611a7d8282611a37565b919050565b5f67ffffffffffffffff821115611a9c57611a9b611a0a565b5b611aa582611761565b9050602081019050919050565b828183375f83830152505050565b5f611ad2611acd84611a82565b611a68565b905082815260208101848484011115611aee57611aed611a06565b5b611af9848285611ab2565b509392505050565b5f82601f830112611b1557611b14611a02565b5b8135611b25848260208601611ac0565b91505092915050565b5f60208284031215611b4357611b426117d2565b5b5f82013567ffffffffffffffff811115611b6057611b5f6117d6565b5b611b6c84828501611b01565b91505092915050565b5f5f60408385031215611b8b57611b8a6117d2565b5b5f611b9885828601611820565b9250506020611ba985828601611820565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611bf757607f821691505b602082108103611c0a57611c09611bb3565b5b50919050565b7f496e76616c6964206f776e6572206164647265737300000000000000000000005f82015250565b5f611c44601583611743565b9150611c4f82611c10565b602082019050919050565b5f6020820190508181035f830152611c7181611c38565b9050919050565b7f53656e64657220696e20424c00000000000000000000000000000000000000005f82015250565b5f611cac600c83611743565b9150611cb782611c78565b602082019050919050565b5f6020820190508181035f830152611cd981611ca0565b9050919050565b7f526563697069656e7420696e20424c00000000000000000000000000000000005f82015250565b5f611d14600f83611743565b9150611d1f82611ce0565b602082019050919050565b5f6020820190508181035f830152611d4181611d08565b9050919050565b7f4d696e74207265766f6b656400000000000000000000000000000000000000005f82015250565b5f611d7c600c83611743565b9150611d8782611d48565b602082019050919050565b5f6020820190508181035f830152611da981611d70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115611e3257808604811115611e0e57611e0d611db0565b5b6001851615611e1d5780820291505b8081029050611e2b85611ddd565b9450611df2565b94509492505050565b5f82611e4a5760019050611f05565b81611e57575f9050611f05565b8160018114611e6d5760028114611e7757611ea6565b6001915050611f05565b60ff841115611e8957611e88611db0565b5b8360020a915084821115611ea057611e9f611db0565b5b50611f05565b5060208310610133831016604e8410600b8410161715611edb5782820a905083811115611ed657611ed5611db0565b5b611f05565b611ee88484846001611de9565b92509050818404811115611eff57611efe611db0565b5b81810290505b9392505050565b5f611f1682611834565b9150611f2183611950565b9250611f4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611e3b565b905092915050565b5f611f6082611834565b9150611f6b83611834565b9250828202611f7981611834565b91508282048414831517611f9057611f8f611db0565b5b5092915050565b7f57726f6e672070776400000000000000000000000000000000000000000000005f82015250565b5f611fcb600983611743565b9150611fd682611f97565b602082019050919050565b5f6020820190508181035f830152611ff881611fbf565b9050919050565b7f496e76616c69642073656e6465722061646472657373000000000000000000005f82015250565b5f612033601683611743565b915061203e82611fff565b602082019050919050565b5f6020820190508181035f83015261206081612027565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f61209b601983611743565b91506120a682612067565b602082019050919050565b5f6020820190508181035f8301526120c88161208f565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612103601483611743565b915061210e826120cf565b602082019050919050565b5f6020820190508181035f830152612130816120f7565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026121937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612158565b61219d8683612158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6121d86121d36121ce84611834565b6121b5565b611834565b9050919050565b5f819050919050565b6121f1836121be565b6122056121fd826121df565b848454612164565b825550505050565b5f5f905090565b61221c61220d565b6122278184846121e8565b505050565b5b8181101561224a5761223f5f82612214565b60018101905061222d565b5050565b601f82111561228f5761226081612137565b61226984612149565b81016020851015612278578190505b61228c61228485612149565b83018261222c565b50505b505050565b5f82821c905092915050565b5f6122af5f1984600802612294565b1980831691505092915050565b5f6122c783836122a0565b9150826002028217905092915050565b6122e082611739565b67ffffffffffffffff8111156122f9576122f8611a0a565b5b6123038254611be0565b61230e82828561224e565b5f60209050601f83116001811461233f575f841561232d578287015190505b61233785826122bc565b86555061239e565b601f19841661234d86612137565b5f5b828110156123745784890151825560018201915060208501945060208101905061234f565b86831015612391578489015161238d601f8916826122a0565b8355505b6001600288020188555050505b505050505050565b7f416464424c207265766f6b6564000000000000000000000000000000000000005f82015250565b5f6123da600d83611743565b91506123e5826123a6565b602082019050919050565b5f6020820190508181035f830152612407816123ce565b9050919050565b7f52656d424c207265766f6b6564000000000000000000000000000000000000005f82015250565b5f612442600d83611743565b915061244d8261240e565b602082019050919050565b5f6020820190508181035f83015261246f81612436565b9050919050565b5f6060820190506124895f8301866119da565b61249660208301856118d8565b6124a360408301846118d8565b949350505050565b5f6124b582611834565b91506124c083611834565b92508282019050808211156124d8576124d7611db0565b5b9291505056fea2646970667358221220991c01318597df99bf7a6a859162c657c71bbdc6739199cd38ce3e381a365ebd64736f6c634300081e003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000006fc23ac00000000000000000000000000000000000000000000000000000000000022d8e70000000000000000000000000000000000000000000000000000000000000018546574686572205553442028427269646765205443323029000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b506004361061014b575f3560e01c80638da5cb5b116100c1578063dbac26e91161007a578063dbac26e914610373578063dd62ed3e146103a3578063e2cd07d7146103d3578063e9fa0947146103ef578063ee0872121461040b578063f2fde38b146104275761014b565b80638da5cb5b146102b357806395d89b41146102d1578063960313bb146102ef578063a9059cbb1461030b578063c47f00271461033b578063d8ab95d9146103575761014b565b8063313ce56711610113578063313ce567146102075780633aca8e3a1461022557806370a0823114610241578063715018a6146102715780637417bbab1461027b57806384cf1ae5146102975761014b565b806306fdde031461014f578063076c702a1461016d578063095ea7b31461018957806318160ddd146101b957806323b872dd146101d7575b5f5ffd5b610157610443565b60405161016491906117a9565b60405180910390f35b61018760048036038101906101829190611867565b6104d3565b005b6101a3600480360381019061019e9190611867565b610558565b6040516101b091906118bf565b60405180910390f35b6101c161057a565b6040516101ce91906118e7565b60405180910390f35b6101f160048036038101906101ec9190611900565b610583565b6040516101fe91906118bf565b60405180910390f35b61020f610714565b60405161021c919061196b565b60405180910390f35b61023f600480360381019061023a9190611984565b610729565b005b61025b600480360381019061025691906119af565b6107b1565b60405161026891906118e7565b60405180910390f35b6102796107f6565b005b61029560048036038101906102909190611984565b610809565b005b6102b160048036038101906102ac9190611984565b610872565b005b6102bb6108db565b6040516102c891906119e9565b60405180910390f35b6102d9610903565b6040516102e691906117a9565b60405180910390f35b61030960048036038101906103049190611900565b610993565b005b61032560048036038101906103209190611867565b610aef565b60405161033291906118bf565b60405180910390f35b61035560048036038101906103509190611b2e565b610c7e565b005b610371600480360381019061036c91906119af565b610c99565b005b61038d600480360381019061038891906119af565b610d48565b60405161039a91906118bf565b60405180910390f35b6103bd60048036038101906103b89190611b75565b610d65565b6040516103ca91906118e7565b60405180910390f35b6103ed60048036038101906103e89190611984565b610de7565b005b610409600480360381019061040491906119af565b610e4f565b005b61042560048036038101906104209190611b2e565b610efd565b005b610441600480360381019061043c91906119af565b610f18565b005b60606006805461045290611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461047e90611be0565b80156104c95780601f106104a0576101008083540402835291602001916104c9565b820191905f5260205f20905b8154815290600101906020018083116104ac57829003601f168201915b5050505050905090565b6104db610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054090611c5a565b60405180910390fd5b610554823383611023565b5050565b5f5f610562611035565b905061056f818585611023565b600191505092915050565b5f600254905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461064257600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890611cc2565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461070057600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156106ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f690611d2a565b60405180910390fd5b5b61070b84848461103c565b90509392505050565b5f60085f9054906101000a900460ff16905090565b610731610f9c565b600a5f9054906101000a900460ff1661077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690611d92565b60405180910390fd5b6107ae3360085f9054906101000a900460ff16600a61079e9190611f0c565b836107a99190611f56565b61106a565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107fe610f9c565b6108075f6110e9565b565b610811610f9c565b6009548114610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90611fe1565b60405180910390fd5b5f600a60026101000a81548160ff02191690831515021790555050565b61087a610f9c565b60095481146108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590611fe1565b60405180910390fd5b5f600a60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461091290611be0565b80601f016020809104026020016040519081016040528092919081815260200182805461093e90611be0565b80156109895780601f1061096057610100808354040283529160200191610989565b820191905f5260205f20905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b61099b610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090612049565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906120b1565b60405180910390fd5b80610a81846107b1565b1015610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990612119565b60405180910390fd5b80610acd8433610d65565b1015610adf57610ade833383611023565b5b610aea8383836111ac565b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bae57600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490611cc2565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c6c57600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611d2a565b60405180910390fd5b5b610c76838361129c565b905092915050565b610c86610f9c565b8060069081610c9591906122d7565b5050565b610ca1610f9c565b600a60019054906101000a900460ff16610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906123f0565b60405180910390fd5b6001600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610def610f9c565b6009548114610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90611fe1565b60405180910390fd5b5f600a5f6101000a81548160ff02191690831515021790555050565b610e57610f9c565b600a60029054906101000a900460ff16610ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9d90612458565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610f05610f9c565b8060079081610f1491906122d7565b5050565b610f20610f9c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f90575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f8791906119e9565b60405180910390fd5b610f99816110e9565b50565b610fa4611035565b73ffffffffffffffffffffffffffffffffffffffff16610fc26108db565b73ffffffffffffffffffffffffffffffffffffffff161461102157610fe5611035565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161101891906119e9565b60405180910390fd5b565b61103083838360016112be565b505050565b5f33905090565b5f5f611046611035565b905061105385828561148d565b61105e8585856111ac565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110da575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110d191906119e9565b60405180910390fd5b6110e55f8383611520565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361121c575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161121391906119e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361128c575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161128391906119e9565b60405180910390fd5b611297838383611520565b505050565b5f5f6112a6611035565b90506112b38185856111ac565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361132e575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161132591906119e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139e575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161139591906119e9565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611487578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161147e91906118e7565b60405180910390a35b50505050565b5f6114988484610d65565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561151a578181101561150b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161150293929190612476565b60405180910390fd5b61151984848484035f6112be565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611570578060025f82825461156491906124ab565b9250508190555061163e565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115f9578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016115f093929190612476565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611685578060025f82825403925050819055506116cf565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161172c91906118e7565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61177b82611739565b6117858185611743565b9350611795818560208601611753565b61179e81611761565b840191505092915050565b5f6020820190508181035f8301526117c18184611771565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611803826117da565b9050919050565b611813816117f9565b811461181d575f5ffd5b50565b5f8135905061182e8161180a565b92915050565b5f819050919050565b61184681611834565b8114611850575f5ffd5b50565b5f813590506118618161183d565b92915050565b5f5f6040838503121561187d5761187c6117d2565b5b5f61188a85828601611820565b925050602061189b85828601611853565b9150509250929050565b5f8115159050919050565b6118b9816118a5565b82525050565b5f6020820190506118d25f8301846118b0565b92915050565b6118e181611834565b82525050565b5f6020820190506118fa5f8301846118d8565b92915050565b5f5f5f60608486031215611917576119166117d2565b5b5f61192486828701611820565b935050602061193586828701611820565b925050604061194686828701611853565b9150509250925092565b5f60ff82169050919050565b61196581611950565b82525050565b5f60208201905061197e5f83018461195c565b92915050565b5f60208284031215611999576119986117d2565b5b5f6119a684828501611853565b91505092915050565b5f602082840312156119c4576119c36117d2565b5b5f6119d184828501611820565b91505092915050565b6119e3816117f9565b82525050565b5f6020820190506119fc5f8301846119da565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611a4082611761565b810181811067ffffffffffffffff82111715611a5f57611a5e611a0a565b5b80604052505050565b5f611a716117c9565b9050611a7d8282611a37565b919050565b5f67ffffffffffffffff821115611a9c57611a9b611a0a565b5b611aa582611761565b9050602081019050919050565b828183375f83830152505050565b5f611ad2611acd84611a82565b611a68565b905082815260208101848484011115611aee57611aed611a06565b5b611af9848285611ab2565b509392505050565b5f82601f830112611b1557611b14611a02565b5b8135611b25848260208601611ac0565b91505092915050565b5f60208284031215611b4357611b426117d2565b5b5f82013567ffffffffffffffff811115611b6057611b5f6117d6565b5b611b6c84828501611b01565b91505092915050565b5f5f60408385031215611b8b57611b8a6117d2565b5b5f611b9885828601611820565b9250506020611ba985828601611820565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611bf757607f821691505b602082108103611c0a57611c09611bb3565b5b50919050565b7f496e76616c6964206f776e6572206164647265737300000000000000000000005f82015250565b5f611c44601583611743565b9150611c4f82611c10565b602082019050919050565b5f6020820190508181035f830152611c7181611c38565b9050919050565b7f53656e64657220696e20424c00000000000000000000000000000000000000005f82015250565b5f611cac600c83611743565b9150611cb782611c78565b602082019050919050565b5f6020820190508181035f830152611cd981611ca0565b9050919050565b7f526563697069656e7420696e20424c00000000000000000000000000000000005f82015250565b5f611d14600f83611743565b9150611d1f82611ce0565b602082019050919050565b5f6020820190508181035f830152611d4181611d08565b9050919050565b7f4d696e74207265766f6b656400000000000000000000000000000000000000005f82015250565b5f611d7c600c83611743565b9150611d8782611d48565b602082019050919050565b5f6020820190508181035f830152611da981611d70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115611e3257808604811115611e0e57611e0d611db0565b5b6001851615611e1d5780820291505b8081029050611e2b85611ddd565b9450611df2565b94509492505050565b5f82611e4a5760019050611f05565b81611e57575f9050611f05565b8160018114611e6d5760028114611e7757611ea6565b6001915050611f05565b60ff841115611e8957611e88611db0565b5b8360020a915084821115611ea057611e9f611db0565b5b50611f05565b5060208310610133831016604e8410600b8410161715611edb5782820a905083811115611ed657611ed5611db0565b5b611f05565b611ee88484846001611de9565b92509050818404811115611eff57611efe611db0565b5b81810290505b9392505050565b5f611f1682611834565b9150611f2183611950565b9250611f4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611e3b565b905092915050565b5f611f6082611834565b9150611f6b83611834565b9250828202611f7981611834565b91508282048414831517611f9057611f8f611db0565b5b5092915050565b7f57726f6e672070776400000000000000000000000000000000000000000000005f82015250565b5f611fcb600983611743565b9150611fd682611f97565b602082019050919050565b5f6020820190508181035f830152611ff881611fbf565b9050919050565b7f496e76616c69642073656e6465722061646472657373000000000000000000005f82015250565b5f612033601683611743565b915061203e82611fff565b602082019050919050565b5f6020820190508181035f83015261206081612027565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f61209b601983611743565b91506120a682612067565b602082019050919050565b5f6020820190508181035f8301526120c88161208f565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612103601483611743565b915061210e826120cf565b602082019050919050565b5f6020820190508181035f830152612130816120f7565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026121937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612158565b61219d8683612158565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6121d86121d36121ce84611834565b6121b5565b611834565b9050919050565b5f819050919050565b6121f1836121be565b6122056121fd826121df565b848454612164565b825550505050565b5f5f905090565b61221c61220d565b6122278184846121e8565b505050565b5b8181101561224a5761223f5f82612214565b60018101905061222d565b5050565b601f82111561228f5761226081612137565b61226984612149565b81016020851015612278578190505b61228c61228485612149565b83018261222c565b50505b505050565b5f82821c905092915050565b5f6122af5f1984600802612294565b1980831691505092915050565b5f6122c783836122a0565b9150826002028217905092915050565b6122e082611739565b67ffffffffffffffff8111156122f9576122f8611a0a565b5b6123038254611be0565b61230e82828561224e565b5f60209050601f83116001811461233f575f841561232d578287015190505b61233785826122bc565b86555061239e565b601f19841661234d86612137565b5f5b828110156123745784890151825560018201915060208501945060208101905061234f565b86831015612391578489015161238d601f8916826122a0565b8355505b6001600288020188555050505b505050505050565b7f416464424c207265766f6b6564000000000000000000000000000000000000005f82015250565b5f6123da600d83611743565b91506123e5826123a6565b602082019050919050565b5f6020820190508181035f830152612407816123ce565b9050919050565b7f52656d424c207265766f6b6564000000000000000000000000000000000000005f82015250565b5f612442600d83611743565b915061244d8261240e565b602082019050919050565b5f6020820190508181035f83015261246f81612436565b9050919050565b5f6060820190506124895f8301866119da565b61249660208301856118d8565b6124a360408301846118d8565b949350505050565b5f6124b582611834565b91506124c083611834565b92508282019050808211156124d8576124d7611db0565b5b9291505056fea2646970667358221220991c01318597df99bf7a6a859162c657c71bbdc6739199cd38ce3e381a365ebd64736f6c634300081e0033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000006fc23ac00000000000000000000000000000000000000000000000000000000000022d8e70000000000000000000000000000000000000000000000000000000000000018546574686572205553442028427269646765205443323029000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialName (string): Tether USD (Bridge TC20)
Arg [1] : initialSymbol (string): USDT
Arg [2] : decimals_ (uint8): 6
Arg [3] : initialSupply (uint256): 30000000000
Arg [4] : revokePassword (uint256): 2283751

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 00000000000000000000000000000000000000000000000000000006fc23ac00
Arg [4] : 000000000000000000000000000000000000000000000000000000000022d8e7
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [6] : 5465746865722055534420284272696467652054433230290000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 5553445400000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

26725:3970:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27542:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29758:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16399;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15262:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30320:372;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27772:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28098:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15397:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25828:103;;;:::i;:::-;;28883:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28726:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25153:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27655:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29104:558;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29956:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27885:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28269:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27029:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15938:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28571:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28418:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27989:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26086:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27542:105;27596:13;27629:10;27622:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27542:105;:::o;29758:190::-;25039:13;:11;:13::i;:::-;29866:1:::1;29849:19;;:5;:19;;::::0;29841:53:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29905:35;29914:5;29921:10;29933:6;29905:8;:35::i;:::-;29758:190:::0;;:::o;16399:::-;16472:4;16489:13;16505:12;:10;:12::i;:::-;16489:28;;16528:31;16537:5;16544:7;16553:5;16528:8;:31::i;:::-;16577:4;16570:11;;;16399:190;;;;:::o;15262:99::-;15314:7;15341:12;;15334:19;;15262:99;:::o;30320:372::-;30417:4;30454:1;30438:18;;:4;:18;;;30434:94;;30482:11;:17;30494:4;30482:17;;;;;;;;;;;;;;;;;;;;;;;;;30481:18;30473:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;30434:94;30556:1;30542:16;;:2;:16;;;30538:93;;30584:11;:15;30596:2;30584:15;;;;;;;;;;;;;;;;;;;;;;;;;30583:16;30575:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;30538:93;30648:36;30667:4;30673:2;30677:6;30648:18;:36::i;:::-;30641:43;;30320:372;;;;;:::o;27772:105::-;27830:5;27855:14;;;;;;;;;;;27848:21;;27772:105;:::o;28098:163::-;25039:13;:11;:13::i;:::-;28167:8:::1;;;;;;;;;;;28159:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;28203:50;28209:10;28237:14;;;;;;;;;;;28231:2;:20;;;;:::i;:::-;28221:6;:31;;;;:::i;:::-;28203:5;:50::i;:::-;28098:163:::0;:::o;15397:118::-;15462:7;15489:9;:18;15499:7;15489:18;;;;;;;;;;;;;;;;15482:25;;15397:118;;;:::o;25828:103::-;25039:13;:11;:13::i;:::-;25893:30:::1;25920:1;25893:18;:30::i;:::-;25828:103::o:0;28883:152::-;25039:13;:11;:13::i;:::-;28967:15:::1;;28955:8;:27;28947:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;29022:5;29007:12;;:20;;;;;;;;;;;;;;;;;;28883:152:::0;:::o;28726:149::-;25039:13;:11;:13::i;:::-;28810:15:::1;;28798:8;:27;28790:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28862:5;28850:9;;:17;;;;;;;;;;;;;;;;;;28726:149:::0;:::o;25153:87::-;25199:7;25226:6;;;;;;;;;;;25219:13;;25153:87;:::o;27655:109::-;27711:13;27744:12;27737:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27655:109;:::o;29104:558::-;25039:13;:11;:13::i;:::-;29220:1:::1;29204:18;;:4;:18;;::::0;29196:53:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29282:1;29268:16;;:2;:16;;::::0;29260:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29352:6;29333:15;29343:4;29333:9;:15::i;:::-;:25;;29325:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29538:6;29508:27;29518:4;29524:10;29508:9;:27::i;:::-;:36;29504:103;;;29561:34;29570:4;29576:10;29588:6;29561:8;:34::i;:::-;29504:103;29627:27;29637:4;29643:2;29647:6;29627:9;:27::i;:::-;29104:558:::0;;;:::o;29956:356::-;30035:4;30078:1;30056:24;;:10;:24;;;30052:106;;30106:11;:23;30118:10;30106:23;;;;;;;;;;;;;;;;;;;;;;;;;30105:24;30097:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;30052:106;30186:1;30172:16;;:2;:16;;;30168:93;;30214:11;:15;30226:2;30214:15;;;;;;;;;;;;;;;;;;;;;;;;;30213:16;30205:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;30168:93;30278:26;30293:2;30297:6;30278:14;:26::i;:::-;30271:33;;29956:356;;;;:::o;27885:96::-;25039:13;:11;:13::i;:::-;27966:7:::1;27953:10;:20;;;;;;:::i;:::-;;27885:96:::0;:::o;28269:141::-;25039:13;:11;:13::i;:::-;28337:9:::1;;;;;;;;;;;28329:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;28398:4;28375:11;:20;28387:7;28375:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;28269:141:::0;:::o;27029:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;15938:142::-;16018:7;16045:11;:18;16057:5;16045:18;;;;;;;;;;;;;;;:27;16064:7;16045:27;;;;;;;;;;;;;;;;16038:34;;15938:142;;;;:::o;28571:147::-;25039:13;:11;:13::i;:::-;28654:15:::1;;28642:8;:27;28634:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;28705:5;28694:8;;:16;;;;;;;;;;;;;;;;;;28571:147:::0;:::o;28418:145::-;25039:13;:11;:13::i;:::-;28486:12:::1;;;;;;;;;;;28478:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28550:5;28527:11;:20;28539:7;28527:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;28418:145:::0;:::o;27989:101::-;25039:13;:11;:13::i;:::-;28073:9:::1;28058:12;:24;;;;;;:::i;:::-;;27989:101:::0;:::o;26086:220::-;25039:13;:11;:13::i;:::-;26191:1:::1;26171:22;;:8;:22;;::::0;26167:93:::1;;26245:1;26217:31;;;;;;;;;;;:::i;:::-;;;;;;;;26167:93;26270:28;26289:8;26270:18;:28::i;:::-;26086:220:::0;:::o;25318:166::-;25389:12;:10;:12::i;:::-;25378:23;;:7;:5;:7::i;:::-;:23;;;25374:103;;25452:12;:10;:12::i;:::-;25425:40;;;;;;;;;;;:::i;:::-;;;;;;;;25374:103;25318:166::o;21258:130::-;21343:37;21352:5;21359:7;21368:5;21375:4;21343:8;:37::i;:::-;21258:130;;;:::o;5508:98::-;5561:7;5588:10;5581:17;;5508:98;:::o;17199:249::-;17286:4;17303:15;17321:12;:10;:12::i;:::-;17303:30;;17344:37;17360:4;17366:7;17375:5;17344:15;:37::i;:::-;17392:26;17402:4;17408:2;17412:5;17392:9;:26::i;:::-;17436:4;17429:11;;;17199:249;;;;;:::o;19953:213::-;20043:1;20024:21;;:7;:21;;;20020:93;;20098:1;20069:32;;;;;;;;;;;:::i;:::-;;;;;;;;20020:93;20123:35;20139:1;20143:7;20152:5;20123:7;:35::i;:::-;19953:213;;:::o;26466:191::-;26540:16;26559:6;;;;;;;;;;;26540:25;;26585:8;26576:6;;:17;;;;;;;;;;;;;;;;;;26640:8;26609:40;;26630:8;26609:40;;;;;;;;;;;;26529:128;26466:191;:::o;17833:308::-;17933:1;17917:18;;:4;:18;;;17913:88;;17986:1;17959:30;;;;;;;;;;;:::i;:::-;;;;;;;;17913:88;18029:1;18015:16;;:2;:16;;;18011:88;;18084:1;18055:32;;;;;;;;;;;:::i;:::-;;;;;;;;18011:88;18109:24;18117:4;18123:2;18127:5;18109:7;:24::i;:::-;17833:308;;;:::o;15720:182::-;15789:4;15806:13;15822:12;:10;:12::i;:::-;15806:28;;15845:27;15855:5;15862:2;15866:5;15845:9;:27::i;:::-;15890:4;15883:11;;;15720:182;;;;:::o;22255:443::-;22385:1;22368:19;;:5;:19;;;22364:91;;22440:1;22411:32;;;;;;;;;;;:::i;:::-;;;;;;;;22364:91;22488:1;22469:21;;:7;:21;;;22465:92;;22542:1;22514:31;;;;;;;;;;;:::i;:::-;;;;;;;;22465:92;22597:5;22567:11;:18;22579:5;22567:18;;;;;;;;;;;;;;;:27;22586:7;22567:27;;;;;;;;;;;;;;;:35;;;;22617:9;22613:78;;;22664:7;22648:31;;22657:5;22648:31;;;22673:5;22648:31;;;;;;:::i;:::-;;;;;;;;22613:78;22255:443;;;;:::o;22990:486::-;23090:24;23117:25;23127:5;23134:7;23117:9;:25::i;:::-;23090:52;;23176:17;23157:16;:36;23153:316;;;23233:5;23214:16;:24;23210:132;;;23293:7;23302:16;23320:5;23266:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;23210:132;23385:57;23394:5;23401:7;23429:5;23410:16;:24;23436:5;23385:8;:57::i;:::-;23153:316;23079:397;22990:486;;;:::o;18465:1135::-;18571:1;18555:18;;:4;:18;;;18551:552;;18709:5;18693:12;;:21;;;;;;;:::i;:::-;;;;;;;;18551:552;;;18747:19;18769:9;:15;18779:4;18769:15;;;;;;;;;;;;;;;;18747:37;;18817:5;18803:11;:19;18799:117;;;18875:4;18881:11;18894:5;18850:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;18799:117;19071:5;19057:11;:19;19039:9;:15;19049:4;19039:15;;;;;;;;;;;;;;;:37;;;;18732:371;18551:552;19133:1;19119:16;;:2;:16;;;19115:435;;19301:5;19285:12;;:21;;;;;;;;;;;19115:435;;;19518:5;19501:9;:13;19511:2;19501:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;19115:435;19582:2;19567:25;;19576:4;19567:25;;;19586:5;19567:25;;;;;;:::i;:::-;;;;;;;;18465:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:118::-;5503:24;5521:5;5503:24;:::i;:::-;5498:3;5491:37;5416:118;;:::o;5540:222::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:71;5752:1;5741:9;5737:17;5728:6;5684:71;:::i;:::-;5540:222;;;;:::o;5768:117::-;5877:1;5874;5867:12;5891:117;6000:1;5997;5990:12;6014:180;6062:77;6059:1;6052:88;6159:4;6156:1;6149:15;6183:4;6180:1;6173:15;6200:281;6283:27;6305:4;6283:27;:::i;:::-;6275:6;6271:40;6413:6;6401:10;6398:22;6377:18;6365:10;6362:34;6359:62;6356:88;;;6424:18;;:::i;:::-;6356:88;6464:10;6460:2;6453:22;6243:238;6200:281;;:::o;6487:129::-;6521:6;6548:20;;:::i;:::-;6538:30;;6577:33;6605:4;6597:6;6577:33;:::i;:::-;6487:129;;;:::o;6622:308::-;6684:4;6774:18;6766:6;6763:30;6760:56;;;6796:18;;:::i;:::-;6760:56;6834:29;6856:6;6834:29;:::i;:::-;6826:37;;6918:4;6912;6908:15;6900:23;;6622:308;;;:::o;6936:148::-;7034:6;7029:3;7024;7011:30;7075:1;7066:6;7061:3;7057:16;7050:27;6936:148;;;:::o;7090:425::-;7168:5;7193:66;7209:49;7251:6;7209:49;:::i;:::-;7193:66;:::i;:::-;7184:75;;7282:6;7275:5;7268:21;7320:4;7313:5;7309:16;7358:3;7349:6;7344:3;7340:16;7337:25;7334:112;;;7365:79;;:::i;:::-;7334:112;7455:54;7502:6;7497:3;7492;7455:54;:::i;:::-;7174:341;7090:425;;;;;:::o;7535:340::-;7591:5;7640:3;7633:4;7625:6;7621:17;7617:27;7607:122;;7648:79;;:::i;:::-;7607:122;7765:6;7752:20;7790:79;7865:3;7857:6;7850:4;7842:6;7838:17;7790:79;:::i;:::-;7781:88;;7597:278;7535:340;;;;:::o;7881:509::-;7950:6;7999:2;7987:9;7978:7;7974:23;7970:32;7967:119;;;8005:79;;:::i;:::-;7967:119;8153:1;8142:9;8138:17;8125:31;8183:18;8175:6;8172:30;8169:117;;;8205:79;;:::i;:::-;8169:117;8310:63;8365:7;8356:6;8345:9;8341:22;8310:63;:::i;:::-;8300:73;;8096:287;7881:509;;;;:::o;8396:474::-;8464:6;8472;8521:2;8509:9;8500:7;8496:23;8492:32;8489:119;;;8527:79;;:::i;:::-;8489:119;8647:1;8672:53;8717:7;8708:6;8697:9;8693:22;8672:53;:::i;:::-;8662:63;;8618:117;8774:2;8800:53;8845:7;8836:6;8825:9;8821:22;8800:53;:::i;:::-;8790:63;;8745:118;8396:474;;;;;:::o;8876:180::-;8924:77;8921:1;8914:88;9021:4;9018:1;9011:15;9045:4;9042:1;9035:15;9062:320;9106:6;9143:1;9137:4;9133:12;9123:22;;9190:1;9184:4;9180:12;9211:18;9201:81;;9267:4;9259:6;9255:17;9245:27;;9201:81;9329:2;9321:6;9318:14;9298:18;9295:38;9292:84;;9348:18;;:::i;:::-;9292:84;9113:269;9062:320;;;:::o;9388:171::-;9528:23;9524:1;9516:6;9512:14;9505:47;9388:171;:::o;9565:366::-;9707:3;9728:67;9792:2;9787:3;9728:67;:::i;:::-;9721:74;;9804:93;9893:3;9804:93;:::i;:::-;9922:2;9917:3;9913:12;9906:19;;9565:366;;;:::o;9937:419::-;10103:4;10141:2;10130:9;10126:18;10118:26;;10190:9;10184:4;10180:20;10176:1;10165:9;10161:17;10154:47;10218:131;10344:4;10218:131;:::i;:::-;10210:139;;9937:419;;;:::o;10362:162::-;10502:14;10498:1;10490:6;10486:14;10479:38;10362:162;:::o;10530:366::-;10672:3;10693:67;10757:2;10752:3;10693:67;:::i;:::-;10686:74;;10769:93;10858:3;10769:93;:::i;:::-;10887:2;10882:3;10878:12;10871:19;;10530:366;;;:::o;10902:419::-;11068:4;11106:2;11095:9;11091:18;11083:26;;11155:9;11149:4;11145:20;11141:1;11130:9;11126:17;11119:47;11183:131;11309:4;11183:131;:::i;:::-;11175:139;;10902:419;;;:::o;11327:165::-;11467:17;11463:1;11455:6;11451:14;11444:41;11327:165;:::o;11498:366::-;11640:3;11661:67;11725:2;11720:3;11661:67;:::i;:::-;11654:74;;11737:93;11826:3;11737:93;:::i;:::-;11855:2;11850:3;11846:12;11839:19;;11498:366;;;:::o;11870:419::-;12036:4;12074:2;12063:9;12059:18;12051:26;;12123:9;12117:4;12113:20;12109:1;12098:9;12094:17;12087:47;12151:131;12277:4;12151:131;:::i;:::-;12143:139;;11870:419;;;:::o;12295:162::-;12435:14;12431:1;12423:6;12419:14;12412:38;12295:162;:::o;12463:366::-;12605:3;12626:67;12690:2;12685:3;12626:67;:::i;:::-;12619:74;;12702:93;12791:3;12702:93;:::i;:::-;12820:2;12815:3;12811:12;12804:19;;12463:366;;;:::o;12835:419::-;13001:4;13039:2;13028:9;13024:18;13016:26;;13088:9;13082:4;13078:20;13074:1;13063:9;13059:17;13052:47;13116:131;13242:4;13116:131;:::i;:::-;13108:139;;12835:419;;;:::o;13260:180::-;13308:77;13305:1;13298:88;13405:4;13402:1;13395:15;13429:4;13426:1;13419:15;13446:102;13488:8;13535:5;13532:1;13528:13;13507:34;;13446:102;;;:::o;13554:848::-;13615:5;13622:4;13646:6;13637:15;;13670:5;13661:14;;13684:712;13705:1;13695:8;13692:15;13684:712;;;13800:4;13795:3;13791:14;13785:4;13782:24;13779:50;;;13809:18;;:::i;:::-;13779:50;13859:1;13849:8;13845:16;13842:451;;;14274:4;14267:5;14263:16;14254:25;;13842:451;14324:4;14318;14314:15;14306:23;;14354:32;14377:8;14354:32;:::i;:::-;14342:44;;13684:712;;;13554:848;;;;;;;:::o;14408:1073::-;14462:5;14653:8;14643:40;;14674:1;14665:10;;14676:5;;14643:40;14702:4;14692:36;;14719:1;14710:10;;14721:5;;14692:36;14788:4;14836:1;14831:27;;;;14872:1;14867:191;;;;14781:277;;14831:27;14849:1;14840:10;;14851:5;;;14867:191;14912:3;14902:8;14899:17;14896:43;;;14919:18;;:::i;:::-;14896:43;14968:8;14965:1;14961:16;14952:25;;15003:3;14996:5;14993:14;14990:40;;;15010:18;;:::i;:::-;14990:40;15043:5;;;14781:277;;15167:2;15157:8;15154:16;15148:3;15142:4;15139:13;15135:36;15117:2;15107:8;15104:16;15099:2;15093:4;15090:12;15086:35;15070:111;15067:246;;;15223:8;15217:4;15213:19;15204:28;;15258:3;15251:5;15248:14;15245:40;;;15265:18;;:::i;:::-;15245:40;15298:5;;15067:246;15338:42;15376:3;15366:8;15360:4;15357:1;15338:42;:::i;:::-;15323:57;;;;15412:4;15407:3;15403:14;15396:5;15393:25;15390:51;;;15421:18;;:::i;:::-;15390:51;15470:4;15463:5;15459:16;15450:25;;14408:1073;;;;;;:::o;15487:281::-;15545:5;15569:23;15587:4;15569:23;:::i;:::-;15561:31;;15613:25;15629:8;15613:25;:::i;:::-;15601:37;;15657:104;15694:66;15684:8;15678:4;15657:104;:::i;:::-;15648:113;;15487:281;;;;:::o;15774:410::-;15814:7;15837:20;15855:1;15837:20;:::i;:::-;15832:25;;15871:20;15889:1;15871:20;:::i;:::-;15866:25;;15926:1;15923;15919:9;15948:30;15966:11;15948:30;:::i;:::-;15937:41;;16127:1;16118:7;16114:15;16111:1;16108:22;16088:1;16081:9;16061:83;16038:139;;16157:18;;:::i;:::-;16038:139;15822:362;15774:410;;;;:::o;16190:159::-;16330:11;16326:1;16318:6;16314:14;16307:35;16190:159;:::o;16355:365::-;16497:3;16518:66;16582:1;16577:3;16518:66;:::i;:::-;16511:73;;16593:93;16682:3;16593:93;:::i;:::-;16711:2;16706:3;16702:12;16695:19;;16355:365;;;:::o;16726:419::-;16892:4;16930:2;16919:9;16915:18;16907:26;;16979:9;16973:4;16969:20;16965:1;16954:9;16950:17;16943:47;17007:131;17133:4;17007:131;:::i;:::-;16999:139;;16726:419;;;:::o;17151:172::-;17291:24;17287:1;17279:6;17275:14;17268:48;17151:172;:::o;17329:366::-;17471:3;17492:67;17556:2;17551:3;17492:67;:::i;:::-;17485:74;;17568:93;17657:3;17568:93;:::i;:::-;17686:2;17681:3;17677:12;17670:19;;17329:366;;;:::o;17701:419::-;17867:4;17905:2;17894:9;17890:18;17882:26;;17954:9;17948:4;17944:20;17940:1;17929:9;17925:17;17918:47;17982:131;18108:4;17982:131;:::i;:::-;17974:139;;17701:419;;;:::o;18126:175::-;18266:27;18262:1;18254:6;18250:14;18243:51;18126:175;:::o;18307:366::-;18449:3;18470:67;18534:2;18529:3;18470:67;:::i;:::-;18463:74;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18307:366;;;:::o;18679:419::-;18845:4;18883:2;18872:9;18868:18;18860:26;;18932:9;18926:4;18922:20;18918:1;18907:9;18903:17;18896:47;18960:131;19086:4;18960:131;:::i;:::-;18952:139;;18679:419;;;:::o;19104:170::-;19244:22;19240:1;19232:6;19228:14;19221:46;19104:170;:::o;19280:366::-;19422:3;19443:67;19507:2;19502:3;19443:67;:::i;:::-;19436:74;;19519:93;19608:3;19519:93;:::i;:::-;19637:2;19632:3;19628:12;19621:19;;19280:366;;;:::o;19652:419::-;19818:4;19856:2;19845:9;19841:18;19833:26;;19905:9;19899:4;19895:20;19891:1;19880:9;19876:17;19869:47;19933:131;20059:4;19933:131;:::i;:::-;19925:139;;19652:419;;;:::o;20077:141::-;20126:4;20149:3;20141:11;;20172:3;20169:1;20162:14;20206:4;20203:1;20193:18;20185:26;;20077:141;;;:::o;20224:93::-;20261:6;20308:2;20303;20296:5;20292:14;20288:23;20278:33;;20224:93;;;:::o;20323:107::-;20367:8;20417:5;20411:4;20407:16;20386:37;;20323:107;;;;:::o;20436:393::-;20505:6;20555:1;20543:10;20539:18;20578:97;20608:66;20597:9;20578:97;:::i;:::-;20696:39;20726:8;20715:9;20696:39;:::i;:::-;20684:51;;20768:4;20764:9;20757:5;20753:21;20744:30;;20817:4;20807:8;20803:19;20796:5;20793:30;20783:40;;20512:317;;20436:393;;;;;:::o;20835:60::-;20863:3;20884:5;20877:12;;20835:60;;;:::o;20901:142::-;20951:9;20984:53;21002:34;21011:24;21029:5;21011:24;:::i;:::-;21002:34;:::i;:::-;20984:53;:::i;:::-;20971:66;;20901:142;;;:::o;21049:75::-;21092:3;21113:5;21106:12;;21049:75;;;:::o;21130:269::-;21240:39;21271:7;21240:39;:::i;:::-;21301:91;21350:41;21374:16;21350:41;:::i;:::-;21342:6;21335:4;21329:11;21301:91;:::i;:::-;21295:4;21288:105;21206:193;21130:269;;;:::o;21405:73::-;21450:3;21471:1;21464:8;;21405:73;:::o;21484:189::-;21561:32;;:::i;:::-;21602:65;21660:6;21652;21646:4;21602:65;:::i;:::-;21537:136;21484:189;;:::o;21679:186::-;21739:120;21756:3;21749:5;21746:14;21739:120;;;21810:39;21847:1;21840:5;21810:39;:::i;:::-;21783:1;21776:5;21772:13;21763:22;;21739:120;;;21679:186;;:::o;21871:543::-;21972:2;21967:3;21964:11;21961:446;;;22006:38;22038:5;22006:38;:::i;:::-;22090:29;22108:10;22090:29;:::i;:::-;22080:8;22076:44;22273:2;22261:10;22258:18;22255:49;;;22294:8;22279:23;;22255:49;22317:80;22373:22;22391:3;22373:22;:::i;:::-;22363:8;22359:37;22346:11;22317:80;:::i;:::-;21976:431;;21961:446;21871:543;;;:::o;22420:117::-;22474:8;22524:5;22518:4;22514:16;22493:37;;22420:117;;;;:::o;22543:169::-;22587:6;22620:51;22668:1;22664:6;22656:5;22653:1;22649:13;22620:51;:::i;:::-;22616:56;22701:4;22695;22691:15;22681:25;;22594:118;22543:169;;;;:::o;22717:295::-;22793:4;22939:29;22964:3;22958:4;22939:29;:::i;:::-;22931:37;;23001:3;22998:1;22994:11;22988:4;22985:21;22977:29;;22717:295;;;;:::o;23017:1395::-;23134:37;23167:3;23134:37;:::i;:::-;23236:18;23228:6;23225:30;23222:56;;;23258:18;;:::i;:::-;23222:56;23302:38;23334:4;23328:11;23302:38;:::i;:::-;23387:67;23447:6;23439;23433:4;23387:67;:::i;:::-;23481:1;23505:4;23492:17;;23537:2;23529:6;23526:14;23554:1;23549:618;;;;24211:1;24228:6;24225:77;;;24277:9;24272:3;24268:19;24262:26;24253:35;;24225:77;24328:67;24388:6;24381:5;24328:67;:::i;:::-;24322:4;24315:81;24184:222;23519:887;;23549:618;23601:4;23597:9;23589:6;23585:22;23635:37;23667:4;23635:37;:::i;:::-;23694:1;23708:208;23722:7;23719:1;23716:14;23708:208;;;23801:9;23796:3;23792:19;23786:26;23778:6;23771:42;23852:1;23844:6;23840:14;23830:24;;23899:2;23888:9;23884:18;23871:31;;23745:4;23742:1;23738:12;23733:17;;23708:208;;;23944:6;23935:7;23932:19;23929:179;;;24002:9;23997:3;23993:19;23987:26;24045:48;24087:4;24079:6;24075:17;24064:9;24045:48;:::i;:::-;24037:6;24030:64;23952:156;23929:179;24154:1;24150;24142:6;24138:14;24134:22;24128:4;24121:36;23556:611;;;23519:887;;23109:1303;;;23017:1395;;:::o;24418:163::-;24558:15;24554:1;24546:6;24542:14;24535:39;24418:163;:::o;24587:366::-;24729:3;24750:67;24814:2;24809:3;24750:67;:::i;:::-;24743:74;;24826:93;24915:3;24826:93;:::i;:::-;24944:2;24939:3;24935:12;24928:19;;24587:366;;;:::o;24959:419::-;25125:4;25163:2;25152:9;25148:18;25140:26;;25212:9;25206:4;25202:20;25198:1;25187:9;25183:17;25176:47;25240:131;25366:4;25240:131;:::i;:::-;25232:139;;24959:419;;;:::o;25384:163::-;25524:15;25520:1;25512:6;25508:14;25501:39;25384:163;:::o;25553:366::-;25695:3;25716:67;25780:2;25775:3;25716:67;:::i;:::-;25709:74;;25792:93;25881:3;25792:93;:::i;:::-;25910:2;25905:3;25901:12;25894:19;;25553:366;;;:::o;25925:419::-;26091:4;26129:2;26118:9;26114:18;26106:26;;26178:9;26172:4;26168:20;26164:1;26153:9;26149:17;26142:47;26206:131;26332:4;26206:131;:::i;:::-;26198:139;;25925:419;;;:::o;26350:442::-;26499:4;26537:2;26526:9;26522:18;26514:26;;26550:71;26618:1;26607:9;26603:17;26594:6;26550:71;:::i;:::-;26631:72;26699:2;26688:9;26684:18;26675:6;26631:72;:::i;:::-;26713;26781:2;26770:9;26766:18;26757:6;26713:72;:::i;:::-;26350:442;;;;;;:::o;26798:191::-;26838:3;26857:20;26875:1;26857:20;:::i;:::-;26852:25;;26891:20;26909:1;26891:20;:::i;:::-;26886:25;;26934:1;26931;26927:9;26920:16;;26955:3;26952:1;26949:10;26946:36;;;26962:18;;:::i;:::-;26946:36;26798:191;;;;:::o

Swarm Source

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