ETH Price: $2,325.27 (+2.86%)

Contract

0x287826345845516a423bd729b92070a48d6C2c9E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...166802502023-02-21 23:49:471119 days ago1677023387IN
0x28782634...48d6C2c9E
0 ETH0.001386330
Set Approval For...163074262022-12-31 21:26:471171 days ago1672522007IN
0x28782634...48d6C2c9E
0 ETH0.0007024715.18604853
Set Approval For...163074192022-12-31 21:25:231171 days ago1672521923IN
0x28782634...48d6C2c9E
0 ETH0.0008402118.15902531
Set Approval For...163074192022-12-31 21:25:231171 days ago1672521923IN
0x28782634...48d6C2c9E
0 ETH0.0008402118.15902531
Set Approval For...163074192022-12-31 21:25:231171 days ago1672521923IN
0x28782634...48d6C2c9E
0 ETH0.0008402118.15902531
Set Approval For...163074192022-12-31 21:25:231171 days ago1672521923IN
0x28782634...48d6C2c9E
0 ETH0.0008402118.15902531
Set Approval For...162956612022-12-30 6:01:231173 days ago1672380083IN
0x28782634...48d6C2c9E
0 ETH0.0009464520.46033952
Set Approval For...150851712022-07-05 22:17:031350 days ago1657059423IN
0x28782634...48d6C2c9E
0 ETH0.0014607931.57109655
Set Approval For...149957662022-06-20 9:23:471366 days ago1655717027IN
0x28782634...48d6C2c9E
0 ETH0.0008283517.90721855
Set Approval For...144526452022-03-25 2:03:031453 days ago1648173783IN
0x28782634...48d6C2c9E
0 ETH0.0011168145.85000841
Safe Transfer Fr...143756332022-03-13 2:05:491465 days ago1647137149IN
0x28782634...48d6C2c9E
0 ETH0.0015752423.29998942
Set Approval For...143395892022-03-07 12:04:001470 days ago1646654640IN
0x28782634...48d6C2c9E
0 ETH0.0005047520.72255194
Set Approval For...142427842022-02-20 11:57:121485 days ago1645358232IN
0x28782634...48d6C2c9E
0 ETH0.0014002157.48497069
Set Approval For...142397972022-02-20 0:50:001486 days ago1645318200IN
0x28782634...48d6C2c9E
0 ETH0.00348056142.89195077
Set Approval For...142360312022-02-19 10:36:311486 days ago1645266991IN
0x28782634...48d6C2c9E
0 ETH0.0023635451.08158869
Set Approval For...142311122022-02-18 16:17:481487 days ago1645201068IN
0x28782634...48d6C2c9E
0 ETH0.00390809160.4438079
Set Approval For...142309532022-02-18 15:41:391487 days ago1645198899IN
0x28782634...48d6C2c9E
0 ETH0.00676398146.18516651
Set Approval For...142284732022-02-18 6:33:411488 days ago1645166021IN
0x28782634...48d6C2c9E
0 ETH0.0023336250.43487879
Transfer From142284672022-02-18 6:32:331488 days ago1645165953IN
0x28782634...48d6C2c9E
0 ETH0.0035651555
Set Approval For...142274522022-02-18 2:38:531488 days ago1645151933IN
0x28782634...48d6C2c9E
0 ETH0.0032460370.15411232
Set Approval For...142272412022-02-18 1:51:011488 days ago1645149061IN
0x28782634...48d6C2c9E
0 ETH0.0026064356.33101681
Set Approval For...142262412022-02-17 22:04:391488 days ago1645135479IN
0x28782634...48d6C2c9E
0 ETH0.00585699126.58294027
Set Approval For...142201082022-02-16 23:27:451489 days ago1645054065IN
0x28782634...48d6C2c9E
0 ETH0.003528676.26113395
Set Approval For...142185192022-02-16 17:34:391489 days ago1645032879IN
0x28782634...48d6C2c9E
0 ETH0.00254737104.58057252
Set Approval For...142184932022-02-16 17:29:091489 days ago1645032549IN
0x28782634...48d6C2c9E
0 ETH0.00481092103.97495127
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YeeDontDoNFTs

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-02-02
*/

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File sol-temple/src/tokens/[email protected]

pragma solidity >=0.8.0 <0.9.0;
/* ___       ___
*  \  \     /  /
*   \  \   /  /
     \  \ /  /
      \     /
       |   |
       |   |     
       |   |    /'__`\  */
 /*    |   |   (  ___/  */
 /*    |___|   `\____)  */
      

/**
 * @title ERC721
 * @notice A complete ERC721 implementation including metadata and enumerable
 * functions. Completely gas optimized and extensible.
 */
abstract contract ERC721 {
  /*         _           _            */
  /*        ( )_        ( )_          */
  /*    ___ | ,_)   _ _ | ,_)   __    */
  /*  /',__)| |   /'__` )| |   /'__`\  */
  /*  \__, \| |_ ( (_| || |_ (  ___/  */
  /*  (____/`\__)`\__,_)`\__)`\____)  */

  /// @notice See {ERC721-Transfer}.
  event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
  /// @notice See {ERC721-Approval}.
  event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
  /// @notice See {ERC721-ApprovalForAll}.
  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

  /// @notice See {ERC721Metadata-name}.
  string public name;
  /// @notice See {ERC721Metadata-symbol}.
  string public symbol;

  /// @notice See {ERC721Enumerable-totalSupply}.
  uint256 public totalSupply;

  /// @notice Array of all owners.
  address[] private _owners;
  /// @notice Mapping of all balances.
  mapping(address => uint256) private _balanceOf;
  /// @notice Mapping from token Id to it's approved address.
  mapping(uint256 => address) private _tokenApprovals;
  /// @notice Mapping of approvals between owner and operator.
  mapping(address => mapping(address => bool)) private _isApprovedForAll;

  /*   _                            */
  /*  (_ )                _         */
  /*   | |    _      __  (_)   ___  */
  /*   | |  /'_`\  /'_ `\| | /'___) */
  /*   | | ( (_) )( (_) || |( (___  */
  /*  (___)`\___/'`\__  |(_)`\____) */
  /*              ( )_) |           */
  /*               \___/'           */

  constructor(string memory name_, string memory symbol_) {
    name = name_;
    symbol = symbol_;
  }

  /// @notice See {ERC721-balanceOf}.
  function balanceOf(address account_) public view virtual returns (uint256) {
    require(account_ != address(0), "ERC721: balance query for the zero address");
    return _balanceOf[account_];
  }

  /// @notice See {ERC721-ownerOf}.
  function ownerOf(uint256 tokenId_) public view virtual returns (address) {
    require(_exists(tokenId_), "ERC721: query for nonexistent token");
    address owner = _owners[tokenId_];
    return owner;
  }

  /// @notice See {ERC721Metadata-tokenURI}.
  function tokenURI(uint256) public view virtual returns (string memory);

  /// @notice See {ERC721-approve}.
  function approve(address to_, uint256 tokenId_) public virtual {
    address owner = ownerOf(tokenId_);
    require(to_ != owner, "ERC721: approval to current owner");

    require(
      msg.sender == owner || _isApprovedForAll[owner][msg.sender],
      "ERC721: caller is not owner nor approved for all"
    );

    _approve(to_, tokenId_);
  }

  /// @notice See {ERC721-getApproved}.
  function getApproved(uint256 tokenId_) public view virtual returns (address) {
    require(_exists(tokenId_), "ERC721: query for nonexistent token");
    return _tokenApprovals[tokenId_];
  }

  /// @notice See {ERC721-setApprovalForAll}.
  function setApprovalForAll(address operator_, bool approved_) public virtual {
    _setApprovalForAll(msg.sender, operator_, approved_);
  }

  /// @notice See {ERC721-isApprovedForAll}.
  function isApprovedForAll(address account_, address operator_) public view virtual returns (bool) {
    return _isApprovedForAll[account_][operator_];
  }

  /// @notice See {ERC721-transferFrom}.
  function transferFrom(
    address from_,
    address to_,
    uint256 tokenId_
  ) public virtual {
    require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721: transfer caller is not owner nor approved");
    _transfer(from_, to_, tokenId_);
  }

  /// @notice See {ERC721-safeTransferFrom}.
  function safeTransferFrom(
    address from_,
    address to_,
    uint256 tokenId_
  ) public virtual {
    safeTransferFrom(from_, to_, tokenId_, "");
  }

  /// @notice See {ERC721-safeTransferFrom}.
  function safeTransferFrom(
    address from_,
    address to_,
    uint256 tokenId_,
    bytes memory data_
  ) public virtual {
    require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721: transfer caller is not owner nor approved");
    _safeTransfer(from_, to_, tokenId_, data_);
  }

  /// @notice See {ERC721Enumerable.tokenOfOwnerByIndex}.
  function tokenOfOwnerByIndex(address account_, uint256 index_) public view returns (uint256 tokenId) {
    require(index_ < balanceOf(account_), "ERC721Enumerable: Index out of bounds");
    uint256 count;
    for (uint256 i; i < _owners.length; ++i) {
      if (account_ == _owners[i]) {
        if (count == index_) return i;
        else count++;
      }
    }
    revert("ERC721Enumerable: Index out of bounds");
  }

  /// @notice See {ERC721Enumerable.tokenByIndex}.
  function tokenByIndex(uint256 index_) public view virtual returns (uint256) {
    require(index_ < _owners.length, "ERC721Enumerable: Index out of bounds");
    return index_;
  }

  /// @notice Returns a list of all token Ids owned by `owner`.
  function walletOfOwner(address account_) public view returns (uint256[] memory) {
    uint256 balance = balanceOf(account_);
    uint256[] memory ids = new uint256[](balance);
    for (uint256 i = 0; i < balance; i++) {
      ids[i] = tokenOfOwnerByIndex(account_, i);
    }
    return ids;
  }

  /*             _                               _    */
  /*   _        ( )_                            (_ )  */
  /*  (_)  ___  | ,_)   __   _ __   ___     _ _  | |  */
  /*  | |/' _ `\| |   /'__`\( '__)/' _ `\ /'__` ) | |  */
  /*  | || ( ) || |_ (  ___/| |   | ( ) |( (_| | | |  */
  /*  (_)(_) (_)`\__)`\____)(_)   (_) (_)`\__,_)(___) */

  /**
   * @notice 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.
   */
  function _safeTransfer(
    address from_,
    address to_,
    uint256 tokenId_,
    bytes memory data_
  ) internal virtual {
    _transfer(from_, to_, tokenId_);
    _checkOnERC721Received(from_, to_, tokenId_, data_);
  }

  /// @notice Returns whether `tokenId_` exists.
  function _exists(uint256 tokenId_) internal view virtual returns (bool) {
    return tokenId_ < _owners.length && _owners[tokenId_] != address(0);
  }

  /// @notice Returns whether `spender_` is allowed to manage `tokenId`.
  function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal view virtual returns (bool) {
    require(_exists(tokenId_), "ERC721: query for nonexistent token");
    address owner = _owners[tokenId_];
    return (spender_ == owner || getApproved(tokenId_) == spender_ || isApprovedForAll(owner, spender_));
  }

  /// @notice Safely mints `tokenId_` and transfers it to `to`.
  function _safeMint(address to_, uint256 tokenId_) internal virtual {
    _safeMint(to_, tokenId_, "");
  }

  /**
   * @notice Same as {_safeMint}, but with an additional `data_` parameter which is
   * forwarded in {ERC721Receiver-onERC721Received} to contract recipients.
   */
  function _safeMint(
    address to_,
    uint256 tokenId_,
    bytes memory data_
  ) internal virtual {
    _mint(to_, tokenId_);
    _checkOnERC721Received(address(0), to_, tokenId_, data_);
  }

  /// @notice Mints `tokenId_` and transfers it to `to_`.
  function _mint(address to_, uint256 tokenId_) internal virtual {
    require(!_exists(tokenId_), "ERC721: token already minted");

    _beforeTokenTransfer(address(0), to_, tokenId_);

    _owners.push(to_);
    totalSupply++;
    unchecked {
      _balanceOf[to_]++;
    }

    emit Transfer(address(0), to_, tokenId_);
    _afterTokenTransfer(address(0), to_, tokenId_);
  }

  /// @notice Destroys `tokenId`. The approval is cleared when the token is burned.
  function _burn(uint256 tokenId_) internal virtual {
    address owner = ownerOf(tokenId_);

    _beforeTokenTransfer(owner, address(0), tokenId_);

    // Clear approvals
    _approve(address(0), tokenId_);
    delete _owners[tokenId_];
    totalSupply--;
    _balanceOf[owner]--;

    emit Transfer(owner, address(0), tokenId_);
    _afterTokenTransfer(owner, address(0), tokenId_);
  }

  /// @notice Transfers `tokenId_` from `from_` to `to`.
  function _transfer(
    address from_,
    address to_,
    uint256 tokenId_
  ) internal virtual {
    require(_owners[tokenId_] == from_, "ERC721: transfer of token that is not own");

    _beforeTokenTransfer(from_, to_, tokenId_);

    // Clear approvals from the previous owner
    _approve(address(0), tokenId_);

    _owners[tokenId_] = to_;
    unchecked {
      _balanceOf[from_]--;
      _balanceOf[to_]++;
    }

    emit Transfer(from_, to_, tokenId_);
    _afterTokenTransfer(from_, to_, tokenId_);
  }

  /// @notice Approve `to_` to operate on `tokenId_`
  function _approve(address to_, uint256 tokenId_) internal virtual {
    _tokenApprovals[tokenId_] = to_;
    emit Approval(_owners[tokenId_], to_, tokenId_);
  }

  /// @notice Approve `operator_` to operate on all of `account_` tokens.
  function _setApprovalForAll(
    address account_,
    address operator_,
    bool approved_
  ) internal virtual {
    require(account_ != operator_, "ERC721: approve to caller");
    _isApprovedForAll[account_][operator_] = approved_;
    emit ApprovalForAll(account_, operator_, approved_);
  }

  /// @notice ERC721Receiver callback checking and calling helper.
  function _checkOnERC721Received(
    address from_,
    address to_,
    uint256 tokenId_,
    bytes memory data_
  ) private {
    if (to_.code.length > 0) {
      try IERC721Receiver(to_).onERC721Received(msg.sender, from_, tokenId_, data_) returns (bytes4 returned) {
        require(returned == 0x150b7a02, "ERC721: safe transfer to non ERC721Receiver implementation");
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721: safe transfer to non ERC721Receiver implementation");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    }
  }

  /// @notice Hook that is called before any token transfer.
  function _beforeTokenTransfer(
    address from_,
    address to_,
    uint256 tokenId_
  ) internal virtual {}

  /// @notice Hook that is called after any token transfer.
  function _afterTokenTransfer(
    address from_,
    address to_,
    uint256 tokenId_
  ) internal virtual {}

  /*    ___  _   _  _ _      __   _ __  */
  /*  /',__)( ) ( )( '_`\  /'__`\( '__) */
  /*  \__, \| (_) || (_) )(  ___/| |    */
  /*  (____/`\___/'| ,__/'`\____)(_)    */
  /*               | |                  */
  /*               (_)                  */

  /// @notice See {IERC165-supportsInterface}.
  function supportsInterface(bytes4 interfaceId_) public view virtual returns (bool) {
    return
      interfaceId_ == 0x80ac58cd || // ERC721
      interfaceId_ == 0x5b5e139f || // ERC721Metadata
      interfaceId_ == 0x780e9d63 || // ERC721Enumerable
      interfaceId_ == 0x01ffc9a7; // ERC165
  }
}

interface IERC721Receiver {
  function onERC721Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes memory data
  ) external returns (bytes4);
}


// File sol-temple/src/utils/[email protected]

pragma solidity >=0.8.0 <0.9.0;

/**
 * @title Auth
 * @notice Just a simple authing system.
 */
abstract contract Auth {
  /*         _           _            */
  /*        ( )_        ( )_          */
  /*    ___ | ,_)   _ _ | ,_)   __    */
  /*  /',__)| |   /'_` )| |   /'__`\  */
  /*  \__, \| |_ ( (_| || |_ (  ___/  */
  /*  (____/`\__)`\__,_)`\__)`\____)  */

  /// @notice Emitted when the ownership is transfered.
  event OwnershipTransfered(address indexed from, address indexed to);

  /// @notice Contract's owner address.
  address public owner;

  /// @notice A simple modifier just to check whether the sender is the owner.
  modifier onlyOwner() {
    require(msg.sender == owner, "Auth: sender is not the owner");
    _;
  }

  /*   _                            */
  /*  (_ )                _         */
  /*   | |    _      __  (_)   ___  */
  /*   | |  /'_`\  /'_ `\| | /'___) */
  /*   | | ( (_) )( (_) || |( (___  */
  /*  (___)`\___/'`\__  |(_)`\____) */
  /*              ( )_) |           */
  /*               \___/'           */

  constructor() {
    _transferOwnership(msg.sender);
  }

  /// @notice Set the owner address to `owner_`.
  function transferOwnership(address owner_) public onlyOwner {
    require(owner != owner_, "Auth: transfering ownership to current owner");
    _transferOwnership(owner_);
  }

  /// @notice Set the owner address to `owner_`. Does not require anything
  function _transferOwnership(address owner_) internal {
    address oldOwner = owner;
    owner = owner_;

    emit OwnershipTransfered(oldOwner, owner_);
  }
}


// File @openzeppelin/contracts/utils/[email protected]

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

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `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 @openzeppelin/contracts/utils/introspection/[email protected]

// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

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);
}


// File @openzeppelin/contracts/token/ERC721/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

/**
 * @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 @openzeppelin/contracts/token/ERC1155/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}


// File contracts/Yeee.sol

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

contract YeeDontDoNFTs is Auth, ERC721 {
  using Strings for uint256;

  /// @notice Max supply.
  uint256 public constant SUPPLY_MAX = 1000;
  /// @notice Max amount per claim.
  uint256 public constant SUPPLY_PER_TX = 3;

  /// @notice 0 = CLOSED, 1 = WHITELIST, 2 = PUBLIC.
  uint256 public saleState;

  /// @notice OpenSea proxy registry.
  address public opensea = 0xa5409ec958C83C3f309868babACA7c86DCB077c1;
  /// @notice LooksRare marketplace transfer manager.
  address public looksrare = 0xf42aa99F011A1fA7CDA90E5E98b277E306BcA83e;
  /// @notice Check if marketplaces pre-approve is enabled.
  bool public marketplacesApproved = true;

  /// @notice Unrevelead URI.
  string public unrevealedURI;
  /// @notice Metadata base URI.
  string public baseURI;
  /// @notice Metadata base file extension.
  string public baseExtension;

  constructor(string memory newUnrevealedURI) ERC721("YeeDontDoNFTs", "YEE") {
    unrevealedURI = newUnrevealedURI;
  }

  /// @notice Claim one or more tokens.
  function mint(uint256 amount) external payable {
    uint256 supply = totalSupply;
    require(supply + amount <= SUPPLY_MAX, "Max supply exceeded");
    if (msg.sender != owner) {
      require(saleState == 1, "Public sale is not open");
      require(amount > 0 && amount <= SUPPLY_PER_TX, "Invalid claim amount");
      if (supply <= 1000) require(msg.value == 0, "Invalid ether amount");
      else require(msg.value == 0.00 ether, "Invalid ether amount");
    }

    for (uint256 i = 0; i < amount; i++) _safeMint(msg.sender, supply++);
  }

  /// @notice See {IERC721-tokenURI}.
  function tokenURI(uint256 id) public view override returns (string memory) {
    require(_exists(id), "ERC721Metadata: query for nonexisting token");

    if (bytes(unrevealedURI).length > 0) return unrevealedURI;
    return string(abi.encodePacked(baseURI, id.toString(), baseExtension));
  }

  /// @notice Set baseURI to `newBaseURI`.
  function setBaseURI(string memory newBaseURI, string memory newBaseExtension) external onlyOwner {
    baseURI = newBaseURI;
    baseExtension = newBaseExtension;
    delete unrevealedURI;
  }

  /// @notice Set unrevealedURI to `newUnrevealedURI`.
  function setUnrevealedURI(string memory newUnrevealedURI) external onlyOwner {
    unrevealedURI = newUnrevealedURI;
    
  }

  /// @notice Set saleState to `newSaleState`.
  function setSaleState(uint256 newSaleState) external onlyOwner {
    saleState = newSaleState;
  }

  /// @notice Set opensea to `newOpensea`.
  function setOpensea(address newOpensea) external onlyOwner {
    opensea = newOpensea;
  }

  /// @notice Set looksrare to `newLooksrare`.
  function setLooksrare(address newLooksrare) external onlyOwner {
    looksrare = newLooksrare;
  }

  /// @notice Toggle pre-approve feature state for sender.
  function toggleMarketplacesApproved() external onlyOwner {
    marketplacesApproved = !marketplacesApproved;
  }

  /// @notice Withdraw `value` of ether to the sender.
  function withdraw(address payable to, uint256 amount) external onlyOwner {
    to.transfer(amount);
  }

  /// @notice Withdraw `value` of `token` to the sender.
  function withdrawERC20(IERC20 token, uint256 value) external onlyOwner {
    token.transfer(msg.sender, value);
  }

  /// @notice Withdraw `id` of `token` to the sender.
  function withdrawERC721(IERC721 token, uint256 id) external onlyOwner {
    token.safeTransferFrom(address(this), msg.sender, id);
  }

  /// @notice Withdraw `id` with `value` from `token` to the sender.
  function withdrawERC1155(
    IERC1155 token,
    uint256 id,
    uint256 value
  ) external onlyOwner {
    token.safeTransferFrom(address(this), msg.sender, id, value, "");
  }

  /// @dev Modified for opensea and looksrare pre-approve so users can make truly gasless sales.
  function isApprovedForAll(address owner, address operator) public view override returns (bool) {
    if (!marketplacesApproved) return super.isApprovedForAll(owner, operator);

    return
      operator == address(ProxyRegistry(opensea).proxies(owner)) ||
      operator == looksrare ||
      super.isApprovedForAll(owner, operator);
  }
}

contract OwnableDelegateProxy {}

contract ProxyRegistry {
  mapping(address => OwnableDelegateProxy) public proxies;
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SUPPLY_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPPLY_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"looksrare","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketplacesApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opensea","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"},{"internalType":"string","name":"newBaseExtension","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLooksrare","type":"address"}],"name":"setLooksrare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOpensea","type":"address"}],"name":"setOpensea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSaleState","type":"uint256"}],"name":"setSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleMarketplacesApproved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","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":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unrevealedURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC1155","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600980546001600160a01b03191673a5409ec958c83c3f309868babaca7c86dcb077c1179055600a80547401f42aa99f011a1fa7cda90e5e98b277e306bca83e6001600160a81b03199091161790553480156200006057600080fd5b5060405162002d3f38038062002d3f83398101604081905262000083916200022d565b6040518060400160405280600d81526020016c596565446f6e74446f4e46547360981b8152506040518060400160405280600381526020016259454560e81b815250620000d6336200012160201b60201c565b8151620000eb90600190602085019062000171565b5080516200010190600290602084019062000171565b50508151620001199150600b90602084019062000171565b505062000346565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b8280546200017f9062000309565b90600052602060002090601f016020900481019282620001a35760008555620001ee565b82601f10620001be57805160ff1916838001178555620001ee565b82800160010185558215620001ee579182015b82811115620001ee578251825591602001919060010190620001d1565b50620001fc92915062000200565b5090565b5b80821115620001fc576000815560010162000201565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200024157600080fd5b82516001600160401b03808211156200025957600080fd5b818501915085601f8301126200026e57600080fd5b81518181111562000283576200028362000217565b604051601f8201601f19908116603f01168101908382118183101715620002ae57620002ae62000217565b816040528281528886848701011115620002c757600080fd5b600093505b82841015620002eb5784840186015181850187015292850192620002cc565b82841115620002fd5760008684830101525b98975050505050505050565b600181811c908216806200031e57607f821691505b602082108114156200034057634e487b7160e01b600052602260045260246000fd5b50919050565b6129e980620003566000396000f3fe6080604052600436106102a05760003560e01c80636c0360eb1161016e578063b776c8a6116100cb578063e985e9c51161007f578063f3e414f811610064578063f3e414f814610705578063f3fef3a314610725578063fe2c7fee1461074557600080fd5b8063e985e9c5146106c5578063f2fde38b146106e557600080fd5b8063c6682862116100b0578063c66828621461067b578063c87b56dd14610690578063de562a53146106b057600080fd5b8063b776c8a61461063b578063b88d4fde1461065b57600080fd5b806395d89b4111610122578063a1db978211610107578063a1db9782146105db578063a22cb465146105fb578063a8e90b571461061b57600080fd5b806395d89b41146105b3578063a0712d68146105c857600080fd5b806370a082311161015357806370a082311461055d5780638da5cb5b1461057d578063958f6ed61461059d57600080fd5b80636c0360eb146105335780637035bf181461054857600080fd5b80632f745c591161021c5780634f6ccce7116101d0578063603f4d52116101b5578063603f4d52146104dd5780636352211e146104f35780636790a9de1461051357600080fd5b80634f6ccce71461049d578063511ed382146104bd57600080fd5b806339ead7201161020157806339ead7201461043057806342842e0e14610450578063438b63001461047057600080fd5b80632f745c59146103fb57806333c12e171461041b57600080fd5b8063084c40881161027357806318160ddd1161025857806318160ddd146103975780631e8858fb146103bb57806323b872dd146103db57600080fd5b8063084c408814610355578063095ea7b31461037757600080fd5b806301ffc9a7146102a5578063026ae102146102da57806306fdde03146102fb578063081812fc1461031d575b600080fd5b3480156102b157600080fd5b506102c56102c0366004612351565b610765565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b50600a546102c590600160a01b900460ff1681565b34801561030757600080fd5b50610310610836565b6040516102d191906123c6565b34801561032957600080fd5b5061033d6103383660046123d9565b6108c4565b6040516001600160a01b0390911681526020016102d1565b34801561036157600080fd5b506103756103703660046123d9565b610948565b005b34801561038357600080fd5b50610375610392366004612407565b610995565b3480156103a357600080fd5b506103ad60035481565b6040519081526020016102d1565b3480156103c757600080fd5b506103756103d6366004612433565b610ae5565b3480156103e757600080fd5b506103756103f6366004612450565b610b4f565b34801561040757600080fd5b506103ad610416366004612407565b610bd6565b34801561042757600080fd5b50610375610d03565b34801561043c57600080fd5b5061037561044b366004612491565b610d87565b34801561045c57600080fd5b5061037561046b366004612450565b610e68565b34801561047c57600080fd5b5061049061048b366004612433565b610e83565b6040516102d191906124c6565b3480156104a957600080fd5b506103ad6104b83660046123d9565b610f25565b3480156104c957600080fd5b5060095461033d906001600160a01b031681565b3480156104e957600080fd5b506103ad60085481565b3480156104ff57600080fd5b5061033d61050e3660046123d9565b610f8b565b34801561051f57600080fd5b5061037561052e3660046125b6565b61101f565b34801561053f57600080fd5b5061031061109f565b34801561055457600080fd5b506103106110ac565b34801561056957600080fd5b506103ad610578366004612433565b6110b9565b34801561058957600080fd5b5060005461033d906001600160a01b031681565b3480156105a957600080fd5b506103ad6103e881565b3480156105bf57600080fd5b50610310611153565b6103756105d63660046123d9565b611160565b3480156105e757600080fd5b506103756105f6366004612407565b61135b565b34801561060757600080fd5b50610375610616366004612628565b61142d565b34801561062757600080fd5b50600a5461033d906001600160a01b031681565b34801561064757600080fd5b50610375610656366004612433565b611438565b34801561066757600080fd5b50610375610676366004612661565b6114a2565b34801561068757600080fd5b50610310611530565b34801561069c57600080fd5b506103106106ab3660046123d9565b61153d565b3480156106bc57600080fd5b506103ad600381565b3480156106d157600080fd5b506102c56106e03660046126e1565b611698565b3480156106f157600080fd5b50610375610700366004612433565b6117c5565b34801561071157600080fd5b50610375610720366004612407565b61189d565b34801561073157600080fd5b50610375610740366004612407565b611968565b34801561075157600080fd5b5061037561076036600461270f565b6119e6565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806107c857507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806107fc57507f780e9d63000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b8061083057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6001805461084390612744565b80601f016020809104026020016040519081016040528092919081815260200182805461086f90612744565b80156108bc5780601f10610891576101008083540402835291602001916108bc565b820191906000526020600020905b81548152906001019060200180831161089f57829003601f168201915b505050505081565b60006108cf82611a41565b61092c5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000546001600160a01b031633146109905760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600855565b60006109a082610f8b565b9050806001600160a01b0316836001600160a01b03161415610a2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610923565b336001600160a01b0382161480610a6457506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b610ad65760405162461bcd60e51b815260206004820152603060248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206e6f722060448201527f617070726f76656420666f7220616c6c000000000000000000000000000000006064820152608401610923565b610ae08383611a8b565b505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b593382611b0e565b610bcb5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b610ae0838383611bdf565b6000610be1836110b9565b8210610c3d5760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000805b600454811015610cac5760048181548110610c5e57610c5e61277f565b6000918252602090912001546001600160a01b0386811691161415610c9c5783821415610c8e5791506108309050565b81610c98816127ab565b9250505b610ca5816127ab565b9050610c41565b5060405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018390526064810182905260a06084820152600060a48201526001600160a01b0384169063f242432a9060c401600060405180830381600087803b158015610e4b57600080fd5b505af1158015610e5f573d6000803e3d6000fd5b50505050505050565b610ae0838383604051806020016040528060008152506114a2565b60606000610e90836110b9565b905060008167ffffffffffffffff811115610ead57610ead61250a565b604051908082528060200260200182016040528015610ed6578160200160208202803683370190505b50905060005b82811015610f1d57610eee8582610bd6565b828281518110610f0057610f0061277f565b602090810291909101015280610f15816127ab565b915050610edc565b509392505050565b6004546000908210610f875760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b5090565b6000610f9682611a41565b610fee5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b6000600483815481106110035761100361277f565b6000918252602090912001546001600160a01b03169392505050565b6000546001600160a01b031633146110675760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b815161107a90600c906020850190612270565b50805161108e90600d906020840190612270565b5061109b600b60006122f0565b5050565b600c805461084390612744565b600b805461084390612744565b60006001600160a01b0382166111375760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610923565b506001600160a01b031660009081526005602052604090205490565b6002805461084390612744565b6003546103e861117083836127c6565b11156111be5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c79206578636565646564000000000000000000000000006044820152606401610923565b6000546001600160a01b03163314611329576008546001146112225760405162461bcd60e51b815260206004820152601760248201527f5075626c69632073616c65206973206e6f74206f70656e0000000000000000006044820152606401610923565b600082118015611233575060038211155b61127f5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420636c61696d20616d6f756e740000000000000000000000006044820152606401610923565b6103e881116112db5734156112d65760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b611329565b34156113295760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b60005b82811015610ae0576113493383611342816127ab565b9450611d20565b80611353816127ab565b91505061132c565b6000546001600160a01b031633146113a35760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611409573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae091906127de565b61109b338383611d3a565b6000546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6114ac3383611b0e565b61151e5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b61152a84848484611e09565b50505050565b600d805461084390612744565b606061154882611a41565b6115ba5760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20717565727920666f72206e6f6e65786960448201527f7374696e6720746f6b656e0000000000000000000000000000000000000000006064820152608401610923565b6000600b80546115c990612744565b9050111561166357600b80546115de90612744565b80601f016020809104026020016040519081016040528092919081815260200182805461160a90612744565b80156116575780601f1061162c57610100808354040283529160200191611657565b820191906000526020600020905b81548152906001019060200180831161163a57829003601f168201915b50505050509050919050565b600c61166e83611e20565b600d60405160200161168293929190612895565b6040516020818303038152906040529050919050565b600a54600090600160a01b900460ff166116db57506001600160a01b0382811660009081526007602090815260408083209385168352929052205460ff16610830565b6009546040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063c455279190602401602060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176291906128c8565b6001600160a01b0316826001600160a01b0316148061178e5750600a546001600160a01b038381169116145b806117be57506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b6000546001600160a01b0316331461180d5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6000546001600160a01b03828116911614156118915760405162461bcd60e51b815260206004820152602c60248201527f417574683a207472616e73666572696e67206f776e65727368697020746f206360448201527f757272656e74206f776e657200000000000000000000000000000000000000006064820152608401610923565b61189a81611f52565b50565b6000546001600160a01b031633146118e55760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018290526001600160a01b038316906342842e0e90606401600060405180830381600087803b15801561194c57600080fd5b505af1158015611960573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119b05760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ae0573d6000803e3d6000fd5b6000546001600160a01b03163314611a2e5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b805161109b90600b906020840190612270565b60045460009082108015610830575060006001600160a01b031660048381548110611a6e57611a6e61277f565b6000918252602090912001546001600160a01b0316141592915050565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155600480548392919083908110611acd57611acd61277f565b60009182526020822001546040516001600160a01b03909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000611b1982611a41565b611b715760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b600060048381548110611b8657611b8661277f565b6000918252602090912001546001600160a01b0390811691508416811480611bc75750836001600160a01b0316611bbc846108c4565b6001600160a01b0316145b80611bd75750611bd78185611698565b949350505050565b826001600160a01b031660048281548110611bfc57611bfc61277f565b6000918252602090912001546001600160a01b031614611c845760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610923565b611c8f600082611a8b565b8160048281548110611ca357611ca361277f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558583168083526005909152604080832080546000190190559285168083528383208054600101905592518493927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109b828260405180602001604052806000815250611fa2565b816001600160a01b0316836001600160a01b03161415611d9c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610923565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e14848484611bdf565b61152a84848484611fb5565b606081611e6057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611e8a5780611e74816127ab565b9150611e839050600a836128fb565b9150611e64565b60008167ffffffffffffffff811115611ea557611ea561250a565b6040519080825280601f01601f191660200182016040528015611ecf576020820181803683370190505b5090505b8415611bd757611ee460018361290f565b9150611ef1600a86612926565b611efc9060306127c6565b60f81b818381518110611f1157611f1161277f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f4b600a866128fb565b9450611ed3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b611fac838361216f565b610ae060008484845b6001600160a01b0383163b1561152a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611ff790339088908790879060040161293a565b6020604051808303816000875af1925050508015612032575060408051601f3d908101601f1916820190925261202f91810190612976565b60015b6120e2573d808015612060576040519150601f19603f3d011682016040523d82523d6000602084013e612065565b606091505b5080516120da5760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b805181602001fd5b630a85bd0160e11b6001600160e01b03198216146121685760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b5050505050565b61217881611a41565b156121c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610923565b6004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b038516179055600380549161221d836127ab565b90915550506001600160a01b0382166000818152600560205260408082208054600101905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461227c90612744565b90600052602060002090601f01602090048101928261229e57600085556122e4565b82601f106122b757805160ff19168380011785556122e4565b828001600101855582156122e4579182015b828111156122e45782518255916020019190600101906122c9565b50610f87929150612326565b5080546122fc90612744565b6000825580601f1061230c575050565b601f01602090049060005260206000209081019061189a91905b5b80821115610f875760008155600101612327565b6001600160e01b03198116811461189a57600080fd5b60006020828403121561236357600080fd5b81356117be8161233b565b60005b83811015612389578181015183820152602001612371565b8381111561152a5750506000910152565b600081518084526123b281602086016020860161236e565b601f01601f19169290920160200192915050565b6020815260006117be602083018461239a565b6000602082840312156123eb57600080fd5b5035919050565b6001600160a01b038116811461189a57600080fd5b6000806040838503121561241a57600080fd5b8235612425816123f2565b946020939093013593505050565b60006020828403121561244557600080fd5b81356117be816123f2565b60008060006060848603121561246557600080fd5b8335612470816123f2565b92506020840135612480816123f2565b929592945050506040919091013590565b6000806000606084860312156124a657600080fd5b83356124b1816123f2565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156124fe578351835292840192918401916001016124e2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561253b5761253b61250a565b604051601f8501601f19908116603f011681019082821181831017156125635761256361250a565b8160405280935085815286868601111561257c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126125a757600080fd5b6117be83833560208501612520565b600080604083850312156125c957600080fd5b823567ffffffffffffffff808211156125e157600080fd5b6125ed86838701612596565b9350602085013591508082111561260357600080fd5b5061261085828601612596565b9150509250929050565b801515811461189a57600080fd5b6000806040838503121561263b57600080fd5b8235612646816123f2565b915060208301356126568161261a565b809150509250929050565b6000806000806080858703121561267757600080fd5b8435612682816123f2565b93506020850135612692816123f2565b925060408501359150606085013567ffffffffffffffff8111156126b557600080fd5b8501601f810187136126c657600080fd5b6126d587823560208401612520565b91505092959194509250565b600080604083850312156126f457600080fd5b82356126ff816123f2565b91506020830135612656816123f2565b60006020828403121561272157600080fd5b813567ffffffffffffffff81111561273857600080fd5b611bd784828501612596565b600181811c9082168061275857607f821691505b6020821081141561277957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127bf576127bf612795565b5060010190565b600082198211156127d9576127d9612795565b500190565b6000602082840312156127f057600080fd5b81516117be8161261a565b8054600090600181811c908083168061281557607f831692505b602080841082141561283757634e487b7160e01b600052602260045260246000fd5b81801561284b576001811461285c57612889565b60ff19861689528489019650612889565b60008881526020902060005b868110156128815781548b820152908501908301612868565b505084890196505b50505050505092915050565b60006128a182866127fb565b84516128b181836020890161236e565b6128bd818301866127fb565b979650505050505050565b6000602082840312156128da57600080fd5b81516117be816123f2565b634e487b7160e01b600052601260045260246000fd5b60008261290a5761290a6128e5565b500490565b60008282101561292157612921612795565b500390565b600082612935576129356128e5565b500690565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261296c608083018461239a565b9695505050505050565b60006020828403121561298857600080fd5b81516117be8161233b56fe417574683a2073656e646572206973206e6f7420746865206f776e6572000000a2646970667358221220817ccf35d20afffcd42f08aa0b2f6cd6c155ef1360b555ce32d523b667b095d864736f6c634300080b003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d53514a746d3251685868646b64726759316f484865783153437863396b75514b64416f7657413265616937722f00000000000000000000

Deployed Bytecode

0x6080604052600436106102a05760003560e01c80636c0360eb1161016e578063b776c8a6116100cb578063e985e9c51161007f578063f3e414f811610064578063f3e414f814610705578063f3fef3a314610725578063fe2c7fee1461074557600080fd5b8063e985e9c5146106c5578063f2fde38b146106e557600080fd5b8063c6682862116100b0578063c66828621461067b578063c87b56dd14610690578063de562a53146106b057600080fd5b8063b776c8a61461063b578063b88d4fde1461065b57600080fd5b806395d89b4111610122578063a1db978211610107578063a1db9782146105db578063a22cb465146105fb578063a8e90b571461061b57600080fd5b806395d89b41146105b3578063a0712d68146105c857600080fd5b806370a082311161015357806370a082311461055d5780638da5cb5b1461057d578063958f6ed61461059d57600080fd5b80636c0360eb146105335780637035bf181461054857600080fd5b80632f745c591161021c5780634f6ccce7116101d0578063603f4d52116101b5578063603f4d52146104dd5780636352211e146104f35780636790a9de1461051357600080fd5b80634f6ccce71461049d578063511ed382146104bd57600080fd5b806339ead7201161020157806339ead7201461043057806342842e0e14610450578063438b63001461047057600080fd5b80632f745c59146103fb57806333c12e171461041b57600080fd5b8063084c40881161027357806318160ddd1161025857806318160ddd146103975780631e8858fb146103bb57806323b872dd146103db57600080fd5b8063084c408814610355578063095ea7b31461037757600080fd5b806301ffc9a7146102a5578063026ae102146102da57806306fdde03146102fb578063081812fc1461031d575b600080fd5b3480156102b157600080fd5b506102c56102c0366004612351565b610765565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b50600a546102c590600160a01b900460ff1681565b34801561030757600080fd5b50610310610836565b6040516102d191906123c6565b34801561032957600080fd5b5061033d6103383660046123d9565b6108c4565b6040516001600160a01b0390911681526020016102d1565b34801561036157600080fd5b506103756103703660046123d9565b610948565b005b34801561038357600080fd5b50610375610392366004612407565b610995565b3480156103a357600080fd5b506103ad60035481565b6040519081526020016102d1565b3480156103c757600080fd5b506103756103d6366004612433565b610ae5565b3480156103e757600080fd5b506103756103f6366004612450565b610b4f565b34801561040757600080fd5b506103ad610416366004612407565b610bd6565b34801561042757600080fd5b50610375610d03565b34801561043c57600080fd5b5061037561044b366004612491565b610d87565b34801561045c57600080fd5b5061037561046b366004612450565b610e68565b34801561047c57600080fd5b5061049061048b366004612433565b610e83565b6040516102d191906124c6565b3480156104a957600080fd5b506103ad6104b83660046123d9565b610f25565b3480156104c957600080fd5b5060095461033d906001600160a01b031681565b3480156104e957600080fd5b506103ad60085481565b3480156104ff57600080fd5b5061033d61050e3660046123d9565b610f8b565b34801561051f57600080fd5b5061037561052e3660046125b6565b61101f565b34801561053f57600080fd5b5061031061109f565b34801561055457600080fd5b506103106110ac565b34801561056957600080fd5b506103ad610578366004612433565b6110b9565b34801561058957600080fd5b5060005461033d906001600160a01b031681565b3480156105a957600080fd5b506103ad6103e881565b3480156105bf57600080fd5b50610310611153565b6103756105d63660046123d9565b611160565b3480156105e757600080fd5b506103756105f6366004612407565b61135b565b34801561060757600080fd5b50610375610616366004612628565b61142d565b34801561062757600080fd5b50600a5461033d906001600160a01b031681565b34801561064757600080fd5b50610375610656366004612433565b611438565b34801561066757600080fd5b50610375610676366004612661565b6114a2565b34801561068757600080fd5b50610310611530565b34801561069c57600080fd5b506103106106ab3660046123d9565b61153d565b3480156106bc57600080fd5b506103ad600381565b3480156106d157600080fd5b506102c56106e03660046126e1565b611698565b3480156106f157600080fd5b50610375610700366004612433565b6117c5565b34801561071157600080fd5b50610375610720366004612407565b61189d565b34801561073157600080fd5b50610375610740366004612407565b611968565b34801561075157600080fd5b5061037561076036600461270f565b6119e6565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806107c857507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806107fc57507f780e9d63000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b8061083057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6001805461084390612744565b80601f016020809104026020016040519081016040528092919081815260200182805461086f90612744565b80156108bc5780601f10610891576101008083540402835291602001916108bc565b820191906000526020600020905b81548152906001019060200180831161089f57829003601f168201915b505050505081565b60006108cf82611a41565b61092c5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000546001600160a01b031633146109905760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600855565b60006109a082610f8b565b9050806001600160a01b0316836001600160a01b03161415610a2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610923565b336001600160a01b0382161480610a6457506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b610ad65760405162461bcd60e51b815260206004820152603060248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206e6f722060448201527f617070726f76656420666f7220616c6c000000000000000000000000000000006064820152608401610923565b610ae08383611a8b565b505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b593382611b0e565b610bcb5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b610ae0838383611bdf565b6000610be1836110b9565b8210610c3d5760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000805b600454811015610cac5760048181548110610c5e57610c5e61277f565b6000918252602090912001546001600160a01b0386811691161415610c9c5783821415610c8e5791506108309050565b81610c98816127ab565b9250505b610ca5816127ab565b9050610c41565b5060405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018390526064810182905260a06084820152600060a48201526001600160a01b0384169063f242432a9060c401600060405180830381600087803b158015610e4b57600080fd5b505af1158015610e5f573d6000803e3d6000fd5b50505050505050565b610ae0838383604051806020016040528060008152506114a2565b60606000610e90836110b9565b905060008167ffffffffffffffff811115610ead57610ead61250a565b604051908082528060200260200182016040528015610ed6578160200160208202803683370190505b50905060005b82811015610f1d57610eee8582610bd6565b828281518110610f0057610f0061277f565b602090810291909101015280610f15816127ab565b915050610edc565b509392505050565b6004546000908210610f875760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b5090565b6000610f9682611a41565b610fee5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b6000600483815481106110035761100361277f565b6000918252602090912001546001600160a01b03169392505050565b6000546001600160a01b031633146110675760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b815161107a90600c906020850190612270565b50805161108e90600d906020840190612270565b5061109b600b60006122f0565b5050565b600c805461084390612744565b600b805461084390612744565b60006001600160a01b0382166111375760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610923565b506001600160a01b031660009081526005602052604090205490565b6002805461084390612744565b6003546103e861117083836127c6565b11156111be5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c79206578636565646564000000000000000000000000006044820152606401610923565b6000546001600160a01b03163314611329576008546001146112225760405162461bcd60e51b815260206004820152601760248201527f5075626c69632073616c65206973206e6f74206f70656e0000000000000000006044820152606401610923565b600082118015611233575060038211155b61127f5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420636c61696d20616d6f756e740000000000000000000000006044820152606401610923565b6103e881116112db5734156112d65760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b611329565b34156113295760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b60005b82811015610ae0576113493383611342816127ab565b9450611d20565b80611353816127ab565b91505061132c565b6000546001600160a01b031633146113a35760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611409573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae091906127de565b61109b338383611d3a565b6000546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6114ac3383611b0e565b61151e5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b61152a84848484611e09565b50505050565b600d805461084390612744565b606061154882611a41565b6115ba5760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20717565727920666f72206e6f6e65786960448201527f7374696e6720746f6b656e0000000000000000000000000000000000000000006064820152608401610923565b6000600b80546115c990612744565b9050111561166357600b80546115de90612744565b80601f016020809104026020016040519081016040528092919081815260200182805461160a90612744565b80156116575780601f1061162c57610100808354040283529160200191611657565b820191906000526020600020905b81548152906001019060200180831161163a57829003601f168201915b50505050509050919050565b600c61166e83611e20565b600d60405160200161168293929190612895565b6040516020818303038152906040529050919050565b600a54600090600160a01b900460ff166116db57506001600160a01b0382811660009081526007602090815260408083209385168352929052205460ff16610830565b6009546040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063c455279190602401602060405180830381865afa15801561173e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176291906128c8565b6001600160a01b0316826001600160a01b0316148061178e5750600a546001600160a01b038381169116145b806117be57506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b6000546001600160a01b0316331461180d5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6000546001600160a01b03828116911614156118915760405162461bcd60e51b815260206004820152602c60248201527f417574683a207472616e73666572696e67206f776e65727368697020746f206360448201527f757272656e74206f776e657200000000000000000000000000000000000000006064820152608401610923565b61189a81611f52565b50565b6000546001600160a01b031633146118e55760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018290526001600160a01b038316906342842e0e90606401600060405180830381600087803b15801561194c57600080fd5b505af1158015611960573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119b05760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ae0573d6000803e3d6000fd5b6000546001600160a01b03163314611a2e5760405162461bcd60e51b815260206004820152601d60248201526000805160206129948339815191526044820152606401610923565b805161109b90600b906020840190612270565b60045460009082108015610830575060006001600160a01b031660048381548110611a6e57611a6e61277f565b6000918252602090912001546001600160a01b0316141592915050565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155600480548392919083908110611acd57611acd61277f565b60009182526020822001546040516001600160a01b03909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000611b1982611a41565b611b715760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b600060048381548110611b8657611b8661277f565b6000918252602090912001546001600160a01b0390811691508416811480611bc75750836001600160a01b0316611bbc846108c4565b6001600160a01b0316145b80611bd75750611bd78185611698565b949350505050565b826001600160a01b031660048281548110611bfc57611bfc61277f565b6000918252602090912001546001600160a01b031614611c845760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610923565b611c8f600082611a8b565b8160048281548110611ca357611ca361277f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558583168083526005909152604080832080546000190190559285168083528383208054600101905592518493927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109b828260405180602001604052806000815250611fa2565b816001600160a01b0316836001600160a01b03161415611d9c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610923565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e14848484611bdf565b61152a84848484611fb5565b606081611e6057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611e8a5780611e74816127ab565b9150611e839050600a836128fb565b9150611e64565b60008167ffffffffffffffff811115611ea557611ea561250a565b6040519080825280601f01601f191660200182016040528015611ecf576020820181803683370190505b5090505b8415611bd757611ee460018361290f565b9150611ef1600a86612926565b611efc9060306127c6565b60f81b818381518110611f1157611f1161277f565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f4b600a866128fb565b9450611ed3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b611fac838361216f565b610ae060008484845b6001600160a01b0383163b1561152a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611ff790339088908790879060040161293a565b6020604051808303816000875af1925050508015612032575060408051601f3d908101601f1916820190925261202f91810190612976565b60015b6120e2573d808015612060576040519150601f19603f3d011682016040523d82523d6000602084013e612065565b606091505b5080516120da5760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b805181602001fd5b630a85bd0160e11b6001600160e01b03198216146121685760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b5050505050565b61217881611a41565b156121c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610923565b6004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b038516179055600380549161221d836127ab565b90915550506001600160a01b0382166000818152600560205260408082208054600101905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461227c90612744565b90600052602060002090601f01602090048101928261229e57600085556122e4565b82601f106122b757805160ff19168380011785556122e4565b828001600101855582156122e4579182015b828111156122e45782518255916020019190600101906122c9565b50610f87929150612326565b5080546122fc90612744565b6000825580601f1061230c575050565b601f01602090049060005260206000209081019061189a91905b5b80821115610f875760008155600101612327565b6001600160e01b03198116811461189a57600080fd5b60006020828403121561236357600080fd5b81356117be8161233b565b60005b83811015612389578181015183820152602001612371565b8381111561152a5750506000910152565b600081518084526123b281602086016020860161236e565b601f01601f19169290920160200192915050565b6020815260006117be602083018461239a565b6000602082840312156123eb57600080fd5b5035919050565b6001600160a01b038116811461189a57600080fd5b6000806040838503121561241a57600080fd5b8235612425816123f2565b946020939093013593505050565b60006020828403121561244557600080fd5b81356117be816123f2565b60008060006060848603121561246557600080fd5b8335612470816123f2565b92506020840135612480816123f2565b929592945050506040919091013590565b6000806000606084860312156124a657600080fd5b83356124b1816123f2565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156124fe578351835292840192918401916001016124e2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561253b5761253b61250a565b604051601f8501601f19908116603f011681019082821181831017156125635761256361250a565b8160405280935085815286868601111561257c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126125a757600080fd5b6117be83833560208501612520565b600080604083850312156125c957600080fd5b823567ffffffffffffffff808211156125e157600080fd5b6125ed86838701612596565b9350602085013591508082111561260357600080fd5b5061261085828601612596565b9150509250929050565b801515811461189a57600080fd5b6000806040838503121561263b57600080fd5b8235612646816123f2565b915060208301356126568161261a565b809150509250929050565b6000806000806080858703121561267757600080fd5b8435612682816123f2565b93506020850135612692816123f2565b925060408501359150606085013567ffffffffffffffff8111156126b557600080fd5b8501601f810187136126c657600080fd5b6126d587823560208401612520565b91505092959194509250565b600080604083850312156126f457600080fd5b82356126ff816123f2565b91506020830135612656816123f2565b60006020828403121561272157600080fd5b813567ffffffffffffffff81111561273857600080fd5b611bd784828501612596565b600181811c9082168061275857607f821691505b6020821081141561277957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127bf576127bf612795565b5060010190565b600082198211156127d9576127d9612795565b500190565b6000602082840312156127f057600080fd5b81516117be8161261a565b8054600090600181811c908083168061281557607f831692505b602080841082141561283757634e487b7160e01b600052602260045260246000fd5b81801561284b576001811461285c57612889565b60ff19861689528489019650612889565b60008881526020902060005b868110156128815781548b820152908501908301612868565b505084890196505b50505050505092915050565b60006128a182866127fb565b84516128b181836020890161236e565b6128bd818301866127fb565b979650505050505050565b6000602082840312156128da57600080fd5b81516117be816123f2565b634e487b7160e01b600052601260045260246000fd5b60008261290a5761290a6128e5565b500490565b60008282101561292157612921612795565b500390565b600082612935576129356128e5565b500690565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261296c608083018461239a565b9695505050505050565b60006020828403121561298857600080fd5b81516117be8161233b56fe417574683a2073656e646572206973206e6f7420746865206f776e6572000000a2646970667358221220817ccf35d20afffcd42f08aa0b2f6cd6c155ef1360b555ce32d523b667b095d864736f6c634300080b0033

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d53514a746d3251685868646b64726759316f484865783153437863396b75514b64416f7657413265616937722f00000000000000000000

-----Decoded View---------------
Arg [0] : newUnrevealedURI (string): ipfs://QmSQJtm2QhXhdkdrgY1oHHex1SCxc9kuQKdAovWA2eai7r/

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [2] : 697066733a2f2f516d53514a746d3251685868646b64726759316f4848657831
Arg [3] : 53437863396b75514b64416f7657413265616937722f00000000000000000000


Deployed Bytecode Sourcemap

28737:4256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11466:305;;;;;;;;;;-1:-1:-1;11466:305:0;;;;;:::i;:::-;;:::i;:::-;;;611:14:1;;604:22;586:41;;574:2;559:18;11466:305:0;;;;;;;;29357:39;;;;;;;;;;-1:-1:-1;29357:39:0;;;;-1:-1:-1;;;29357:39:0;;;;;;1248:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3335:194::-;;;;;;;;;;-1:-1:-1;3335:194:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1738:55:1;;;1720:74;;1708:2;1693:18;3335:194:0;1574:226:1;31161:100:0;;;;;;;;;;-1:-1:-1;31161:100:0;;;;;:::i;:::-;;:::i;:::-;;2932:356;;;;;;;;;;-1:-1:-1;2932:356:0;;;;;:::i;:::-;;:::i;1393:26::-;;;;;;;;;;;;;;;;;;;2430:25:1;;;2418:2;2403:18;1393:26:0;2284:177:1;31457:100:0;;;;;;;;;;-1:-1:-1;31457:100:0;;;;;:::i;:::-;;:::i;3980:256::-;;;;;;;;;;-1:-1:-1;3980:256:0;;;;;:::i;:::-;;:::i;4863:430::-;;;;;;;;;;-1:-1:-1;4863:430:0;;;;;:::i;:::-;;:::i;31623:114::-;;;;;;;;;;;;;:::i;32358:184::-;;;;;;;;;;-1:-1:-1;32358:184:0;;;;;:::i;:::-;;:::i;4288:162::-;;;;;;;;;;-1:-1:-1;4288:162:0;;;;;:::i;:::-;;:::i;5604:301::-;;;;;;;;;;-1:-1:-1;5604:301:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5351:182::-;;;;;;;;;;-1:-1:-1;5351:182:0;;;;;:::i;:::-;;:::i;29095:67::-;;;;;;;;;;-1:-1:-1;29095:67:0;;;;-1:-1:-1;;;;;29095:67:0;;;29025:24;;;;;;;;;;;;;;;;2556:210;;;;;;;;;;-1:-1:-1;2556:210:0;;;;;:::i;:::-;;:::i;30721:196::-;;;;;;;;;;-1:-1:-1;30721:196:0;;;;;:::i;:::-;;:::i;29500:21::-;;;;;;;;;;;;;:::i;29434:27::-;;;;;;;;;;;;;:::i;2314:199::-;;;;;;;;;;-1:-1:-1;2314:199:0;;;;;:::i;:::-;;:::i;12568:20::-;;;;;;;;;;-1:-1:-1;12568:20:0;;;;-1:-1:-1;;;;;12568:20:0;;;28840:41;;;;;;;;;;;;28877:4;28840:41;;1315:20;;;;;;;;;;;;;:::i;29772:556::-;;;;;;:::i;:::-;;:::i;31968:117::-;;;;;;;;;;-1:-1:-1;31968:117:0;;;;;:::i;:::-;;:::i;3582:142::-;;;;;;;;;;-1:-1:-1;3582:142:0;;;;;:::i;:::-;;:::i;29222:69::-;;;;;;;;;;-1:-1:-1;29222:69:0;;;;-1:-1:-1;;;;;29222:69:0;;;31311:92;;;;;;;;;;-1:-1:-1;31311:92:0;;;;;:::i;:::-;;:::i;4502:296::-;;;;;;;;;;-1:-1:-1;4502:296:0;;;;;:::i;:::-;;:::i;29571:27::-;;;;;;;;;;;;;:::i;30373:298::-;;;;;;;;;;-1:-1:-1;30373:298:0;;;;;:::i;:::-;;:::i;28923:41::-;;;;;;;;;;;;28963:1;28923:41;;32646:344;;;;;;;;;;-1:-1:-1;32646:344:0;;;;;:::i;:::-;;:::i;13219:178::-;;;;;;;;;;-1:-1:-1;13219:178:0;;;;;:::i;:::-;;:::i;32146:136::-;;;;;;;;;;-1:-1:-1;32146:136:0;;;;;:::i;:::-;;:::i;31799:105::-;;;;;;;;;;-1:-1:-1;31799:105:0;;;;;:::i;:::-;;:::i;30979:128::-;;;;;;;;;;-1:-1:-1;30979:128:0;;;;;:::i;:::-;;:::i;11466:305::-;11543:4;11570:26;-1:-1:-1;;;;;;11570:26:0;;;;:73;;-1:-1:-1;11617:26:0;-1:-1:-1;;;;;;11617:26:0;;;11570:73;:128;;;-1:-1:-1;11672:26:0;-1:-1:-1;;;;;;11672:26:0;;;11570:128;:185;;;-1:-1:-1;11729:26:0;-1:-1:-1;;;;;;11729:26:0;;;11570:185;11556:199;11466:305;-1:-1:-1;;11466:305:0:o;1248:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3335:194::-;3403:7;3427:17;3435:8;3427:7;:17::i;:::-;3419:65;;;;-1:-1:-1;;;3419:65:0;;9495:2:1;3419:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;3419:65:0;;;;;;;;;-1:-1:-1;3498:25:0;;;;:15;:25;;;;;;-1:-1:-1;;;;;3498:25:0;;3335:194::o;31161:100::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31231:9:::1;:24:::0;31161:100::o;2932:356::-;3002:13;3018:17;3026:8;3018:7;:17::i;:::-;3002:33;;3057:5;-1:-1:-1;;;;;3050:12:0;:3;-1:-1:-1;;;;;3050:12:0;;;3042:58;;;;-1:-1:-1;;;3042:58:0;;10257:2:1;3042:58:0;;;10239:21:1;10296:2;10276:18;;;10269:30;10335:34;10315:18;;;10308:62;10406:3;10386:18;;;10379:31;10427:19;;3042:58:0;10055:397:1;3042:58:0;3125:10;-1:-1:-1;;;;;3125:19:0;;;;:59;;-1:-1:-1;;;;;;3148:24:0;;;;;;:17;:24;;;;;;;;3173:10;3148:36;;;;;;;;;;3125:59;3109:141;;;;-1:-1:-1;;;3109:141:0;;10659:2:1;3109:141:0;;;10641:21:1;10698:2;10678:18;;;10671:30;10737:34;10717:18;;;10710:62;10808:18;10788;;;10781:46;10844:19;;3109:141:0;10457:412:1;3109:141:0;3259:23;3268:3;3273:8;3259;:23::i;:::-;2995:293;2932:356;;:::o;31457:100::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31527:9:::1;:24:::0;;-1:-1:-1;;;;;;31527:24:0::1;-1:-1:-1::0;;;;;31527:24:0;;;::::1;::::0;;;::::1;::::0;;31457:100::o;3980:256::-;4098:40;4117:10;4129:8;4098:18;:40::i;:::-;4090:102;;;;-1:-1:-1;;;4090:102:0;;11076:2:1;4090:102:0;;;11058:21:1;11115:2;11095:18;;;11088:30;11154:34;11134:18;;;11127:62;11225:19;11205:18;;;11198:47;11262:19;;4090:102:0;10874:413:1;4090:102:0;4199:31;4209:5;4216:3;4221:8;4199:9;:31::i;4863:430::-;4947:15;4988:19;4998:8;4988:9;:19::i;:::-;4979:6;:28;4971:78;;;;-1:-1:-1;;;4971:78:0;;11494:2:1;4971:78:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;4971:78:0;11292:401:1;4971:78:0;5056:13;5081:9;5076:158;5096:7;:14;5092:18;;5076:158;;;5142:7;5150:1;5142:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5130:22:0;;;5142:10;;5130:22;5126:101;;;5178:6;5169:5;:15;5165:52;;;5193:1;-1:-1:-1;5186:8:0;;-1:-1:-1;5186:8:0;5165:52;5210:7;;;;:::i;:::-;;;;5165:52;5112:3;;;:::i;:::-;;;5076:158;;;-1:-1:-1;5240:47:0;;-1:-1:-1;;;5240:47:0;;11494:2:1;5240:47:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;5240:47:0;11292:401:1;31623:114:0;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31711:20:::1;::::0;;31687:44;;::::1;-1:-1:-1::0;;;31711:20:0;;;::::1;;;31710:21;31687:44:::0;;::::1;;::::0;;31623:114::o;32358:184::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;32472:64:::1;::::0;;;;32503:4:::1;32472:64;::::0;::::1;12572:34:1::0;32510:10:0::1;12622:18:1::0;;;12615:43;12674:18;;;12667:34;;;12717:18;;;12710:34;;;12781:3;12760:19;;;12753:32;-1:-1:-1;12801:19:1;;;12794:30;-1:-1:-1;;;;;32472:22:0;::::1;::::0;::::1;::::0;12841:19:1;;32472:64:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32358:184:::0;;;:::o;4288:162::-;4402:42;4419:5;4426:3;4431:8;4402:42;;;;;;;;;;;;:16;:42::i;5604:301::-;5666:16;5691:15;5709:19;5719:8;5709:9;:19::i;:::-;5691:37;;5735:20;5772:7;5758:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5758:22:0;;5735:45;;5792:9;5787:96;5811:7;5807:1;:11;5787:96;;;5843:32;5863:8;5873:1;5843:19;:32::i;:::-;5834:3;5838:1;5834:6;;;;;;;;:::i;:::-;;;;;;;;;;:41;5820:3;;;;:::i;:::-;;;;5787:96;;;-1:-1:-1;5896:3:0;5604:301;-1:-1:-1;;;5604:301:0:o;5351:182::-;5451:7;:14;5418:7;;5442:23;;5434:73;;;;-1:-1:-1;;;5434:73:0;;11494:2:1;5434:73:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;5434:73:0;11292:401:1;5434:73:0;-1:-1:-1;5521:6:0;5351:182::o;2556:210::-;2620:7;2644:17;2652:8;2644:7;:17::i;:::-;2636:65;;;;-1:-1:-1;;;2636:65:0;;9495:2:1;2636:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;2636:65:0;9293:399:1;2636:65:0;2708:13;2724:7;2732:8;2724:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2724:17:0;;2556:210;-1:-1:-1;;;2556:210:0:o;30721:196::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;30825:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;30852:32:0;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;30891:20:0::1;30898:13;;30891:20;:::i;:::-;30721:196:::0;;:::o;29500:21::-;;;;;;;:::i;29434:27::-;;;;;;;:::i;2314:199::-;2380:7;-1:-1:-1;;;;;2404:22:0;;2396:77;;;;-1:-1:-1;;;2396:77:0;;13073:2:1;2396:77:0;;;13055:21:1;13112:2;13092:18;;;13085:30;13151:34;13131:18;;;13124:62;13222:12;13202:18;;;13195:40;13252:19;;2396:77:0;12871:406:1;2396:77:0;-1:-1:-1;;;;;;2487:20:0;;;;;:10;:20;;;;;;;2314:199::o;1315:20::-;;;;;;;:::i;29772:556::-;29843:11;;28877:4;29869:15;29878:6;29843:11;29869:15;:::i;:::-;:29;;29861:61;;;;-1:-1:-1;;;29861:61:0;;13617:2:1;29861:61:0;;;13599:21:1;13656:2;13636:18;;;13629:30;13695:21;13675:18;;;13668:49;13734:18;;29861:61:0;13415:343:1;29861:61:0;29947:5;;-1:-1:-1;;;;;29947:5:0;29933:10;:19;29929:317;;29971:9;;29984:1;29971:14;29963:50;;;;-1:-1:-1;;;29963:50:0;;13965:2:1;29963:50:0;;;13947:21:1;14004:2;13984:18;;;13977:30;14043:25;14023:18;;;14016:53;14086:18;;29963:50:0;13763:347:1;29963:50:0;30039:1;30030:6;:10;:37;;;;;28963:1;30044:6;:23;;30030:37;30022:70;;;;-1:-1:-1;;;30022:70:0;;14317:2:1;30022:70:0;;;14299:21:1;14356:2;14336:18;;;14329:30;14395:22;14375:18;;;14368:50;14435:18;;30022:70:0;14115:344:1;30022:70:0;30115:4;30105:6;:14;30101:137;;30129:9;:14;30121:47;;;;-1:-1:-1;;;30121:47:0;;14666:2:1;30121:47:0;;;14648:21:1;14705:2;14685:18;;;14678:30;14744:22;14724:18;;;14717:50;14784:18;;30121:47:0;14464:344:1;30121:47:0;30101:137;;;30190:9;:23;30182:56;;;;-1:-1:-1;;;30182:56:0;;14666:2:1;30182:56:0;;;14648:21:1;14705:2;14685:18;;;14678:30;14744:22;14724:18;;;14717:50;14784:18;;30182:56:0;14464:344:1;30182:56:0;30259:9;30254:68;30278:6;30274:1;:10;30254:68;;;30291:31;30301:10;30313:8;;;;:::i;:::-;;;30291:9;:31::i;:::-;30286:3;;;;:::i;:::-;;;;30254:68;;31968:117;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;32046:33:::1;::::0;;;;32061:10:::1;32046:33;::::0;::::1;14987:74:1::0;15077:18;;;15070:34;;;-1:-1:-1;;;;;32046:14:0;::::1;::::0;::::1;::::0;14960:18:1;;32046:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3582:142::-:0;3666:52;3685:10;3697:9;3708;3666:18;:52::i;31311:92::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31377:7:::1;:20:::0;;-1:-1:-1;;;;;;31377:20:0::1;-1:-1:-1::0;;;;;31377:20:0;;;::::1;::::0;;;::::1;::::0;;31311:92::o;4502:296::-;4649:40;4668:10;4680:8;4649:18;:40::i;:::-;4641:102;;;;-1:-1:-1;;;4641:102:0;;11076:2:1;4641:102:0;;;11058:21:1;11115:2;11095:18;;;11088:30;11154:34;11134:18;;;11127:62;11225:19;11205:18;;;11198:47;11262:19;;4641:102:0;10874:413:1;4641:102:0;4750:42;4764:5;4771:3;4776:8;4786:5;4750:13;:42::i;:::-;4502:296;;;;:::o;29571:27::-;;;;;;;:::i;30373:298::-;30433:13;30463:11;30471:2;30463:7;:11::i;:::-;30455:67;;;;-1:-1:-1;;;30455:67:0;;15567:2:1;30455:67:0;;;15549:21:1;15606:2;15586:18;;;15579:30;15645:34;15625:18;;;15618:62;15716:13;15696:18;;;15689:41;15747:19;;30455:67:0;15365:407:1;30455:67:0;30565:1;30541:13;30535:27;;;;;:::i;:::-;;;:31;30531:57;;;30575:13;30568:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30373:298;;;:::o;30531:57::-;30626:7;30635:13;:2;:11;:13::i;:::-;30650;30609:55;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;30595:70;;30373:298;;;:::o;32646:344::-;32753:20;;32735:4;;-1:-1:-1;;;32753:20:0;;;;32748:73;;-1:-1:-1;;;;;;3888:27:0;;;3868:4;3888:27;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;32775:46;;32748:73;32878:7;;32864:37;;;;;-1:-1:-1;;;;;1738:55:1;;;32864:37:0;;;1720:74:1;32878:7:0;;;;32864:30;;1693:18:1;;32864:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32844:58:0;:8;-1:-1:-1;;;;;32844:58:0;;:90;;;-1:-1:-1;32925:9:0;;-1:-1:-1;;;;;32913:21:0;;;32925:9;;32913:21;32844:90;:140;;;-1:-1:-1;;;;;;3888:27:0;;;3868:4;3888:27;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;32945:39;32830:154;32646:344;-1:-1:-1;;;32646:344:0:o;13219:178::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;13294:5:::1;::::0;-1:-1:-1;;;;;13294:15:0;;::::1;:5:::0;::::1;:15;;13286:72;;;::::0;-1:-1:-1;;;13286:72:0;;17886:2:1;13286:72:0::1;::::0;::::1;17868:21:1::0;17925:2;17905:18;;;17898:30;17964:34;17944:18;;;17937:62;18035:14;18015:18;;;18008:42;18067:19;;13286:72:0::1;17684:408:1::0;13286:72:0::1;13365:26;13384:6;13365:18;:26::i;:::-;13219:178:::0;:::o;32146:136::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;32223:53:::1;::::0;;;;32254:4:::1;32223:53;::::0;::::1;18360:34:1::0;32261:10:0::1;18410:18:1::0;;;18403:43;18462:18;;;18455:34;;;-1:-1:-1;;;;;32223:22:0;::::1;::::0;::::1;::::0;18272:18:1;;32223:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32146:136:::0;;:::o;31799:105::-;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31879:19:::1;::::0;-1:-1:-1;;;;;31879:11:0;::::1;::::0;:19;::::1;;;::::0;31891:6;;31879:19:::1;::::0;;;31891:6;31879:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;30979:128:::0;12725:5;;-1:-1:-1;;;;;12725:5:0;12711:10;:19;12703:61;;;;-1:-1:-1;;;12703:61:0;;9899:2:1;12703:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;12703:61:0;9697:353:1;12703:61:0;31063:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;6759:152::-:0;6856:7;:14;6825:4;;6845:25;;:60;;;;;6903:1;-1:-1:-1;;;;;6874:31:0;:7;6882:8;6874:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6874:17:0;:31;;6838:67;6759:152;-1:-1:-1;;6759:152:0:o;9485:164::-;9558:25;;;;:15;:25;;;;;:31;;-1:-1:-1;;;;;;9558:31:0;-1:-1:-1;;;;;9558:31:0;;;;;;;;9610:7;:17;;9558:25;;:31;9610:7;9558:25;;9610:17;;;;;;:::i;:::-;;;;;;;;;;9601:42;;-1:-1:-1;;;;;9610:17:0;;;;9601:42;;;9485:164;;:::o;6991:326::-;7086:4;7107:17;7115:8;7107:7;:17::i;:::-;7099:65;;;;-1:-1:-1;;;7099:65:0;;9495:2:1;7099:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;7099:65:0;9293:399:1;7099:65:0;7171:13;7187:7;7195:8;7187:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7187:17:0;;;;-1:-1:-1;7219:17:0;;;;;:54;;;7265:8;-1:-1:-1;;;;;7240:33:0;:21;7252:8;7240:11;:21::i;:::-;-1:-1:-1;;;;;7240:33:0;;7219:54;:91;;;;7277:33;7294:5;7301:8;7277:16;:33::i;:::-;7211:100;6991:326;-1:-1:-1;;;;6991:326:0:o;8890:535::-;9028:5;-1:-1:-1;;;;;9007:26:0;:7;9015:8;9007:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;9007:17:0;:26;8999:80;;;;-1:-1:-1;;;8999:80:0;;18702:2:1;8999:80:0;;;18684:21:1;18741:2;18721:18;;;18714:30;18780:34;18760:18;;;18753:62;18851:11;18831:18;;;18824:39;18880:19;;8999:80:0;18500:405:1;8999:80:0;9187:30;9204:1;9208:8;9187;:30::i;:::-;9246:3;9226:7;9234:8;9226:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;-1:-1:-1;;;;;;9226:23:0;-1:-1:-1;;;;;9226:23:0;;;;;;9275:17;;;;;;:10;:17;;;;;;;:19;;-1:-1:-1;;9275:19:0;;;9303:15;;;;;;;;;:17;;-1:-1:-1;9303:17:0;;;9341:30;;9362:8;;9303:15;9341:30;;;2995:293;2932:356;;:::o;7388:108::-;7462:28;7472:3;7477:8;7462:28;;;;;;;;;;;;:9;:28::i;9730:305::-;9875:9;-1:-1:-1;;;;;9863:21:0;:8;-1:-1:-1;;;;;9863:21:0;;;9855:59;;;;-1:-1:-1;;;9855:59:0;;19112:2:1;9855:59:0;;;19094:21:1;19151:2;19131:18;;;19124:30;19190:27;19170:18;;;19163:55;19235:18;;9855:59:0;18910:349:1;9855:59:0;-1:-1:-1;;;;;9921:27:0;;;;;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;;:50;;-1:-1:-1;;9921:50:0;;;;;;;;;;9983:46;;586:41:1;;;9983:46:0;;559:18:1;9983:46:0;;;;;;;9730:305;;;:::o;6470:233::-;6608:31;6618:5;6625:3;6630:8;6608:9;:31::i;:::-;6646:51;6669:5;6676:3;6681:8;6691:5;6646:22;:51::i;14019:723::-;14075:13;14296:10;14292:53;;-1:-1:-1;;14323:10:0;;;;;;;;;;;;;;;;;;14019:723::o;14292:53::-;14370:5;14355:12;14411:78;14418:9;;14411:78;;14444:8;;;;:::i;:::-;;-1:-1:-1;14467:10:0;;-1:-1:-1;14475:2:0;14467:10;;:::i;:::-;;;14411:78;;;14499:19;14531:6;14521:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14521:17:0;;14499:39;;14549:154;14556:10;;14549:154;;14583:11;14593:1;14583:11;;:::i;:::-;;-1:-1:-1;14652:10:0;14660:2;14652:5;:10;:::i;:::-;14639:24;;:2;:24;:::i;:::-;14626:39;;14609:6;14616;14609:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;14680:11:0;14689:2;14680:11;;:::i;:::-;;;14549:154;;13479:162;13539:16;13558:5;;-1:-1:-1;;;;;13570:14:0;;;-1:-1:-1;;;;;;13570:14:0;;;;;;13598:37;;13558:5;;;;;;;13598:37;;13539:16;13598:37;13532:109;13479:162;:::o;7678:203::-;7792:20;7798:3;7803:8;7792:5;:20::i;:::-;7819:56;7850:1;7854:3;7859:8;7869:5;10109:673;-1:-1:-1;;;;;10251:15:0;;;:19;10247:530;;10285:73;;-1:-1:-1;;;10285:73:0;;-1:-1:-1;;;;;10285:37:0;;;;;:73;;10323:10;;10335:5;;10342:8;;10352:5;;10285:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10285:73:0;;;;;;;;-1:-1:-1;;10285:73:0;;;;;;;;;;;;:::i;:::-;;;10281:489;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10543:13:0;;10539:222;;10576:68;;-1:-1:-1;;;10576:68:0;;20798:2:1;10576:68:0;;;20780:21:1;20837:2;20817:18;;;20810:30;20876:34;20856:18;;;20849:62;20947:28;20927:18;;;20920:56;20993:19;;10576:68:0;20596:422:1;10539:222:0;10729:6;10723:13;10714:6;10710:2;10706:15;10699:38;10281:489;-1:-1:-1;;;;;;;;;10404:22:0;;;10396:93;;;;-1:-1:-1;;;10396:93:0;;20798:2:1;10396:93:0;;;20780:21:1;20837:2;20817:18;;;20810:30;20876:34;20856:18;;;20849:62;20947:28;20927:18;;;20920:56;20993:19;;10396:93:0;20596:422:1;10396:93:0;10359:140;10109:673;;;;:::o;7946:389::-;8025:17;8033:8;8025:7;:17::i;:::-;8024:18;8016:59;;;;-1:-1:-1;;;8016:59:0;;21225:2:1;8016:59:0;;;21207:21:1;21264:2;21244:18;;;21237:30;21303;21283:18;;;21276:58;21351:18;;8016:59:0;21023:352:1;8016:59:0;8140:7;:17;;;;;;;-1:-1:-1;8140:17:0;;;;;;;-1:-1:-1;;;;;;8140:17:0;-1:-1:-1;;;;;8140:17:0;;;;;8164:11;:13;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8203:15:0;;;;;;:10;:15;;;;;;:17;;;;;;8241:35;8267:8;;8203:15;;8241:35;;8203:15;;8241:35;30721:196;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:177:1;-1:-1:-1;;;;;;92:5:1;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:1;868:16;;861:27;638:258::o;901:::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1141:2;1120:15;-1:-1:-1;;1116:29:1;1107:39;;;;1148:4;1103:50;;901:258;-1:-1:-1;;901:258:1:o;1164:220::-;1313:2;1302:9;1295:21;1276:4;1333:45;1374:2;1363:9;1359:18;1351:6;1333:45;:::i;1389:180::-;1448:6;1501:2;1489:9;1480:7;1476:23;1472:32;1469:52;;;1517:1;1514;1507:12;1469:52;-1:-1:-1;1540:23:1;;1389:180;-1:-1:-1;1389:180:1:o;1805:154::-;-1:-1:-1;;;;;1884:5:1;1880:54;1873:5;1870:65;1860:93;;1949:1;1946;1939:12;1964:315;2032:6;2040;2093:2;2081:9;2072:7;2068:23;2064:32;2061:52;;;2109:1;2106;2099:12;2061:52;2148:9;2135:23;2167:31;2192:5;2167:31;:::i;:::-;2217:5;2269:2;2254:18;;;;2241:32;;-1:-1:-1;;;1964:315:1:o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;2718:456::-;2795:6;2803;2811;2864:2;2852:9;2843:7;2839:23;2835:32;2832:52;;;2880:1;2877;2870:12;2832:52;2919:9;2906:23;2938:31;2963:5;2938:31;:::i;:::-;2988:5;-1:-1:-1;3045:2:1;3030:18;;3017:32;3058:33;3017:32;3058:33;:::i;:::-;2718:456;;3110:7;;-1:-1:-1;;;3164:2:1;3149:18;;;;3136:32;;2718:456::o;3179:400::-;3273:6;3281;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;3397:9;3384:23;3416:31;3441:5;3416:31;:::i;:::-;3466:5;3518:2;3503:18;;3490:32;;-1:-1:-1;3569:2:1;3554:18;;;3541:32;;3179:400;-1:-1:-1;;;3179:400:1:o;3584:632::-;3755:2;3807:21;;;3877:13;;3780:18;;;3899:22;;;3726:4;;3755:2;3978:15;;;;3952:2;3937:18;;;3726:4;4021:169;4035:6;4032:1;4029:13;4021:169;;;4096:13;;4084:26;;4165:15;;;;4130:12;;;;4057:1;4050:9;4021:169;;;-1:-1:-1;4207:3:1;;3584:632;-1:-1:-1;;;;;;3584:632:1:o;4221:184::-;-1:-1:-1;;;4270:1:1;4263:88;4370:4;4367:1;4360:15;4394:4;4391:1;4384:15;4410:632;4475:5;4505:18;4546:2;4538:6;4535:14;4532:40;;;4552:18;;:::i;:::-;4627:2;4621:9;4595:2;4681:15;;-1:-1:-1;;4677:24:1;;;4703:2;4673:33;4669:42;4657:55;;;4727:18;;;4747:22;;;4724:46;4721:72;;;4773:18;;:::i;:::-;4813:10;4809:2;4802:22;4842:6;4833:15;;4872:6;4864;4857:22;4912:3;4903:6;4898:3;4894:16;4891:25;4888:45;;;4929:1;4926;4919:12;4888:45;4979:6;4974:3;4967:4;4959:6;4955:17;4942:44;5034:1;5027:4;5018:6;5010;5006:19;5002:30;4995:41;;;;4410:632;;;;;:::o;5047:222::-;5090:5;5143:3;5136:4;5128:6;5124:17;5120:27;5110:55;;5161:1;5158;5151:12;5110:55;5183:80;5259:3;5250:6;5237:20;5230:4;5222:6;5218:17;5183:80;:::i;5274:543::-;5362:6;5370;5423:2;5411:9;5402:7;5398:23;5394:32;5391:52;;;5439:1;5436;5429:12;5391:52;5479:9;5466:23;5508:18;5549:2;5541:6;5538:14;5535:34;;;5565:1;5562;5555:12;5535:34;5588:50;5630:7;5621:6;5610:9;5606:22;5588:50;:::i;:::-;5578:60;;5691:2;5680:9;5676:18;5663:32;5647:48;;5720:2;5710:8;5707:16;5704:36;;;5736:1;5733;5726:12;5704:36;;5759:52;5803:7;5792:8;5781:9;5777:24;5759:52;:::i;:::-;5749:62;;;5274:543;;;;;:::o;6157:118::-;6243:5;6236:13;6229:21;6222:5;6219:32;6209:60;;6265:1;6262;6255:12;6280:382;6345:6;6353;6406:2;6394:9;6385:7;6381:23;6377:32;6374:52;;;6422:1;6419;6412:12;6374:52;6461:9;6448:23;6480:31;6505:5;6480:31;:::i;:::-;6530:5;-1:-1:-1;6587:2:1;6572:18;;6559:32;6600:30;6559:32;6600:30;:::i;:::-;6649:7;6639:17;;;6280:382;;;;;:::o;6667:795::-;6762:6;6770;6778;6786;6839:3;6827:9;6818:7;6814:23;6810:33;6807:53;;;6856:1;6853;6846:12;6807:53;6895:9;6882:23;6914:31;6939:5;6914:31;:::i;:::-;6964:5;-1:-1:-1;7021:2:1;7006:18;;6993:32;7034:33;6993:32;7034:33;:::i;:::-;7086:7;-1:-1:-1;7140:2:1;7125:18;;7112:32;;-1:-1:-1;7195:2:1;7180:18;;7167:32;7222:18;7211:30;;7208:50;;;7254:1;7251;7244:12;7208:50;7277:22;;7330:4;7322:13;;7318:27;-1:-1:-1;7308:55:1;;7359:1;7356;7349:12;7308:55;7382:74;7448:7;7443:2;7430:16;7425:2;7421;7417:11;7382:74;:::i;:::-;7372:84;;;6667:795;;;;;;;:::o;7467:388::-;7535:6;7543;7596:2;7584:9;7575:7;7571:23;7567:32;7564:52;;;7612:1;7609;7602:12;7564:52;7651:9;7638:23;7670:31;7695:5;7670:31;:::i;:::-;7720:5;-1:-1:-1;7777:2:1;7762:18;;7749:32;7790:33;7749:32;7790:33;:::i;8524:322::-;8593:6;8646:2;8634:9;8625:7;8621:23;8617:32;8614:52;;;8662:1;8659;8652:12;8614:52;8702:9;8689:23;8735:18;8727:6;8724:30;8721:50;;;8767:1;8764;8757:12;8721:50;8790;8832:7;8823:6;8812:9;8808:22;8790:50;:::i;8851:437::-;8930:1;8926:12;;;;8973;;;8994:61;;9048:4;9040:6;9036:17;9026:27;;8994:61;9101:2;9093:6;9090:14;9070:18;9067:38;9064:218;;;-1:-1:-1;;;9135:1:1;9128:88;9239:4;9236:1;9229:15;9267:4;9264:1;9257:15;9064:218;;8851:437;;;:::o;11698:184::-;-1:-1:-1;;;11747:1:1;11740:88;11847:4;11844:1;11837:15;11871:4;11868:1;11861:15;11887:184;-1:-1:-1;;;11936:1:1;11929:88;12036:4;12033:1;12026:15;12060:4;12057:1;12050:15;12076:135;12115:3;-1:-1:-1;;12136:17:1;;12133:43;;;12156:18;;:::i;:::-;-1:-1:-1;12203:1:1;12192:13;;12076:135::o;13282:128::-;13322:3;13353:1;13349:6;13346:1;13343:13;13340:39;;;13359:18;;:::i;:::-;-1:-1:-1;13395:9:1;;13282:128::o;15115:245::-;15182:6;15235:2;15223:9;15214:7;15210:23;15206:32;15203:52;;;15251:1;15248;15241:12;15203:52;15283:9;15277:16;15302:28;15324:5;15302:28;:::i;15903:1030::-;15988:12;;15953:3;;16043:1;16063:18;;;;16116;;;;16143:61;;16197:4;16189:6;16185:17;16175:27;;16143:61;16223:2;16271;16263:6;16260:14;16240:18;16237:38;16234:218;;;-1:-1:-1;;;16305:1:1;16298:88;16409:4;16406:1;16399:15;16437:4;16434:1;16427:15;16234:218;16468:18;16495:104;;;;16613:1;16608:319;;;;16461:466;;16495:104;-1:-1:-1;;16528:24:1;;16516:37;;16573:16;;;;-1:-1:-1;16495:104:1;;16608:319;15850:1;15843:14;;;15887:4;15874:18;;16702:1;16716:165;16730:6;16727:1;16724:13;16716:165;;;16808:14;;16795:11;;;16788:35;16851:16;;;;16745:10;;16716:165;;;16720:3;;16910:6;16905:3;16901:16;16894:23;;16461:466;;;;;;;15903:1030;;;;:::o;16938:456::-;17159:3;17187:38;17221:3;17213:6;17187:38;:::i;:::-;17254:6;17248:13;17270:52;17315:6;17311:2;17304:4;17296:6;17292:17;17270:52;:::i;:::-;17338:50;17380:6;17376:2;17372:15;17364:6;17338:50;:::i;:::-;17331:57;16938:456;-1:-1:-1;;;;;;;16938:456:1:o;17399:280::-;17498:6;17551:2;17539:9;17530:7;17526:23;17522:32;17519:52;;;17567:1;17564;17557:12;17519:52;17599:9;17593:16;17618:31;17643:5;17618:31;:::i;19264:184::-;-1:-1:-1;;;19313:1:1;19306:88;19413:4;19410:1;19403:15;19437:4;19434:1;19427:15;19453:120;19493:1;19519;19509:35;;19524:18;;:::i;:::-;-1:-1:-1;19558:9:1;;19453:120::o;19578:125::-;19618:4;19646:1;19643;19640:8;19637:34;;;19651:18;;:::i;:::-;-1:-1:-1;19688:9:1;;19578:125::o;19708:112::-;19740:1;19766;19756:35;;19771:18;;:::i;:::-;-1:-1:-1;19805:9:1;;19708:112::o;19825:512::-;20019:4;-1:-1:-1;;;;;20129:2:1;20121:6;20117:15;20106:9;20099:34;20181:2;20173:6;20169:15;20164:2;20153:9;20149:18;20142:43;;20221:6;20216:2;20205:9;20201:18;20194:34;20264:3;20259:2;20248:9;20244:18;20237:31;20285:46;20326:3;20315:9;20311:19;20303:6;20285:46;:::i;:::-;20277:54;19825:512;-1:-1:-1;;;;;;19825:512:1:o;20342:249::-;20411:6;20464:2;20452:9;20443:7;20439:23;20435:32;20432:52;;;20480:1;20477;20470:12;20432:52;20512:9;20506:16;20531:30;20555:5;20531:30;:::i

Swarm Source

ipfs://817ccf35d20afffcd42f08aa0b2f6cd6c155ef1360b555ce32d523b667b095d8

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.