ETH Price: $2,354.29 (+0.26%)

Token

TendyNFT.com, an NFT Centric Internet Domain-Name ... (TNDY)
 

Overview

Max Total Supply

3,300,000 TNDY

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.120501552168679085 TNDY

Value
$0.00
0x82facf4b0eaf9e41144491c4cec8d428978a23ea
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

TendyNFT is an NFT trading platform built on Binance Smart Chain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TNDYToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
File 1 of 7 : TNDYToken.sol
// SPDX-License-Identifier: UNLICENSED
/*
* TENDY, LLC (TENDY) is seeking to create a new, regulated NFT marketplace for US
* creators and traders and wishes to engage the DeFi community in its growth.
* 
* Furthermore, TENDY has already acquired 3,300 internet domain names in the NFT space,
* which it intends to sell to the industry as the NFT market expands, e.g., punksnfts.com.
* The list of TENDY domain names can be viewed at https://tendynft.com/.
* Valuations based on public offer prices of the TENDY NFT domain names are, on average, 
* $40,000 each, giving this TNDY token an initial US Dollar net-asset-value (NAV) of $132m.
* 
* TENDY will mint 3,300,000 ERC20 TNDY tokens as its DeFi asset. Each 1,000 tokens will
* be backed by one, $40k value, NFT domain name, giving an average TNDY token value of $40.
* 
* Whenever TENDY sells an NFT domain name it will use this income to buyback and burn TNDY
* tokens on the Uniswap DeFi platform, positively influencing the TNDY token value.
* 
* And, 10% of the TENDY regulated NFT marketplace revenues will be used to buyback and
* burn TNDY tokens on the Uniswap DeFi platform, positively influencing the TNDY token value.
* 
* TENDY intends to buyback TNDY tokens with such revenues when the token price is below 
* NAV, this action is intended to support the established NAV.
* 
* Once the NAV of the TNDY token is aligned with the actual NFT asset value, then TENDY 
* will deposit the balance of its sales revenue along with a pro rata number of its TNDY 
* treasury tokens into the Uniswap DeFi liquidity pool, causing the TNDY price to stabilize.
* 
* Periodically, TENDY will update the NAV of the assets backing the TNDY token as market
* conditions change and the average value of its NFT domain names rises, or when TENDY purchases
* new NFT domains for its portfolio. 
* 
* When the TNDY price is higher than the established NAV, then TENDY may sell treasury tokens 
* into Uniswap, causing the TNDY price to decrease until it reaches equilibrium with the NAV.
* Future domain name sales will drive the token price back to NAV and|or be used to stabilize NAV.
* 
*
* https://tendy.com/ -- TENDY, LLC
*
* Address: 221 34th St. #1000, Manhattan Beach, CA 90266, USA
* Email: [email protected]
*
* As at 2-September-2021, TENDY, LLC is a US limited liability company registered in Wyoming.
*
* This is an ERC-20 smart contract for the TNDY token that will be used as one side
* of a Uniswap liquidity pool trading pair. This TNDY token has the following properties:
*
* 1. The number of TNDY tokens from this contract that will be initially added to the 
*    Uniswap liquidity pool shall be 16,500. The amount of ETH added to the other side of
*    the initial Uniswap liquidity pool shall be approximately 4.4, representing $1/TNDY.
*    A further 16,500 TNDY shall be deposited on PancakeSwap as part of the initial release.
* 2. TENDY hereby commits to swap an amount of ETH currency with the Uniswap TNDY<>ETH 
*    trading pair upon receipt of 10% of tendy.com income or 100% of the sale of any of 
*    the NFT domain names that it owns.
* 3. The value of the ETH currency swapped by TENDY shall be equal to 100% of TENDYs actual
*    domain name sales revenue, as disclosed on its website from time to time. Each ETH
*    swap shall be performed no later than 30 working days after a TENDY domain name sale.
* 4. TNDY tokens returned by Uniswap from the buyback/swap of ETH by TENDY shall be burned 
*    by this smart contract.
* 5. This contract shall not be allowed mint any new TNDY tokens, i.e., no dilution.
* 6. TENDY, the company, shall initially hold 3,267,000 TNDY tokens on its balance sheet,
*    i.e., the TNDY treasury tokens. These tokens may be only be sold by TENDY into Uniswap
*    as part of TNDY price stabilization or transferred to the treasury Uniswap liquidity pool, 
*    along with ETH, for price stability.
* 7. TENDYs treasury tokens may only ever be transferred after a notice period has elapsed,
*    where every such notice period will be have been disclosed by this smart contract 
*    on the public blockchain, i.e., no rug-pulls.
*
*
* https://abbey.ch/         -- Abbey Technology GmbH, Zug, Switzerland
* 
* ABBEY DEFI
* ========== 
* 1. Decentralized Finance (DeFi) is designed to be globally inclusive. 
* 2. Centralized finance is based around private share sales to wealthy individuals or
*    the trading of shares on national stock markets, both have high barriers to entry. 
* 3. The Abbey DeFi methodology offers public and private companies exposure to DeFi.
*
* Abbey is a Uniswap-based DeFi service provider that allows companies to offer people a 
* novel way to speculate on the success of their business in a decentralized manner.
* 
* The premise is both elegant and simple, the company commits to a token buyback based on 
* its sales revenue and commits to stabilize a tokens price by adding to the liquidity pool.
* 
* Using Abbey as a Uniswap DeFi management agency, the company spends sales revenue, as ETH, 
* buying one side of a bespoke Uniswap trading pair. The other side of the Uniswap pair 
* is the TNDY token.
* 
* DeFi traders wishing to speculate on the revenue growth of the company deposit ETH in return 
* for TNDY Uniswap tokens. The Uniswap Automated Market Maker ensures DeFi market 
* liquidity and legitimate price discovery. The more ETH that the company deposits over time, 
* the higher the value of the TNDY token, as held by DeFi speculators.
*
*/

pragma solidity 0.8.7;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

/**
 * @title Tendy (TNDY) contract for Uniswap.
 * @author Abbey Technology GmbH
 * @notice Token contract for use with Uniswap.  Enforces restrictions outlined in the prospectus.
 */
contract TNDYToken is ERC20 {

    /**
     * @notice The details of a future company cashout.
     */
    struct Notice {
        // The maximum number of tokens proposed for sale.
        uint256 amount;

        // The date after which company tokens can be swapped.
        uint256 releaseDate;
    }

    // Event fired when a restricted wallet gives notice of a potential future trade.
    event NoticeGiven(address indexed who, uint256 amount, uint256 releaseDate);

    // Event fired when a the Net Asset Value changes on this contract.
    event NAVUpdated(address indexed who, uint256 newNAV);

    /**
     * @notice Notice must be given to the public before treasury tokens can be swapped.
     */
    Notice public noticeTreasury;

    /**
     * @notice Notice must be given to the public before Liquidity Tokens can be removed from the pool.
     */
    Notice public noticeLiquidity;

    /**
    * @notice The account that created this contract, also functions as the liquidity provider.
    */
    address public owner;

    /**
     * @notice Holder of the company's tokens.  Must give notice before tokens are moved.
     */
    address public treasury;

    /**
     * @notice The account that performs the buyback of tokens, all bought tokens are burned.
     * @dev They cannot be autoburned during transfer as the Uniswap client prevents the transaction.
     */
    address public buyback;

    /**
     * @notice The account that facilitates moving tokens between Uniswap and PancakeSwap.
     * @dev This account is not used in this contract, it's purely here for verification.
     */
    address public flip;    

    /**
     * @notice The address of the Uniswap Pool ERC20 contract holding the Liquidity Pool tokens.
     */
    address public poolAddress;

    /**
     * @notice The address of the Uniswap NFT ERC721 Positions contract that tracks ownership of liquidity pools.
     */
    address public positionsAddress;

    /**
     * @notice The NFT id of the Liquidity Pool in the Uniswap Positions contract.
     */
    uint256 public nftId;    

    /**
     * @notice The current NAV of the underlying assets.
     */
    uint256 public netAssetValue;

    /**
     * @notice The address of the Binance Contract that can be used with this contract for arbitrage.
     */
    address public binanceContract;

    /**
     * @notice Restrict functionaly to the contract owner.
     */
    modifier onlyOwner {
        require(_msgSender() == owner, "You are not Owner.");
        _;
    }

    /**
     * @notice Restrict functionaly to the buyback account.
     */
    modifier onlyBuyback {
        require(_msgSender() == buyback, "You are not Buyback.");
        _;
    }

    /**
     * @notice Create the contract setting already known values that are unlikely to change.
     * 
     * @param initialSupply The total supply at creation, no more tokens can be minted but they can be burned.
     * @param name          The name of the token.
     * @param symbol        The short symbol for this token.
     * @param treasuryAddr  The address of the treasury wallet.
     * @param buybackAddr   The wallet that performs buybacks and optional burns of tokens.
     * @param flipAddr      The wallet used to move tokens between Ethereum and Binance.
     */
    constructor(uint256 initialSupply, string memory name, string memory symbol, address treasuryAddr, address buybackAddr, address flipAddr, address positionsAddr) ERC20(name, symbol) {
        owner = _msgSender();
        _mint(_msgSender(), initialSupply);

        treasury = treasuryAddr;
        buyback = buybackAddr;
        flip = flipAddr;
        positionsAddress = positionsAddr; 
        netAssetValue = 132000000 ether;

        // Of the 3.3m total supply 33,000 are split between Uniswap and PancakeSwap; treasury keeps the
        // remaining tokens.  Sending 16500 tokens to Flip means they are allocated to owner in the
        // Binance contract (see the binanceContract property), this happens in the constructor on
        // contract creation.
        transfer(treasury, 3267000 ether);
        transfer(flip, 16500 ether);
    }

    /**
     * @notice Set the address of the account holding TNDY tokens on behalf of the company.
     */
    function setTreasury(address who) public onlyOwner {
        treasury = who;
    }

    /**
     * @notice Set the address of the account that buys tokens to burn them.
     */
    function setBuyback(address who) public onlyOwner {
        buyback = who;
    }

    /**
     * @notice Set the address of the account that allows moving tokens between Uniswap and PancakeSwap.
     */
    function setFlip(address who) public onlyOwner {
        flip = who;
    }

    /**
     * @notice Set the address of the Uniswap Pool contract.
     */
    function setPoolAddress(address who) public onlyOwner {
        poolAddress = who;
    }

    /**
     * @notice Set the address of the Uniswap NFT contract that tracks Liquidity Pool ownership.
     */
    function setPositionsAddress(address who) public onlyOwner {
        positionsAddress = who;
    }

    /**
     * @notice Set the id of the position token that determines ownership of the Liquidity Pool.
     */
    function setNftId(uint256 id) public onlyOwner {
        nftId = id;
    }

     /**
     * @notice The total net asset value of the tendynft.com domain portfolio.
     * This will be updated as new domains are purchased, exisiting domains
     * are sold or when the portfolio of domain names is marked-to-market.
     *
     * @param nav    The US dollar value of the portfilio, in wei.
     */
    function setNetAssetValue(uint256 nav) public onlyOwner {
        netAssetValue = nav;

        emit NAVUpdated(_msgSender(), nav);
    }

    /**
     * @notice Set the address of the contract on the Binance Smart Chain where tokens
     *         can be flipped to and flopped from.
     */
    function setBinanceContract(address contractAddress) public onlyOwner {
        binanceContract = contractAddress;
    }

    /**
     * @notice Treasury tokens must give advanced notice to the public before they can be used.
     * A public announcement will be made at the same time this notice is set in the contract.
     *
     * @param who The treasury address.
     * @param amount The maximum number of tokens (in wei).
     * @param numSeconds The number of seconds the tokens are held before being acted on.
     */
    function treasuryTransferNotice(address who, uint256 amount, uint256 numSeconds) public onlyOwner {
        require(who == treasury, "Specified address is not Treasury.");

        uint256 when = block.timestamp + (numSeconds * 1 seconds);

        require(noticeTreasury.releaseDate == 0 || block.timestamp >= noticeTreasury.releaseDate, "Cannot overwrite an active existing notice.");
        require(amount <= balanceOf(who), "Can't give notice for more TNDY tokens than owned.");
        noticeTreasury = Notice(amount, when);
        emit NoticeGiven(who, amount, when);
    }

    /**
     * @notice Liquidity Pool tokens must give advanced notice to the public before they can be used.
     * A public announcement will be made at the same time this notice is set in the contract.     
     *
     * @param who The owner of the Uniswap Positions NFT token.
     * @param amount The maximum number of tokens (in wei).
     * @param numSeconds The number of seconds the tokens are held before being acted on.
     */
    function liquidityRedemptionNotice(address who, uint256 amount, uint256 numSeconds) public onlyOwner {
        require(positionsAddress != address(0), "Uniswap Position Manager must be set.");
        require(nftId != 0, "Uniswap Position NFT Id must be set.");
        require(poolAddress != address(0), "The Uniswap Pool contract address must be set.");

        IERC721 positions = IERC721(positionsAddress);
        address lpOwner = positions.ownerOf(nftId);
        require(who == lpOwner, "The specified address does not own the Positions NFT Token.");

        uint256 when = block.timestamp + (numSeconds * 1 seconds);

        require(noticeLiquidity.releaseDate == 0 || block.timestamp >= noticeLiquidity.releaseDate, "Cannot overwrite an active existing notice.");
        require(amount <= balanceOf(poolAddress), "Can't give notice for more Liquidity Tokens than owned.");
        noticeLiquidity = Notice(amount, when);
        emit NoticeGiven(who, amount, when);
    }

    /**
     * @notice Enforce rules around the company accounts:
     * - Once buyback buys tokens they can never be moved, the only real option is to burn.
     * - Two key accounts: treasury and the owner of the liquidity pool are restricted.
     * - A public announcement of the company's intent along with a time locked  notice set in this contract before any token movement.
     * - Only after the deadline can these restricted tokens move.
     * - No restrictions are in place for any other wallet.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(sender != buyback, "Buyback cannot transfer tokens, it can only burn.");
        if(sender == treasury) {
            require(noticeTreasury.releaseDate != 0 && block.timestamp >= noticeTreasury.releaseDate, "Notice period has not been set or has not expired.");
            require(amount <= noticeTreasury.amount, "Treasury can't transfer more tokens than given notice for.");

            // Clear the remaining notice balance, this prevents giving notice on all tokens and
            // trickling them out.
            noticeTreasury = Notice(0, 0);
        }
        else if(nftId != 0) { // Check if the receiver is the Liquidity Pool owner.
            IERC721 positions = IERC721(positionsAddress);
            address lpOwner = positions.ownerOf(nftId);
            if(recipient == lpOwner) {
                require(noticeLiquidity.releaseDate != 0 && block.timestamp >= noticeLiquidity.releaseDate, "LP notice period has not been set or has not expired.");
                require(amount <= noticeLiquidity.amount, "LP can't transfer more tokens than given notice for.");

                // Clear the remaining notice balance, this prevents giving notice on all tokens and
                // trickling them out.
                noticeLiquidity = Notice(0, 0);
            }
        }

        super._transfer(sender, recipient, amount);
    }

    /**
     * @notice The buyback account can periodically buy tokens and burn them to reduce the
     * total supply pushing up the price of the remaining tokens.
     */
    function burn() public onlyBuyback {
        _burn(buyback, balanceOf(buyback));
    }
}

File 2 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

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

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

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

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

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

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

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

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 4 of 7 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC20.sol";

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

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

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

File 5 of 7 : Context.sol
// SPDX-License-Identifier: MIT

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 6 of 7 : IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

File 7 of 7 : IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "metadata": {
    "useLiteralContent": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"treasuryAddr","type":"address"},{"internalType":"address","name":"buybackAddr","type":"address"},{"internalType":"address","name":"flipAddr","type":"address"},{"internalType":"address","name":"positionsAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"newNAV","type":"uint256"}],"name":"NAVUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseDate","type":"uint256"}],"name":"NoticeGiven","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":"binanceContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flip","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"numSeconds","type":"uint256"}],"name":"liquidityRedemptionNotice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"netAssetValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noticeLiquidity","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noticeTreasury","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseDate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setBinanceContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setFlip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nav","type":"uint256"}],"name":"setNetAssetValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"setNftId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setPoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setPositionsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"numSeconds","type":"uint256"}],"name":"treasuryTransferNotice","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162004cd538038062004cd5833981810160405281019062000037919062000c26565b858581600390805190602001906200005192919062000a98565b5080600490805190602001906200006a92919062000a98565b5050506200007d6200028060201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000de620000d16200028060201b60201c565b886200028860201b60201c565b83600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a6d301656a1aa870400000060108190555062000233600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a02b3d06cc4a42813e000006200040160201b60201c565b5062000272600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669037e777fb340d95000006200040160201b60201c565b50505050505050506200150a565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f29062000f97565b60405180910390fd5b6200030f600083836200042f60201b60201c565b806002600082825462000323919062001046565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200037a919062001046565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003e1919062000fb9565b60405180910390a3620003fd600083836200043460201b60201c565b5050565b600062000425620004176200028060201b60201c565b84846200043960201b60201c565b6001905092915050565b505050565b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620004cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c49062000ecb565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000603576000600560010154141580156200054057506005600101544210155b62000582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005799062000f31565b60405180910390fd5b600560000154811115620005cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c49062000ea9565b60405180910390fd5b604051806040016040528060008152602001600081525060056000820151816000015560208201518160010155905050620007dd565b6000600f5414620007dc576000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e600f546040518263ffffffff1660e01b815260040162000674919062000fb9565b60206040518083038186803b1580156200068d57600080fd5b505afa158015620006a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c8919062000bf4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620007d9576000600760010154141580156200071b57506007600101544210155b6200075d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007549062000f53565b60405180910390fd5b600760000154831115620007a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079f9062000eed565b60405180910390fd5b6040518060400160405280600081526020016000815250600760008201518160000155602082015181600101559050505b50505b5b620007f5838383620007fa60201b62001adf1760201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200086d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008649062000f75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d79062000e87565b60405180910390fd5b620008f38383836200042f60201b60201c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156200097c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009739062000f0f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a11919062001046565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000a77919062000fb9565b60405180910390a362000a928484846200043460201b60201c565b50505050565b82805462000aa69062001117565b90600052602060002090601f01602090048101928262000aca576000855562000b16565b82601f1062000ae557805160ff191683800117855562000b16565b8280016001018555821562000b16579182015b8281111562000b1557825182559160200191906001019062000af8565b5b50905062000b25919062000b29565b5090565b5b8082111562000b4457600081600090555060010162000b2a565b5090565b600062000b5f62000b598462000fff565b62000fd6565b90508281526020810184848401111562000b7e5762000b7d62001215565b5b62000b8b848285620010e1565b509392505050565b60008151905062000ba481620014d6565b92915050565b600082601f83011262000bc25762000bc162001210565b5b815162000bd484826020860162000b48565b91505092915050565b60008151905062000bee81620014f0565b92915050565b60006020828403121562000c0d5762000c0c6200121f565b5b600062000c1d8482850162000b93565b91505092915050565b600080600080600080600060e0888a03121562000c485762000c476200121f565b5b600062000c588a828b0162000bdd565b975050602088015167ffffffffffffffff81111562000c7c5762000c7b6200121a565b5b62000c8a8a828b0162000baa565b965050604088015167ffffffffffffffff81111562000cae5762000cad6200121a565b5b62000cbc8a828b0162000baa565b955050606062000ccf8a828b0162000b93565b945050608062000ce28a828b0162000b93565b93505060a062000cf58a828b0162000b93565b92505060c062000d088a828b0162000b93565b91505092959891949750929550565b600062000d2660238362001035565b915062000d338262001235565b604082019050919050565b600062000d4d603a8362001035565b915062000d5a8262001284565b604082019050919050565b600062000d7460318362001035565b915062000d8182620012d3565b604082019050919050565b600062000d9b60348362001035565b915062000da88262001322565b604082019050919050565b600062000dc260268362001035565b915062000dcf8262001371565b604082019050919050565b600062000de960328362001035565b915062000df682620013c0565b604082019050919050565b600062000e1060358362001035565b915062000e1d826200140f565b604082019050919050565b600062000e3760258362001035565b915062000e44826200145e565b604082019050919050565b600062000e5e601f8362001035565b915062000e6b82620014ad565b602082019050919050565b62000e8181620010d7565b82525050565b6000602082019050818103600083015262000ea28162000d17565b9050919050565b6000602082019050818103600083015262000ec48162000d3e565b9050919050565b6000602082019050818103600083015262000ee68162000d65565b9050919050565b6000602082019050818103600083015262000f088162000d8c565b9050919050565b6000602082019050818103600083015262000f2a8162000db3565b9050919050565b6000602082019050818103600083015262000f4c8162000dda565b9050919050565b6000602082019050818103600083015262000f6e8162000e01565b9050919050565b6000602082019050818103600083015262000f908162000e28565b9050919050565b6000602082019050818103600083015262000fb28162000e4f565b9050919050565b600060208201905062000fd0600083018462000e76565b92915050565b600062000fe262000ff5565b905062000ff082826200114d565b919050565b6000604051905090565b600067ffffffffffffffff8211156200101d576200101c620011e1565b5b620010288262001224565b9050602081019050919050565b600082825260208201905092915050565b60006200105382620010d7565b91506200106083620010d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001098576200109762001183565b5b828201905092915050565b6000620010b082620010b7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562001101578082015181840152602081019050620010e4565b8381111562001111576000848401525b50505050565b600060028204905060018216806200113057607f821691505b60208210811415620011475762001146620011b2565b5b50919050565b620011588262001224565b810181811067ffffffffffffffff821117156200117a5762001179620011e1565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54726561737572792063616e2774207472616e73666572206d6f726520746f6b60008201527f656e73207468616e20676976656e206e6f7469636520666f722e000000000000602082015250565b7f4275796261636b2063616e6e6f74207472616e7366657220746f6b656e732c2060008201527f69742063616e206f6e6c79206275726e2e000000000000000000000000000000602082015250565b7f4c502063616e2774207472616e73666572206d6f726520746f6b656e7320746860008201527f616e20676976656e206e6f7469636520666f722e000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7469636520706572696f6420686173206e6f74206265656e20736574206f60008201527f7220686173206e6f7420657870697265642e0000000000000000000000000000602082015250565b7f4c50206e6f7469636520706572696f6420686173206e6f74206265656e20736560008201527f74206f7220686173206e6f7420657870697265642e0000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620014e181620010a3565b8114620014ed57600080fd5b50565b620014fb81620010d7565b81146200150757600080fd5b50565b6137bb806200151a6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806395d89b411161011a578063bbeed845116100ad578063dd62ed3e1161007c578063dd62ed3e14610594578063e9e15b4f146105c4578063f0f44260146105e0578063f3856e76146105fc578063f8ec691114610618576101fb565b8063bbeed8451461051b578063c6bc51821461053a578063cde4efa914610558578063d0c6fcf014610576576101fb565b8063a457c2d7116100e9578063a457c2d714610481578063a9059cbb146104b1578063aa9bd114146104e1578063b3716d49146104fd576101fb565b806395d89b411461040d57806399b320f91461042b5780639aebd08614610447578063a3673b3814610463576101fb565b8063313ce5671161019257806361d027b31161016157806361d027b31461038557806370a08231146103a357806380e709d9146103d35780638da5cb5b146103ef576101fb565b8063313ce56714610311578063395093511461032f57806344df8e701461035f5780634708872614610369576101fb565b8063197357db116101ce578063197357db1461028a5780631dab900f146102a657806323b872dd146102c25780632f071467146102f2576101fb565b806306fdde0314610200578063095ea7b31461021e5780631755ff211461024e57806318160ddd1461026c575b600080fd5b610208610636565b6040516102159190612a8c565b60405180910390f35b610238600480360381019061023391906125d9565b6106c8565b6040516102459190612a71565b60405180910390f35b6102566106e6565b6040516102639190612a56565b60405180910390f35b61027461070c565b6040516102819190612dae565b60405180910390f35b6102a4600480360381019061029f919061266c565b610716565b005b6102c060048036038101906102bb9190612619565b61080c565b005b6102dc60048036038101906102d79190612586565b610c98565b6040516102e99190612a71565b60405180910390f35b6102fa610d90565b604051610308929190612dc9565b60405180910390f35b610319610da2565b6040516103269190612df2565b60405180910390f35b610349600480360381019061034491906125d9565b610dab565b6040516103569190612a71565b60405180910390f35b610367610e57565b005b610383600480360381019061037e91906124ec565b610f46565b005b61038d611021565b60405161039a9190612a56565b60405180910390f35b6103bd60048036038101906103b891906124ec565b611047565b6040516103ca9190612dae565b60405180910390f35b6103ed60048036038101906103e8919061266c565b61108f565b005b6103f7611130565b6040516104049190612a56565b60405180910390f35b610415611156565b6040516104229190612a8c565b60405180910390f35b61044560048036038101906104409190612619565b6111e8565b005b610461600480360381019061045c91906124ec565b611452565b005b61046b61152d565b6040516104789190612dae565b60405180910390f35b61049b600480360381019061049691906125d9565b611533565b6040516104a89190612a71565b60405180910390f35b6104cb60048036038101906104c691906125d9565b61161e565b6040516104d89190612a71565b60405180910390f35b6104fb60048036038101906104f691906124ec565b61163c565b005b610505611717565b6040516105129190612a56565b60405180910390f35b61052361173d565b604051610531929190612dc9565b60405180910390f35b61054261174f565b60405161054f9190612dae565b60405180910390f35b610560611755565b60405161056d9190612a56565b60405180910390f35b61057e61177b565b60405161058b9190612a56565b60405180910390f35b6105ae60048036038101906105a99190612546565b6117a1565b6040516105bb9190612dae565b60405180910390f35b6105de60048036038101906105d991906124ec565b611828565b005b6105fa60048036038101906105f591906124ec565b611903565b005b610616600480360381019061061191906124ec565b6119de565b005b610620611ab9565b60405161062d9190612a56565b60405180910390f35b60606003805461064590612f95565b80601f016020809104026020016040519081016040528092919081815260200182805461067190612f95565b80156106be5780601f10610693576101008083540402835291602001916106be565b820191906000526020600020905b8154815290600101906020018083116106a157829003601f168201915b5050505050905090565b60006106dc6106d5611d60565b8484611d68565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610757611d60565b73ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612b0e565b60405180910390fd5b806010819055506107bc611d60565b73ffffffffffffffffffffffffffffffffffffffff167f8e7c9c274707bea598d03e0d9b83b635051fd85149cb50ff942120eea822472f826040516108019190612dae565b60405180910390a250565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611d60565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90612b0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90612c2e565b60405180910390fd5b6000600f54141561097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097290612b6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612b4e565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e600f546040518263ffffffff1660e01b8152600401610a719190612dae565b60206040518083038186803b158015610a8957600080fd5b505afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612519565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890612d6e565b60405180910390fd5b6000600184610b409190612e7f565b42610b4b9190612e29565b905060006007600101541480610b6657506007600101544210155b610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90612bce565b60405180910390fd5b610bd0600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611047565b851115610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612ace565b60405180910390fd5b604051806040016040528086815260200182815250600760008201518160000155602082015181600101559050508573ffffffffffffffffffffffffffffffffffffffff167f070a0bf37a5cd52578f68438a1f23bb8b3b38d86ade0a09abd709982bdb1527f8683604051610c88929190612dc9565b60405180910390a2505050505050565b6000610ca5848484611f33565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf0611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612cce565b60405180910390fd5b610d8485610d7c611d60565b858403611d68565b60019150509392505050565b60078060000154908060010154905082565b60006012905090565b6000610e4d610db8611d60565b848460016000610dc6611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e489190612e29565b611d68565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e98611d60565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612c4e565b60405180910390fd5b610f44600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f3f600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611047565b6122cc565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f87611d60565b73ffffffffffffffffffffffffffffffffffffffff1614610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd490612b0e565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110d0611d60565b73ffffffffffffffffffffffffffffffffffffffff1614611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90612b0e565b60405180910390fd5b80600f8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461116590612f95565b80601f016020809104026020016040519081016040528092919081815260200182805461119190612f95565b80156111de5780601f106111b3576101008083540402835291602001916111de565b820191906000526020600020905b8154815290600101906020018083116111c157829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611229611d60565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612b0e565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690612cee565b60405180910390fd5b600060018261131e9190612e7f565b426113299190612e29565b90506000600560010154148061134457506005600101544210155b611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612bce565b60405180910390fd5b61138c84611047565b8311156113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590612c8e565b60405180910390fd5b604051806040016040528084815260200182815250600560008201518160000155602082015181600101559050508373ffffffffffffffffffffffffffffffffffffffff167f070a0bf37a5cd52578f68438a1f23bb8b3b38d86ade0a09abd709982bdb1527f8483604051611444929190612dc9565b60405180910390a250505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611493611d60565b73ffffffffffffffffffffffffffffffffffffffff16146114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612b0e565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60008060016000611542611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612d8e565b60405180910390fd5b61161361160a611d60565b85858403611d68565b600191505092915050565b600061163261162b611d60565b8484611f33565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661167d611d60565b73ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90612b0e565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058060000154908060010154905082565b600f5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611869611d60565b73ffffffffffffffffffffffffffffffffffffffff16146118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690612b0e565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611944611d60565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612b0e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a1f611d60565b73ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90612b0e565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690612d2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690612aae565b60405180910390fd5b611bca8383836124a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4790612c0e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce39190612e29565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d479190612dae565b60405180910390a3611d5a8484846124a8565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90612d4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f90612b2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f269190612dae565b60405180910390a3505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90612bae565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120f15760006005600101541415801561203557506005600101544210155b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90612c6e565b60405180910390fd5b6005600001548111156120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390612b8e565b60405180910390fd5b6040518060400160405280600081526020016000815250600560008201518160000155602082015181600101559050506122bc565b6000600f54146122bb576000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e600f546040518263ffffffff1660e01b815260040161215f9190612dae565b60206040518083038186803b15801561217757600080fd5b505afa15801561218b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121af9190612519565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122b85760006007600101541415801561220057506007600101544210155b61223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690612cae565b60405180910390fd5b600760000154831115612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e90612bee565b60405180910390fd5b6040518060400160405280600081526020016000815250600760008201518160000155602082015181600101559050505b50505b5b6122c7838383611adf565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390612d0e565b60405180910390fd5b612348826000836124a3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590612aee565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546124259190612ed9565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161248a9190612dae565b60405180910390a361249e836000846124a8565b505050565b505050565b505050565b6000813590506124bc81613757565b92915050565b6000815190506124d181613757565b92915050565b6000813590506124e68161376e565b92915050565b60006020828403121561250257612501613025565b5b6000612510848285016124ad565b91505092915050565b60006020828403121561252f5761252e613025565b5b600061253d848285016124c2565b91505092915050565b6000806040838503121561255d5761255c613025565b5b600061256b858286016124ad565b925050602061257c858286016124ad565b9150509250929050565b60008060006060848603121561259f5761259e613025565b5b60006125ad868287016124ad565b93505060206125be868287016124ad565b92505060406125cf868287016124d7565b9150509250925092565b600080604083850312156125f0576125ef613025565b5b60006125fe858286016124ad565b925050602061260f858286016124d7565b9150509250929050565b60008060006060848603121561263257612631613025565b5b6000612640868287016124ad565b9350506020612651868287016124d7565b9250506040612662868287016124d7565b9150509250925092565b60006020828403121561268257612681613025565b5b6000612690848285016124d7565b91505092915050565b6126a281612f0d565b82525050565b6126b181612f1f565b82525050565b60006126c282612e0d565b6126cc8185612e18565b93506126dc818560208601612f62565b6126e58161302a565b840191505092915050565b60006126fd602383612e18565b91506127088261303b565b604082019050919050565b6000612720603783612e18565b915061272b8261308a565b604082019050919050565b6000612743602283612e18565b915061274e826130d9565b604082019050919050565b6000612766601283612e18565b915061277182613128565b602082019050919050565b6000612789602283612e18565b915061279482613151565b604082019050919050565b60006127ac602e83612e18565b91506127b7826131a0565b604082019050919050565b60006127cf602483612e18565b91506127da826131ef565b604082019050919050565b60006127f2603a83612e18565b91506127fd8261323e565b604082019050919050565b6000612815603183612e18565b91506128208261328d565b604082019050919050565b6000612838602b83612e18565b9150612843826132dc565b604082019050919050565b600061285b603483612e18565b91506128668261332b565b604082019050919050565b600061287e602683612e18565b91506128898261337a565b604082019050919050565b60006128a1602583612e18565b91506128ac826133c9565b604082019050919050565b60006128c4601483612e18565b91506128cf82613418565b602082019050919050565b60006128e7603283612e18565b91506128f282613441565b604082019050919050565b600061290a603283612e18565b915061291582613490565b604082019050919050565b600061292d603583612e18565b9150612938826134df565b604082019050919050565b6000612950602883612e18565b915061295b8261352e565b604082019050919050565b6000612973602283612e18565b915061297e8261357d565b604082019050919050565b6000612996602183612e18565b91506129a1826135cc565b604082019050919050565b60006129b9602583612e18565b91506129c48261361b565b604082019050919050565b60006129dc602483612e18565b91506129e78261366a565b604082019050919050565b60006129ff603b83612e18565b9150612a0a826136b9565b604082019050919050565b6000612a22602583612e18565b9150612a2d82613708565b604082019050919050565b612a4181612f4b565b82525050565b612a5081612f55565b82525050565b6000602082019050612a6b6000830184612699565b92915050565b6000602082019050612a8660008301846126a8565b92915050565b60006020820190508181036000830152612aa681846126b7565b905092915050565b60006020820190508181036000830152612ac7816126f0565b9050919050565b60006020820190508181036000830152612ae781612713565b9050919050565b60006020820190508181036000830152612b0781612736565b9050919050565b60006020820190508181036000830152612b2781612759565b9050919050565b60006020820190508181036000830152612b478161277c565b9050919050565b60006020820190508181036000830152612b678161279f565b9050919050565b60006020820190508181036000830152612b87816127c2565b9050919050565b60006020820190508181036000830152612ba7816127e5565b9050919050565b60006020820190508181036000830152612bc781612808565b9050919050565b60006020820190508181036000830152612be78161282b565b9050919050565b60006020820190508181036000830152612c078161284e565b9050919050565b60006020820190508181036000830152612c2781612871565b9050919050565b60006020820190508181036000830152612c4781612894565b9050919050565b60006020820190508181036000830152612c67816128b7565b9050919050565b60006020820190508181036000830152612c87816128da565b9050919050565b60006020820190508181036000830152612ca7816128fd565b9050919050565b60006020820190508181036000830152612cc781612920565b9050919050565b60006020820190508181036000830152612ce781612943565b9050919050565b60006020820190508181036000830152612d0781612966565b9050919050565b60006020820190508181036000830152612d2781612989565b9050919050565b60006020820190508181036000830152612d47816129ac565b9050919050565b60006020820190508181036000830152612d67816129cf565b9050919050565b60006020820190508181036000830152612d87816129f2565b9050919050565b60006020820190508181036000830152612da781612a15565b9050919050565b6000602082019050612dc36000830184612a38565b92915050565b6000604082019050612dde6000830185612a38565b612deb6020830184612a38565b9392505050565b6000602082019050612e076000830184612a47565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e3482612f4b565b9150612e3f83612f4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7457612e73612fc7565b5b828201905092915050565b6000612e8a82612f4b565b9150612e9583612f4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ece57612ecd612fc7565b5b828202905092915050565b6000612ee482612f4b565b9150612eef83612f4b565b925082821015612f0257612f01612fc7565b5b828203905092915050565b6000612f1882612f2b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612f80578082015181840152602081019050612f65565b83811115612f8f576000848401525b50505050565b60006002820490506001821680612fad57607f821691505b60208210811415612fc157612fc0612ff6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e27742067697665206e6f7469636520666f72206d6f7265204c6971756960008201527f6469747920546f6b656e73207468616e206f776e65642e000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f74204f776e65722e0000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520556e697377617020506f6f6c20636f6e74726163742061646472657360008201527f73206d757374206265207365742e000000000000000000000000000000000000602082015250565b7f556e697377617020506f736974696f6e204e4654204964206d7573742062652060008201527f7365742e00000000000000000000000000000000000000000000000000000000602082015250565b7f54726561737572792063616e2774207472616e73666572206d6f726520746f6b60008201527f656e73207468616e20676976656e206e6f7469636520666f722e000000000000602082015250565b7f4275796261636b2063616e6e6f74207472616e7366657220746f6b656e732c2060008201527f69742063616e206f6e6c79206275726e2e000000000000000000000000000000602082015250565b7f43616e6e6f74206f766572777269746520616e2061637469766520657869737460008201527f696e67206e6f746963652e000000000000000000000000000000000000000000602082015250565b7f4c502063616e2774207472616e73666572206d6f726520746f6b656e7320746860008201527f616e20676976656e206e6f7469636520666f722e000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f556e697377617020506f736974696f6e204d616e61676572206d75737420626560008201527f207365742e000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f74204275796261636b2e000000000000000000000000600082015250565b7f4e6f7469636520706572696f6420686173206e6f74206265656e20736574206f60008201527f7220686173206e6f7420657870697265642e0000000000000000000000000000602082015250565b7f43616e27742067697665206e6f7469636520666f72206d6f726520544e44592060008201527f746f6b656e73207468616e206f776e65642e0000000000000000000000000000602082015250565b7f4c50206e6f7469636520706572696f6420686173206e6f74206265656e20736560008201527f74206f7220686173206e6f7420657870697265642e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f5370656369666965642061646472657373206973206e6f74205472656173757260008201527f792e000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54686520737065636966696564206164647265737320646f6573206e6f74206f60008201527f776e2074686520506f736974696f6e73204e465420546f6b656e2e0000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61376081612f0d565b811461376b57600080fd5b50565b61377781612f4b565b811461378257600080fd5b5056fea2646970667358221220d20b67dbd7f4a7ca289ad19e8d19ad35b7a446929fd1e219f6311fc32b6c5da264736f6c6343000807003300000000000000000000000000000000000000000002bacd5bc40aa9c680000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000006bc693dbd2b197e3067832ac71ed0b6d38cfd85a00000000000000000000000044734875a9cfac1ea21a9721b37954d33a24139b0000000000000000000000002ec7d593763eed26defa231b4c566252e2667a6b000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000000000000000000000000000000000000000004454656e64794e46542e636f6d2c20616e204e46542043656e7472696320496e7465726e657420446f6d61696e2d4e616d652041737365742d4261636b656420546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544e445900000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c806395d89b411161011a578063bbeed845116100ad578063dd62ed3e1161007c578063dd62ed3e14610594578063e9e15b4f146105c4578063f0f44260146105e0578063f3856e76146105fc578063f8ec691114610618576101fb565b8063bbeed8451461051b578063c6bc51821461053a578063cde4efa914610558578063d0c6fcf014610576576101fb565b8063a457c2d7116100e9578063a457c2d714610481578063a9059cbb146104b1578063aa9bd114146104e1578063b3716d49146104fd576101fb565b806395d89b411461040d57806399b320f91461042b5780639aebd08614610447578063a3673b3814610463576101fb565b8063313ce5671161019257806361d027b31161016157806361d027b31461038557806370a08231146103a357806380e709d9146103d35780638da5cb5b146103ef576101fb565b8063313ce56714610311578063395093511461032f57806344df8e701461035f5780634708872614610369576101fb565b8063197357db116101ce578063197357db1461028a5780631dab900f146102a657806323b872dd146102c25780632f071467146102f2576101fb565b806306fdde0314610200578063095ea7b31461021e5780631755ff211461024e57806318160ddd1461026c575b600080fd5b610208610636565b6040516102159190612a8c565b60405180910390f35b610238600480360381019061023391906125d9565b6106c8565b6040516102459190612a71565b60405180910390f35b6102566106e6565b6040516102639190612a56565b60405180910390f35b61027461070c565b6040516102819190612dae565b60405180910390f35b6102a4600480360381019061029f919061266c565b610716565b005b6102c060048036038101906102bb9190612619565b61080c565b005b6102dc60048036038101906102d79190612586565b610c98565b6040516102e99190612a71565b60405180910390f35b6102fa610d90565b604051610308929190612dc9565b60405180910390f35b610319610da2565b6040516103269190612df2565b60405180910390f35b610349600480360381019061034491906125d9565b610dab565b6040516103569190612a71565b60405180910390f35b610367610e57565b005b610383600480360381019061037e91906124ec565b610f46565b005b61038d611021565b60405161039a9190612a56565b60405180910390f35b6103bd60048036038101906103b891906124ec565b611047565b6040516103ca9190612dae565b60405180910390f35b6103ed60048036038101906103e8919061266c565b61108f565b005b6103f7611130565b6040516104049190612a56565b60405180910390f35b610415611156565b6040516104229190612a8c565b60405180910390f35b61044560048036038101906104409190612619565b6111e8565b005b610461600480360381019061045c91906124ec565b611452565b005b61046b61152d565b6040516104789190612dae565b60405180910390f35b61049b600480360381019061049691906125d9565b611533565b6040516104a89190612a71565b60405180910390f35b6104cb60048036038101906104c691906125d9565b61161e565b6040516104d89190612a71565b60405180910390f35b6104fb60048036038101906104f691906124ec565b61163c565b005b610505611717565b6040516105129190612a56565b60405180910390f35b61052361173d565b604051610531929190612dc9565b60405180910390f35b61054261174f565b60405161054f9190612dae565b60405180910390f35b610560611755565b60405161056d9190612a56565b60405180910390f35b61057e61177b565b60405161058b9190612a56565b60405180910390f35b6105ae60048036038101906105a99190612546565b6117a1565b6040516105bb9190612dae565b60405180910390f35b6105de60048036038101906105d991906124ec565b611828565b005b6105fa60048036038101906105f591906124ec565b611903565b005b610616600480360381019061061191906124ec565b6119de565b005b610620611ab9565b60405161062d9190612a56565b60405180910390f35b60606003805461064590612f95565b80601f016020809104026020016040519081016040528092919081815260200182805461067190612f95565b80156106be5780601f10610693576101008083540402835291602001916106be565b820191906000526020600020905b8154815290600101906020018083116106a157829003601f168201915b5050505050905090565b60006106dc6106d5611d60565b8484611d68565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610757611d60565b73ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612b0e565b60405180910390fd5b806010819055506107bc611d60565b73ffffffffffffffffffffffffffffffffffffffff167f8e7c9c274707bea598d03e0d9b83b635051fd85149cb50ff942120eea822472f826040516108019190612dae565b60405180910390a250565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084d611d60565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90612b0e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90612c2e565b60405180910390fd5b6000600f54141561097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097290612b6e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612b4e565b60405180910390fd5b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e600f546040518263ffffffff1660e01b8152600401610a719190612dae565b60206040518083038186803b158015610a8957600080fd5b505afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612519565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890612d6e565b60405180910390fd5b6000600184610b409190612e7f565b42610b4b9190612e29565b905060006007600101541480610b6657506007600101544210155b610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90612bce565b60405180910390fd5b610bd0600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611047565b851115610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612ace565b60405180910390fd5b604051806040016040528086815260200182815250600760008201518160000155602082015181600101559050508573ffffffffffffffffffffffffffffffffffffffff167f070a0bf37a5cd52578f68438a1f23bb8b3b38d86ade0a09abd709982bdb1527f8683604051610c88929190612dc9565b60405180910390a2505050505050565b6000610ca5848484611f33565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf0611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612cce565b60405180910390fd5b610d8485610d7c611d60565b858403611d68565b60019150509392505050565b60078060000154908060010154905082565b60006012905090565b6000610e4d610db8611d60565b848460016000610dc6611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e489190612e29565b611d68565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e98611d60565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612c4e565b60405180910390fd5b610f44600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f3f600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611047565b6122cc565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f87611d60565b73ffffffffffffffffffffffffffffffffffffffff1614610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd490612b0e565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110d0611d60565b73ffffffffffffffffffffffffffffffffffffffff1614611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90612b0e565b60405180910390fd5b80600f8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461116590612f95565b80601f016020809104026020016040519081016040528092919081815260200182805461119190612f95565b80156111de5780601f106111b3576101008083540402835291602001916111de565b820191906000526020600020905b8154815290600101906020018083116111c157829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611229611d60565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690612b0e565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690612cee565b60405180910390fd5b600060018261131e9190612e7f565b426113299190612e29565b90506000600560010154148061134457506005600101544210155b611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612bce565b60405180910390fd5b61138c84611047565b8311156113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590612c8e565b60405180910390fd5b604051806040016040528084815260200182815250600560008201518160000155602082015181600101559050508373ffffffffffffffffffffffffffffffffffffffff167f070a0bf37a5cd52578f68438a1f23bb8b3b38d86ade0a09abd709982bdb1527f8483604051611444929190612dc9565b60405180910390a250505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611493611d60565b73ffffffffffffffffffffffffffffffffffffffff16146114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612b0e565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60008060016000611542611d60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f690612d8e565b60405180910390fd5b61161361160a611d60565b85858403611d68565b600191505092915050565b600061163261162b611d60565b8484611f33565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661167d611d60565b73ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90612b0e565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058060000154908060010154905082565b600f5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611869611d60565b73ffffffffffffffffffffffffffffffffffffffff16146118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690612b0e565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611944611d60565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612b0e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a1f611d60565b73ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90612b0e565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690612d2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690612aae565b60405180910390fd5b611bca8383836124a3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4790612c0e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ce39190612e29565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d479190612dae565b60405180910390a3611d5a8484846124a8565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcf90612d4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f90612b2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f269190612dae565b60405180910390a3505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90612bae565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120f15760006005600101541415801561203557506005600101544210155b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90612c6e565b60405180910390fd5b6005600001548111156120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390612b8e565b60405180910390fd5b6040518060400160405280600081526020016000815250600560008201518160000155602082015181600101559050506122bc565b6000600f54146122bb576000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e600f546040518263ffffffff1660e01b815260040161215f9190612dae565b60206040518083038186803b15801561217757600080fd5b505afa15801561218b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121af9190612519565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122b85760006007600101541415801561220057506007600101544210155b61223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690612cae565b60405180910390fd5b600760000154831115612287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227e90612bee565b60405180910390fd5b6040518060400160405280600081526020016000815250600760008201518160000155602082015181600101559050505b50505b5b6122c7838383611adf565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390612d0e565b60405180910390fd5b612348826000836124a3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590612aee565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546124259190612ed9565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161248a9190612dae565b60405180910390a361249e836000846124a8565b505050565b505050565b505050565b6000813590506124bc81613757565b92915050565b6000815190506124d181613757565b92915050565b6000813590506124e68161376e565b92915050565b60006020828403121561250257612501613025565b5b6000612510848285016124ad565b91505092915050565b60006020828403121561252f5761252e613025565b5b600061253d848285016124c2565b91505092915050565b6000806040838503121561255d5761255c613025565b5b600061256b858286016124ad565b925050602061257c858286016124ad565b9150509250929050565b60008060006060848603121561259f5761259e613025565b5b60006125ad868287016124ad565b93505060206125be868287016124ad565b92505060406125cf868287016124d7565b9150509250925092565b600080604083850312156125f0576125ef613025565b5b60006125fe858286016124ad565b925050602061260f858286016124d7565b9150509250929050565b60008060006060848603121561263257612631613025565b5b6000612640868287016124ad565b9350506020612651868287016124d7565b9250506040612662868287016124d7565b9150509250925092565b60006020828403121561268257612681613025565b5b6000612690848285016124d7565b91505092915050565b6126a281612f0d565b82525050565b6126b181612f1f565b82525050565b60006126c282612e0d565b6126cc8185612e18565b93506126dc818560208601612f62565b6126e58161302a565b840191505092915050565b60006126fd602383612e18565b91506127088261303b565b604082019050919050565b6000612720603783612e18565b915061272b8261308a565b604082019050919050565b6000612743602283612e18565b915061274e826130d9565b604082019050919050565b6000612766601283612e18565b915061277182613128565b602082019050919050565b6000612789602283612e18565b915061279482613151565b604082019050919050565b60006127ac602e83612e18565b91506127b7826131a0565b604082019050919050565b60006127cf602483612e18565b91506127da826131ef565b604082019050919050565b60006127f2603a83612e18565b91506127fd8261323e565b604082019050919050565b6000612815603183612e18565b91506128208261328d565b604082019050919050565b6000612838602b83612e18565b9150612843826132dc565b604082019050919050565b600061285b603483612e18565b91506128668261332b565b604082019050919050565b600061287e602683612e18565b91506128898261337a565b604082019050919050565b60006128a1602583612e18565b91506128ac826133c9565b604082019050919050565b60006128c4601483612e18565b91506128cf82613418565b602082019050919050565b60006128e7603283612e18565b91506128f282613441565b604082019050919050565b600061290a603283612e18565b915061291582613490565b604082019050919050565b600061292d603583612e18565b9150612938826134df565b604082019050919050565b6000612950602883612e18565b915061295b8261352e565b604082019050919050565b6000612973602283612e18565b915061297e8261357d565b604082019050919050565b6000612996602183612e18565b91506129a1826135cc565b604082019050919050565b60006129b9602583612e18565b91506129c48261361b565b604082019050919050565b60006129dc602483612e18565b91506129e78261366a565b604082019050919050565b60006129ff603b83612e18565b9150612a0a826136b9565b604082019050919050565b6000612a22602583612e18565b9150612a2d82613708565b604082019050919050565b612a4181612f4b565b82525050565b612a5081612f55565b82525050565b6000602082019050612a6b6000830184612699565b92915050565b6000602082019050612a8660008301846126a8565b92915050565b60006020820190508181036000830152612aa681846126b7565b905092915050565b60006020820190508181036000830152612ac7816126f0565b9050919050565b60006020820190508181036000830152612ae781612713565b9050919050565b60006020820190508181036000830152612b0781612736565b9050919050565b60006020820190508181036000830152612b2781612759565b9050919050565b60006020820190508181036000830152612b478161277c565b9050919050565b60006020820190508181036000830152612b678161279f565b9050919050565b60006020820190508181036000830152612b87816127c2565b9050919050565b60006020820190508181036000830152612ba7816127e5565b9050919050565b60006020820190508181036000830152612bc781612808565b9050919050565b60006020820190508181036000830152612be78161282b565b9050919050565b60006020820190508181036000830152612c078161284e565b9050919050565b60006020820190508181036000830152612c2781612871565b9050919050565b60006020820190508181036000830152612c4781612894565b9050919050565b60006020820190508181036000830152612c67816128b7565b9050919050565b60006020820190508181036000830152612c87816128da565b9050919050565b60006020820190508181036000830152612ca7816128fd565b9050919050565b60006020820190508181036000830152612cc781612920565b9050919050565b60006020820190508181036000830152612ce781612943565b9050919050565b60006020820190508181036000830152612d0781612966565b9050919050565b60006020820190508181036000830152612d2781612989565b9050919050565b60006020820190508181036000830152612d47816129ac565b9050919050565b60006020820190508181036000830152612d67816129cf565b9050919050565b60006020820190508181036000830152612d87816129f2565b9050919050565b60006020820190508181036000830152612da781612a15565b9050919050565b6000602082019050612dc36000830184612a38565b92915050565b6000604082019050612dde6000830185612a38565b612deb6020830184612a38565b9392505050565b6000602082019050612e076000830184612a47565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e3482612f4b565b9150612e3f83612f4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7457612e73612fc7565b5b828201905092915050565b6000612e8a82612f4b565b9150612e9583612f4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ece57612ecd612fc7565b5b828202905092915050565b6000612ee482612f4b565b9150612eef83612f4b565b925082821015612f0257612f01612fc7565b5b828203905092915050565b6000612f1882612f2b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612f80578082015181840152602081019050612f65565b83811115612f8f576000848401525b50505050565b60006002820490506001821680612fad57607f821691505b60208210811415612fc157612fc0612ff6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e27742067697665206e6f7469636520666f72206d6f7265204c6971756960008201527f6469747920546f6b656e73207468616e206f776e65642e000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f74204f776e65722e0000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520556e697377617020506f6f6c20636f6e74726163742061646472657360008201527f73206d757374206265207365742e000000000000000000000000000000000000602082015250565b7f556e697377617020506f736974696f6e204e4654204964206d7573742062652060008201527f7365742e00000000000000000000000000000000000000000000000000000000602082015250565b7f54726561737572792063616e2774207472616e73666572206d6f726520746f6b60008201527f656e73207468616e20676976656e206e6f7469636520666f722e000000000000602082015250565b7f4275796261636b2063616e6e6f74207472616e7366657220746f6b656e732c2060008201527f69742063616e206f6e6c79206275726e2e000000000000000000000000000000602082015250565b7f43616e6e6f74206f766572777269746520616e2061637469766520657869737460008201527f696e67206e6f746963652e000000000000000000000000000000000000000000602082015250565b7f4c502063616e2774207472616e73666572206d6f726520746f6b656e7320746860008201527f616e20676976656e206e6f7469636520666f722e000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f556e697377617020506f736974696f6e204d616e61676572206d75737420626560008201527f207365742e000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f74204275796261636b2e000000000000000000000000600082015250565b7f4e6f7469636520706572696f6420686173206e6f74206265656e20736574206f60008201527f7220686173206e6f7420657870697265642e0000000000000000000000000000602082015250565b7f43616e27742067697665206e6f7469636520666f72206d6f726520544e44592060008201527f746f6b656e73207468616e206f776e65642e0000000000000000000000000000602082015250565b7f4c50206e6f7469636520706572696f6420686173206e6f74206265656e20736560008201527f74206f7220686173206e6f7420657870697265642e0000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f5370656369666965642061646472657373206973206e6f74205472656173757260008201527f792e000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54686520737065636966696564206164647265737320646f6573206e6f74206f60008201527f776e2074686520506f736974696f6e73204e465420546f6b656e2e0000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61376081612f0d565b811461376b57600080fd5b50565b61377781612f4b565b811461378257600080fd5b5056fea2646970667358221220d20b67dbd7f4a7ca289ad19e8d19ad35b7a446929fd1e219f6311fc32b6c5da264736f6c63430008070033

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

00000000000000000000000000000000000000000002bacd5bc40aa9c680000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000006bc693dbd2b197e3067832ac71ed0b6d38cfd85a00000000000000000000000044734875a9cfac1ea21a9721b37954d33a24139b0000000000000000000000002ec7d593763eed26defa231b4c566252e2667a6b000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000000000000000000000000000000000000000004454656e64794e46542e636f6d2c20616e204e46542043656e7472696320496e7465726e657420446f6d61696e2d4e616d652041737365742d4261636b656420546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004544e445900000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 3300000000000000000000000
Arg [1] : name (string): TendyNFT.com, an NFT Centric Internet Domain-Name Asset-Backed Token
Arg [2] : symbol (string): TNDY
Arg [3] : treasuryAddr (address): 0x6bC693DBd2b197e3067832Ac71eD0B6d38CFD85A
Arg [4] : buybackAddr (address): 0x44734875A9CFAc1ea21a9721B37954D33a24139B
Arg [5] : flipAddr (address): 0x2eC7d593763eed26DEFA231B4c566252E2667A6b
Arg [6] : positionsAddr (address): 0xC36442b4a4522E871399CD717aBDD847Ab11FE88

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000002bacd5bc40aa9c6800000
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [3] : 0000000000000000000000006bc693dbd2b197e3067832ac71ed0b6d38cfd85a
Arg [4] : 00000000000000000000000044734875a9cfac1ea21a9721b37954d33a24139b
Arg [5] : 0000000000000000000000002ec7d593763eed26defa231b4c566252e2667a6b
Arg [6] : 000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [8] : 54656e64794e46542e636f6d2c20616e204e46542043656e7472696320496e74
Arg [9] : 65726e657420446f6d61696e2d4e616d652041737365742d4261636b65642054
Arg [10] : 6f6b656e00000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 544e445900000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

5934:10999:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7749:26:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:106:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11745:141:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13639:1000;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4814:478:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6831:29:0;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3021:91:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5687:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16842:88:0;;;:::i;:::-;;10731:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7121:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3336:125:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11333:76:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6983:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2295:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12594:590:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11109:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8168:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:405:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12052:122:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7917:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6671:28;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8059:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7601:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8326:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3894:149:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10895:90:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10329:84;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10517:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7369:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2084:98:1;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;4289:12;:10;:12::i;:::-;4303:7;4312:6;4280:8;:39::i;:::-;4336:4;4329:11;;4181:166;;;;:::o;7749:26:0:-;;;;;;;;;;;;;:::o;3172:106:1:-;3233:7;3259:12;;3252:19;;3172:106;:::o;11745:141:0:-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11828:3:::1;11812:13;:19;;;;11860:12;:10;:12::i;:::-;11849:29;;;11874:3;11849:29;;;;;;:::i;:::-;;;;;;;;11745:141:::0;:::o;13639:1000::-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13787:1:::1;13759:30;;:16;;;;;;;;;;;:30;;;;13751:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;13859:1;13850:5;;:10;;13842:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13943:1;13920:25;;:11;;;;;;;;;;;:25;;;;13912:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;14009:17;14037:16;;;;;;;;;;;14009:45;;14065:15;14083:9;:17;;;14101:5;;14083:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14065:42;;14133:7;14126:14;;:3;:14;;;14118:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14217:12;14264:9;14251:10;:22;;;;:::i;:::-;14232:15;:42;;;;:::i;:::-;14217:57;;14326:1;14295:15;:27;;;:32;:82;;;;14350:15;:27;;;14331:15;:46;;14295:82;14287:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;14454:22;14464:11;;;;;;;;;;;14454:9;:22::i;:::-;14444:6;:32;;14436:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;14565:20;;;;;;;;14572:6;14565:20;;;;14580:4;14565:20;;::::0;14547:15:::1;:38;;;;;;;;;;;;;;;;;;;14613:3;14601:30;;;14618:6;14626:4;14601:30;;;;;;;:::i;:::-;;;;;;;;13740:899;;;13639:1000:::0;;;:::o;4814:478:1:-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5013:24;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:33;5060:12;:10;:12::i;:::-;5040:33;;;;;;;;;;;;;;;;5013:60;;5111:6;5091:16;:26;;5083:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5196:57;5205:6;5213:12;:10;:12::i;:::-;5246:6;5227:16;:25;5196:8;:57::i;:::-;5281:4;5274:11;;;4814:478;;;;;:::o;6831:29:0:-;;;;;;;;;;;;;;:::o;3021:91:1:-;3079:5;3103:2;3096:9;;3021:91;:::o;5687:212::-;5775:4;5791:80;5800:12;:10;:12::i;:::-;5814:7;5860:10;5823:11;:25;5835:12;:10;:12::i;:::-;5823:25;;;;;;;;;;;;;;;:34;5849:7;5823:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5791:8;:80::i;:::-;5888:4;5881:11;;5687:212;;;;:::o;16842:88:0:-;8688:7;;;;;;;;;;;8672:23;;:12;:10;:12::i;:::-;:23;;;8664:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16888:34:::1;16894:7;;;;;;;;;;;16903:18;16913:7;;;;;;;;;;;16903:9;:18::i;:::-;16888:5;:34::i;:::-;16842:88::o:0;10731:76::-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10796:3:::1;10789:4;;:10;;;;;;;;;;;;;;;;;;10731:76:::0;:::o;7121:23::-;;;;;;;;;;;;;:::o;3336:125:1:-;3410:7;3436:9;:18;3446:7;3436:18;;;;;;;;;;;;;;;;3429:25;;3336:125;;;:::o;11333:76:0:-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:2:::1;11391:5;:10;;;;11333:76:::0;:::o;6983:20::-;;;;;;;;;;;;;:::o;2295:102:1:-;2351:13;2383:7;2376:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2295:102;:::o;12594:590:0:-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12718:8:::1;;;;;;;;;;;12711:15;;:3;:15;;;12703:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12778:12;12825:9;12812:10;:22;;;;:::i;:::-;12793:15;:42;;;;:::i;:::-;12778:57;;12886:1;12856:14;:26;;;:31;:80;;;;12910:14;:26;;;12891:15;:45;;12856:80;12848:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;13013:14;13023:3;13013:9;:14::i;:::-;13003:6;:24;;12995:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13110:20;;;;;;;;13117:6;13110:20;;;;13125:4;13110:20;;::::0;13093:14:::1;:37;;;;;;;;;;;;;;;;;;;13158:3;13146:30;;;13163:6;13171:4;13146:30;;;;;;;:::i;:::-;;;;;;;;12692:492;12594:590:::0;;;:::o;11109:100::-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11198:3:::1;11179:16;;:22;;;;;;;;;;;;;;;;;;11109:100:::0;:::o;8168:28::-;;;;:::o;6386:405:1:-;6479:4;6495:24;6522:11;:25;6534:12;:10;:12::i;:::-;6522:25;;;;;;;;;;;;;;;:34;6548:7;6522:34;;;;;;;;;;;;;;;;6495:61;;6594:15;6574:16;:35;;6566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6685:67;6694:12;:10;:12::i;:::-;6708:7;6736:15;6717:16;:34;6685:8;:67::i;:::-;6780:4;6773:11;;;6386:405;;;;:::o;3664:172::-;3750:4;3766:42;3776:12;:10;:12::i;:::-;3790:9;3801:6;3766:9;:42::i;:::-;3825:4;3818:11;;3664:172;;;;:::o;12052:122:0:-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12151:15:::1;12133;;:33;;;;;;;;;;;;;;;;;;12052:122:::0;:::o;7917:31::-;;;;;;;;;;;;;:::o;6671:28::-;;;;;;;;;;;;;;:::o;8059:20::-;;;;:::o;7601:19::-;;;;;;;;;;;;;:::o;8326:30::-;;;;;;;;;;;;;:::o;3894:149:1:-;3983:7;4009:11;:18;4021:5;4009:18;;;;;;;;;;;;;;;:27;4028:7;4009:27;;;;;;;;;;;;;;;;4002:34;;3894:149;;;;:::o;10895:90:0:-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10974:3:::1;10960:11;;:17;;;;;;;;;;;;;;;;;;10895:90:::0;:::o;10329:84::-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10402:3:::1;10391:8;;:14;;;;;;;;;;;;;;;;;;10329:84:::0;:::o;10517:82::-;8497:5;;;;;;;;;;;8481:21;;:12;:10;:12::i;:::-;:21;;;8473:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10588:3:::1;10578:7;;:13;;;;;;;;;;;;;;;;;;10517:82:::0;:::o;7369:22::-;;;;;;;;;;;;;:::o;7265:713:1:-;7418:1;7400:20;;:6;:20;;;;7392:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:1;7480:23;;:9;:23;;;;7472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7554:47;7575:6;7583:9;7594:6;7554:20;:47::i;:::-;7612:21;7636:9;:17;7646:6;7636:17;;;;;;;;;;;;;;;;7612:41;;7688:6;7671:13;:23;;7663:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7807:6;7791:13;:22;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;:42;;;;7857:6;7833:9;:20;7843:9;7833:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;;;:::i;:::-;;;;;;;;7925:46;7945:6;7953:9;7964:6;7925:19;:46::i;:::-;7382:596;7265:713;;;:::o;587:96:5:-;640:7;666:10;659:17;;587:96;:::o;9962:370:1:-;10110:1;10093:19;;:5;:19;;;;10085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10190:1;10171:21;;:7;:21;;;;10163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10272:6;10242:11;:18;10254:5;10242:18;;;;;;;;;;;;;;;:27;10261:7;10242:27;;;;;;;;;;;;;;;:36;;;;10309:7;10293:32;;10302:5;10293:32;;;10318:6;10293:32;;;;;;:::i;:::-;;;;;;;;9962:370;;;:::o;15172:1485:0:-;15289:7;;;;;;;;;;;15279:17;;:6;:17;;;;15271:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15374:8;;;;;;;;;;;15364:18;;:6;:18;;;15361:1234;;;15437:1;15407:14;:26;;;:31;;:80;;;;;15461:14;:26;;;15442:15;:45;;15407:80;15399:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;15575:14;:21;;;15565:6;:31;;15557:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15827:12;;;;;;;;15834:1;15827:12;;;;15837:1;15827:12;;;15810:14;:29;;;;;;;;;;;;;;;;;;;15361:1234;;;15878:1;15869:5;;:10;15866:729;;15950:17;15978:16;;;;;;;;;;;15950:45;;16010:15;16028:9;:17;;;16046:5;;16028:24;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16010:42;;16083:7;16070:20;;:9;:20;;;16067:517;;;16150:1;16119:15;:27;;;:32;;:82;;;;;16174:15;:27;;;16155:15;:46;;16119:82;16111:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;16296:15;:22;;;16286:6;:32;;16278:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16556:12;;;;;;;;16563:1;16556:12;;;;16566:1;16556:12;;;16538:15;:30;;;;;;;;;;;;;;;;;;;16067:517;15881:714;;15866:729;15361:1234;16607:42;16623:6;16631:9;16642:6;16607:15;:42::i;:::-;15172:1485;;;:::o;8963:576:1:-;9065:1;9046:21;;:7;:21;;;;9038:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9116:49;9137:7;9154:1;9158:6;9116:20;:49::i;:::-;9176:22;9201:9;:18;9211:7;9201:18;;;;;;;;;;;;;;;;9176:43;;9255:6;9237:14;:24;;9229:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9372:6;9355:14;:23;9334:9;:18;9344:7;9334:18;;;;;;;;;;;;;;;:44;;;;9414:6;9398:12;;:22;;;;;;;:::i;:::-;;;;;;;;9462:1;9436:37;;9445:7;9436:37;;;9466:6;9436:37;;;;;;:::i;:::-;;;;;;;;9484:48;9504:7;9521:1;9525:6;9484:19;:48::i;:::-;9028:511;8963:576;;:::o;10916:121::-;;;;:::o;11625:120::-;;;;:::o;7:139:7:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:139::-;347:5;385:6;372:20;363:29;;401:33;428:5;401:33;:::i;:::-;301:139;;;;:::o;446:329::-;505:6;554:2;542:9;533:7;529:23;525:32;522:119;;;560:79;;:::i;:::-;522:119;680:1;705:53;750:7;741:6;730:9;726:22;705:53;:::i;:::-;695:63;;651:117;446:329;;;;:::o;781:351::-;851:6;900:2;888:9;879:7;875:23;871:32;868:119;;;906:79;;:::i;:::-;868:119;1026:1;1051:64;1107:7;1098:6;1087:9;1083:22;1051:64;:::i;:::-;1041:74;;997:128;781:351;;;;:::o;1138:474::-;1206:6;1214;1263:2;1251:9;1242:7;1238:23;1234:32;1231:119;;;1269:79;;:::i;:::-;1231:119;1389:1;1414:53;1459:7;1450:6;1439:9;1435:22;1414:53;:::i;:::-;1404:63;;1360:117;1516:2;1542:53;1587:7;1578:6;1567:9;1563:22;1542:53;:::i;:::-;1532:63;;1487:118;1138:474;;;;;:::o;1618:619::-;1695:6;1703;1711;1760:2;1748:9;1739:7;1735:23;1731:32;1728:119;;;1766:79;;:::i;:::-;1728:119;1886:1;1911:53;1956:7;1947:6;1936:9;1932:22;1911:53;:::i;:::-;1901:63;;1857:117;2013:2;2039:53;2084:7;2075:6;2064:9;2060:22;2039:53;:::i;:::-;2029:63;;1984:118;2141:2;2167:53;2212:7;2203:6;2192:9;2188:22;2167:53;:::i;:::-;2157:63;;2112:118;1618:619;;;;;:::o;2243:474::-;2311:6;2319;2368:2;2356:9;2347:7;2343:23;2339:32;2336:119;;;2374:79;;:::i;:::-;2336:119;2494:1;2519:53;2564:7;2555:6;2544:9;2540:22;2519:53;:::i;:::-;2509:63;;2465:117;2621:2;2647:53;2692:7;2683:6;2672:9;2668:22;2647:53;:::i;:::-;2637:63;;2592:118;2243:474;;;;;:::o;2723:619::-;2800:6;2808;2816;2865:2;2853:9;2844:7;2840:23;2836:32;2833:119;;;2871:79;;:::i;:::-;2833:119;2991:1;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2962:117;3118:2;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3089:118;3246:2;3272:53;3317:7;3308:6;3297:9;3293:22;3272:53;:::i;:::-;3262:63;;3217:118;2723:619;;;;;:::o;3348:329::-;3407:6;3456:2;3444:9;3435:7;3431:23;3427:32;3424:119;;;3462:79;;:::i;:::-;3424:119;3582:1;3607:53;3652:7;3643:6;3632:9;3628:22;3607:53;:::i;:::-;3597:63;;3553:117;3348:329;;;;:::o;3683:118::-;3770:24;3788:5;3770:24;:::i;:::-;3765:3;3758:37;3683:118;;:::o;3807:109::-;3888:21;3903:5;3888:21;:::i;:::-;3883:3;3876:34;3807:109;;:::o;3922:364::-;4010:3;4038:39;4071:5;4038:39;:::i;:::-;4093:71;4157:6;4152:3;4093:71;:::i;:::-;4086:78;;4173:52;4218:6;4213:3;4206:4;4199:5;4195:16;4173:52;:::i;:::-;4250:29;4272:6;4250:29;:::i;:::-;4245:3;4241:39;4234:46;;4014:272;3922:364;;;;:::o;4292:366::-;4434:3;4455:67;4519:2;4514:3;4455:67;:::i;:::-;4448:74;;4531:93;4620:3;4531:93;:::i;:::-;4649:2;4644:3;4640:12;4633:19;;4292:366;;;:::o;4664:::-;4806:3;4827:67;4891:2;4886:3;4827:67;:::i;:::-;4820:74;;4903:93;4992:3;4903:93;:::i;:::-;5021:2;5016:3;5012:12;5005:19;;4664:366;;;:::o;5036:::-;5178:3;5199:67;5263:2;5258:3;5199:67;:::i;:::-;5192:74;;5275:93;5364:3;5275:93;:::i;:::-;5393:2;5388:3;5384:12;5377:19;;5036:366;;;:::o;5408:::-;5550:3;5571:67;5635:2;5630:3;5571:67;:::i;:::-;5564:74;;5647:93;5736:3;5647:93;:::i;:::-;5765:2;5760:3;5756:12;5749:19;;5408:366;;;:::o;5780:::-;5922:3;5943:67;6007:2;6002:3;5943:67;:::i;:::-;5936:74;;6019:93;6108:3;6019:93;:::i;:::-;6137:2;6132:3;6128:12;6121:19;;5780:366;;;:::o;6152:::-;6294:3;6315:67;6379:2;6374:3;6315:67;:::i;:::-;6308:74;;6391:93;6480:3;6391:93;:::i;:::-;6509:2;6504:3;6500:12;6493:19;;6152:366;;;:::o;6524:::-;6666:3;6687:67;6751:2;6746:3;6687:67;:::i;:::-;6680:74;;6763:93;6852:3;6763:93;:::i;:::-;6881:2;6876:3;6872:12;6865:19;;6524:366;;;:::o;6896:::-;7038:3;7059:67;7123:2;7118:3;7059:67;:::i;:::-;7052:74;;7135:93;7224:3;7135:93;:::i;:::-;7253:2;7248:3;7244:12;7237:19;;6896:366;;;:::o;7268:::-;7410:3;7431:67;7495:2;7490:3;7431:67;:::i;:::-;7424:74;;7507:93;7596:3;7507:93;:::i;:::-;7625:2;7620:3;7616:12;7609:19;;7268:366;;;:::o;7640:::-;7782:3;7803:67;7867:2;7862:3;7803:67;:::i;:::-;7796:74;;7879:93;7968:3;7879:93;:::i;:::-;7997:2;7992:3;7988:12;7981:19;;7640:366;;;:::o;8012:::-;8154:3;8175:67;8239:2;8234:3;8175:67;:::i;:::-;8168:74;;8251:93;8340:3;8251:93;:::i;:::-;8369:2;8364:3;8360:12;8353:19;;8012:366;;;:::o;8384:::-;8526:3;8547:67;8611:2;8606:3;8547:67;:::i;:::-;8540:74;;8623:93;8712:3;8623:93;:::i;:::-;8741:2;8736:3;8732:12;8725:19;;8384:366;;;:::o;8756:::-;8898:3;8919:67;8983:2;8978:3;8919:67;:::i;:::-;8912:74;;8995:93;9084:3;8995:93;:::i;:::-;9113:2;9108:3;9104:12;9097:19;;8756:366;;;:::o;9128:::-;9270:3;9291:67;9355:2;9350:3;9291:67;:::i;:::-;9284:74;;9367:93;9456:3;9367:93;:::i;:::-;9485:2;9480:3;9476:12;9469:19;;9128:366;;;:::o;9500:::-;9642:3;9663:67;9727:2;9722:3;9663:67;:::i;:::-;9656:74;;9739:93;9828:3;9739:93;:::i;:::-;9857:2;9852:3;9848:12;9841:19;;9500:366;;;:::o;9872:::-;10014:3;10035:67;10099:2;10094:3;10035:67;:::i;:::-;10028:74;;10111:93;10200:3;10111:93;:::i;:::-;10229:2;10224:3;10220:12;10213:19;;9872:366;;;:::o;10244:::-;10386:3;10407:67;10471:2;10466:3;10407:67;:::i;:::-;10400:74;;10483:93;10572:3;10483:93;:::i;:::-;10601:2;10596:3;10592:12;10585:19;;10244:366;;;:::o;10616:::-;10758:3;10779:67;10843:2;10838:3;10779:67;:::i;:::-;10772:74;;10855:93;10944:3;10855:93;:::i;:::-;10973:2;10968:3;10964:12;10957:19;;10616:366;;;:::o;10988:::-;11130:3;11151:67;11215:2;11210:3;11151:67;:::i;:::-;11144:74;;11227:93;11316:3;11227:93;:::i;:::-;11345:2;11340:3;11336:12;11329:19;;10988:366;;;:::o;11360:::-;11502:3;11523:67;11587:2;11582:3;11523:67;:::i;:::-;11516:74;;11599:93;11688:3;11599:93;:::i;:::-;11717:2;11712:3;11708:12;11701:19;;11360:366;;;:::o;11732:::-;11874:3;11895:67;11959:2;11954:3;11895:67;:::i;:::-;11888:74;;11971:93;12060:3;11971:93;:::i;:::-;12089:2;12084:3;12080:12;12073:19;;11732:366;;;:::o;12104:::-;12246:3;12267:67;12331:2;12326:3;12267:67;:::i;:::-;12260:74;;12343:93;12432:3;12343:93;:::i;:::-;12461:2;12456:3;12452:12;12445:19;;12104:366;;;:::o;12476:::-;12618:3;12639:67;12703:2;12698:3;12639:67;:::i;:::-;12632:74;;12715:93;12804:3;12715:93;:::i;:::-;12833:2;12828:3;12824:12;12817:19;;12476:366;;;:::o;12848:::-;12990:3;13011:67;13075:2;13070:3;13011:67;:::i;:::-;13004:74;;13087:93;13176:3;13087:93;:::i;:::-;13205:2;13200:3;13196:12;13189:19;;12848:366;;;:::o;13220:118::-;13307:24;13325:5;13307:24;:::i;:::-;13302:3;13295:37;13220:118;;:::o;13344:112::-;13427:22;13443:5;13427:22;:::i;:::-;13422:3;13415:35;13344:112;;:::o;13462:222::-;13555:4;13593:2;13582:9;13578:18;13570:26;;13606:71;13674:1;13663:9;13659:17;13650:6;13606:71;:::i;:::-;13462:222;;;;:::o;13690:210::-;13777:4;13815:2;13804:9;13800:18;13792:26;;13828:65;13890:1;13879:9;13875:17;13866:6;13828:65;:::i;:::-;13690:210;;;;:::o;13906:313::-;14019:4;14057:2;14046:9;14042:18;14034:26;;14106:9;14100:4;14096:20;14092:1;14081:9;14077:17;14070:47;14134:78;14207:4;14198:6;14134:78;:::i;:::-;14126:86;;13906:313;;;;:::o;14225:419::-;14391:4;14429:2;14418:9;14414:18;14406:26;;14478:9;14472:4;14468:20;14464:1;14453:9;14449:17;14442:47;14506:131;14632:4;14506:131;:::i;:::-;14498:139;;14225:419;;;:::o;14650:::-;14816:4;14854:2;14843:9;14839:18;14831:26;;14903:9;14897:4;14893:20;14889:1;14878:9;14874:17;14867:47;14931:131;15057:4;14931:131;:::i;:::-;14923:139;;14650:419;;;:::o;15075:::-;15241:4;15279:2;15268:9;15264:18;15256:26;;15328:9;15322:4;15318:20;15314:1;15303:9;15299:17;15292:47;15356:131;15482:4;15356:131;:::i;:::-;15348:139;;15075:419;;;:::o;15500:::-;15666:4;15704:2;15693:9;15689:18;15681:26;;15753:9;15747:4;15743:20;15739:1;15728:9;15724:17;15717:47;15781:131;15907:4;15781:131;:::i;:::-;15773:139;;15500:419;;;:::o;15925:::-;16091:4;16129:2;16118:9;16114:18;16106:26;;16178:9;16172:4;16168:20;16164:1;16153:9;16149:17;16142:47;16206:131;16332:4;16206:131;:::i;:::-;16198:139;;15925:419;;;:::o;16350:::-;16516:4;16554:2;16543:9;16539:18;16531:26;;16603:9;16597:4;16593:20;16589:1;16578:9;16574:17;16567:47;16631:131;16757:4;16631:131;:::i;:::-;16623:139;;16350:419;;;:::o;16775:::-;16941:4;16979:2;16968:9;16964:18;16956:26;;17028:9;17022:4;17018:20;17014:1;17003:9;16999:17;16992:47;17056:131;17182:4;17056:131;:::i;:::-;17048:139;;16775:419;;;:::o;17200:::-;17366:4;17404:2;17393:9;17389:18;17381:26;;17453:9;17447:4;17443:20;17439:1;17428:9;17424:17;17417:47;17481:131;17607:4;17481:131;:::i;:::-;17473:139;;17200:419;;;:::o;17625:::-;17791:4;17829:2;17818:9;17814:18;17806:26;;17878:9;17872:4;17868:20;17864:1;17853:9;17849:17;17842:47;17906:131;18032:4;17906:131;:::i;:::-;17898:139;;17625:419;;;:::o;18050:::-;18216:4;18254:2;18243:9;18239:18;18231:26;;18303:9;18297:4;18293:20;18289:1;18278:9;18274:17;18267:47;18331:131;18457:4;18331:131;:::i;:::-;18323:139;;18050:419;;;:::o;18475:::-;18641:4;18679:2;18668:9;18664:18;18656:26;;18728:9;18722:4;18718:20;18714:1;18703:9;18699:17;18692:47;18756:131;18882:4;18756:131;:::i;:::-;18748:139;;18475:419;;;:::o;18900:::-;19066:4;19104:2;19093:9;19089:18;19081:26;;19153:9;19147:4;19143:20;19139:1;19128:9;19124:17;19117:47;19181:131;19307:4;19181:131;:::i;:::-;19173:139;;18900:419;;;:::o;19325:::-;19491:4;19529:2;19518:9;19514:18;19506:26;;19578:9;19572:4;19568:20;19564:1;19553:9;19549:17;19542:47;19606:131;19732:4;19606:131;:::i;:::-;19598:139;;19325:419;;;:::o;19750:::-;19916:4;19954:2;19943:9;19939:18;19931:26;;20003:9;19997:4;19993:20;19989:1;19978:9;19974:17;19967:47;20031:131;20157:4;20031:131;:::i;:::-;20023:139;;19750:419;;;:::o;20175:::-;20341:4;20379:2;20368:9;20364:18;20356:26;;20428:9;20422:4;20418:20;20414:1;20403:9;20399:17;20392:47;20456:131;20582:4;20456:131;:::i;:::-;20448:139;;20175:419;;;:::o;20600:::-;20766:4;20804:2;20793:9;20789:18;20781:26;;20853:9;20847:4;20843:20;20839:1;20828:9;20824:17;20817:47;20881:131;21007:4;20881:131;:::i;:::-;20873:139;;20600:419;;;:::o;21025:::-;21191:4;21229:2;21218:9;21214:18;21206:26;;21278:9;21272:4;21268:20;21264:1;21253:9;21249:17;21242:47;21306:131;21432:4;21306:131;:::i;:::-;21298:139;;21025:419;;;:::o;21450:::-;21616:4;21654:2;21643:9;21639:18;21631:26;;21703:9;21697:4;21693:20;21689:1;21678:9;21674:17;21667:47;21731:131;21857:4;21731:131;:::i;:::-;21723:139;;21450:419;;;:::o;21875:::-;22041:4;22079:2;22068:9;22064:18;22056:26;;22128:9;22122:4;22118:20;22114:1;22103:9;22099:17;22092:47;22156:131;22282:4;22156:131;:::i;:::-;22148:139;;21875:419;;;:::o;22300:::-;22466:4;22504:2;22493:9;22489:18;22481:26;;22553:9;22547:4;22543:20;22539:1;22528:9;22524:17;22517:47;22581:131;22707:4;22581:131;:::i;:::-;22573:139;;22300:419;;;:::o;22725:::-;22891:4;22929:2;22918:9;22914:18;22906:26;;22978:9;22972:4;22968:20;22964:1;22953:9;22949:17;22942:47;23006:131;23132:4;23006:131;:::i;:::-;22998:139;;22725:419;;;:::o;23150:::-;23316:4;23354:2;23343:9;23339:18;23331:26;;23403:9;23397:4;23393:20;23389:1;23378:9;23374:17;23367:47;23431:131;23557:4;23431:131;:::i;:::-;23423:139;;23150:419;;;:::o;23575:::-;23741:4;23779:2;23768:9;23764:18;23756:26;;23828:9;23822:4;23818:20;23814:1;23803:9;23799:17;23792:47;23856:131;23982:4;23856:131;:::i;:::-;23848:139;;23575:419;;;:::o;24000:::-;24166:4;24204:2;24193:9;24189:18;24181:26;;24253:9;24247:4;24243:20;24239:1;24228:9;24224:17;24217:47;24281:131;24407:4;24281:131;:::i;:::-;24273:139;;24000:419;;;:::o;24425:222::-;24518:4;24556:2;24545:9;24541:18;24533:26;;24569:71;24637:1;24626:9;24622:17;24613:6;24569:71;:::i;:::-;24425:222;;;;:::o;24653:332::-;24774:4;24812:2;24801:9;24797:18;24789:26;;24825:71;24893:1;24882:9;24878:17;24869:6;24825:71;:::i;:::-;24906:72;24974:2;24963:9;24959:18;24950:6;24906:72;:::i;:::-;24653:332;;;;;:::o;24991:214::-;25080:4;25118:2;25107:9;25103:18;25095:26;;25131:67;25195:1;25184:9;25180:17;25171:6;25131:67;:::i;:::-;24991:214;;;;:::o;25292:99::-;25344:6;25378:5;25372:12;25362:22;;25292:99;;;:::o;25397:169::-;25481:11;25515:6;25510:3;25503:19;25555:4;25550:3;25546:14;25531:29;;25397:169;;;;:::o;25572:305::-;25612:3;25631:20;25649:1;25631:20;:::i;:::-;25626:25;;25665:20;25683:1;25665:20;:::i;:::-;25660:25;;25819:1;25751:66;25747:74;25744:1;25741:81;25738:107;;;25825:18;;:::i;:::-;25738:107;25869:1;25866;25862:9;25855:16;;25572:305;;;;:::o;25883:348::-;25923:7;25946:20;25964:1;25946:20;:::i;:::-;25941:25;;25980:20;25998:1;25980:20;:::i;:::-;25975:25;;26168:1;26100:66;26096:74;26093:1;26090:81;26085:1;26078:9;26071:17;26067:105;26064:131;;;26175:18;;:::i;:::-;26064:131;26223:1;26220;26216:9;26205:20;;25883:348;;;;:::o;26237:191::-;26277:4;26297:20;26315:1;26297:20;:::i;:::-;26292:25;;26331:20;26349:1;26331:20;:::i;:::-;26326:25;;26370:1;26367;26364:8;26361:34;;;26375:18;;:::i;:::-;26361:34;26420:1;26417;26413:9;26405:17;;26237:191;;;;:::o;26434:96::-;26471:7;26500:24;26518:5;26500:24;:::i;:::-;26489:35;;26434:96;;;:::o;26536:90::-;26570:7;26613:5;26606:13;26599:21;26588:32;;26536:90;;;:::o;26632:126::-;26669:7;26709:42;26702:5;26698:54;26687:65;;26632:126;;;:::o;26764:77::-;26801:7;26830:5;26819:16;;26764:77;;;:::o;26847:86::-;26882:7;26922:4;26915:5;26911:16;26900:27;;26847:86;;;:::o;26939:307::-;27007:1;27017:113;27031:6;27028:1;27025:13;27017:113;;;27116:1;27111:3;27107:11;27101:18;27097:1;27092:3;27088:11;27081:39;27053:2;27050:1;27046:10;27041:15;;27017:113;;;27148:6;27145:1;27142:13;27139:101;;;27228:1;27219:6;27214:3;27210:16;27203:27;27139:101;26988:258;26939:307;;;:::o;27252:320::-;27296:6;27333:1;27327:4;27323:12;27313:22;;27380:1;27374:4;27370:12;27401:18;27391:81;;27457:4;27449:6;27445:17;27435:27;;27391:81;27519:2;27511:6;27508:14;27488:18;27485:38;27482:84;;;27538:18;;:::i;:::-;27482:84;27303:269;27252:320;;;:::o;27578:180::-;27626:77;27623:1;27616:88;27723:4;27720:1;27713:15;27747:4;27744:1;27737:15;27764:180;27812:77;27809:1;27802:88;27909:4;27906:1;27899:15;27933:4;27930:1;27923:15;28073:117;28182:1;28179;28172:12;28196:102;28237:6;28288:2;28284:7;28279:2;28272:5;28268:14;28264:28;28254:38;;28196:102;;;:::o;28304:222::-;28444:34;28440:1;28432:6;28428:14;28421:58;28513:5;28508:2;28500:6;28496:15;28489:30;28304:222;:::o;28532:242::-;28672:34;28668:1;28660:6;28656:14;28649:58;28741:25;28736:2;28728:6;28724:15;28717:50;28532:242;:::o;28780:221::-;28920:34;28916:1;28908:6;28904:14;28897:58;28989:4;28984:2;28976:6;28972:15;28965:29;28780:221;:::o;29007:168::-;29147:20;29143:1;29135:6;29131:14;29124:44;29007:168;:::o;29181:221::-;29321:34;29317:1;29309:6;29305:14;29298:58;29390:4;29385:2;29377:6;29373:15;29366:29;29181:221;:::o;29408:233::-;29548:34;29544:1;29536:6;29532:14;29525:58;29617:16;29612:2;29604:6;29600:15;29593:41;29408:233;:::o;29647:223::-;29787:34;29783:1;29775:6;29771:14;29764:58;29856:6;29851:2;29843:6;29839:15;29832:31;29647:223;:::o;29876:245::-;30016:34;30012:1;30004:6;30000:14;29993:58;30085:28;30080:2;30072:6;30068:15;30061:53;29876:245;:::o;30127:236::-;30267:34;30263:1;30255:6;30251:14;30244:58;30336:19;30331:2;30323:6;30319:15;30312:44;30127:236;:::o;30369:230::-;30509:34;30505:1;30497:6;30493:14;30486:58;30578:13;30573:2;30565:6;30561:15;30554:38;30369:230;:::o;30605:239::-;30745:34;30741:1;30733:6;30729:14;30722:58;30814:22;30809:2;30801:6;30797:15;30790:47;30605:239;:::o;30850:225::-;30990:34;30986:1;30978:6;30974:14;30967:58;31059:8;31054:2;31046:6;31042:15;31035:33;30850:225;:::o;31081:224::-;31221:34;31217:1;31209:6;31205:14;31198:58;31290:7;31285:2;31277:6;31273:15;31266:32;31081:224;:::o;31311:170::-;31451:22;31447:1;31439:6;31435:14;31428:46;31311:170;:::o;31487:237::-;31627:34;31623:1;31615:6;31611:14;31604:58;31696:20;31691:2;31683:6;31679:15;31672:45;31487:237;:::o;31730:::-;31870:34;31866:1;31858:6;31854:14;31847:58;31939:20;31934:2;31926:6;31922:15;31915:45;31730:237;:::o;31973:240::-;32113:34;32109:1;32101:6;32097:14;32090:58;32182:23;32177:2;32169:6;32165:15;32158:48;31973:240;:::o;32219:227::-;32359:34;32355:1;32347:6;32343:14;32336:58;32428:10;32423:2;32415:6;32411:15;32404:35;32219:227;:::o;32452:221::-;32592:34;32588:1;32580:6;32576:14;32569:58;32661:4;32656:2;32648:6;32644:15;32637:29;32452:221;:::o;32679:220::-;32819:34;32815:1;32807:6;32803:14;32796:58;32888:3;32883:2;32875:6;32871:15;32864:28;32679:220;:::o;32905:224::-;33045:34;33041:1;33033:6;33029:14;33022:58;33114:7;33109:2;33101:6;33097:15;33090:32;32905:224;:::o;33135:223::-;33275:34;33271:1;33263:6;33259:14;33252:58;33344:6;33339:2;33331:6;33327:15;33320:31;33135:223;:::o;33364:246::-;33504:34;33500:1;33492:6;33488:14;33481:58;33573:29;33568:2;33560:6;33556:15;33549:54;33364:246;:::o;33616:224::-;33756:34;33752:1;33744:6;33740:14;33733:58;33825:7;33820:2;33812:6;33808:15;33801:32;33616:224;:::o;33846:122::-;33919:24;33937:5;33919:24;:::i;:::-;33912:5;33909:35;33899:63;;33958:1;33955;33948:12;33899:63;33846:122;:::o;33974:::-;34047:24;34065:5;34047:24;:::i;:::-;34040:5;34037:35;34027:63;;34086:1;34083;34076:12;34027:63;33974:122;:::o

Swarm Source

ipfs://d20b67dbd7f4a7ca289ad19e8d19ad35b7a446929fd1e219f6311fc32b6c5da2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.