ETH Price: $3,072.51 (+2.14%)

Token

Optimistic Pepe (OPepe)
 

Overview

Max Total Supply

232,772,230,000,000 OPepe

Holders

34,697

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,700,000,000 OPepe

Value
$0.00
0xe70ddbcff357644d076bd34092eab97c541e6dfa
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
OptimisticPepe

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at optimistic.etherscan.io on 2023-05-02
*/

// SPDX-License-Identifier: MIT

//$$$$$$\             $$\     $$\               $$\             $$\     $$\           $$$$$$$\                                
//$$  __$$\            $$ |    \__|              \__|            $$ |    \__|          $$  __$$\                               
//$$ /  $$ | $$$$$$\ $$$$$$\   $$\ $$$$$$\$$$$\  $$\  $$$$$$$\ $$$$$$\   $$\  $$$$$$$\ $$ |  $$ | $$$$$$\   $$$$$$\   $$$$$$\  
//$$ |  $$ |$$  __$$\\_$$  _|  $$ |$$  _$$  _$$\ $$ |$$  _____|\_$$  _|  $$ |$$  _____|$$$$$$$  |$$  __$$\ $$  __$$\ $$  __$$\ 
//$$ |  $$ |$$ /  $$ | $$ |    $$ |$$ / $$ / $$ |$$ |\$$$$$$\    $$ |    $$ |$$ /      $$  ____/ $$$$$$$$ |$$ /  $$ |$$$$$$$$ |
//$$ |  $$ |$$ |  $$ | $$ |$$\ $$ |$$ | $$ | $$ |$$ | \____$$\   $$ |$$\ $$ |$$ |      $$ |      $$   ____|$$ |  $$ |$$   ____|
// $$$$$$  |$$$$$$$  | \$$$$  |$$ |$$ | $$ | $$ |$$ |$$$$$$$  |  \$$$$  |$$ |\$$$$$$$\ $$ |      \$$$$$$$\ $$$$$$$  |\$$$$$$$\ 
// \______/ $$  ____/   \____/ \__|\__| \__| \__|\__|\_______/    \____/ \__| \_______|\__|       \_______|$$  ____/  \_______|
//          $$ |                                                                                           $$ |                
//          $$ |                                                                                           $$ |                
//          \__|                                                                                           \__|                

// Respect https://www.pepe.vip/ 
// built with love

// Modified from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.0/contracts/utils/cryptography/MerkleProof.sol

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool, uint256) {
        bytes32 computedHash = leaf;
        uint256 index = 0;

        for (uint256 i = 0; i < proof.length; i++) {
            index *= 2;
            bytes32 proofElement = proof[i];

            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
                index += 1;
            }
        }

        // Check if the computed hash (root) is equal to the provided root
        return (computedHash == root, index);
    }
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

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


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


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

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

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

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


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

// File: contracts/OptimisticPepe.sol



//$$$$$$\             $$\     $$\               $$\             $$\     $$\           $$$$$$$\                                
//$$  __$$\            $$ |    \__|              \__|            $$ |    \__|          $$  __$$\                               
//$$ /  $$ | $$$$$$\ $$$$$$\   $$\ $$$$$$\$$$$\  $$\  $$$$$$$\ $$$$$$\   $$\  $$$$$$$\ $$ |  $$ | $$$$$$\   $$$$$$\   $$$$$$\  
//$$ |  $$ |$$  __$$\\_$$  _|  $$ |$$  _$$  _$$\ $$ |$$  _____|\_$$  _|  $$ |$$  _____|$$$$$$$  |$$  __$$\ $$  __$$\ $$  __$$\ 
//$$ |  $$ |$$ /  $$ | $$ |    $$ |$$ / $$ / $$ |$$ |\$$$$$$\    $$ |    $$ |$$ /      $$  ____/ $$$$$$$$ |$$ /  $$ |$$$$$$$$ |
//$$ |  $$ |$$ |  $$ | $$ |$$\ $$ |$$ | $$ | $$ |$$ | \____$$\   $$ |$$\ $$ |$$ |      $$ |      $$   ____|$$ |  $$ |$$   ____|
// $$$$$$  |$$$$$$$  | \$$$$  |$$ |$$ | $$ | $$ |$$ |$$$$$$$  |  \$$$$  |$$ |\$$$$$$$\ $$ |      \$$$$$$$\ $$$$$$$  |\$$$$$$$\ 
// \______/ $$  ____/   \____/ \__|\__| \__| \__|\__|\_______/    \____/ \__| \_______|\__|       \_______|$$  ____/  \_______|
//          $$ |                                                                                           $$ |                
//          $$ |                                                                                           $$ |                
//          \__|                                                                                           \__|                

// Respect https://www.pepe.vip/ 
// built with love

pragma solidity ^0.8.0;




contract OptimisticPepe is ERC20, ReentrancyGuard {
    bytes32 public merkleRoot;
    mapping(address => bool) public claimed;
    uint256 public constant claimAmount = 2700000000 * 10**18;
    address payable public owner;

    uint256 public totalClaimed;
    uint256 public totalDonated;
    uint256 public constant maxSupply = 450000000000000 * 10**18;
    uint256 public constant opAirdrop = 135000000000000 * 10**18; // Airdrop for Optimisim
    uint256 public constant teamShare = 60000000000000 * 10**18; // Team
    uint256 public constant stakeShare = 40000000000000 * 10**18; // Stake Contract
    uint256 public constant nftAirdrop = 25000000000000 * 10**18; // Airdrop for Nft holder
    uint256 public constant pepeShare = 70000000000000 * 10**18; // Respect to Pepe Holder
    uint256 public cexShare = 60000000000000 * 10**18; // Cex Listing, MEXC Binance
    uint256 public constant uniswapShare = 60000000000000 * 10**18; // Uniswap Pairs

    //Status
    bool public teamTokensDistributed;
    bool public cexTokensDistributed;
    bool public nftTokensDistributed;
    bool public pepeTokensDistributed;
    bool public donateStatus;

    //Donate Rate
    uint256 public constant ethToTokenRate = 2700000000 * 500; // Nearly 30 ETH

    constructor(bytes32 _merkleRoot) ERC20("Optimistic Pepe", "OPepe") {
        merkleRoot = _merkleRoot;
        owner = payable(msg.sender);
        _mint(msg.sender, uniswapShare); // for uniswap
        _mint(msg.sender, stakeShare); // for stakeContract
    }

    function claim(bytes32[] calldata merkleProof, address _ref) external nonReentrant {
        require(!claimed[msg.sender], "Already claimed");

        uint256 tokensToMint = claimAmount;
        uint256 tokensToRef = claimAmount / 10;

        require(totalClaimed + tokensToMint + tokensToRef <= opAirdrop, "Max supply reached");

        bytes32 node = keccak256(abi.encodePacked(msg.sender));
        (bool v,) = MerkleProof.verify(merkleProof, merkleRoot, node);
        require(v, "Invalid Merkle proof");

        claimed[msg.sender] = true;
        totalClaimed += tokensToMint;
        totalClaimed += tokensToRef;
        _mint(msg.sender, tokensToMint);
        _mint(_ref, tokensToRef);
    }

    function support() public payable nonReentrant {
        require(!donateStatus, "Donate is closed");
        require(msg.value > 0, "Amount 0");
        uint256 tokensToBuy = msg.value * ethToTokenRate;
        require(totalDonated + tokensToBuy <= cexShare, "Max supply reached");

        address payable targetAddress = payable(0x272d005dF51A7d949CDd8fC0205f6305E4616D95);
        targetAddress.transfer(msg.value);


        _mint(msg.sender, tokensToBuy);
        totalDonated += tokensToBuy;
        cexShare -= tokensToBuy;
    }

    function closeDonate() external onlyOwner {
        donateStatus = !donateStatus;
    }



    //Another Shares
    function distributeTeamTokens(address teamAddress) external onlyOwner {
        require(!teamTokensDistributed, "Team tokens already distributed");
        require(teamAddress != address(0), "Invalid team address");

        teamTokensDistributed = true;
        _mint(teamAddress, teamShare);
    }

    function distributeCexTokens(address cexAddress) external onlyOwner {
        require(!cexTokensDistributed, "CEX tokens already distributed");
        require(cexAddress != address(0), "Invalid CEX address");

        cexTokensDistributed = true;
        _mint(cexAddress, cexShare);
    }
    function distributePepeTokens(address pepeAddress) external onlyOwner {
        require(!pepeTokensDistributed, "Pepe tokens already distributed");
        require(pepeAddress != address(0), "Invalid Pepe address");

        pepeTokensDistributed = true;
        _mint(pepeAddress, pepeShare);
    }
    function distributeNftTokens(address nftAddress) external onlyOwner {
        require(!nftTokensDistributed, "Nfts tokens already distributed");
        require(nftAddress != address(0), "Invalid Nfts address");

        nftTokensDistributed = true;
        _mint(nftAddress, nftAirdrop);
    }

    //modifier
    modifier onlyOwner() {
        require(msg.sender == owner, "Not the contract owner");
        _;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cexShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cexTokensDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"address","name":"_ref","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"closeDonate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cexAddress","type":"address"}],"name":"distributeCexTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"}],"name":"distributeNftTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pepeAddress","type":"address"}],"name":"distributePepeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamAddress","type":"address"}],"name":"distributeTeamTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donateStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethToTokenRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftTokensDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pepeTokensDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"support","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamTokensDistributed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDonated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"uniswapShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526d02f54e74c0d08367c2e700000000600b553480156200002357600080fd5b506040516200395b3803806200395b833981810160405281019062000049919062000329565b6040518060400160405280600f81526020017f4f7074696d6973746963205065706500000000000000000000000000000000008152506040518060400160405280600581526020017f4f506570650000000000000000000000000000000000000000000000000000008152508160039081620000c69190620005d5565b508060049081620000d89190620005d5565b50505060016005819055508060068190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014b336d02f54e74c0d08367c2e7000000006200017260201b60201c565b6200016b336d01f8def8808b02452c9a000000006200017260201b60201c565b50620007d7565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001db906200071d565b60405180910390fd5b620001f860008383620002df60201b60201c565b80600260008282546200020c91906200076e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002bf9190620007ba565b60405180910390a3620002db60008383620002e460201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b6200030381620002ee565b81146200030f57600080fd5b50565b6000815190506200032381620002f8565b92915050565b600060208284031215620003425762000341620002e9565b5b6000620003528482850162000312565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003dd57607f821691505b602082108103620003f357620003f262000395565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041e565b6200046986836200041e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b6620004b0620004aa8462000481565b6200048b565b62000481565b9050919050565b6000819050919050565b620004d28362000495565b620004ea620004e182620004bd565b8484546200042b565b825550505050565b600090565b62000501620004f2565b6200050e818484620004c7565b505050565b5b8181101562000536576200052a600082620004f7565b60018101905062000514565b5050565b601f82111562000585576200054f81620003f9565b6200055a846200040e565b810160208510156200056a578190505b6200058262000579856200040e565b83018262000513565b50505b505050565b600082821c905092915050565b6000620005aa600019846008026200058a565b1980831691505092915050565b6000620005c5838362000597565b9150826002028217905092915050565b620005e0826200035b565b67ffffffffffffffff811115620005fc57620005fb62000366565b5b620006088254620003c4565b620006158282856200053a565b600060209050601f8311600181146200064d576000841562000638578287015190505b620006448582620005b7565b865550620006b4565b601f1984166200065d86620003f9565b60005b82811015620006875784890151825560018201915060208501945060208101905062000660565b86831015620006a75784890151620006a3601f89168262000597565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000705601f83620006bc565b91506200071282620006cd565b602082019050919050565b600060208201905081810360008301526200073881620006f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077b8262000481565b9150620007888362000481565b9250828201905080821115620007a357620007a26200073f565b5b92915050565b620007b48162000481565b82525050565b6000602082019050620007d16000830184620007a9565b92915050565b61317480620007e76000396000f3fe6080604052600436106102245760003560e01c806370a0823111610123578063acf58dfe116100ab578063dd62ed3e1161006f578063dd62ed3e14610807578063e09adc7014610844578063ea6ef2fe1461086f578063f52cc3941461089a578063fd1da440146108b157610224565b8063acf58dfe1461071e578063c884ef8314610749578063d17b527314610786578063d54ad2a1146107b1578063d5abeb01146107dc57610224565b806388b4f2d3116100f257806388b4f2d3146106255780638da5cb5b1461064e57806395d89b4114610679578063a457c2d7146106a4578063a9059cbb146106e157610224565b806370a082311461056757806373e8ba2c146105a45780637aaa113e146105cf578063830953ab146105fa57610224565b80632aececb9116101b157806339509351116101755780633950935114610480578063416e43bf146104bd57806358acca9f146104e8578063623573de146105115780636510d9481461053c57610224565b80632aececb9146103ad5780632eb4a7ab146103d6578063313ce5671461040157806334b9384c1461042c5780633897c7741461045557610224565b806318160ddd116101f857806318160ddd146102c65780631ea41c2c146102f157806322326a171461031c57806323b872dd14610347578063283039091461038457610224565b8062b370441461022957806306fdde0314610254578063095ea7b31461027f578063119f8747146102bc575b600080fd5b34801561023557600080fd5b5061023e6108dc565b60405161024b9190611fe3565b60405180910390f35b34801561026057600080fd5b506102696108e2565b604051610276919061208e565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612144565b610974565b6040516102b3919061219f565b60405180910390f35b6102c4610997565b005b3480156102d257600080fd5b506102db610b42565b6040516102e89190611fe3565b60405180910390f35b3480156102fd57600080fd5b50610306610b4c565b6040516103139190611fe3565b60405180910390f35b34801561032857600080fd5b50610331610b5e565b60405161033e9190611fe3565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906121ba565b610b70565b60405161037b919061219f565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a6919061220d565b610b9f565b005b3480156103b957600080fd5b506103d460048036038101906103cf919061220d565b610d24565b005b3480156103e257600080fd5b506103eb610ea9565b6040516103f89190612253565b60405180910390f35b34801561040d57600080fd5b50610416610eaf565b604051610423919061228a565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e919061220d565b610eb8565b005b34801561046157600080fd5b5061046a61103d565b6040516104779190611fe3565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612144565b61104f565b6040516104b4919061219f565b60405180910390f35b3480156104c957600080fd5b506104d2611086565b6040516104df919061219f565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061220d565b611099565b005b34801561051d57600080fd5b50610526611212565b604051610533919061219f565b60405180910390f35b34801561054857600080fd5b50610551611225565b60405161055e919061219f565b60405180910390f35b34801561057357600080fd5b5061058e6004803603810190610589919061220d565b611238565b60405161059b9190611fe3565b60405180910390f35b3480156105b057600080fd5b506105b9611280565b6040516105c6919061219f565b60405180910390f35b3480156105db57600080fd5b506105e4611293565b6040516105f19190611fe3565b60405180910390f35b34801561060657600080fd5b5061060f611299565b60405161061c9190611fe3565b60405180910390f35b34801561063157600080fd5b5061064c6004803603810190610647919061230a565b6112a9565b005b34801561065a57600080fd5b50610663611542565b604051610670919061238b565b60405180910390f35b34801561068557600080fd5b5061068e611568565b60405161069b919061208e565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612144565b6115fa565b6040516106d8919061219f565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190612144565b611671565b604051610715919061219f565b60405180910390f35b34801561072a57600080fd5b50610733611694565b6040516107409190611fe3565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b919061220d565b6116a6565b60405161077d919061219f565b60405180910390f35b34801561079257600080fd5b5061079b6116c6565b6040516107a89190611fe3565b60405180910390f35b3480156107bd57600080fd5b506107c66116d8565b6040516107d39190611fe3565b60405180910390f35b3480156107e857600080fd5b506107f16116de565b6040516107fe9190611fe3565b60405180910390f35b34801561081357600080fd5b5061082e600480360381019061082991906123a6565b6116f0565b60405161083b9190611fe3565b60405180910390f35b34801561085057600080fd5b50610859611777565b6040516108669190611fe3565b60405180910390f35b34801561087b57600080fd5b50610884611781565b6040516108919190611fe3565b60405180910390f35b3480156108a657600080fd5b506108af611793565b005b3480156108bd57600080fd5b506108c661184f565b6040516108d3919061219f565b60405180910390f35b600a5481565b6060600380546108f190612415565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90612415565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b5050505050905090565b60008061097f611862565b905061098c81858561186a565b600191505092915050565b61099f611a33565b600c60049054906101000a900460ff16156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690612492565b60405180910390fd5b60003411610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a29906124fe565b60405180910390fd5b600065013a52453c0034610a46919061254d565b9050600b5481600a54610a59919061258f565b1115610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a919061260f565b60405180910390fd5b600073272d005df51a7d949cdd8fc0205f6305e4616d9590508073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610af9573d6000803e3d6000fd5b50610b043383611a82565b81600a6000828254610b16919061258f565b9250508190555081600b6000828254610b2f919061262f565b925050819055505050610b40611bd8565b565b6000600254905090565b6d01f8def8808b02452c9a0000000081565b6d013b8b5b5056e16b3be04000000081565b600080610b7b611862565b9050610b88858285611be2565b610b93858585611c6e565b60019150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906126af565b60405180910390fd5b600c60039054906101000a900460ff1615610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c769061271b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612787565b60405180910390fd5b6001600c60036101000a81548160ff021916908315150217905550610d21816d03738632e0f343f90e0d80000000611a82565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab906126af565b60405180910390fd5b600c60029054906101000a900460ff1615610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb906127f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a9061285f565b60405180910390fd5b6001600c60026101000a81548160ff021916908315150217905550610ea6816d013b8b5b5056e16b3be040000000611a82565b50565b60065481565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f906126af565b60405180910390fd5b600c60009054906101000a900460ff1615610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f906128cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90612937565b60405180910390fd5b6001600c60006101000a81548160ff02191690831515021790555061103a816d02f54e74c0d08367c2e700000000611a82565b50565b6d03738632e0f343f90e0d8000000081565b60008061105a611862565b905061107b81858561106c85896116f0565b611076919061258f565b61186a565b600191505092915050565b600c60019054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906126af565b60405180910390fd5b600c60019054906101000a900460ff1615611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906129a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90612a0f565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555061120f81600b54611a82565b50565b600c60009054906101000a900460ff1681565b600c60039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60049054906101000a900460ff1681565b600b5481565b6b08b9633d49195a3e0c00000081565b6112b1611a33565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612a7b565b60405180910390fd5b60006b08b9633d49195a3e0c00000090506000600a6b08b9633d49195a3e0c00000061136a9190612aca565b90506d06a7f086b1d527a97687c0000000818360095461138a919061258f565b611394919061258f565b11156113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc9061260f565b60405180910390fd5b6000336040516020016113e89190612b43565b6040516020818303038152906040528051906020012090506000611450878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060065484611ee4565b50905080611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612baa565b60405180910390fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083600960008282546114fd919061258f565b925050819055508260096000828254611516919061258f565b925050819055506115273385611a82565b6115318584611a82565b5050505061153d611bd8565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461157790612415565b80601f01602080910402602001604051908101604052809291908181526020018280546115a390612415565b80156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b5050505050905090565b600080611605611862565b9050600061161382866116f0565b905083811015611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90612c3c565b60405180910390fd5b611665828686840361186a565b60019250505092915050565b60008061167c611862565b9050611689818585611c6e565b600191505092915050565b6d02f54e74c0d08367c2e70000000081565b60076020528060005260406000206000915054906101000a900460ff1681565b6d06a7f086b1d527a97687c000000081565b60095481565b6d162fcc6ba61bd98a35c48000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b65013a52453c0081565b6d02f54e74c0d08367c2e70000000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a906126af565b60405180910390fd5b600c60049054906101000a900460ff1615600c60046101000a81548160ff021916908315150217905550565b600c60029054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090612cce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90612d60565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a269190611fe3565b60405180910390a3505050565b600260055403611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90612dcc565b60405180910390fd5b6002600581905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890612e38565b60405180910390fd5b611afd60008383611fc0565b8060026000828254611b0f919061258f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc09190611fe3565b60405180910390a3611bd460008383611fc5565b5050565b6001600581905550565b6000611bee84846116f0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c685781811015611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612ea4565b60405180910390fd5b611c67848484840361186a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490612f36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4390612fc8565b60405180910390fd5b611d57838383611fc0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd49061305a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ecb9190611fe3565b60405180910390a3611ede848484611fc5565b50505050565b60008060008390506000805b8751811015611fad57600282611f06919061254d565b91506000888281518110611f1d57611f1c61307a565b5b60200260200101519050808411611f5e578381604051602001611f419291906130ca565b604051602081830303815290604052805190602001209350611f99565b8084604051602001611f719291906130ca565b604051602081830303815290604052805190602001209350600183611f96919061258f565b92505b508080611fa5906130f6565b915050611ef0565b5085821481935093505050935093915050565b505050565b505050565b6000819050919050565b611fdd81611fca565b82525050565b6000602082019050611ff86000830184611fd4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561203857808201518184015260208101905061201d565b60008484015250505050565b6000601f19601f8301169050919050565b600061206082611ffe565b61206a8185612009565b935061207a81856020860161201a565b61208381612044565b840191505092915050565b600060208201905081810360008301526120a88184612055565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120e5826120ba565b9050919050565b6120f5816120da565b811461210057600080fd5b50565b600081359050612112816120ec565b92915050565b61212181611fca565b811461212c57600080fd5b50565b60008135905061213e81612118565b92915050565b6000806040838503121561215b5761215a6120b0565b5b600061216985828601612103565b925050602061217a8582860161212f565b9150509250929050565b60008115159050919050565b61219981612184565b82525050565b60006020820190506121b46000830184612190565b92915050565b6000806000606084860312156121d3576121d26120b0565b5b60006121e186828701612103565b93505060206121f286828701612103565b92505060406122038682870161212f565b9150509250925092565b600060208284031215612223576122226120b0565b5b600061223184828501612103565b91505092915050565b6000819050919050565b61224d8161223a565b82525050565b60006020820190506122686000830184612244565b92915050565b600060ff82169050919050565b6122848161226e565b82525050565b600060208201905061229f600083018461227b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126122ca576122c96122a5565b5b8235905067ffffffffffffffff8111156122e7576122e66122aa565b5b602083019150836020820283011115612303576123026122af565b5b9250929050565b600080600060408486031215612323576123226120b0565b5b600084013567ffffffffffffffff811115612341576123406120b5565b5b61234d868287016122b4565b9350935050602061236086828701612103565b9150509250925092565b6000612375826120ba565b9050919050565b6123858161236a565b82525050565b60006020820190506123a0600083018461237c565b92915050565b600080604083850312156123bd576123bc6120b0565b5b60006123cb85828601612103565b92505060206123dc85828601612103565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061242d57607f821691505b6020821081036124405761243f6123e6565b5b50919050565b7f446f6e61746520697320636c6f73656400000000000000000000000000000000600082015250565b600061247c601083612009565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b7f416d6f756e742030000000000000000000000000000000000000000000000000600082015250565b60006124e8600883612009565b91506124f3826124b2565b602082019050919050565b60006020820190508181036000830152612517816124db565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061255882611fca565b915061256383611fca565b925082820261257181611fca565b915082820484148315176125885761258761251e565b5b5092915050565b600061259a82611fca565b91506125a583611fca565b92508282019050808211156125bd576125bc61251e565b5b92915050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006125f9601283612009565b9150612604826125c3565b602082019050919050565b60006020820190508181036000830152612628816125ec565b9050919050565b600061263a82611fca565b915061264583611fca565b925082820390508181111561265d5761265c61251e565b5b92915050565b7f4e6f742074686520636f6e7472616374206f776e657200000000000000000000600082015250565b6000612699601683612009565b91506126a482612663565b602082019050919050565b600060208201905081810360008301526126c88161268c565b9050919050565b7f5065706520746f6b656e7320616c726561647920646973747269627574656400600082015250565b6000612705601f83612009565b9150612710826126cf565b602082019050919050565b60006020820190508181036000830152612734816126f8565b9050919050565b7f496e76616c696420506570652061646472657373000000000000000000000000600082015250565b6000612771601483612009565b915061277c8261273b565b602082019050919050565b600060208201905081810360008301526127a081612764565b9050919050565b7f4e66747320746f6b656e7320616c726561647920646973747269627574656400600082015250565b60006127dd601f83612009565b91506127e8826127a7565b602082019050919050565b6000602082019050818103600083015261280c816127d0565b9050919050565b7f496e76616c6964204e6674732061646472657373000000000000000000000000600082015250565b6000612849601483612009565b915061285482612813565b602082019050919050565b600060208201905081810360008301526128788161283c565b9050919050565b7f5465616d20746f6b656e7320616c726561647920646973747269627574656400600082015250565b60006128b5601f83612009565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f496e76616c6964207465616d2061646472657373000000000000000000000000600082015250565b6000612921601483612009565b915061292c826128eb565b602082019050919050565b6000602082019050818103600083015261295081612914565b9050919050565b7f43455820746f6b656e7320616c72656164792064697374726962757465640000600082015250565b600061298d601e83612009565b915061299882612957565b602082019050919050565b600060208201905081810360008301526129bc81612980565b9050919050565b7f496e76616c696420434558206164647265737300000000000000000000000000600082015250565b60006129f9601383612009565b9150612a04826129c3565b602082019050919050565b60006020820190508181036000830152612a28816129ec565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000612a65600f83612009565b9150612a7082612a2f565b602082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad582611fca565b9150612ae083611fca565b925082612af057612aef612a9b565b5b828204905092915050565b60008160601b9050919050565b6000612b1382612afb565b9050919050565b6000612b2582612b08565b9050919050565b612b3d612b38826120da565b612b1a565b82525050565b6000612b4f8284612b2c565b60148201915081905092915050565b7f496e76616c6964204d65726b6c652070726f6f66000000000000000000000000600082015250565b6000612b94601483612009565b9150612b9f82612b5e565b602082019050919050565b60006020820190508181036000830152612bc381612b87565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c26602583612009565b9150612c3182612bca565b604082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cb8602483612009565b9150612cc382612c5c565b604082019050919050565b60006020820190508181036000830152612ce781612cab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4a602283612009565b9150612d5582612cee565b604082019050919050565b60006020820190508181036000830152612d7981612d3d565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612db6601f83612009565b9150612dc182612d80565b602082019050919050565b60006020820190508181036000830152612de581612da9565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612e22601f83612009565b9150612e2d82612dec565b602082019050919050565b60006020820190508181036000830152612e5181612e15565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612e8e601d83612009565b9150612e9982612e58565b602082019050919050565b60006020820190508181036000830152612ebd81612e81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f20602583612009565b9150612f2b82612ec4565b604082019050919050565b60006020820190508181036000830152612f4f81612f13565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fb2602383612009565b9150612fbd82612f56565b604082019050919050565b60006020820190508181036000830152612fe181612fa5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613044602683612009565b915061304f82612fe8565b604082019050919050565b6000602082019050818103600083015261307381613037565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6130c46130bf8261223a565b6130a9565b82525050565b60006130d682856130b3565b6020820191506130e682846130b3565b6020820191508190509392505050565b600061310182611fca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131335761313261251e565b5b60018201905091905056fea26469706673582212209dcd80386ef780c51f063fbf7ca5c8d3cc3f72c40c89d33db86abc246e76892564736f6c63430008120033ead735ccac0859d7792d0fc2459347122bfd7b34fb1997279f3f1f5cd326f725

Deployed Bytecode

0x6080604052600436106102245760003560e01c806370a0823111610123578063acf58dfe116100ab578063dd62ed3e1161006f578063dd62ed3e14610807578063e09adc7014610844578063ea6ef2fe1461086f578063f52cc3941461089a578063fd1da440146108b157610224565b8063acf58dfe1461071e578063c884ef8314610749578063d17b527314610786578063d54ad2a1146107b1578063d5abeb01146107dc57610224565b806388b4f2d3116100f257806388b4f2d3146106255780638da5cb5b1461064e57806395d89b4114610679578063a457c2d7146106a4578063a9059cbb146106e157610224565b806370a082311461056757806373e8ba2c146105a45780637aaa113e146105cf578063830953ab146105fa57610224565b80632aececb9116101b157806339509351116101755780633950935114610480578063416e43bf146104bd57806358acca9f146104e8578063623573de146105115780636510d9481461053c57610224565b80632aececb9146103ad5780632eb4a7ab146103d6578063313ce5671461040157806334b9384c1461042c5780633897c7741461045557610224565b806318160ddd116101f857806318160ddd146102c65780631ea41c2c146102f157806322326a171461031c57806323b872dd14610347578063283039091461038457610224565b8062b370441461022957806306fdde0314610254578063095ea7b31461027f578063119f8747146102bc575b600080fd5b34801561023557600080fd5b5061023e6108dc565b60405161024b9190611fe3565b60405180910390f35b34801561026057600080fd5b506102696108e2565b604051610276919061208e565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612144565b610974565b6040516102b3919061219f565b60405180910390f35b6102c4610997565b005b3480156102d257600080fd5b506102db610b42565b6040516102e89190611fe3565b60405180910390f35b3480156102fd57600080fd5b50610306610b4c565b6040516103139190611fe3565b60405180910390f35b34801561032857600080fd5b50610331610b5e565b60405161033e9190611fe3565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906121ba565b610b70565b60405161037b919061219f565b60405180910390f35b34801561039057600080fd5b506103ab60048036038101906103a6919061220d565b610b9f565b005b3480156103b957600080fd5b506103d460048036038101906103cf919061220d565b610d24565b005b3480156103e257600080fd5b506103eb610ea9565b6040516103f89190612253565b60405180910390f35b34801561040d57600080fd5b50610416610eaf565b604051610423919061228a565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e919061220d565b610eb8565b005b34801561046157600080fd5b5061046a61103d565b6040516104779190611fe3565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612144565b61104f565b6040516104b4919061219f565b60405180910390f35b3480156104c957600080fd5b506104d2611086565b6040516104df919061219f565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061220d565b611099565b005b34801561051d57600080fd5b50610526611212565b604051610533919061219f565b60405180910390f35b34801561054857600080fd5b50610551611225565b60405161055e919061219f565b60405180910390f35b34801561057357600080fd5b5061058e6004803603810190610589919061220d565b611238565b60405161059b9190611fe3565b60405180910390f35b3480156105b057600080fd5b506105b9611280565b6040516105c6919061219f565b60405180910390f35b3480156105db57600080fd5b506105e4611293565b6040516105f19190611fe3565b60405180910390f35b34801561060657600080fd5b5061060f611299565b60405161061c9190611fe3565b60405180910390f35b34801561063157600080fd5b5061064c6004803603810190610647919061230a565b6112a9565b005b34801561065a57600080fd5b50610663611542565b604051610670919061238b565b60405180910390f35b34801561068557600080fd5b5061068e611568565b60405161069b919061208e565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612144565b6115fa565b6040516106d8919061219f565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190612144565b611671565b604051610715919061219f565b60405180910390f35b34801561072a57600080fd5b50610733611694565b6040516107409190611fe3565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b919061220d565b6116a6565b60405161077d919061219f565b60405180910390f35b34801561079257600080fd5b5061079b6116c6565b6040516107a89190611fe3565b60405180910390f35b3480156107bd57600080fd5b506107c66116d8565b6040516107d39190611fe3565b60405180910390f35b3480156107e857600080fd5b506107f16116de565b6040516107fe9190611fe3565b60405180910390f35b34801561081357600080fd5b5061082e600480360381019061082991906123a6565b6116f0565b60405161083b9190611fe3565b60405180910390f35b34801561085057600080fd5b50610859611777565b6040516108669190611fe3565b60405180910390f35b34801561087b57600080fd5b50610884611781565b6040516108919190611fe3565b60405180910390f35b3480156108a657600080fd5b506108af611793565b005b3480156108bd57600080fd5b506108c661184f565b6040516108d3919061219f565b60405180910390f35b600a5481565b6060600380546108f190612415565b80601f016020809104026020016040519081016040528092919081815260200182805461091d90612415565b801561096a5780601f1061093f5761010080835404028352916020019161096a565b820191906000526020600020905b81548152906001019060200180831161094d57829003601f168201915b5050505050905090565b60008061097f611862565b905061098c81858561186a565b600191505092915050565b61099f611a33565b600c60049054906101000a900460ff16156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690612492565b60405180910390fd5b60003411610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a29906124fe565b60405180910390fd5b600065013a52453c0034610a46919061254d565b9050600b5481600a54610a59919061258f565b1115610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a919061260f565b60405180910390fd5b600073272d005df51a7d949cdd8fc0205f6305e4616d9590508073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610af9573d6000803e3d6000fd5b50610b043383611a82565b81600a6000828254610b16919061258f565b9250508190555081600b6000828254610b2f919061262f565b925050819055505050610b40611bd8565b565b6000600254905090565b6d01f8def8808b02452c9a0000000081565b6d013b8b5b5056e16b3be04000000081565b600080610b7b611862565b9050610b88858285611be2565b610b93858585611c6e565b60019150509392505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c26906126af565b60405180910390fd5b600c60039054906101000a900460ff1615610c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c769061271b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590612787565b60405180910390fd5b6001600c60036101000a81548160ff021916908315150217905550610d21816d03738632e0f343f90e0d80000000611a82565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dab906126af565b60405180910390fd5b600c60029054906101000a900460ff1615610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb906127f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a9061285f565b60405180910390fd5b6001600c60026101000a81548160ff021916908315150217905550610ea6816d013b8b5b5056e16b3be040000000611a82565b50565b60065481565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f906126af565b60405180910390fd5b600c60009054906101000a900460ff1615610f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8f906128cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe90612937565b60405180910390fd5b6001600c60006101000a81548160ff02191690831515021790555061103a816d02f54e74c0d08367c2e700000000611a82565b50565b6d03738632e0f343f90e0d8000000081565b60008061105a611862565b905061107b81858561106c85896116f0565b611076919061258f565b61186a565b600191505092915050565b600c60019054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906126af565b60405180910390fd5b600c60019054906101000a900460ff1615611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906129a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90612a0f565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555061120f81600b54611a82565b50565b600c60009054906101000a900460ff1681565b600c60039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60049054906101000a900460ff1681565b600b5481565b6b08b9633d49195a3e0c00000081565b6112b1611a33565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612a7b565b60405180910390fd5b60006b08b9633d49195a3e0c00000090506000600a6b08b9633d49195a3e0c00000061136a9190612aca565b90506d06a7f086b1d527a97687c0000000818360095461138a919061258f565b611394919061258f565b11156113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc9061260f565b60405180910390fd5b6000336040516020016113e89190612b43565b6040516020818303038152906040528051906020012090506000611450878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060065484611ee4565b50905080611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612baa565b60405180910390fd5b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083600960008282546114fd919061258f565b925050819055508260096000828254611516919061258f565b925050819055506115273385611a82565b6115318584611a82565b5050505061153d611bd8565b505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461157790612415565b80601f01602080910402602001604051908101604052809291908181526020018280546115a390612415565b80156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b5050505050905090565b600080611605611862565b9050600061161382866116f0565b905083811015611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90612c3c565b60405180910390fd5b611665828686840361186a565b60019250505092915050565b60008061167c611862565b9050611689818585611c6e565b600191505092915050565b6d02f54e74c0d08367c2e70000000081565b60076020528060005260406000206000915054906101000a900460ff1681565b6d06a7f086b1d527a97687c000000081565b60095481565b6d162fcc6ba61bd98a35c48000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b65013a52453c0081565b6d02f54e74c0d08367c2e70000000081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a906126af565b60405180910390fd5b600c60049054906101000a900460ff1615600c60046101000a81548160ff021916908315150217905550565b600c60029054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d090612cce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90612d60565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a269190611fe3565b60405180910390a3505050565b600260055403611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90612dcc565b60405180910390fd5b6002600581905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae890612e38565b60405180910390fd5b611afd60008383611fc0565b8060026000828254611b0f919061258f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc09190611fe3565b60405180910390a3611bd460008383611fc5565b5050565b6001600581905550565b6000611bee84846116f0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c685781811015611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190612ea4565b60405180910390fd5b611c67848484840361186a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd490612f36565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4390612fc8565b60405180910390fd5b611d57838383611fc0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd49061305a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ecb9190611fe3565b60405180910390a3611ede848484611fc5565b50505050565b60008060008390506000805b8751811015611fad57600282611f06919061254d565b91506000888281518110611f1d57611f1c61307a565b5b60200260200101519050808411611f5e578381604051602001611f419291906130ca565b604051602081830303815290604052805190602001209350611f99565b8084604051602001611f719291906130ca565b604051602081830303815290604052805190602001209350600183611f96919061258f565b92505b508080611fa5906130f6565b915050611ef0565b5085821481935093505050935093915050565b505050565b505050565b6000819050919050565b611fdd81611fca565b82525050565b6000602082019050611ff86000830184611fd4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561203857808201518184015260208101905061201d565b60008484015250505050565b6000601f19601f8301169050919050565b600061206082611ffe565b61206a8185612009565b935061207a81856020860161201a565b61208381612044565b840191505092915050565b600060208201905081810360008301526120a88184612055565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120e5826120ba565b9050919050565b6120f5816120da565b811461210057600080fd5b50565b600081359050612112816120ec565b92915050565b61212181611fca565b811461212c57600080fd5b50565b60008135905061213e81612118565b92915050565b6000806040838503121561215b5761215a6120b0565b5b600061216985828601612103565b925050602061217a8582860161212f565b9150509250929050565b60008115159050919050565b61219981612184565b82525050565b60006020820190506121b46000830184612190565b92915050565b6000806000606084860312156121d3576121d26120b0565b5b60006121e186828701612103565b93505060206121f286828701612103565b92505060406122038682870161212f565b9150509250925092565b600060208284031215612223576122226120b0565b5b600061223184828501612103565b91505092915050565b6000819050919050565b61224d8161223a565b82525050565b60006020820190506122686000830184612244565b92915050565b600060ff82169050919050565b6122848161226e565b82525050565b600060208201905061229f600083018461227b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126122ca576122c96122a5565b5b8235905067ffffffffffffffff8111156122e7576122e66122aa565b5b602083019150836020820283011115612303576123026122af565b5b9250929050565b600080600060408486031215612323576123226120b0565b5b600084013567ffffffffffffffff811115612341576123406120b5565b5b61234d868287016122b4565b9350935050602061236086828701612103565b9150509250925092565b6000612375826120ba565b9050919050565b6123858161236a565b82525050565b60006020820190506123a0600083018461237c565b92915050565b600080604083850312156123bd576123bc6120b0565b5b60006123cb85828601612103565b92505060206123dc85828601612103565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061242d57607f821691505b6020821081036124405761243f6123e6565b5b50919050565b7f446f6e61746520697320636c6f73656400000000000000000000000000000000600082015250565b600061247c601083612009565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b7f416d6f756e742030000000000000000000000000000000000000000000000000600082015250565b60006124e8600883612009565b91506124f3826124b2565b602082019050919050565b60006020820190508181036000830152612517816124db565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061255882611fca565b915061256383611fca565b925082820261257181611fca565b915082820484148315176125885761258761251e565b5b5092915050565b600061259a82611fca565b91506125a583611fca565b92508282019050808211156125bd576125bc61251e565b5b92915050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006125f9601283612009565b9150612604826125c3565b602082019050919050565b60006020820190508181036000830152612628816125ec565b9050919050565b600061263a82611fca565b915061264583611fca565b925082820390508181111561265d5761265c61251e565b5b92915050565b7f4e6f742074686520636f6e7472616374206f776e657200000000000000000000600082015250565b6000612699601683612009565b91506126a482612663565b602082019050919050565b600060208201905081810360008301526126c88161268c565b9050919050565b7f5065706520746f6b656e7320616c726561647920646973747269627574656400600082015250565b6000612705601f83612009565b9150612710826126cf565b602082019050919050565b60006020820190508181036000830152612734816126f8565b9050919050565b7f496e76616c696420506570652061646472657373000000000000000000000000600082015250565b6000612771601483612009565b915061277c8261273b565b602082019050919050565b600060208201905081810360008301526127a081612764565b9050919050565b7f4e66747320746f6b656e7320616c726561647920646973747269627574656400600082015250565b60006127dd601f83612009565b91506127e8826127a7565b602082019050919050565b6000602082019050818103600083015261280c816127d0565b9050919050565b7f496e76616c6964204e6674732061646472657373000000000000000000000000600082015250565b6000612849601483612009565b915061285482612813565b602082019050919050565b600060208201905081810360008301526128788161283c565b9050919050565b7f5465616d20746f6b656e7320616c726561647920646973747269627574656400600082015250565b60006128b5601f83612009565b91506128c08261287f565b602082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b7f496e76616c6964207465616d2061646472657373000000000000000000000000600082015250565b6000612921601483612009565b915061292c826128eb565b602082019050919050565b6000602082019050818103600083015261295081612914565b9050919050565b7f43455820746f6b656e7320616c72656164792064697374726962757465640000600082015250565b600061298d601e83612009565b915061299882612957565b602082019050919050565b600060208201905081810360008301526129bc81612980565b9050919050565b7f496e76616c696420434558206164647265737300000000000000000000000000600082015250565b60006129f9601383612009565b9150612a04826129c3565b602082019050919050565b60006020820190508181036000830152612a28816129ec565b9050919050565b7f416c726561647920636c61696d65640000000000000000000000000000000000600082015250565b6000612a65600f83612009565b9150612a7082612a2f565b602082019050919050565b60006020820190508181036000830152612a9481612a58565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad582611fca565b9150612ae083611fca565b925082612af057612aef612a9b565b5b828204905092915050565b60008160601b9050919050565b6000612b1382612afb565b9050919050565b6000612b2582612b08565b9050919050565b612b3d612b38826120da565b612b1a565b82525050565b6000612b4f8284612b2c565b60148201915081905092915050565b7f496e76616c6964204d65726b6c652070726f6f66000000000000000000000000600082015250565b6000612b94601483612009565b9150612b9f82612b5e565b602082019050919050565b60006020820190508181036000830152612bc381612b87565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c26602583612009565b9150612c3182612bca565b604082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cb8602483612009565b9150612cc382612c5c565b604082019050919050565b60006020820190508181036000830152612ce781612cab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d4a602283612009565b9150612d5582612cee565b604082019050919050565b60006020820190508181036000830152612d7981612d3d565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612db6601f83612009565b9150612dc182612d80565b602082019050919050565b60006020820190508181036000830152612de581612da9565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612e22601f83612009565b9150612e2d82612dec565b602082019050919050565b60006020820190508181036000830152612e5181612e15565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612e8e601d83612009565b9150612e9982612e58565b602082019050919050565b60006020820190508181036000830152612ebd81612e81565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f20602583612009565b9150612f2b82612ec4565b604082019050919050565b60006020820190508181036000830152612f4f81612f13565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fb2602383612009565b9150612fbd82612f56565b604082019050919050565b60006020820190508181036000830152612fe181612fa5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613044602683612009565b915061304f82612fe8565b604082019050919050565b6000602082019050818103600083015261307381613037565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6130c46130bf8261223a565b6130a9565b82525050565b60006130d682856130b3565b6020820191506130e682846130b3565b6020820191508190509392505050565b600061310182611fca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131335761313261251e565b5b60018201905091905056fea26469706673582212209dcd80386ef780c51f063fbf7ca5c8d3cc3f72c40c89d33db86abc246e76892564736f6c63430008120033

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

ead735ccac0859d7792d0fc2459347122bfd7b34fb1997279f3f1f5cd326f725

-----Decoded View---------------
Arg [0] : _merkleRoot (bytes32): 0xead735ccac0859d7792d0fc2459347122bfd7b34fb1997279f3f1f5cd326f725

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


Deployed Bytecode Sourcemap

25681:4329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25951:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12938:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15289:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27971:549;;;:::i;:::-;;14058:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26218:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26303;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16070:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29266:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29577:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25738:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13900:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28651:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26396:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16774:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26715:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28964:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26675:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26793;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14229:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26833:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26488:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25816:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27242:721;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25880:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13157:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17515:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14562:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26573:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25770:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26052:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25917:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25985:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14818:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26885:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26144:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28528:89;;;;;;;;;;;;;:::i;:::-;;26754:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25951:27;;;;:::o;12938:100::-;12992:13;13025:5;13018:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12938:100;:::o;15289:201::-;15372:4;15389:13;15405:12;:10;:12::i;:::-;15389:28;;15428:32;15437:5;15444:7;15453:6;15428:8;:32::i;:::-;15478:4;15471:11;;;15289:201;;;;:::o;27971:549::-;5686:21;:19;:21::i;:::-;28038:12:::1;;;;;;;;;;;28037:13;28029:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;28102:1;28090:9;:13;28082:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;28127:19;26926:16;28149:9;:26;;;;:::i;:::-;28127:48;;28224:8;;28209:11;28194:12;;:26;;;;:::i;:::-;:38;;28186:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;28268:29;28308:42;28268:83;;28362:13;:22;;:33;28385:9;28362:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28410:30;28416:10;28428:11;28410:5;:30::i;:::-;28467:11;28451:12;;:27;;;;;;;:::i;:::-;;;;;;;;28501:11;28489:8;;:23;;;;;;;:::i;:::-;;;;;;;;28018:502;;5730:20:::0;:18;:20::i;:::-;27971:549::o;14058:108::-;14119:7;14146:12;;14139:19;;14058:108;:::o;26218:60::-;26255:23;26218:60;:::o;26303:::-;26340:23;26303:60;:::o;16070:295::-;16201:4;16218:15;16236:12;:10;:12::i;:::-;16218:30;;16259:38;16275:4;16281:7;16290:6;16259:15;:38::i;:::-;16308:27;16318:4;16324:2;16328:6;16308:9;:27::i;:::-;16353:4;16346:11;;;16070:295;;;;;:::o;29266:305::-;29955:5;;;;;;;;;;;29941:19;;:10;:19;;;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29356:21:::1;;;;;;;;;;;29355:22;29347:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29455:1;29432:25;;:11;:25;;::::0;29424:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29519:4;29495:21;;:28;;;;;;;;;;;;;;;;;;29534:29;29540:11;26432:23;29534:5;:29::i;:::-;29266:305:::0;:::o;29577:300::-;29955:5;;;;;;;;;;;29941:19;;:10;:19;;;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29665:20:::1;;;;;;;;;;;29664:21;29656:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29762:1;29740:24;;:10;:24;;::::0;29732:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29825:4;29802:20;;:27;;;;;;;;;;;;;;;;;;29840:29;29846:10;26340:23;29840:5;:29::i;:::-;29577:300:::0;:::o;25738:25::-;;;;:::o;13900:93::-;13958:5;13983:2;13976:9;;13900:93;:::o;28651:305::-;29955:5;;;;;;;;;;;29941:19;;:10;:19;;;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28741:21:::1;;;;;;;;;;;28740:22;28732:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28840:1;28817:25;;:11;:25;;::::0;28809:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28904:4;28880:21;;:28;;;;;;;;;;;;;;;;;;28919:29;28925:11;26180:23;28919:5;:29::i;:::-;28651:305:::0;:::o;26396:59::-;26432:23;26396:59;:::o;16774:238::-;16862:4;16879:13;16895:12;:10;:12::i;:::-;16879:28;;16918:64;16927:5;16934:7;16971:10;16943:25;16953:5;16960:7;16943:9;:25::i;:::-;:38;;;;:::i;:::-;16918:8;:64::i;:::-;17000:4;16993:11;;;16774:238;;;;:::o;26715:32::-;;;;;;;;;;;;;:::o;28964:296::-;29955:5;;;;;;;;;;;29941:19;;:10;:19;;;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29052:20:::1;;;;;;;;;;;29051:21;29043:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29148:1;29126:24;;:10;:24;;::::0;29118:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29210:4;29187:20;;:27;;;;;;;;;;;;;;;;;;29225;29231:10;29243:8;;29225:5;:27::i;:::-;28964:296:::0;:::o;26675:33::-;;;;;;;;;;;;;:::o;26793:::-;;;;;;;;;;;;;:::o;14229:127::-;14303:7;14330:9;:18;14340:7;14330:18;;;;;;;;;;;;;;;;14323:25;;14229:127;;;:::o;26833:24::-;;;;;;;;;;;;;:::o;26488:49::-;;;;:::o;25816:57::-;25854:19;25816:57;:::o;27242:721::-;5686:21;:19;:21::i;:::-;27345:7:::1;:19;27353:10;27345:19;;;;;;;;;;;;;;;;;;;;;;;;;27344:20;27336:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27397:20;25854:19;27397:34;;27442:19;27478:2;25854:19;27464:16;;;;:::i;:::-;27442:38;;26088:24;27531:11;27516:12;27501;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;27493:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;27591:12;27633:10;27616:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;27606:39;;;;;;27591:54;;27657:6;27668:49;27687:11;;27668:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27700:10;;27712:4;27668:18;:49::i;:::-;27656:61;;;27736:1;27728:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;27797:4;27775:7;:19;27783:10;27775:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;27828:12;27812;;:28;;;;;;;:::i;:::-;;;;;;;;27867:11;27851:12;;:27;;;;;;;:::i;:::-;;;;;;;;27889:31;27895:10;27907:12;27889:5;:31::i;:::-;27931:24;27937:4;27943:11;27931:5;:24::i;:::-;27325:638;;;;5730:20:::0;:18;:20::i;:::-;27242:721;;;:::o;25880:28::-;;;;;;;;;;;;;:::o;13157:104::-;13213:13;13246:7;13239:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13157:104;:::o;17515:436::-;17608:4;17625:13;17641:12;:10;:12::i;:::-;17625:28;;17664:24;17691:25;17701:5;17708:7;17691:9;:25::i;:::-;17664:52;;17755:15;17735:16;:35;;17727:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17848:60;17857:5;17864:7;17892:15;17873:16;:34;17848:8;:60::i;:::-;17939:4;17932:11;;;;17515:436;;;;:::o;14562:193::-;14641:4;14658:13;14674:12;:10;:12::i;:::-;14658:28;;14697;14707:5;14714:2;14718:6;14697:9;:28::i;:::-;14743:4;14736:11;;;14562:193;;;;:::o;26573:62::-;26612:23;26573:62;:::o;25770:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;26052:60::-;26088:24;26052:60;:::o;25917:27::-;;;;:::o;25985:60::-;26021:24;25985:60;:::o;14818:151::-;14907:7;14934:11;:18;14946:5;14934:18;;;;;;;;;;;;;;;:27;14953:7;14934:27;;;;;;;;;;;;;;;;14927:34;;14818:151;;;;:::o;26885:57::-;26926:16;26885:57;:::o;26144:59::-;26180:23;26144:59;:::o;28528:89::-;29955:5;;;;;;;;;;;29941:19;;:10;:19;;;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28597:12:::1;;;;;;;;;;;28596:13;28581:12;;:28;;;;;;;;;;;;;;;;;;28528:89::o:0;26754:32::-;;;;;;;;;;;;;:::o;6966:98::-;7019:7;7046:10;7039:17;;6966:98;:::o;21542:380::-;21695:1;21678:19;;:5;:19;;;21670:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21776:1;21757:21;;:7;:21;;;21749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21860:6;21830:11;:18;21842:5;21830:18;;;;;;;;;;;;;;;:27;21849:7;21830:27;;;;;;;;;;;;;;;:36;;;;21898:7;21882:32;;21891:5;21882:32;;;21907:6;21882:32;;;;;;:::i;:::-;;;;;;;;21542:380;;;:::o;5766:293::-;5168:1;5900:7;;:19;5892:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;5168:1;6033:7;:18;;;;5766:293::o;19548:548::-;19651:1;19632:21;;:7;:21;;;19624:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19702:49;19731:1;19735:7;19744:6;19702:20;:49::i;:::-;19780:6;19764:12;;:22;;;;;;;:::i;:::-;;;;;;;;19957:6;19935:9;:18;19945:7;19935:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;20011:7;19990:37;;20007:1;19990:37;;;20020:6;19990:37;;;;;;:::i;:::-;;;;;;;;20040:48;20068:1;20072:7;20081:6;20040:19;:48::i;:::-;19548:548;;:::o;6067:213::-;5124:1;6250:7;:22;;;;6067:213::o;22213:453::-;22348:24;22375:25;22385:5;22392:7;22375:9;:25::i;:::-;22348:52;;22435:17;22415:16;:37;22411:248;;22497:6;22477:16;:26;;22469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22581:51;22590:5;22597:7;22625:6;22606:16;:25;22581:8;:51::i;:::-;22411:248;22337:329;22213:453;;;:::o;18421:840::-;18568:1;18552:18;;:4;:18;;;18544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:1;18631:16;;:2;:16;;;18623:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18700:38;18721:4;18727:2;18731:6;18700:20;:38::i;:::-;18751:19;18773:9;:15;18783:4;18773:15;;;;;;;;;;;;;;;;18751:37;;18822:6;18807:11;:21;;18799:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18939:6;18925:11;:20;18907:9;:15;18917:4;18907:15;;;;;;;;;;;;;;;:38;;;;19142:6;19125:9;:13;19135:2;19125:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;19192:2;19177:26;;19186:4;19177:26;;;19196:6;19177:26;;;;;;:::i;:::-;;;;;;;;19216:37;19236:4;19242:2;19246:6;19216:19;:37::i;:::-;18533:728;18421:840;;;:::o;2406:930::-;2531:4;2537:7;2557:20;2580:4;2557:27;;2595:13;2630:9;2625:579;2649:5;:12;2645:1;:16;2625:579;;;2692:1;2683:10;;;;;:::i;:::-;;;2708:20;2731:5;2737:1;2731:8;;;;;;;;:::i;:::-;;;;;;;;2708:31;;2776:12;2760;:28;2756:437;;2930:12;2944;2913:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2903:55;;;;;;2888:70;;2756:437;;;3120:12;3134;3103:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3093:55;;;;;;3078:70;;3176:1;3167:10;;;;;:::i;:::-;;;2756:437;2668:536;2663:3;;;;;:::i;:::-;;;;2625:579;;;;3316:4;3300:12;:20;3322:5;3292:36;;;;;;2406:930;;;;;;:::o;23266:125::-;;;;:::o;23995:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:77::-;4795:7;4824:5;4813:16;;4758:77;;;:::o;4841:118::-;4928:24;4946:5;4928:24;:::i;:::-;4923:3;4916:37;4841:118;;:::o;4965:222::-;5058:4;5096:2;5085:9;5081:18;5073:26;;5109:71;5177:1;5166:9;5162:17;5153:6;5109:71;:::i;:::-;4965:222;;;;:::o;5193:86::-;5228:7;5268:4;5261:5;5257:16;5246:27;;5193:86;;;:::o;5285:112::-;5368:22;5384:5;5368:22;:::i;:::-;5363:3;5356:35;5285:112;;:::o;5403:214::-;5492:4;5530:2;5519:9;5515:18;5507:26;;5543:67;5607:1;5596:9;5592:17;5583:6;5543:67;:::i;:::-;5403:214;;;;:::o;5623:117::-;5732:1;5729;5722:12;5746:117;5855:1;5852;5845:12;5869:117;5978:1;5975;5968:12;6009:568;6082:8;6092:6;6142:3;6135:4;6127:6;6123:17;6119:27;6109:122;;6150:79;;:::i;:::-;6109:122;6263:6;6250:20;6240:30;;6293:18;6285:6;6282:30;6279:117;;;6315:79;;:::i;:::-;6279:117;6429:4;6421:6;6417:17;6405:29;;6483:3;6475:4;6467:6;6463:17;6453:8;6449:32;6446:41;6443:128;;;6490:79;;:::i;:::-;6443:128;6009:568;;;;;:::o;6583:704::-;6678:6;6686;6694;6743:2;6731:9;6722:7;6718:23;6714:32;6711:119;;;6749:79;;:::i;:::-;6711:119;6897:1;6886:9;6882:17;6869:31;6927:18;6919:6;6916:30;6913:117;;;6949:79;;:::i;:::-;6913:117;7062:80;7134:7;7125:6;7114:9;7110:22;7062:80;:::i;:::-;7044:98;;;;6840:312;7191:2;7217:53;7262:7;7253:6;7242:9;7238:22;7217:53;:::i;:::-;7207:63;;7162:118;6583:704;;;;;:::o;7293:104::-;7338:7;7367:24;7385:5;7367:24;:::i;:::-;7356:35;;7293:104;;;:::o;7403:142::-;7506:32;7532:5;7506:32;:::i;:::-;7501:3;7494:45;7403:142;;:::o;7551:254::-;7660:4;7698:2;7687:9;7683:18;7675:26;;7711:87;7795:1;7784:9;7780:17;7771:6;7711:87;:::i;:::-;7551:254;;;;:::o;7811:474::-;7879:6;7887;7936:2;7924:9;7915:7;7911:23;7907:32;7904:119;;;7942:79;;:::i;:::-;7904:119;8062:1;8087:53;8132:7;8123:6;8112:9;8108:22;8087:53;:::i;:::-;8077:63;;8033:117;8189:2;8215:53;8260:7;8251:6;8240:9;8236:22;8215:53;:::i;:::-;8205:63;;8160:118;7811:474;;;;;:::o;8291:180::-;8339:77;8336:1;8329:88;8436:4;8433:1;8426:15;8460:4;8457:1;8450:15;8477:320;8521:6;8558:1;8552:4;8548:12;8538:22;;8605:1;8599:4;8595:12;8626:18;8616:81;;8682:4;8674:6;8670:17;8660:27;;8616:81;8744:2;8736:6;8733:14;8713:18;8710:38;8707:84;;8763:18;;:::i;:::-;8707:84;8528:269;8477:320;;;:::o;8803:166::-;8943:18;8939:1;8931:6;8927:14;8920:42;8803:166;:::o;8975:366::-;9117:3;9138:67;9202:2;9197:3;9138:67;:::i;:::-;9131:74;;9214:93;9303:3;9214:93;:::i;:::-;9332:2;9327:3;9323:12;9316:19;;8975:366;;;:::o;9347:419::-;9513:4;9551:2;9540:9;9536:18;9528:26;;9600:9;9594:4;9590:20;9586:1;9575:9;9571:17;9564:47;9628:131;9754:4;9628:131;:::i;:::-;9620:139;;9347:419;;;:::o;9772:158::-;9912:10;9908:1;9900:6;9896:14;9889:34;9772:158;:::o;9936:365::-;10078:3;10099:66;10163:1;10158:3;10099:66;:::i;:::-;10092:73;;10174:93;10263:3;10174:93;:::i;:::-;10292:2;10287:3;10283:12;10276:19;;9936:365;;;:::o;10307:419::-;10473:4;10511:2;10500:9;10496:18;10488:26;;10560:9;10554:4;10550:20;10546:1;10535:9;10531:17;10524:47;10588:131;10714:4;10588:131;:::i;:::-;10580:139;;10307:419;;;:::o;10732:180::-;10780:77;10777:1;10770:88;10877:4;10874:1;10867:15;10901:4;10898:1;10891:15;10918:410;10958:7;10981:20;10999:1;10981:20;:::i;:::-;10976:25;;11015:20;11033:1;11015:20;:::i;:::-;11010:25;;11070:1;11067;11063:9;11092:30;11110:11;11092:30;:::i;:::-;11081:41;;11271:1;11262:7;11258:15;11255:1;11252:22;11232:1;11225:9;11205:83;11182:139;;11301:18;;:::i;:::-;11182:139;10966:362;10918:410;;;;:::o;11334:191::-;11374:3;11393:20;11411:1;11393:20;:::i;:::-;11388:25;;11427:20;11445:1;11427:20;:::i;:::-;11422:25;;11470:1;11467;11463:9;11456:16;;11491:3;11488:1;11485:10;11482:36;;;11498:18;;:::i;:::-;11482:36;11334:191;;;;:::o;11531:168::-;11671:20;11667:1;11659:6;11655:14;11648:44;11531:168;:::o;11705:366::-;11847:3;11868:67;11932:2;11927:3;11868:67;:::i;:::-;11861:74;;11944:93;12033:3;11944:93;:::i;:::-;12062:2;12057:3;12053:12;12046:19;;11705:366;;;:::o;12077:419::-;12243:4;12281:2;12270:9;12266:18;12258:26;;12330:9;12324:4;12320:20;12316:1;12305:9;12301:17;12294:47;12358:131;12484:4;12358:131;:::i;:::-;12350:139;;12077:419;;;:::o;12502:194::-;12542:4;12562:20;12580:1;12562:20;:::i;:::-;12557:25;;12596:20;12614:1;12596:20;:::i;:::-;12591:25;;12640:1;12637;12633:9;12625:17;;12664:1;12658:4;12655:11;12652:37;;;12669:18;;:::i;:::-;12652:37;12502:194;;;;:::o;12702:172::-;12842:24;12838:1;12830:6;12826:14;12819:48;12702:172;:::o;12880:366::-;13022:3;13043:67;13107:2;13102:3;13043:67;:::i;:::-;13036:74;;13119:93;13208:3;13119:93;:::i;:::-;13237:2;13232:3;13228:12;13221:19;;12880:366;;;:::o;13252:419::-;13418:4;13456:2;13445:9;13441:18;13433:26;;13505:9;13499:4;13495:20;13491:1;13480:9;13476:17;13469:47;13533:131;13659:4;13533:131;:::i;:::-;13525:139;;13252:419;;;:::o;13677:181::-;13817:33;13813:1;13805:6;13801:14;13794:57;13677:181;:::o;13864:366::-;14006:3;14027:67;14091:2;14086:3;14027:67;:::i;:::-;14020:74;;14103:93;14192:3;14103:93;:::i;:::-;14221:2;14216:3;14212:12;14205:19;;13864:366;;;:::o;14236:419::-;14402:4;14440:2;14429:9;14425:18;14417:26;;14489:9;14483:4;14479:20;14475:1;14464:9;14460:17;14453:47;14517:131;14643:4;14517:131;:::i;:::-;14509:139;;14236:419;;;:::o;14661:170::-;14801:22;14797:1;14789:6;14785:14;14778:46;14661:170;:::o;14837:366::-;14979:3;15000:67;15064:2;15059:3;15000:67;:::i;:::-;14993:74;;15076:93;15165:3;15076:93;:::i;:::-;15194:2;15189:3;15185:12;15178:19;;14837:366;;;:::o;15209:419::-;15375:4;15413:2;15402:9;15398:18;15390:26;;15462:9;15456:4;15452:20;15448:1;15437:9;15433:17;15426:47;15490:131;15616:4;15490:131;:::i;:::-;15482:139;;15209:419;;;:::o;15634:181::-;15774:33;15770:1;15762:6;15758:14;15751:57;15634:181;:::o;15821:366::-;15963:3;15984:67;16048:2;16043:3;15984:67;:::i;:::-;15977:74;;16060:93;16149:3;16060:93;:::i;:::-;16178:2;16173:3;16169:12;16162:19;;15821:366;;;:::o;16193:419::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16446:9;16440:4;16436:20;16432:1;16421:9;16417:17;16410:47;16474:131;16600:4;16474:131;:::i;:::-;16466:139;;16193:419;;;:::o;16618:170::-;16758:22;16754:1;16746:6;16742:14;16735:46;16618:170;:::o;16794:366::-;16936:3;16957:67;17021:2;17016:3;16957:67;:::i;:::-;16950:74;;17033:93;17122:3;17033:93;:::i;:::-;17151:2;17146:3;17142:12;17135:19;;16794:366;;;:::o;17166:419::-;17332:4;17370:2;17359:9;17355:18;17347:26;;17419:9;17413:4;17409:20;17405:1;17394:9;17390:17;17383:47;17447:131;17573:4;17447:131;:::i;:::-;17439:139;;17166:419;;;:::o;17591:181::-;17731:33;17727:1;17719:6;17715:14;17708:57;17591:181;:::o;17778:366::-;17920:3;17941:67;18005:2;18000:3;17941:67;:::i;:::-;17934:74;;18017:93;18106:3;18017:93;:::i;:::-;18135:2;18130:3;18126:12;18119:19;;17778:366;;;:::o;18150:419::-;18316:4;18354:2;18343:9;18339:18;18331:26;;18403:9;18397:4;18393:20;18389:1;18378:9;18374:17;18367:47;18431:131;18557:4;18431:131;:::i;:::-;18423:139;;18150:419;;;:::o;18575:170::-;18715:22;18711:1;18703:6;18699:14;18692:46;18575:170;:::o;18751:366::-;18893:3;18914:67;18978:2;18973:3;18914:67;:::i;:::-;18907:74;;18990:93;19079:3;18990:93;:::i;:::-;19108:2;19103:3;19099:12;19092:19;;18751:366;;;:::o;19123:419::-;19289:4;19327:2;19316:9;19312:18;19304:26;;19376:9;19370:4;19366:20;19362:1;19351:9;19347:17;19340:47;19404:131;19530:4;19404:131;:::i;:::-;19396:139;;19123:419;;;:::o;19548:180::-;19688:32;19684:1;19676:6;19672:14;19665:56;19548:180;:::o;19734:366::-;19876:3;19897:67;19961:2;19956:3;19897:67;:::i;:::-;19890:74;;19973:93;20062:3;19973:93;:::i;:::-;20091:2;20086:3;20082:12;20075:19;;19734:366;;;:::o;20106:419::-;20272:4;20310:2;20299:9;20295:18;20287:26;;20359:9;20353:4;20349:20;20345:1;20334:9;20330:17;20323:47;20387:131;20513:4;20387:131;:::i;:::-;20379:139;;20106:419;;;:::o;20531:169::-;20671:21;20667:1;20659:6;20655:14;20648:45;20531:169;:::o;20706:366::-;20848:3;20869:67;20933:2;20928:3;20869:67;:::i;:::-;20862:74;;20945:93;21034:3;20945:93;:::i;:::-;21063:2;21058:3;21054:12;21047:19;;20706:366;;;:::o;21078:419::-;21244:4;21282:2;21271:9;21267:18;21259:26;;21331:9;21325:4;21321:20;21317:1;21306:9;21302:17;21295:47;21359:131;21485:4;21359:131;:::i;:::-;21351:139;;21078:419;;;:::o;21503:165::-;21643:17;21639:1;21631:6;21627:14;21620:41;21503:165;:::o;21674:366::-;21816:3;21837:67;21901:2;21896:3;21837:67;:::i;:::-;21830:74;;21913:93;22002:3;21913:93;:::i;:::-;22031:2;22026:3;22022:12;22015:19;;21674:366;;;:::o;22046:419::-;22212:4;22250:2;22239:9;22235:18;22227:26;;22299:9;22293:4;22289:20;22285:1;22274:9;22270:17;22263:47;22327:131;22453:4;22327:131;:::i;:::-;22319:139;;22046:419;;;:::o;22471:180::-;22519:77;22516:1;22509:88;22616:4;22613:1;22606:15;22640:4;22637:1;22630:15;22657:185;22697:1;22714:20;22732:1;22714:20;:::i;:::-;22709:25;;22748:20;22766:1;22748:20;:::i;:::-;22743:25;;22787:1;22777:35;;22792:18;;:::i;:::-;22777:35;22834:1;22831;22827:9;22822:14;;22657:185;;;;:::o;22848:94::-;22881:8;22929:5;22925:2;22921:14;22900:35;;22848:94;;;:::o;22948:::-;22987:7;23016:20;23030:5;23016:20;:::i;:::-;23005:31;;22948:94;;;:::o;23048:100::-;23087:7;23116:26;23136:5;23116:26;:::i;:::-;23105:37;;23048:100;;;:::o;23154:157::-;23259:45;23279:24;23297:5;23279:24;:::i;:::-;23259:45;:::i;:::-;23254:3;23247:58;23154:157;;:::o;23317:256::-;23429:3;23444:75;23515:3;23506:6;23444:75;:::i;:::-;23544:2;23539:3;23535:12;23528:19;;23564:3;23557:10;;23317:256;;;;:::o;23579:170::-;23719:22;23715:1;23707:6;23703:14;23696:46;23579:170;:::o;23755:366::-;23897:3;23918:67;23982:2;23977:3;23918:67;:::i;:::-;23911:74;;23994:93;24083:3;23994:93;:::i;:::-;24112:2;24107:3;24103:12;24096:19;;23755:366;;;:::o;24127:419::-;24293:4;24331:2;24320:9;24316:18;24308:26;;24380:9;24374:4;24370:20;24366:1;24355:9;24351:17;24344:47;24408:131;24534:4;24408:131;:::i;:::-;24400:139;;24127:419;;;:::o;24552:224::-;24692:34;24688:1;24680:6;24676:14;24669:58;24761:7;24756:2;24748:6;24744:15;24737:32;24552:224;:::o;24782:366::-;24924:3;24945:67;25009:2;25004:3;24945:67;:::i;:::-;24938:74;;25021:93;25110:3;25021:93;:::i;:::-;25139:2;25134:3;25130:12;25123:19;;24782:366;;;:::o;25154:419::-;25320:4;25358:2;25347:9;25343:18;25335:26;;25407:9;25401:4;25397:20;25393:1;25382:9;25378:17;25371:47;25435:131;25561:4;25435:131;:::i;:::-;25427:139;;25154:419;;;:::o;25579:223::-;25719:34;25715:1;25707:6;25703:14;25696:58;25788:6;25783:2;25775:6;25771:15;25764:31;25579:223;:::o;25808:366::-;25950:3;25971:67;26035:2;26030:3;25971:67;:::i;:::-;25964:74;;26047:93;26136:3;26047:93;:::i;:::-;26165:2;26160:3;26156:12;26149:19;;25808:366;;;:::o;26180:419::-;26346:4;26384:2;26373:9;26369:18;26361:26;;26433:9;26427:4;26423:20;26419:1;26408:9;26404:17;26397:47;26461:131;26587:4;26461:131;:::i;:::-;26453:139;;26180:419;;;:::o;26605:221::-;26745:34;26741:1;26733:6;26729:14;26722:58;26814:4;26809:2;26801:6;26797:15;26790:29;26605:221;:::o;26832:366::-;26974:3;26995:67;27059:2;27054:3;26995:67;:::i;:::-;26988:74;;27071:93;27160:3;27071:93;:::i;:::-;27189:2;27184:3;27180:12;27173:19;;26832:366;;;:::o;27204:419::-;27370:4;27408:2;27397:9;27393:18;27385:26;;27457:9;27451:4;27447:20;27443:1;27432:9;27428:17;27421:47;27485:131;27611:4;27485:131;:::i;:::-;27477:139;;27204:419;;;:::o;27629:181::-;27769:33;27765:1;27757:6;27753:14;27746:57;27629:181;:::o;27816:366::-;27958:3;27979:67;28043:2;28038:3;27979:67;:::i;:::-;27972:74;;28055:93;28144:3;28055:93;:::i;:::-;28173:2;28168:3;28164:12;28157:19;;27816:366;;;:::o;28188:419::-;28354:4;28392:2;28381:9;28377:18;28369:26;;28441:9;28435:4;28431:20;28427:1;28416:9;28412:17;28405:47;28469:131;28595:4;28469:131;:::i;:::-;28461:139;;28188:419;;;:::o;28613:181::-;28753:33;28749:1;28741:6;28737:14;28730:57;28613:181;:::o;28800:366::-;28942:3;28963:67;29027:2;29022:3;28963:67;:::i;:::-;28956:74;;29039:93;29128:3;29039:93;:::i;:::-;29157:2;29152:3;29148:12;29141:19;;28800:366;;;:::o;29172:419::-;29338:4;29376:2;29365:9;29361:18;29353:26;;29425:9;29419:4;29415:20;29411:1;29400:9;29396:17;29389:47;29453:131;29579:4;29453:131;:::i;:::-;29445:139;;29172:419;;;:::o;29597:179::-;29737:31;29733:1;29725:6;29721:14;29714:55;29597:179;:::o;29782:366::-;29924:3;29945:67;30009:2;30004:3;29945:67;:::i;:::-;29938:74;;30021:93;30110:3;30021:93;:::i;:::-;30139:2;30134:3;30130:12;30123:19;;29782:366;;;:::o;30154:419::-;30320:4;30358:2;30347:9;30343:18;30335:26;;30407:9;30401:4;30397:20;30393:1;30382:9;30378:17;30371:47;30435:131;30561:4;30435:131;:::i;:::-;30427:139;;30154:419;;;:::o;30579:224::-;30719:34;30715:1;30707:6;30703:14;30696:58;30788:7;30783:2;30775:6;30771:15;30764:32;30579:224;:::o;30809:366::-;30951:3;30972:67;31036:2;31031:3;30972:67;:::i;:::-;30965:74;;31048:93;31137:3;31048:93;:::i;:::-;31166:2;31161:3;31157:12;31150:19;;30809:366;;;:::o;31181:419::-;31347:4;31385:2;31374:9;31370:18;31362:26;;31434:9;31428:4;31424:20;31420:1;31409:9;31405:17;31398:47;31462:131;31588:4;31462:131;:::i;:::-;31454:139;;31181:419;;;:::o;31606:222::-;31746:34;31742:1;31734:6;31730:14;31723:58;31815:5;31810:2;31802:6;31798:15;31791:30;31606:222;:::o;31834:366::-;31976:3;31997:67;32061:2;32056:3;31997:67;:::i;:::-;31990:74;;32073:93;32162:3;32073:93;:::i;:::-;32191:2;32186:3;32182:12;32175:19;;31834:366;;;:::o;32206:419::-;32372:4;32410:2;32399:9;32395:18;32387:26;;32459:9;32453:4;32449:20;32445:1;32434:9;32430:17;32423:47;32487:131;32613:4;32487:131;:::i;:::-;32479:139;;32206:419;;;:::o;32631:225::-;32771:34;32767:1;32759:6;32755:14;32748:58;32840:8;32835:2;32827:6;32823:15;32816:33;32631:225;:::o;32862:366::-;33004:3;33025:67;33089:2;33084:3;33025:67;:::i;:::-;33018:74;;33101:93;33190:3;33101:93;:::i;:::-;33219:2;33214:3;33210:12;33203:19;;32862:366;;;:::o;33234:419::-;33400:4;33438:2;33427:9;33423:18;33415:26;;33487:9;33481:4;33477:20;33473:1;33462:9;33458:17;33451:47;33515:131;33641:4;33515:131;:::i;:::-;33507:139;;33234:419;;;:::o;33659:180::-;33707:77;33704:1;33697:88;33804:4;33801:1;33794:15;33828:4;33825:1;33818:15;33845:79;33884:7;33913:5;33902:16;;33845:79;;;:::o;33930:157::-;34035:45;34055:24;34073:5;34055:24;:::i;:::-;34035:45;:::i;:::-;34030:3;34023:58;33930:157;;:::o;34093:397::-;34233:3;34248:75;34319:3;34310:6;34248:75;:::i;:::-;34348:2;34343:3;34339:12;34332:19;;34361:75;34432:3;34423:6;34361:75;:::i;:::-;34461:2;34456:3;34452:12;34445:19;;34481:3;34474:10;;34093:397;;;;;:::o;34496:233::-;34535:3;34558:24;34576:5;34558:24;:::i;:::-;34549:33;;34604:66;34597:5;34594:77;34591:103;;34674:18;;:::i;:::-;34591:103;34721:1;34714:5;34710:13;34703:20;;34496:233;;;:::o

Swarm Source

ipfs://9dcd80386ef780c51f063fbf7ca5c8d3cc3f72c40c89d33db86abc246e768925
[ 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.