ETH Price: $2,479.09 (+0.10%)

Token

ORIENTAL MYSTERY (OM)
 

Overview

Max Total Supply

20 OM

Holders

16

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
Null: 0x000...000
Balance
0 OM
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
OM

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 10 of 13: OM.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Ownable.sol";
import "./ReentrancyGuard.sol";
import "./ERC721A.sol";
import "./Strings.sol";
import "./Address.sol";
import "./Context.sol";
import "./ERC165.sol";
import "./IERC165.sol";
import "./IERC721.sol";
import "./IERC721Enumerable.sol";
import "./IERC721Metadata.sol";
import "./IERC721Receiver.sol";
interface ContractInterface {
    function ownerOf(uint256 tokenId) external payable returns(address);
    
}

contract OM is Ownable, ERC721A, ReentrancyGuard {
  mapping(address => bool) public mysteryList;
  mapping(address => bool) public publicMinted;
  uint256 publicMintTime;
  uint256 mysteryListMintTime;
  

  constructor(
    uint256 maxBatchSize_,
    uint256 collectionSize_

  ) ERC721A("ORIENTAL MYSTERY", "OM", maxBatchSize_, collectionSize_) {
    
  }
  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }
  
  function devMint(uint8 quantity) external onlyOwner {
     require(
       quantity % maxBatchSize == 0,
       "can only mint a multiple of the maxBatchSize"
     );
    uint256 numChunks = quantity / maxBatchSize;
    for (uint8 i = 0; i < numChunks; i++) {
      _safeMint(msg.sender, maxBatchSize);
    }
  }

  function publicMint()
    external
    callerIsUser
  { 
    require(publicMintTime < block.timestamp ,"not start "); 
    require(totalSupply() + 1 <= collectionSize, "reached max supply");
    require(publicMinted[msg.sender] == false,"can not mint again");
    publicMinted[msg.sender] = true;
     _safeMint(msg.sender, 1);
  }
  function mysteryListMint()
    external
    callerIsUser
  { 
    require(mysteryListMintTime < block.timestamp,"not start "); 
    require(totalSupply() + 1 <= collectionSize, "reached max supply");
    require(mysteryList[msg.sender] == true, "not eligible for mysterylist mint");
    mysteryList[msg.sender] = false;
    _safeMint(msg.sender, 1);
    
  }
  function setMysteryListMintTime(uint256 _time) public onlyOwner {
    mysteryListMintTime = _time;
  }

  function setPublicMintTime(uint256 _time) public onlyOwner {
    publicMintTime = _time;
  }
  
  function seedMysterylist(address[] memory addresses)
    external
    onlyOwner
  {  
    for (uint256 i = 0; i < addresses.length; i++) {
      mysteryList[addresses[i]] = true;
    }
  }
  // // metadata URI
  string private _baseTokenURI;

 
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
 
  function setBaseURI(string calldata baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }


  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }

  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
}

File 1 of 13: Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 13: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

File 3 of 13: ERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 4 of 13: ERC721A.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./IERC721Metadata.sol";
import "./IERC721Enumerable.sol";
import "./Address.sol";
import "./Context.sol";
import "./Strings.sol";
import "./ERC165.sol";
import "./Ownable.sol";
/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 * Assumes the number of issuable tokens (collection size) is capped and fits in a uint128.
 *
 * Does not support burning tokens to address(0).
 
 */

contract ERC721A is
  Context,
  ERC165,
  IERC721,
  IERC721Metadata,
  IERC721Enumerable,
  Ownable
{
  using Address for address;
  using Strings for uint256;

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
    
  }

  uint256 private currentIndex = 1;

  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize;
  mapping(uint256 => bool) isStake;
  address stakeAddress;
  // Token name
  string private _name;

  // Token symbol
  string private _symbol;
  //
  string private baseExtension = ".json";
  string private _revealUri;
  bool private _isReveal ;
  // Mapping from token ID to ownership details
  // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
  mapping(uint256 => TokenOwnership) private _ownerships;

  // Mapping owner address to address data
  mapping(address => AddressData) private _addressData;

  // Mapping from token ID to approved address
  mapping(uint256 => address) private _tokenApprovals;

  // Mapping from owner to operator approvals
  mapping(address => mapping(address => bool)) private _operatorApprovals;

  /**
   * @dev
   * `maxBatchSize` refers to how much a minter can mint at a time.
   * `collectionSize_` refers to how many tokens are in the collection.
   */
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 maxBatchSize_,
    uint256 collectionSize_
    // bool isBind_
  ) {
    require(
      collectionSize_ > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
    collectionSize = collectionSize_;
    
  }

  /**
   * @dev See {IERC721Enumerable-totalSupply}.
   */
  function totalSupply() public view override returns (uint256) {
    return currentIndex-1;
  }

  /**
   * @dev See {IERC721Enumerable-tokenByIndex}.
   */
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  }

  /**
   * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
   * This read function is O(collectionSize). If calling from a separate contract, be sure to test gas first.
   * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case.
   */
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index <= balanceOf(owner), "ERC721A: owner index out of bounds");
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 1;
    address currOwnershipAddr = address(0);
    for (uint256 i = 1; i <= numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert("ERC721A: unable to get token of owner by index");
  }

  /**
   * @dev See {IERC165-supportsInterface}.
   */
  function supportsInterface(bytes4 interfaceId)
    public
    view
    virtual
    override(ERC165, IERC165)
    returns (bool)
  {
    return
      interfaceId == type(IERC721).interfaceId ||
      interfaceId == type(IERC721Metadata).interfaceId ||
      interfaceId == type(IERC721Enumerable).interfaceId ||
      super.supportsInterface(interfaceId);
  }

  /**
   * @dev See {IERC721-balanceOf}.
   */
  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }
  function setPreRevealUri(string calldata revealUri) public onlyOwner{
    _revealUri = revealUri;

  }
  function reveal() public onlyOwner {
    _isReveal= !_isReveal; 
  }
  function _numberMinted(address owner) internal view returns (uint256) {
    require(
      owner != address(0),
      "ERC721A: number minted query for the zero address"
    );
    return uint256(_addressData[owner].numberMinted);
  }

  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }

    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }

    revert("ERC721A: unable to determine the owner of token");
  }

  /**
   * @dev See {IERC721-ownerOf}.
   */
  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  }

  /**
   * @dev See {IERC721Metadata-name}.
   */
  function name() public view virtual override returns (string memory) {
    return _name;
  }

  /**
   * @dev See {IERC721Metadata-symbol}.
   */
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  }

  
  /**
   * @dev See {IERC721Metadata-tokenURI}.
   */
  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    if(!_isReveal){
      return _revealUri;
    }else{
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    require(
      tokenId!=0,
      "ERC721Metadata: URI query for nonexistent token"
    );
    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString(),baseExtension))
        : "";}
  }


  /**
   * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
   * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
   * by default, can be overriden in child contracts.
   */
  function _baseURI() internal view virtual returns (string memory) {
    return "";
  }

  /**
   * @dev See {IERC721-approve}.
   */
  function approve(address to, uint256 tokenId) public override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");

    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: approve caller is not owner nor approved for all"
    );

    _approve(to, tokenId, owner);
  }

  /**
   * @dev See {IERC721-getApproved}.
   */
  function getApproved(uint256 tokenId) public view override returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  }

  /**
   * @dev See {IERC721-setApprovalForAll}.
   */
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: approve to caller");

    _operatorApprovals[_msgSender()][operator] = approved;
    emit ApprovalForAll(_msgSender(), operator, approved);
  }

  /**
   * @dev See {IERC721-isApprovedForAll}.
   */
  function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    override
    returns (bool)
  {
    return _operatorApprovals[owner][operator];
  }

  /**
   * @dev See {IERC721-transferFrom}.
   */
  function transferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    _transfer(from, to, tokenId);
  }
function airdrop(address user,uint256 number) external onlyOwner{
    require(totalSupply() + number <= collectionSize,"can not mint");
    require(
       number % maxBatchSize == 0,
       "can only mint a multiple of the maxBatchSize"
     );
    uint256 numChunks = number / maxBatchSize;
    for (uint8 i = 0; i < numChunks; i++) {
      _safeMint(user, maxBatchSize);
    }
  }
  /**
   * @dev See {IERC721-safeTransferFrom}.
   */
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, "");
  }

  /**
   * @dev See {IERC721-safeTransferFrom}.
   */
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      "ERC721A: transfer to non ERC721Receiver implementer"
    );
  }

  /**
   * @dev Returns whether `tokenId` exists.
   *
   * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
   *
   * Tokens start existing when they are minted (`_mint`),
   */
  function _exists(uint256 tokenId) internal view returns (bool) {
    return tokenId < currentIndex;
  }

  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, "");
  }

  /**
   * @dev Mints `quantity` tokens and transfers them to `to`.
   *
   * Requirements:
   *
   * - there must be `quantity` tokens remaining unminted in the total collection.
   * - `to` cannot be the zero address.
   * - `quantity` cannot be larger than the max batch size.
   *
   * Emits a {Transfer} event.
   */
  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), "ERC721A: mint to the zero address");
    // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering.
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

    _beforeTokenTransfers(address(0), to, startTokenId, quantity);

    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 updatedIndex = startTokenId;

    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        "ERC721A: transfer to non ERC721Receiver implementer"
      );
      updatedIndex++;
    }

    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  }

  /**
   * @dev Transfers `tokenId` from `from` to `to`.
   *
   * Requirements:
   *
   * - `to` cannot be the zero address.
   * - `tokenId` token must be owned by `from`.
   *
   * Emits a {Transfer} event.
   */
  function _transfer(
    address from,
    address to,
    uint256 tokenId
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);

    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));
    require(isStake[tokenId] != true,"token is stoken");
    require(
      isApprovedOrOwner,
      "ERC721A: transfer caller is not owner nor approved"
    );

    require(
      prevOwnership.addr == from,
      "ERC721A: transfer from incorrect owner"
    );
    require(to != address(0), "ERC721A: transfer to the zero address");

    _beforeTokenTransfers(from, to, tokenId, 1);

    // Clear approvals from the previous owner
    _approve(address(0), tokenId, prevOwnership.addr);

    _addressData[from].balance -= 1;
    _addressData[to].balance += 1;
    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

    // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
    // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(
          prevOwnership.addr,
          prevOwnership.startTimestamp
        );
      }
    }

    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  }
  function stake(uint256[] memory _token) public  {      
    require(msg.sender == stakeAddress,"can not stake");
    for (uint i = 0; i < _token.length; i++){
      isStake[_token[i]] = true;
    }
  }
  function unstake(uint256[] memory _token) public  {      
    require(msg.sender == stakeAddress,"can not stake");
    for (uint i = 0; i < _token.length; i++){
      isStake[_token[i]] = false;
    }
  }
  function setStakeAddress(address _stake) public  onlyOwner {
    stakeAddress = _stake;
  }
  /**
   * @dev Approve `to` to operate on `tokenId`
   *
   * Emits a {Approval} event.
   */
  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }

  uint256 public nextOwnerToExplicitlySet = 0;

  /**
   * @dev Explicitly set `owners` to eliminate loops in future calls of ownerOf().
   */
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    }
    // We know if the last one in the group exists, all in the group exist, due to serial ordering.
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  }

  /**
   * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
   * The call is not executed if the target address is not a contract.
   *
   * @param from address representing the previous owner of the given token ID
   * @param to target address that will receive the tokens
   * @param tokenId uint256 ID of the token to be transferred
   * @param _data bytes optional data to send along with the call
   * @return bool whether the call correctly returned the expected magic value
   */
  function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) private returns (bool) {
    if (to.isContract()) {
      try
        IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data)
      returns (bytes4 retval) {
        return retval == IERC721Receiver(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721A: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  }

  /**
   * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting.
   *
   * startTokenId - the first token id to be transferred
   * quantity - the amount to be transferred
   *
   * Calling conditions:
   *
   * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
   * transferred to `to`.
   * - When `from` is zero, `tokenId` will be minted for `to`.
   */
  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}

  /**
   * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes
   * minting.
   *
   * startTokenId - the first token id to be transferred
   * quantity - the amount to be transferred
   *
   * Calling conditions:
   *
   * - when `from` and `to` are both non-zero.
   * - `from` and `to` are never both zero.
   */
  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}

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

pragma solidity ^0.8.0;

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

File 6 of 13: IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC165.sol";

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

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

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

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

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

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

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

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

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

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

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

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

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

pragma solidity ^0.8.0;

import "./IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

File 8 of 13: IERC721Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./IERC721.sol";

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

File 9 of 13: IERC721Receiver.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

File 11 of 13: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 12 of 13: ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

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

        _;

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

File 13 of 13: Strings.sol
// SPDX-License-Identifier: MIT

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"maxBatchSize_","type":"uint256"},{"internalType":"uint256","name":"collectionSize_","type":"uint256"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"quantity","type":"uint8"}],"name":"devMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"mysteryList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mysteryListMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"publicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"publicMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"seedMysterylist","outputs":[],"stateMutability":"nonpayable","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setMysteryListMintTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"revealUri","type":"string"}],"name":"setPreRevealUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setPublicMintTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stake","type":"address"}],"name":"setStakeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_token","type":"uint256[]"}],"name":"stake","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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_token","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600180556040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506006908051906020019062000055929190620002ca565b506000600d553480156200006857600080fd5b5060405162005bb638038062005bb683398181016040528101906200008e919062000391565b6040518060400160405280601081526020017f4f5249454e54414c204d595354455259000000000000000000000000000000008152506040518060400160405280600281526020017f4f4d00000000000000000000000000000000000000000000000000000000000081525083836200011c62000110620001fe60201b60201c565b6200020660201b60201c565b6000811162000162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001599062000448565b60405180910390fd5b60008211620001a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019f9062000426565b60405180910390fd5b8360049080519060200190620001c0929190620002ca565b508260059080519060200190620001d9929190620002ca565b508160a081815250508060808181525050505050506001600e819055505050620005a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002d89062000485565b90600052602060002090601f016020900481019282620002fc576000855562000348565b82601f106200031757805160ff191683800117855562000348565b8280016001018555821562000348579182015b82811115620003475782518255916020019190600101906200032a565b5b5090506200035791906200035b565b5090565b5b80821115620003765760008160009055506001016200035c565b5090565b6000815190506200038b816200058d565b92915050565b60008060408385031215620003ab57620003aa620004ea565b5b6000620003bb858286016200037a565b9250506020620003ce858286016200037a565b9150509250929050565b6000620003e76027836200046a565b9150620003f482620004ef565b604082019050919050565b60006200040e602e836200046a565b91506200041b826200053e565b604082019050919050565b600060208201905081810360008301526200044181620003d8565b9050919050565b600060208201905081810360008301526200046381620003ff565b9050919050565b600082825260208201905092915050565b6000819050919050565b600060028204905060018216806200049e57607f821691505b60208210811415620004b557620004b4620004bb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b62000598816200047b565b8114620005a457600080fd5b50565b60805160a0516155a3620006136000396000818161122001528181611291015281816112d4015281816118d10152818161193f0152818161197f01528181612aa201528181612acb0152613256015260008181610e2e01528181611650015261185a01526155a36000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a22cb465116100b8578063d7224ba01161007c578063d7224ba014610634578063dc33e68114610652578063e449f34114610682578063e985e9c51461069e578063f2fde38b146106ce57610227565b8063a22cb465146105a6578063a475b5dd146105c2578063aa968fd3146105cc578063b88d4fde146105e8578063c87b56dd1461060457610227565b80638ba4cc3c116100ff5780638ba4cc3c146105025780638da5cb5b1461051e5780639231ab2a1461053c578063930db2fb1461056c57806395d89b411461058857610227565b806370a082311461048e578063715018a6146104be57806373bca96e146104c85780637b205c05146104d257610227565b806323471d18116101b35780633497d165116101825780633497d165146103da57806342842e0e146103f65780634f6ccce71461041257806355f804b3146104425780636352211e1461045e57610227565b806323471d181461036857806323b872dd1461038457806326092b83146103a05780632f745c59146103aa57610227565b806308f4c7ff116101fa57806308f4c7ff146102c6578063095ea7b3146102e25780630fbf0a93146102fe5780631015805b1461031a57806318160ddd1461034a57610227565b8063013eee1f1461022c57806301ffc9a71461024857806306fdde0314610278578063081812fc14610296575b600080fd5b61024660048036038101906102419190613c93565b6106ea565b005b610262600480360381019061025d9190613c39565b61077c565b60405161026f9190614388565b60405180910390f35b6102806108c6565b60405161028d91906143a3565b60405180910390f35b6102b060048036038101906102ab9190613ce0565b610958565b6040516102bd9190614321565b60405180910390f35b6102e060048036038101906102db9190613ce0565b6109dd565b005b6102fc60048036038101906102f79190613b67565b610a63565b005b61031860048036038101906103139190613bf0565b610b7c565b005b610334600480360381019061032f91906139e4565b610c75565b6040516103419190614388565b60405180910390f35b610352610c95565b60405161035f91906147a0565b60405180910390f35b610382600480360381019061037d91906139e4565b610caa565b005b61039e60048036038101906103999190613a51565b610d6a565b005b6103a8610d7a565b005b6103c460048036038101906103bf9190613b67565b610f9a565b6040516103d191906147a0565b60405180910390f35b6103f460048036038101906103ef9190613d0d565b6111a0565b005b610410600480360381019061040b9190613a51565b611310565b005b61042c60048036038101906104279190613ce0565b611330565b60405161043991906147a0565b60405180910390f35b61045c60048036038101906104579190613c93565b611383565b005b61047860048036038101906104739190613ce0565b611415565b6040516104859190614321565b60405180910390f35b6104a860048036038101906104a391906139e4565b61142b565b6040516104b591906147a0565b60405180910390f35b6104c6611514565b005b6104d061159c565b005b6104ec60048036038101906104e791906139e4565b6117bc565b6040516104f99190614388565b60405180910390f35b61051c60048036038101906105179190613b67565b6117dc565b005b6105266119bc565b6040516105339190614321565b60405180910390f35b61055660048036038101906105519190613ce0565b6119e5565b6040516105639190614785565b60405180910390f35b61058660048036038101906105819190613ce0565b6119fd565b005b610590611a83565b60405161059d91906143a3565b60405180910390f35b6105c060048036038101906105bb9190613b27565b611b15565b005b6105ca611c96565b005b6105e660048036038101906105e19190613ba7565b611d3e565b005b61060260048036038101906105fd9190613aa4565b611e4f565b005b61061e60048036038101906106199190613ce0565b611eab565b60405161062b91906143a3565b60405180910390f35b61063c612040565b60405161064991906147a0565b60405180910390f35b61066c600480360381019061066791906139e4565b612046565b60405161067991906147a0565b60405180910390f35b61069c60048036038101906106979190613bf0565b612058565b005b6106b860048036038101906106b39190613a11565b612151565b6040516106c59190614388565b60405180910390f35b6106e860048036038101906106e391906139e4565b6121e5565b005b6106f26122dd565b73ffffffffffffffffffffffffffffffffffffffff166107106119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d906145c5565b60405180910390fd5b818160079190610777929190613687565b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108af57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108bf57506108be826122e5565b5b9050919050565b6060600480546108d590614b13565b80601f016020809104026020016040519081016040528092919081815260200182805461090190614b13565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b5050505050905090565b60006109638261234f565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990614745565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6109e56122dd565b73ffffffffffffffffffffffffffffffffffffffff16610a036119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a50906145c5565b60405180910390fd5b8060118190555050565b6000610a6e82611415565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690614645565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610afe6122dd565b73ffffffffffffffffffffffffffffffffffffffff161480610b2d5750610b2c81610b276122dd565b612151565b5b610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b63906144e5565b60405180910390fd5b610b7783838361235d565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906145a5565b60405180910390fd5b60005b8151811015610c7157600160026000848481518110610c3157610c30614ca7565b5b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c6990614b76565b915050610c0f565b5050565b60106020528060005260406000206000915054906101000a900460ff1681565b600060018054610ca591906149c2565b905090565b610cb26122dd565b73ffffffffffffffffffffffffffffffffffffffff16610cd06119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906145c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d7583838361240f565b505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906144a5565b60405180910390fd5b4260115410610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2390614505565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001610e57610c95565b610e619190614907565b1115610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990614565565b60405180910390fd5b60001515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90614525565b60405180910390fd5b6001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f98336001612a30565b565b6000610fa58361142b565b821115610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde906143c5565b60405180910390fd5b6000610ff1610c95565b9050600060019050600080600190505b83811161115e576000600960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146110f257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561114a578684141561113b57819550505050505061119a565b838061114690614b76565b9450505b50808061115690614b76565b915050611001565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190614705565b60405180910390fd5b92915050565b6111a86122dd565b73ffffffffffffffffffffffffffffffffffffffff166111c66119bc565b73ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611213906145c5565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008260ff1661124d9190614be9565b1461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614425565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008260ff166112be919061495d565b905060005b818160ff16101561130b576112f8337f0000000000000000000000000000000000000000000000000000000000000000612a30565b808061130390614bbf565b9150506112c3565b505050565b61132b83838360405180602001604052806000815250611e4f565b505050565b600061133a610c95565b821061137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290614445565b60405180910390fd5b819050919050565b61138b6122dd565b73ffffffffffffffffffffffffffffffffffffffff166113a96119bc565b73ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f6906145c5565b60405180910390fd5b818160139190611410929190613687565b505050565b600061142082612a4e565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390614545565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61151c6122dd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906145c5565b60405180910390fd5b61159a6000612c51565b565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906144a5565b60405180910390fd5b426012541061164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590614505565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001611679610c95565b6116839190614907565b11156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90614565565b60405180910390fd5b60011515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906146e5565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ba336001612a30565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b6117e46122dd565b73ffffffffffffffffffffffffffffffffffffffff166118026119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906145c5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081611882610c95565b61188c9190614907565b11156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614665565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000826118fb9190614be9565b1461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290614425565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000082611969919061495d565b905060005b818160ff1610156119b6576119a3847f0000000000000000000000000000000000000000000000000000000000000000612a30565b80806119ae90614bbf565b91505061196e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119ed61370d565b6119f682612a4e565b9050919050565b611a056122dd565b73ffffffffffffffffffffffffffffffffffffffff16611a236119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a70906145c5565b60405180910390fd5b8060128190555050565b606060058054611a9290614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054611abe90614b13565b8015611b0b5780601f10611ae057610100808354040283529160200191611b0b565b820191906000526020600020905b815481529060010190602001808311611aee57829003601f168201915b5050505050905090565b611b1d6122dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614605565b60405180910390fd5b80600c6000611b986122dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c456122dd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c8a9190614388565b60405180910390a35050565b611c9e6122dd565b73ffffffffffffffffffffffffffffffffffffffff16611cbc6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d09906145c5565b60405180910390fd5b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b611d466122dd565b73ffffffffffffffffffffffffffffffffffffffff16611d646119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db1906145c5565b60405180910390fd5b60005b8151811015611e4b576001600f6000848481518110611ddf57611dde614ca7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e4390614b76565b915050611dbd565b5050565b611e5a84848461240f565b611e6684848484612d15565b611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90614685565b60405180910390fd5b50505050565b6060600860009054906101000a900460ff16611f535760078054611ece90614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054611efa90614b13565b8015611f475780601f10611f1c57610100808354040283529160200191611f47565b820191906000526020600020905b815481529060010190602001808311611f2a57829003601f168201915b5050505050905061203b565b611f5c8261234f565b611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f92906145e5565b60405180910390fd5b6000821415611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd6906145e5565b60405180910390fd5b6000611fe9612eac565b905060008151116120095760405180602001604052806000815250612037565b8061201384612f3e565b6006604051602001612027939291906142f0565b6040516020818303038152906040525b9150505b919050565b600d5481565b60006120518261309f565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120df906145a5565b60405180910390fd5b60005b815181101561214d5760006002600084848151811061210d5761210c614ca7565b5b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061214590614b76565b9150506120eb565b5050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121ed6122dd565b73ffffffffffffffffffffffffffffffffffffffff1661220b6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612258906145c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8906143e5565b60405180910390fd5b6122da81612c51565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b82600b600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061241a82612a4e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166124416122dd565b73ffffffffffffffffffffffffffffffffffffffff16148061249d57506124666122dd565b73ffffffffffffffffffffffffffffffffffffffff1661248584610958565b73ffffffffffffffffffffffffffffffffffffffff16145b806124b957506124b882600001516124b36122dd565b612151565b5b9050600115156002600085815260200190815260200160002060009054906101000a900460ff1615151415612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251a906144c5565b60405180910390fd5b80612563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255a90614625565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146125d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cc90614585565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263c90614465565b60405180910390fd5b6126528585856001613188565b612662600084846000015161235d565b6001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126d0919061498e565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661277491906148c1565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506009600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461287a9190614907565b9050600073ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129c0576128f08161234f565b156129bf576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506009600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a28868686600161318e565b505050505050565b612a4a828260405180602001604052806000815250613194565b5050565b612a5661370d565b612a5f8261234f565b612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590614405565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008310612b025760017f000000000000000000000000000000000000000000000000000000000000000084612af591906149c2565b612aff9190614907565b90505b60008390505b818110612c10576000600960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612bfc57809350505050612c4c565b508080612c0890614ae9565b915050612b08565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614725565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d368473ffffffffffffffffffffffffffffffffffffffff16613674565b15612e9f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d5f6122dd565b8786866040518563ffffffff1660e01b8152600401612d81949392919061433c565b602060405180830381600087803b158015612d9b57600080fd5b505af1925050508015612dcc57506040513d601f19601f82011682018060405250810190612dc99190613c66565b60015b612e4f573d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50600081511415612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90614685565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ea4565b600190505b949350505050565b606060138054612ebb90614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054612ee790614b13565b8015612f345780601f10612f0957610100808354040283529160200191612f34565b820191906000526020600020905b815481529060010190602001808311612f1757829003601f168201915b5050505050905090565b60606000821415612f86576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061309a565b600082905060005b60008214612fb8578080612fa190614b76565b915050600a82612fb1919061495d565b9150612f8e565b60008167ffffffffffffffff811115612fd457612fd3614cd6565b5b6040519080825280601f01601f1916602001820160405280156130065781602001600182028036833780820191505090505b5090505b600085146130935760018261301f91906149c2565b9150600a8561302e9190614be9565b603061303a9190614907565b60f81b8183815181106130505761304f614ca7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561308c919061495d565b945061300a565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310790614485565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561320b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613202906146c5565b60405180910390fd5b6132148161234f565b15613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b906146a5565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008311156132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90614765565b60405180910390fd5b6132c46000858386613188565b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516133c191906148c1565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133e891906148c1565b6fffffffffffffffffffffffffffffffff16815250600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506009600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561365757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135f76000888488612d15565b613636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362d90614685565b60405180910390fd5b818061364190614b76565b925050808061364f90614b76565b915050613586565b508060018190555061366c600087858861318e565b505050505050565b600080823b905060008111915050919050565b82805461369390614b13565b90600052602060002090601f0160209004810192826136b557600085556136fc565b82601f106136ce57803560ff19168380011785556136fc565b828001600101855582156136fc579182015b828111156136fb5782358255916020019190600101906136e0565b5b5090506137099190613747565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613760576000816000905550600101613748565b5090565b6000613777613772846147e0565b6147bb565b9050808382526020820190508285602086028201111561379a57613799614d0f565b5b60005b858110156137ca57816137b08882613886565b84526020840193506020830192505060018101905061379d565b5050509392505050565b60006137e76137e28461480c565b6147bb565b9050808382526020820190508285602086028201111561380a57613809614d0f565b5b60005b8581101561383a578161382088826139ba565b84526020840193506020830192505060018101905061380d565b5050509392505050565b600061385761385284614838565b6147bb565b90508281526020810184848401111561387357613872614d14565b5b61387e848285614aa7565b509392505050565b600081359050613895816154fa565b92915050565b600082601f8301126138b0576138af614d0a565b5b81356138c0848260208601613764565b91505092915050565b600082601f8301126138de576138dd614d0a565b5b81356138ee8482602086016137d4565b91505092915050565b60008135905061390681615511565b92915050565b60008135905061391b81615528565b92915050565b60008151905061393081615528565b92915050565b600082601f83011261394b5761394a614d0a565b5b813561395b848260208601613844565b91505092915050565b60008083601f84011261397a57613979614d0a565b5b8235905067ffffffffffffffff81111561399757613996614d05565b5b6020830191508360018202830111156139b3576139b2614d0f565b5b9250929050565b6000813590506139c98161553f565b92915050565b6000813590506139de81615556565b92915050565b6000602082840312156139fa576139f9614d1e565b5b6000613a0884828501613886565b91505092915050565b60008060408385031215613a2857613a27614d1e565b5b6000613a3685828601613886565b9250506020613a4785828601613886565b9150509250929050565b600080600060608486031215613a6a57613a69614d1e565b5b6000613a7886828701613886565b9350506020613a8986828701613886565b9250506040613a9a868287016139ba565b9150509250925092565b60008060008060808587031215613abe57613abd614d1e565b5b6000613acc87828801613886565b9450506020613add87828801613886565b9350506040613aee878288016139ba565b925050606085013567ffffffffffffffff811115613b0f57613b0e614d19565b5b613b1b87828801613936565b91505092959194509250565b60008060408385031215613b3e57613b3d614d1e565b5b6000613b4c85828601613886565b9250506020613b5d858286016138f7565b9150509250929050565b60008060408385031215613b7e57613b7d614d1e565b5b6000613b8c85828601613886565b9250506020613b9d858286016139ba565b9150509250929050565b600060208284031215613bbd57613bbc614d1e565b5b600082013567ffffffffffffffff811115613bdb57613bda614d19565b5b613be78482850161389b565b91505092915050565b600060208284031215613c0657613c05614d1e565b5b600082013567ffffffffffffffff811115613c2457613c23614d19565b5b613c30848285016138c9565b91505092915050565b600060208284031215613c4f57613c4e614d1e565b5b6000613c5d8482850161390c565b91505092915050565b600060208284031215613c7c57613c7b614d1e565b5b6000613c8a84828501613921565b91505092915050565b60008060208385031215613caa57613ca9614d1e565b5b600083013567ffffffffffffffff811115613cc857613cc7614d19565b5b613cd485828601613964565b92509250509250929050565b600060208284031215613cf657613cf5614d1e565b5b6000613d04848285016139ba565b91505092915050565b600060208284031215613d2357613d22614d1e565b5b6000613d31848285016139cf565b91505092915050565b613d43816149f6565b82525050565b613d52816149f6565b82525050565b613d6181614a08565b82525050565b6000613d728261487e565b613d7c8185614894565b9350613d8c818560208601614ab6565b613d9581614d23565b840191505092915050565b6000613dab82614889565b613db581856148a5565b9350613dc5818560208601614ab6565b613dce81614d23565b840191505092915050565b6000613de482614889565b613dee81856148b6565b9350613dfe818560208601614ab6565b80840191505092915050565b60008154613e1781614b13565b613e2181866148b6565b94506001821660008114613e3c5760018114613e4d57613e80565b60ff19831686528186019350613e80565b613e5685614869565b60005b83811015613e7857815481890152600182019150602081019050613e59565b838801955050505b50505092915050565b6000613e966022836148a5565b9150613ea182614d34565b604082019050919050565b6000613eb96026836148a5565b9150613ec482614d83565b604082019050919050565b6000613edc602a836148a5565b9150613ee782614dd2565b604082019050919050565b6000613eff602c836148a5565b9150613f0a82614e21565b604082019050919050565b6000613f226023836148a5565b9150613f2d82614e70565b604082019050919050565b6000613f456025836148a5565b9150613f5082614ebf565b604082019050919050565b6000613f686031836148a5565b9150613f7382614f0e565b604082019050919050565b6000613f8b601e836148a5565b9150613f9682614f5d565b602082019050919050565b6000613fae600f836148a5565b9150613fb982614f86565b602082019050919050565b6000613fd16039836148a5565b9150613fdc82614faf565b604082019050919050565b6000613ff4600a836148a5565b9150613fff82614ffe565b602082019050919050565b60006140176012836148a5565b915061402282615027565b602082019050919050565b600061403a602b836148a5565b915061404582615050565b604082019050919050565b600061405d6012836148a5565b91506140688261509f565b602082019050919050565b60006140806026836148a5565b915061408b826150c8565b604082019050919050565b60006140a3600d836148a5565b91506140ae82615117565b602082019050919050565b60006140c66020836148a5565b91506140d182615140565b602082019050919050565b60006140e9602f836148a5565b91506140f482615169565b604082019050919050565b600061410c601a836148a5565b9150614117826151b8565b602082019050919050565b600061412f6032836148a5565b915061413a826151e1565b604082019050919050565b60006141526022836148a5565b915061415d82615230565b604082019050919050565b6000614175600c836148a5565b91506141808261527f565b602082019050919050565b60006141986033836148a5565b91506141a3826152a8565b604082019050919050565b60006141bb601d836148a5565b91506141c6826152f7565b602082019050919050565b60006141de6021836148a5565b91506141e982615320565b604082019050919050565b60006142016021836148a5565b915061420c8261536f565b604082019050919050565b6000614224602e836148a5565b915061422f826153be565b604082019050919050565b6000614247602f836148a5565b91506142528261540d565b604082019050919050565b600061426a602d836148a5565b91506142758261545c565b604082019050919050565b600061428d6022836148a5565b9150614298826154ab565b604082019050919050565b6040820160008201516142b96000850182613d3a565b5060208201516142cc60208501826142e1565b50505050565b6142db81614a7c565b82525050565b6142ea81614a86565b82525050565b60006142fc8286613dd9565b91506143088285613dd9565b91506143148284613e0a565b9150819050949350505050565b60006020820190506143366000830184613d49565b92915050565b60006080820190506143516000830187613d49565b61435e6020830186613d49565b61436b60408301856142d2565b818103606083015261437d8184613d67565b905095945050505050565b600060208201905061439d6000830184613d58565b92915050565b600060208201905081810360008301526143bd8184613da0565b905092915050565b600060208201905081810360008301526143de81613e89565b9050919050565b600060208201905081810360008301526143fe81613eac565b9050919050565b6000602082019050818103600083015261441e81613ecf565b9050919050565b6000602082019050818103600083015261443e81613ef2565b9050919050565b6000602082019050818103600083015261445e81613f15565b9050919050565b6000602082019050818103600083015261447e81613f38565b9050919050565b6000602082019050818103600083015261449e81613f5b565b9050919050565b600060208201905081810360008301526144be81613f7e565b9050919050565b600060208201905081810360008301526144de81613fa1565b9050919050565b600060208201905081810360008301526144fe81613fc4565b9050919050565b6000602082019050818103600083015261451e81613fe7565b9050919050565b6000602082019050818103600083015261453e8161400a565b9050919050565b6000602082019050818103600083015261455e8161402d565b9050919050565b6000602082019050818103600083015261457e81614050565b9050919050565b6000602082019050818103600083015261459e81614073565b9050919050565b600060208201905081810360008301526145be81614096565b9050919050565b600060208201905081810360008301526145de816140b9565b9050919050565b600060208201905081810360008301526145fe816140dc565b9050919050565b6000602082019050818103600083015261461e816140ff565b9050919050565b6000602082019050818103600083015261463e81614122565b9050919050565b6000602082019050818103600083015261465e81614145565b9050919050565b6000602082019050818103600083015261467e81614168565b9050919050565b6000602082019050818103600083015261469e8161418b565b9050919050565b600060208201905081810360008301526146be816141ae565b9050919050565b600060208201905081810360008301526146de816141d1565b9050919050565b600060208201905081810360008301526146fe816141f4565b9050919050565b6000602082019050818103600083015261471e81614217565b9050919050565b6000602082019050818103600083015261473e8161423a565b9050919050565b6000602082019050818103600083015261475e8161425d565b9050919050565b6000602082019050818103600083015261477e81614280565b9050919050565b600060408201905061479a60008301846142a3565b92915050565b60006020820190506147b560008301846142d2565b92915050565b60006147c56147d6565b90506147d18282614b45565b919050565b6000604051905090565b600067ffffffffffffffff8211156147fb576147fa614cd6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561482757614826614cd6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561485357614852614cd6565b5b61485c82614d23565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006148cc82614a40565b91506148d783614a40565b9250826fffffffffffffffffffffffffffffffff038211156148fc576148fb614c1a565b5b828201905092915050565b600061491282614a7c565b915061491d83614a7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495257614951614c1a565b5b828201905092915050565b600061496882614a7c565b915061497383614a7c565b92508261498357614982614c49565b5b828204905092915050565b600061499982614a40565b91506149a483614a40565b9250828210156149b7576149b6614c1a565b5b828203905092915050565b60006149cd82614a7c565b91506149d883614a7c565b9250828210156149eb576149ea614c1a565b5b828203905092915050565b6000614a0182614a5c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614ad4578082015181840152602081019050614ab9565b83811115614ae3576000848401525b50505050565b6000614af482614a7c565b91506000821415614b0857614b07614c1a565b5b600182039050919050565b60006002820490506001821680614b2b57607f821691505b60208210811415614b3f57614b3e614c78565b5b50919050565b614b4e82614d23565b810181811067ffffffffffffffff82111715614b6d57614b6c614cd6565b5b80604052505050565b6000614b8182614a7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bb457614bb3614c1a565b5b600182019050919050565b6000614bca82614a9a565b915060ff821415614bde57614bdd614c1a565b5b600182019050919050565b6000614bf482614a7c565b9150614bff83614a7c565b925082614c0f57614c0e614c49565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f63616e206f6e6c79206d696e742061206d756c7469706c65206f66207468652060008201527f6d6178426174636853697a650000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f746f6b656e2069732073746f6b656e0000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f6e6f742073746172742000000000000000000000000000000000000000000000600082015250565b7f63616e206e6f74206d696e7420616761696e0000000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74207374616b6500000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e740000000000000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420656c696769626c6520666f72206d7973746572796c697374206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b615503816149f6565b811461550e57600080fd5b50565b61551a81614a08565b811461552557600080fd5b50565b61553181614a14565b811461553c57600080fd5b50565b61554881614a7c565b811461555357600080fd5b50565b61555f81614a9a565b811461556a57600080fd5b5056fea26469706673582212208a37bfb2616649bfdbca6c490b90b55a0aeb289dc5da0b5435ba9562bf20dfe364736f6c63430008070033000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000015b3

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a22cb465116100b8578063d7224ba01161007c578063d7224ba014610634578063dc33e68114610652578063e449f34114610682578063e985e9c51461069e578063f2fde38b146106ce57610227565b8063a22cb465146105a6578063a475b5dd146105c2578063aa968fd3146105cc578063b88d4fde146105e8578063c87b56dd1461060457610227565b80638ba4cc3c116100ff5780638ba4cc3c146105025780638da5cb5b1461051e5780639231ab2a1461053c578063930db2fb1461056c57806395d89b411461058857610227565b806370a082311461048e578063715018a6146104be57806373bca96e146104c85780637b205c05146104d257610227565b806323471d18116101b35780633497d165116101825780633497d165146103da57806342842e0e146103f65780634f6ccce71461041257806355f804b3146104425780636352211e1461045e57610227565b806323471d181461036857806323b872dd1461038457806326092b83146103a05780632f745c59146103aa57610227565b806308f4c7ff116101fa57806308f4c7ff146102c6578063095ea7b3146102e25780630fbf0a93146102fe5780631015805b1461031a57806318160ddd1461034a57610227565b8063013eee1f1461022c57806301ffc9a71461024857806306fdde0314610278578063081812fc14610296575b600080fd5b61024660048036038101906102419190613c93565b6106ea565b005b610262600480360381019061025d9190613c39565b61077c565b60405161026f9190614388565b60405180910390f35b6102806108c6565b60405161028d91906143a3565b60405180910390f35b6102b060048036038101906102ab9190613ce0565b610958565b6040516102bd9190614321565b60405180910390f35b6102e060048036038101906102db9190613ce0565b6109dd565b005b6102fc60048036038101906102f79190613b67565b610a63565b005b61031860048036038101906103139190613bf0565b610b7c565b005b610334600480360381019061032f91906139e4565b610c75565b6040516103419190614388565b60405180910390f35b610352610c95565b60405161035f91906147a0565b60405180910390f35b610382600480360381019061037d91906139e4565b610caa565b005b61039e60048036038101906103999190613a51565b610d6a565b005b6103a8610d7a565b005b6103c460048036038101906103bf9190613b67565b610f9a565b6040516103d191906147a0565b60405180910390f35b6103f460048036038101906103ef9190613d0d565b6111a0565b005b610410600480360381019061040b9190613a51565b611310565b005b61042c60048036038101906104279190613ce0565b611330565b60405161043991906147a0565b60405180910390f35b61045c60048036038101906104579190613c93565b611383565b005b61047860048036038101906104739190613ce0565b611415565b6040516104859190614321565b60405180910390f35b6104a860048036038101906104a391906139e4565b61142b565b6040516104b591906147a0565b60405180910390f35b6104c6611514565b005b6104d061159c565b005b6104ec60048036038101906104e791906139e4565b6117bc565b6040516104f99190614388565b60405180910390f35b61051c60048036038101906105179190613b67565b6117dc565b005b6105266119bc565b6040516105339190614321565b60405180910390f35b61055660048036038101906105519190613ce0565b6119e5565b6040516105639190614785565b60405180910390f35b61058660048036038101906105819190613ce0565b6119fd565b005b610590611a83565b60405161059d91906143a3565b60405180910390f35b6105c060048036038101906105bb9190613b27565b611b15565b005b6105ca611c96565b005b6105e660048036038101906105e19190613ba7565b611d3e565b005b61060260048036038101906105fd9190613aa4565b611e4f565b005b61061e60048036038101906106199190613ce0565b611eab565b60405161062b91906143a3565b60405180910390f35b61063c612040565b60405161064991906147a0565b60405180910390f35b61066c600480360381019061066791906139e4565b612046565b60405161067991906147a0565b60405180910390f35b61069c60048036038101906106979190613bf0565b612058565b005b6106b860048036038101906106b39190613a11565b612151565b6040516106c59190614388565b60405180910390f35b6106e860048036038101906106e391906139e4565b6121e5565b005b6106f26122dd565b73ffffffffffffffffffffffffffffffffffffffff166107106119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d906145c5565b60405180910390fd5b818160079190610777929190613687565b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108af57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108bf57506108be826122e5565b5b9050919050565b6060600480546108d590614b13565b80601f016020809104026020016040519081016040528092919081815260200182805461090190614b13565b801561094e5780601f106109235761010080835404028352916020019161094e565b820191906000526020600020905b81548152906001019060200180831161093157829003601f168201915b5050505050905090565b60006109638261234f565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990614745565b60405180910390fd5b600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6109e56122dd565b73ffffffffffffffffffffffffffffffffffffffff16610a036119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a50906145c5565b60405180910390fd5b8060118190555050565b6000610a6e82611415565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690614645565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610afe6122dd565b73ffffffffffffffffffffffffffffffffffffffff161480610b2d5750610b2c81610b276122dd565b612151565b5b610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b63906144e5565b60405180910390fd5b610b7783838361235d565b505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906145a5565b60405180910390fd5b60005b8151811015610c7157600160026000848481518110610c3157610c30614ca7565b5b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c6990614b76565b915050610c0f565b5050565b60106020528060005260406000206000915054906101000a900460ff1681565b600060018054610ca591906149c2565b905090565b610cb26122dd565b73ffffffffffffffffffffffffffffffffffffffff16610cd06119bc565b73ffffffffffffffffffffffffffffffffffffffff1614610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906145c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610d7583838361240f565b505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906144a5565b60405180910390fd5b4260115410610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2390614505565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000015b36001610e57610c95565b610e619190614907565b1115610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990614565565b60405180910390fd5b60001515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c90614525565b60405180910390fd5b6001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f98336001612a30565b565b6000610fa58361142b565b821115610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde906143c5565b60405180910390fd5b6000610ff1610c95565b9050600060019050600080600190505b83811161115e576000600960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146110f257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561114a578684141561113b57819550505050505061119a565b838061114690614b76565b9450505b50808061115690614b76565b915050611001565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190614705565b60405180910390fd5b92915050565b6111a86122dd565b73ffffffffffffffffffffffffffffffffffffffff166111c66119bc565b73ffffffffffffffffffffffffffffffffffffffff161461121c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611213906145c5565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000058260ff1661124d9190614be9565b1461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490614425565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000058260ff166112be919061495d565b905060005b818160ff16101561130b576112f8337f0000000000000000000000000000000000000000000000000000000000000005612a30565b808061130390614bbf565b9150506112c3565b505050565b61132b83838360405180602001604052806000815250611e4f565b505050565b600061133a610c95565b821061137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290614445565b60405180910390fd5b819050919050565b61138b6122dd565b73ffffffffffffffffffffffffffffffffffffffff166113a96119bc565b73ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f6906145c5565b60405180910390fd5b818160139190611410929190613687565b505050565b600061142082612a4e565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390614545565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b61151c6122dd565b73ffffffffffffffffffffffffffffffffffffffff1661153a6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611587906145c5565b60405180910390fd5b61159a6000612c51565b565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906144a5565b60405180910390fd5b426012541061164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590614505565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000015b36001611679610c95565b6116839190614907565b11156116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90614565565b60405180910390fd5b60011515600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906146e5565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117ba336001612a30565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b6117e46122dd565b73ffffffffffffffffffffffffffffffffffffffff166118026119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906145c5565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000015b381611882610c95565b61188c9190614907565b11156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614665565b60405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000005826118fb9190614be9565b1461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290614425565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000582611969919061495d565b905060005b818160ff1610156119b6576119a3847f0000000000000000000000000000000000000000000000000000000000000005612a30565b80806119ae90614bbf565b91505061196e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119ed61370d565b6119f682612a4e565b9050919050565b611a056122dd565b73ffffffffffffffffffffffffffffffffffffffff16611a236119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a70906145c5565b60405180910390fd5b8060128190555050565b606060058054611a9290614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054611abe90614b13565b8015611b0b5780601f10611ae057610100808354040283529160200191611b0b565b820191906000526020600020905b815481529060010190602001808311611aee57829003601f168201915b5050505050905090565b611b1d6122dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290614605565b60405180910390fd5b80600c6000611b986122dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c456122dd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c8a9190614388565b60405180910390a35050565b611c9e6122dd565b73ffffffffffffffffffffffffffffffffffffffff16611cbc6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d09906145c5565b60405180910390fd5b600860009054906101000a900460ff1615600860006101000a81548160ff021916908315150217905550565b611d466122dd565b73ffffffffffffffffffffffffffffffffffffffff16611d646119bc565b73ffffffffffffffffffffffffffffffffffffffff1614611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db1906145c5565b60405180910390fd5b60005b8151811015611e4b576001600f6000848481518110611ddf57611dde614ca7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611e4390614b76565b915050611dbd565b5050565b611e5a84848461240f565b611e6684848484612d15565b611ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9c90614685565b60405180910390fd5b50505050565b6060600860009054906101000a900460ff16611f535760078054611ece90614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054611efa90614b13565b8015611f475780601f10611f1c57610100808354040283529160200191611f47565b820191906000526020600020905b815481529060010190602001808311611f2a57829003601f168201915b5050505050905061203b565b611f5c8261234f565b611f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f92906145e5565b60405180910390fd5b6000821415611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd6906145e5565b60405180910390fd5b6000611fe9612eac565b905060008151116120095760405180602001604052806000815250612037565b8061201384612f3e565b6006604051602001612027939291906142f0565b6040516020818303038152906040525b9150505b919050565b600d5481565b60006120518261309f565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120df906145a5565b60405180910390fd5b60005b815181101561214d5760006002600084848151811061210d5761210c614ca7565b5b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061214590614b76565b9150506120eb565b5050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121ed6122dd565b73ffffffffffffffffffffffffffffffffffffffff1661220b6119bc565b73ffffffffffffffffffffffffffffffffffffffff1614612261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612258906145c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8906143e5565b60405180910390fd5b6122da81612c51565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b82600b600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061241a82612a4e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166124416122dd565b73ffffffffffffffffffffffffffffffffffffffff16148061249d57506124666122dd565b73ffffffffffffffffffffffffffffffffffffffff1661248584610958565b73ffffffffffffffffffffffffffffffffffffffff16145b806124b957506124b882600001516124b36122dd565b612151565b5b9050600115156002600085815260200190815260200160002060009054906101000a900460ff1615151415612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251a906144c5565b60405180910390fd5b80612563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255a90614625565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146125d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cc90614585565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263c90614465565b60405180910390fd5b6126528585856001613188565b612662600084846000015161235d565b6001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126d0919061498e565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661277491906148c1565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506009600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461287a9190614907565b9050600073ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129c0576128f08161234f565b156129bf576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506009600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a28868686600161318e565b505050505050565b612a4a828260405180602001604052806000815250613194565b5050565b612a5661370d565b612a5f8261234f565b612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590614405565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000058310612b025760017f000000000000000000000000000000000000000000000000000000000000000584612af591906149c2565b612aff9190614907565b90505b60008390505b818110612c10576000600960008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612bfc57809350505050612c4c565b508080612c0890614ae9565b915050612b08565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4390614725565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d368473ffffffffffffffffffffffffffffffffffffffff16613674565b15612e9f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d5f6122dd565b8786866040518563ffffffff1660e01b8152600401612d81949392919061433c565b602060405180830381600087803b158015612d9b57600080fd5b505af1925050508015612dcc57506040513d601f19601f82011682018060405250810190612dc99190613c66565b60015b612e4f573d8060008114612dfc576040519150601f19603f3d011682016040523d82523d6000602084013e612e01565b606091505b50600081511415612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90614685565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ea4565b600190505b949350505050565b606060138054612ebb90614b13565b80601f0160208091040260200160405190810160405280929190818152602001828054612ee790614b13565b8015612f345780601f10612f0957610100808354040283529160200191612f34565b820191906000526020600020905b815481529060010190602001808311612f1757829003601f168201915b5050505050905090565b60606000821415612f86576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061309a565b600082905060005b60008214612fb8578080612fa190614b76565b915050600a82612fb1919061495d565b9150612f8e565b60008167ffffffffffffffff811115612fd457612fd3614cd6565b5b6040519080825280601f01601f1916602001820160405280156130065781602001600182028036833780820191505090505b5090505b600085146130935760018261301f91906149c2565b9150600a8561302e9190614be9565b603061303a9190614907565b60f81b8183815181106130505761304f614ca7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561308c919061495d565b945061300a565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310790614485565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561320b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613202906146c5565b60405180910390fd5b6132148161234f565b15613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324b906146a5565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000058311156132b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ae90614765565b60405180910390fd5b6132c46000858386613188565b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516133c191906148c1565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133e891906148c1565b6fffffffffffffffffffffffffffffffff16815250600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506009600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561365757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135f76000888488612d15565b613636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362d90614685565b60405180910390fd5b818061364190614b76565b925050808061364f90614b76565b915050613586565b508060018190555061366c600087858861318e565b505050505050565b600080823b905060008111915050919050565b82805461369390614b13565b90600052602060002090601f0160209004810192826136b557600085556136fc565b82601f106136ce57803560ff19168380011785556136fc565b828001600101855582156136fc579182015b828111156136fb5782358255916020019190600101906136e0565b5b5090506137099190613747565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613760576000816000905550600101613748565b5090565b6000613777613772846147e0565b6147bb565b9050808382526020820190508285602086028201111561379a57613799614d0f565b5b60005b858110156137ca57816137b08882613886565b84526020840193506020830192505060018101905061379d565b5050509392505050565b60006137e76137e28461480c565b6147bb565b9050808382526020820190508285602086028201111561380a57613809614d0f565b5b60005b8581101561383a578161382088826139ba565b84526020840193506020830192505060018101905061380d565b5050509392505050565b600061385761385284614838565b6147bb565b90508281526020810184848401111561387357613872614d14565b5b61387e848285614aa7565b509392505050565b600081359050613895816154fa565b92915050565b600082601f8301126138b0576138af614d0a565b5b81356138c0848260208601613764565b91505092915050565b600082601f8301126138de576138dd614d0a565b5b81356138ee8482602086016137d4565b91505092915050565b60008135905061390681615511565b92915050565b60008135905061391b81615528565b92915050565b60008151905061393081615528565b92915050565b600082601f83011261394b5761394a614d0a565b5b813561395b848260208601613844565b91505092915050565b60008083601f84011261397a57613979614d0a565b5b8235905067ffffffffffffffff81111561399757613996614d05565b5b6020830191508360018202830111156139b3576139b2614d0f565b5b9250929050565b6000813590506139c98161553f565b92915050565b6000813590506139de81615556565b92915050565b6000602082840312156139fa576139f9614d1e565b5b6000613a0884828501613886565b91505092915050565b60008060408385031215613a2857613a27614d1e565b5b6000613a3685828601613886565b9250506020613a4785828601613886565b9150509250929050565b600080600060608486031215613a6a57613a69614d1e565b5b6000613a7886828701613886565b9350506020613a8986828701613886565b9250506040613a9a868287016139ba565b9150509250925092565b60008060008060808587031215613abe57613abd614d1e565b5b6000613acc87828801613886565b9450506020613add87828801613886565b9350506040613aee878288016139ba565b925050606085013567ffffffffffffffff811115613b0f57613b0e614d19565b5b613b1b87828801613936565b91505092959194509250565b60008060408385031215613b3e57613b3d614d1e565b5b6000613b4c85828601613886565b9250506020613b5d858286016138f7565b9150509250929050565b60008060408385031215613b7e57613b7d614d1e565b5b6000613b8c85828601613886565b9250506020613b9d858286016139ba565b9150509250929050565b600060208284031215613bbd57613bbc614d1e565b5b600082013567ffffffffffffffff811115613bdb57613bda614d19565b5b613be78482850161389b565b91505092915050565b600060208284031215613c0657613c05614d1e565b5b600082013567ffffffffffffffff811115613c2457613c23614d19565b5b613c30848285016138c9565b91505092915050565b600060208284031215613c4f57613c4e614d1e565b5b6000613c5d8482850161390c565b91505092915050565b600060208284031215613c7c57613c7b614d1e565b5b6000613c8a84828501613921565b91505092915050565b60008060208385031215613caa57613ca9614d1e565b5b600083013567ffffffffffffffff811115613cc857613cc7614d19565b5b613cd485828601613964565b92509250509250929050565b600060208284031215613cf657613cf5614d1e565b5b6000613d04848285016139ba565b91505092915050565b600060208284031215613d2357613d22614d1e565b5b6000613d31848285016139cf565b91505092915050565b613d43816149f6565b82525050565b613d52816149f6565b82525050565b613d6181614a08565b82525050565b6000613d728261487e565b613d7c8185614894565b9350613d8c818560208601614ab6565b613d9581614d23565b840191505092915050565b6000613dab82614889565b613db581856148a5565b9350613dc5818560208601614ab6565b613dce81614d23565b840191505092915050565b6000613de482614889565b613dee81856148b6565b9350613dfe818560208601614ab6565b80840191505092915050565b60008154613e1781614b13565b613e2181866148b6565b94506001821660008114613e3c5760018114613e4d57613e80565b60ff19831686528186019350613e80565b613e5685614869565b60005b83811015613e7857815481890152600182019150602081019050613e59565b838801955050505b50505092915050565b6000613e966022836148a5565b9150613ea182614d34565b604082019050919050565b6000613eb96026836148a5565b9150613ec482614d83565b604082019050919050565b6000613edc602a836148a5565b9150613ee782614dd2565b604082019050919050565b6000613eff602c836148a5565b9150613f0a82614e21565b604082019050919050565b6000613f226023836148a5565b9150613f2d82614e70565b604082019050919050565b6000613f456025836148a5565b9150613f5082614ebf565b604082019050919050565b6000613f686031836148a5565b9150613f7382614f0e565b604082019050919050565b6000613f8b601e836148a5565b9150613f9682614f5d565b602082019050919050565b6000613fae600f836148a5565b9150613fb982614f86565b602082019050919050565b6000613fd16039836148a5565b9150613fdc82614faf565b604082019050919050565b6000613ff4600a836148a5565b9150613fff82614ffe565b602082019050919050565b60006140176012836148a5565b915061402282615027565b602082019050919050565b600061403a602b836148a5565b915061404582615050565b604082019050919050565b600061405d6012836148a5565b91506140688261509f565b602082019050919050565b60006140806026836148a5565b915061408b826150c8565b604082019050919050565b60006140a3600d836148a5565b91506140ae82615117565b602082019050919050565b60006140c66020836148a5565b91506140d182615140565b602082019050919050565b60006140e9602f836148a5565b91506140f482615169565b604082019050919050565b600061410c601a836148a5565b9150614117826151b8565b602082019050919050565b600061412f6032836148a5565b915061413a826151e1565b604082019050919050565b60006141526022836148a5565b915061415d82615230565b604082019050919050565b6000614175600c836148a5565b91506141808261527f565b602082019050919050565b60006141986033836148a5565b91506141a3826152a8565b604082019050919050565b60006141bb601d836148a5565b91506141c6826152f7565b602082019050919050565b60006141de6021836148a5565b91506141e982615320565b604082019050919050565b60006142016021836148a5565b915061420c8261536f565b604082019050919050565b6000614224602e836148a5565b915061422f826153be565b604082019050919050565b6000614247602f836148a5565b91506142528261540d565b604082019050919050565b600061426a602d836148a5565b91506142758261545c565b604082019050919050565b600061428d6022836148a5565b9150614298826154ab565b604082019050919050565b6040820160008201516142b96000850182613d3a565b5060208201516142cc60208501826142e1565b50505050565b6142db81614a7c565b82525050565b6142ea81614a86565b82525050565b60006142fc8286613dd9565b91506143088285613dd9565b91506143148284613e0a565b9150819050949350505050565b60006020820190506143366000830184613d49565b92915050565b60006080820190506143516000830187613d49565b61435e6020830186613d49565b61436b60408301856142d2565b818103606083015261437d8184613d67565b905095945050505050565b600060208201905061439d6000830184613d58565b92915050565b600060208201905081810360008301526143bd8184613da0565b905092915050565b600060208201905081810360008301526143de81613e89565b9050919050565b600060208201905081810360008301526143fe81613eac565b9050919050565b6000602082019050818103600083015261441e81613ecf565b9050919050565b6000602082019050818103600083015261443e81613ef2565b9050919050565b6000602082019050818103600083015261445e81613f15565b9050919050565b6000602082019050818103600083015261447e81613f38565b9050919050565b6000602082019050818103600083015261449e81613f5b565b9050919050565b600060208201905081810360008301526144be81613f7e565b9050919050565b600060208201905081810360008301526144de81613fa1565b9050919050565b600060208201905081810360008301526144fe81613fc4565b9050919050565b6000602082019050818103600083015261451e81613fe7565b9050919050565b6000602082019050818103600083015261453e8161400a565b9050919050565b6000602082019050818103600083015261455e8161402d565b9050919050565b6000602082019050818103600083015261457e81614050565b9050919050565b6000602082019050818103600083015261459e81614073565b9050919050565b600060208201905081810360008301526145be81614096565b9050919050565b600060208201905081810360008301526145de816140b9565b9050919050565b600060208201905081810360008301526145fe816140dc565b9050919050565b6000602082019050818103600083015261461e816140ff565b9050919050565b6000602082019050818103600083015261463e81614122565b9050919050565b6000602082019050818103600083015261465e81614145565b9050919050565b6000602082019050818103600083015261467e81614168565b9050919050565b6000602082019050818103600083015261469e8161418b565b9050919050565b600060208201905081810360008301526146be816141ae565b9050919050565b600060208201905081810360008301526146de816141d1565b9050919050565b600060208201905081810360008301526146fe816141f4565b9050919050565b6000602082019050818103600083015261471e81614217565b9050919050565b6000602082019050818103600083015261473e8161423a565b9050919050565b6000602082019050818103600083015261475e8161425d565b9050919050565b6000602082019050818103600083015261477e81614280565b9050919050565b600060408201905061479a60008301846142a3565b92915050565b60006020820190506147b560008301846142d2565b92915050565b60006147c56147d6565b90506147d18282614b45565b919050565b6000604051905090565b600067ffffffffffffffff8211156147fb576147fa614cd6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561482757614826614cd6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561485357614852614cd6565b5b61485c82614d23565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006148cc82614a40565b91506148d783614a40565b9250826fffffffffffffffffffffffffffffffff038211156148fc576148fb614c1a565b5b828201905092915050565b600061491282614a7c565b915061491d83614a7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495257614951614c1a565b5b828201905092915050565b600061496882614a7c565b915061497383614a7c565b92508261498357614982614c49565b5b828204905092915050565b600061499982614a40565b91506149a483614a40565b9250828210156149b7576149b6614c1a565b5b828203905092915050565b60006149cd82614a7c565b91506149d883614a7c565b9250828210156149eb576149ea614c1a565b5b828203905092915050565b6000614a0182614a5c565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614ad4578082015181840152602081019050614ab9565b83811115614ae3576000848401525b50505050565b6000614af482614a7c565b91506000821415614b0857614b07614c1a565b5b600182039050919050565b60006002820490506001821680614b2b57607f821691505b60208210811415614b3f57614b3e614c78565b5b50919050565b614b4e82614d23565b810181811067ffffffffffffffff82111715614b6d57614b6c614cd6565b5b80604052505050565b6000614b8182614a7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bb457614bb3614c1a565b5b600182019050919050565b6000614bca82614a9a565b915060ff821415614bde57614bdd614c1a565b5b600182019050919050565b6000614bf482614a7c565b9150614bff83614a7c565b925082614c0f57614c0e614c49565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f63616e206f6e6c79206d696e742061206d756c7469706c65206f66207468652060008201527f6d6178426174636853697a650000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f746f6b656e2069732073746f6b656e0000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f6e6f742073746172742000000000000000000000000000000000000000000000600082015250565b7f63616e206e6f74206d696e7420616761696e0000000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74207374616b6500000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e740000000000000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420656c696769626c6520666f72206d7973746572796c697374206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b615503816149f6565b811461550e57600080fd5b50565b61551a81614a08565b811461552557600080fd5b50565b61553181614a14565b811461553c57600080fd5b50565b61554881614a7c565b811461555357600080fd5b50565b61555f81614a9a565b811461556a57600080fd5b5056fea26469706673582212208a37bfb2616649bfdbca6c490b90b55a0aeb289dc5da0b5435ba9562bf20dfe364736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000015b3

-----Decoded View---------------
Arg [0] : maxBatchSize_ (uint256): 5
Arg [1] : collectionSize_ (uint256): 5555

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [1] : 00000000000000000000000000000000000000000000000000000000000015b3


Deployed Bytecode Sourcemap

511:2494:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:105:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4205:370;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6112:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7813:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2158:94:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7376:379:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13672:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;613:44:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2762:96:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14095:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8663:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1332:340:9;;;:::i;:::-;;3395:746:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1005:321:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9261:157:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2927:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:100:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5935:118:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4631:211;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1650:94:10;;;:::i;:::-;;1676:368:9;;;:::i;:::-;;565:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8807:393:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;999:87:10;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2855:147:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2048:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6267:98:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8081:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4955:70;;;:::i;:::-;;2260:195:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9481:311:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6432:564;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14470:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2742:107:9;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13882:209:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8418:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1899:192:10;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4846:105:3;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4934:9:3::1;;4921:10;:22;;;;;;;:::i;:::-;;4846:105:::0;;:::o;4205:370::-;4332:4;4377:25;4362:40;;;:11;:40;;;;:99;;;;4428:33;4413:48;;;:11;:48;;;;4362:99;:160;;;;4487:35;4472:50;;;:11;:50;;;;4362:160;:207;;;;4533:36;4557:11;4533:23;:36::i;:::-;4362:207;4348:221;;4205:370;;;:::o;6112:94::-;6166:13;6195:5;6188:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6112:94;:::o;7813:204::-;7881:7;7905:16;7913:7;7905;:16::i;:::-;7897:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7987:15;:24;8003:7;7987:24;;;;;;;;;;;;;;;;;;;;;7980:31;;7813:204;;;:::o;2158:94:9:-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2241:5:9::1;2224:14;:22;;;;2158:94:::0;:::o;7376:379:3:-;7445:13;7461:24;7477:7;7461:15;:24::i;:::-;7445:40;;7506:5;7500:11;;:2;:11;;;;7492:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7591:5;7575:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;7600:37;7617:5;7624:12;:10;:12::i;:::-;7600:16;:37::i;:::-;7575:62;7559:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;7721:28;7730:2;7734:7;7743:5;7721:8;:28::i;:::-;7438:317;7376:379;;:::o;13672:206::-;13755:12;;;;;;;;;;;13741:26;;:10;:26;;;13733:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13796:6;13791:82;13812:6;:13;13808:1;:17;13791:82;;;13861:4;13840:7;:18;13848:6;13855:1;13848:9;;;;;;;;:::i;:::-;;;;;;;;13840:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13827:3;;;;;:::i;:::-;;;;13791:82;;;;13672:206;:::o;613:44:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;2762:96:3:-;2815:7;2851:1;2838:12;;:14;;;;:::i;:::-;2831:21;;2762:96;:::o;14095:93::-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14176:6:3::1;14161:12;;:21;;;;;;;;;;;;;;;;;;14095:93:::0;:::o;8663:142::-;8771:28;8781:4;8787:2;8791:7;8771:9;:28::i;:::-;8663:142;;;:::o;1332:340:9:-;938:10;925:23;;:9;:23;;;917:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1422:15:::1;1405:14;;:32;1397:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1489:14;1484:1;1468:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:35;;1460:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1569:5;1541:33;;:12;:24;1554:10;1541:24;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;1533:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1630:4;1603:12;:24;1616:10;1603:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;1642:24;1652:10;1664:1;1642:9;:24::i;:::-;1332:340::o:0;3395:746:3:-;3504:7;3540:16;3550:5;3540:9;:16::i;:::-;3531:5;:25;;3523:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;3602:22;3627:13;:11;:13::i;:::-;3602:38;;3647:19;3669:1;3647:23;;3677:25;3727:9;3739:1;3727:13;;3722:351;3747:14;3742:1;:19;3722:351;;3777:31;3811:11;:14;3823:1;3811:14;;;;;;;;;;;3777:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:1;3838:28;;:9;:14;;;:28;;;3834:89;;3899:9;:14;;;3879:34;;3834:89;3956:5;3935:26;;:17;:26;;;3931:135;;;3993:5;3978:11;:20;3974:59;;;4020:1;4013:8;;;;;;;;;3974:59;4043:13;;;;;:::i;:::-;;;;3931:135;3768:305;3763:3;;;;;:::i;:::-;;;;3722:351;;;;4079:56;;;;;;;;;;:::i;:::-;;;;;;;;3395:746;;;;;:::o;1005:321:9:-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1109:1:9::1;1093:12;1082:8;:23;;;;;;:::i;:::-;:28;1065:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;1181:17;1212:12;1201:8;:23;;;;;;:::i;:::-;1181:43;;1236:7;1231:90;1253:9;1249:1;:13;;;1231:90;;;1278:35;1288:10;1300:12;1278:9;:35::i;:::-;1264:3;;;;;:::i;:::-;;;;1231:90;;;;1057:269;1005:321:::0;:::o;9261:157:3:-;9373:39;9390:4;9396:2;9400:7;9373:39;;;;;;;;;;;;:16;:39::i;:::-;9261:157;;;:::o;2927:177::-;2994:7;3026:13;:11;:13::i;:::-;3018:5;:21;3010:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;3093:5;3086:12;;2927:177;;;:::o;2634:100:9:-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2721:7:9::1;;2705:13;:23;;;;;;;:::i;:::-;;2634:100:::0;;:::o;5935:118:3:-;5999:7;6022:20;6034:7;6022:11;:20::i;:::-;:25;;;6015:32;;5935:118;;;:::o;4631:211::-;4695:7;4736:1;4719:19;;:5;:19;;;;4711:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;4808:12;:19;4821:5;4808:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;4800:36;;4793:43;;4631:211;;;:::o;1650:94:10:-;1230:12;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1715:21:::1;1733:1;1715:9;:21::i;:::-;1650:94::o:0;1676:368:9:-;938:10;925:23;;:9;:23;;;917:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1776:15:::1;1754:19;;:37;1746:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;1842:14;1837:1;1821:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:35;;1813:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1921:4;1894:31;;:11;:23;1906:10;1894:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;1886:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;1996:5;1970:11;:23;1982:10;1970:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2008:24;2018:10;2030:1;2008:9;:24::i;:::-;1676:368::o:0;565:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8807:393:3:-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8912:14:3::1;8902:6;8886:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:40;;8878:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8991:1;8975:12;8966:6;:21;;;;:::i;:::-;:26;8949:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;9063:17;9092:12;9083:6;:21;;;;:::i;:::-;9063:41;;9116:7;9111:84;9133:9;9129:1;:13;;;9111:84;;;9158:29;9168:4;9174:12;9158:9;:29::i;:::-;9144:3;;;;;:::i;:::-;;;;9111:84;;;;8871:329;8807:393:::0;;:::o;999:87:10:-;1045:7;1072:6;;;;;;;;;;;1065:13;;999:87;:::o;2855:147:9:-;2936:21;;:::i;:::-;2976:20;2988:7;2976:11;:20::i;:::-;2969:27;;2855:147;;;:::o;2048:104::-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:5:9::1;2119:19;:27;;;;2048:104:::0;:::o;6267:98:3:-;6323:13;6352:7;6345:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6267:98;:::o;8081:274::-;8184:12;:10;:12::i;:::-;8172:24;;:8;:24;;;;8164:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8281:8;8236:18;:32;8255:12;:10;:12::i;:::-;8236:32;;;;;;;;;;;;;;;:42;8269:8;8236:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;8330:8;8301:48;;8316:12;:10;:12::i;:::-;8301:48;;;8340:8;8301:48;;;;;;:::i;:::-;;;;;;;;8081:274;;:::o;4955:70::-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5009:9:3::1;;;;;;;;;;;5008:10;4997:9;;:21;;;;;;;;;;;;;;;;;;4955:70::o:0;2260:195:9:-;1230:12:10;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2359:9:9::1;2354:96;2378:9;:16;2374:1;:20;2354:96;;;2438:4;2410:11;:25;2422:9;2432:1;2422:12;;;;;;;;:::i;:::-;;;;;;;;2410:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;2396:3;;;;;:::i;:::-;;;;2354:96;;;;2260:195:::0;:::o;9481:311:3:-;9618:28;9628:4;9634:2;9638:7;9618:9;:28::i;:::-;9669:48;9692:4;9698:2;9702:7;9711:5;9669:22;:48::i;:::-;9653:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;9481:311;;;;:::o;6432:564::-;6530:13;6559:9;;;;;;;;;;;6555:436;;6585:10;6578:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6555:436;6630:16;6638:7;6630;:16::i;:::-;6614:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;6743:1;6734:7;:10;;6718:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;6816:21;6840:10;:8;:10::i;:::-;6816:34;;6895:1;6877:7;6871:21;:25;:118;;;;;;;;;;;;;;;;;6932:7;6941:18;:7;:16;:18::i;:::-;6960:13;6915:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6871:118;6857:132;;;6432:564;;;;:::o;14470:43::-;;;;:::o;2742:107:9:-;2800:7;2823:20;2837:5;2823:13;:20::i;:::-;2816:27;;2742:107;;;:::o;13882:209:3:-;13967:12;;;;;;;;;;;13953:26;;:10;:26;;;13945:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14008:6;14003:83;14024:6;:13;14020:1;:17;14003:83;;;14073:5;14052:7;:18;14060:6;14067:1;14060:9;;;;;;;;:::i;:::-;;;;;;;;14052:18;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14039:3;;;;;:::i;:::-;;;;14003:83;;;;13882:209;:::o;8418:186::-;8540:4;8563:18;:25;8582:5;8563:25;;;;;;;;;;;;;;;:35;8589:8;8563:35;;;;;;;;;;;;;;;;;;;;;;;;;8556:42;;8418:186;;;;:::o;1899:192:10:-;1230:12;:10;:12::i;:::-;1219:23;;:7;:5;:7::i;:::-;:23;;;1211:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2008:1:::1;1988:22;;:8;:22;;;;1980:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2064:19;2074:8;2064:9;:19::i;:::-;1899:192:::0;:::o;601:98:1:-;654:7;681:10;674:17;;601:98;:::o;787:157:2:-;872:4;911:25;896:40;;;:11;:40;;;;889:47;;787:157;;;:::o;10031:105:3:-;10088:4;10118:12;;10108:7;:22;10101:29;;10031:105;;;:::o;14292:172::-;14416:2;14389:15;:24;14405:7;14389:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14450:7;14446:2;14430:28;;14439:5;14430:28;;;;;;;;;;;;14292:172;;;:::o;12083:1585::-;12180:35;12218:20;12230:7;12218:11;:20::i;:::-;12180:58;;12247:22;12289:13;:18;;;12273:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;12342:12;:10;:12::i;:::-;12318:36;;:20;12330:7;12318:11;:20::i;:::-;:36;;;12273:81;:142;;;;12365:50;12382:13;:18;;;12402:12;:10;:12::i;:::-;12365:16;:50::i;:::-;12273:142;12247:169;;12451:4;12431:24;;:7;:16;12439:7;12431:16;;;;;;;;;;;;;;;;;;;;;:24;;;;12423:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12497:17;12481:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;12629:4;12607:26;;:13;:18;;;:26;;;12591:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12718:1;12704:16;;:2;:16;;;;12696:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12771:43;12793:4;12799:2;12803:7;12812:1;12771:21;:43::i;:::-;12871:49;12888:1;12892:7;12901:13;:18;;;12871:8;:49::i;:::-;12959:1;12929:12;:18;12942:4;12929:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12995:1;12967:12;:16;12980:2;12967:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13026:43;;;;;;;;13041:2;13026:43;;;;;;13052:15;13026:43;;;;;13003:11;:20;13015:7;13003:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13297:19;13329:1;13319:7;:11;;;;:::i;:::-;13297:33;;13382:1;13341:43;;:11;:24;13353:11;13341:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;13337:236;;;13399:20;13407:11;13399:7;:20::i;:::-;13395:171;;;13459:97;;;;;;;;13486:13;:18;;;13459:97;;;;;;13517:13;:28;;;13459:97;;;;;13432:11;:24;13444:11;13432:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13395:171;13337:236;13605:7;13601:2;13586:27;;13595:4;13586:27;;;;;;;;;;;;13620:42;13641:4;13647:2;13651:7;13660:1;13620:20;:42::i;:::-;12173:1495;;;12083:1585;;;:::o;10142:98::-;10207:27;10217:2;10221:8;10207:27;;;;;;;;;;;;:9;:27::i;:::-;10142:98;;:::o;5275:606::-;5351:21;;:::i;:::-;5392:16;5400:7;5392;:16::i;:::-;5384:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5464:26;5512:12;5501:7;:23;5497:93;;5581:1;5566:12;5556:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;5535:47;;5497:93;5603:12;5618:7;5603:22;;5598:212;5635:18;5627:4;:26;5598:212;;5672:31;5706:11;:17;5718:4;5706:17;;;;;;;;;;;5672:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5762:1;5736:28;;:9;:14;;;:28;;;5732:71;;5784:9;5777:16;;;;;;;5732:71;5663:147;5655:6;;;;;:::i;:::-;;;;5598:212;;;;5818:57;;;;;;;;;;:::i;:::-;;;;;;;;5275:606;;;;:::o;2099:173:10:-;2155:16;2174:6;;;;;;;;;;;2155:25;;2200:8;2191:6;;:17;;;;;;;;;;;;;;;;;;2255:8;2224:40;;2245:8;2224:40;;;;;;;;;;;;2144:128;2099:173;:::o;16007:690:3:-;16144:4;16161:15;:2;:13;;;:15::i;:::-;16157:535;;;16216:2;16200:36;;;16237:12;:10;:12::i;:::-;16251:4;16257:7;16266:5;16200:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16187:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16448:1;16431:6;:13;:18;16427:215;;;16464:61;;;;;;;;;;:::i;:::-;;;;;;;;16427:215;16610:6;16604:13;16595:6;16591:2;16587:15;16580:38;16187:464;16332:45;;;16322:55;;;:6;:55;;;;16315:62;;;;;16157:535;16680:4;16673:11;;16007:690;;;;;;;:::o;2519:108:9:-;2579:13;2608;2601:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:108;:::o;288:723:12:-;344:13;574:1;565:5;:10;561:53;;;592:10;;;;;;;;;;;;;;;;;;;;;561:53;624:12;639:5;624:20;;655:14;680:78;695:1;687:4;:9;680:78;;713:8;;;;;:::i;:::-;;;;744:2;736:10;;;;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:39;;818:154;834:1;825:5;:10;818:154;;862:1;852:11;;;;;:::i;:::-;;;929:2;921:5;:10;;;;:::i;:::-;908:2;:24;;;;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;958:2;949:11;;;;;:::i;:::-;;;818:154;;;996:6;982:21;;;;;288:723;;;;:::o;5029:240:3:-;5090:7;5139:1;5122:19;;:5;:19;;;;5106:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;5230:12;:19;5243:5;5230:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;5222:41;;5215:48;;5029:240;;;:::o;17159:141::-;;;;;:::o;17686:140::-;;;;;:::o;10579:1272::-;10684:20;10707:12;;10684:35;;10748:1;10734:16;;:2;:16;;;;10726:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10925:21;10933:12;10925:7;:21::i;:::-;10924:22;10916:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11007:12;10995:8;:24;;10987:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11067:61;11097:1;11101:2;11105:12;11119:8;11067:21;:61::i;:::-;11137:30;11170:12;:16;11183:2;11170:16;;;;;;;;;;;;;;;11137:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11212:119;;;;;;;;11262:8;11232:11;:19;;;:39;;;;:::i;:::-;11212:119;;;;;;11315:8;11280:11;:24;;;:44;;;;:::i;:::-;11212:119;;;;;11193:12;:16;11206:2;11193:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11366:43;;;;;;;;11381:2;11366:43;;;;;;11392:15;11366:43;;;;;11338:11;:25;11350:12;11338:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11418:20;11441:12;11418:35;;11467:9;11462:281;11486:8;11482:1;:12;11462:281;;;11540:12;11536:2;11515:38;;11532:1;11515:38;;;;;;;;;;;;11580:59;11611:1;11615:2;11619:12;11633:5;11580:22;:59::i;:::-;11562:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;11721:14;;;;;:::i;:::-;;;;11496:3;;;;;:::i;:::-;;;;11462:281;;;;11766:12;11751;:27;;;;11785:60;11814:1;11818:2;11822:12;11836:8;11785:20;:60::i;:::-;10677:1174;;;10579:1272;;;:::o;743:387:0:-;803:4;1011:12;1078:7;1066:20;1058:28;;1121:1;1114:4;:8;1107:15;;;743:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:13:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2075:370::-;2146:5;2195:3;2188:4;2180:6;2176:17;2172:27;2162:122;;2203:79;;:::i;:::-;2162:122;2320:6;2307:20;2345:94;2435:3;2427:6;2420:4;2412:6;2408:17;2345:94;:::i;:::-;2336:103;;2152:293;2075:370;;;;:::o;2468:::-;2539:5;2588:3;2581:4;2573:6;2569:17;2565:27;2555:122;;2596:79;;:::i;:::-;2555:122;2713:6;2700:20;2738:94;2828:3;2820:6;2813:4;2805:6;2801:17;2738:94;:::i;:::-;2729:103;;2545:293;2468:370;;;;:::o;2844:133::-;2887:5;2925:6;2912:20;2903:29;;2941:30;2965:5;2941:30;:::i;:::-;2844:133;;;;:::o;2983:137::-;3028:5;3066:6;3053:20;3044:29;;3082:32;3108:5;3082:32;:::i;:::-;2983:137;;;;:::o;3126:141::-;3182:5;3213:6;3207:13;3198:22;;3229:32;3255:5;3229:32;:::i;:::-;3126:141;;;;:::o;3286:338::-;3341:5;3390:3;3383:4;3375:6;3371:17;3367:27;3357:122;;3398:79;;:::i;:::-;3357:122;3515:6;3502:20;3540:78;3614:3;3606:6;3599:4;3591:6;3587:17;3540:78;:::i;:::-;3531:87;;3347:277;3286:338;;;;:::o;3644:553::-;3702:8;3712:6;3762:3;3755:4;3747:6;3743:17;3739:27;3729:122;;3770:79;;:::i;:::-;3729:122;3883:6;3870:20;3860:30;;3913:18;3905:6;3902:30;3899:117;;;3935:79;;:::i;:::-;3899:117;4049:4;4041:6;4037:17;4025:29;;4103:3;4095:4;4087:6;4083:17;4073:8;4069:32;4066:41;4063:128;;;4110:79;;:::i;:::-;4063:128;3644:553;;;;;:::o;4203:139::-;4249:5;4287:6;4274:20;4265:29;;4303:33;4330:5;4303:33;:::i;:::-;4203:139;;;;:::o;4348:135::-;4392:5;4430:6;4417:20;4408:29;;4446:31;4471:5;4446:31;:::i;:::-;4348:135;;;;:::o;4489:329::-;4548:6;4597:2;4585:9;4576:7;4572:23;4568:32;4565:119;;;4603:79;;:::i;:::-;4565:119;4723:1;4748:53;4793:7;4784:6;4773:9;4769:22;4748:53;:::i;:::-;4738:63;;4694:117;4489:329;;;;:::o;4824:474::-;4892:6;4900;4949:2;4937:9;4928:7;4924:23;4920:32;4917:119;;;4955:79;;:::i;:::-;4917:119;5075:1;5100:53;5145:7;5136:6;5125:9;5121:22;5100:53;:::i;:::-;5090:63;;5046:117;5202:2;5228:53;5273:7;5264:6;5253:9;5249:22;5228:53;:::i;:::-;5218:63;;5173:118;4824:474;;;;;:::o;5304:619::-;5381:6;5389;5397;5446:2;5434:9;5425:7;5421:23;5417:32;5414:119;;;5452:79;;:::i;:::-;5414:119;5572:1;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5543:117;5699:2;5725:53;5770:7;5761:6;5750:9;5746:22;5725:53;:::i;:::-;5715:63;;5670:118;5827:2;5853:53;5898:7;5889:6;5878:9;5874:22;5853:53;:::i;:::-;5843:63;;5798:118;5304:619;;;;;:::o;5929:943::-;6024:6;6032;6040;6048;6097:3;6085:9;6076:7;6072:23;6068:33;6065:120;;;6104:79;;:::i;:::-;6065:120;6224:1;6249:53;6294:7;6285:6;6274:9;6270:22;6249:53;:::i;:::-;6239:63;;6195:117;6351:2;6377:53;6422:7;6413:6;6402:9;6398:22;6377:53;:::i;:::-;6367:63;;6322:118;6479:2;6505:53;6550:7;6541:6;6530:9;6526:22;6505:53;:::i;:::-;6495:63;;6450:118;6635:2;6624:9;6620:18;6607:32;6666:18;6658:6;6655:30;6652:117;;;6688:79;;:::i;:::-;6652:117;6793:62;6847:7;6838:6;6827:9;6823:22;6793:62;:::i;:::-;6783:72;;6578:287;5929:943;;;;;;;:::o;6878:468::-;6943:6;6951;7000:2;6988:9;6979:7;6975:23;6971:32;6968:119;;;7006:79;;:::i;:::-;6968:119;7126:1;7151:53;7196:7;7187:6;7176:9;7172:22;7151:53;:::i;:::-;7141:63;;7097:117;7253:2;7279:50;7321:7;7312:6;7301:9;7297:22;7279:50;:::i;:::-;7269:60;;7224:115;6878:468;;;;;:::o;7352:474::-;7420:6;7428;7477:2;7465:9;7456:7;7452:23;7448:32;7445:119;;;7483:79;;:::i;:::-;7445:119;7603:1;7628:53;7673:7;7664:6;7653:9;7649:22;7628:53;:::i;:::-;7618:63;;7574:117;7730:2;7756:53;7801:7;7792:6;7781:9;7777:22;7756:53;:::i;:::-;7746:63;;7701:118;7352:474;;;;;:::o;7832:539::-;7916:6;7965:2;7953:9;7944:7;7940:23;7936:32;7933:119;;;7971:79;;:::i;:::-;7933:119;8119:1;8108:9;8104:17;8091:31;8149:18;8141:6;8138:30;8135:117;;;8171:79;;:::i;:::-;8135:117;8276:78;8346:7;8337:6;8326:9;8322:22;8276:78;:::i;:::-;8266:88;;8062:302;7832:539;;;;:::o;8377:::-;8461:6;8510:2;8498:9;8489:7;8485:23;8481:32;8478:119;;;8516:79;;:::i;:::-;8478:119;8664:1;8653:9;8649:17;8636:31;8694:18;8686:6;8683:30;8680:117;;;8716:79;;:::i;:::-;8680:117;8821:78;8891:7;8882:6;8871:9;8867:22;8821:78;:::i;:::-;8811:88;;8607:302;8377:539;;;;:::o;8922:327::-;8980:6;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9155:1;9180:52;9224:7;9215:6;9204:9;9200:22;9180:52;:::i;:::-;9170:62;;9126:116;8922:327;;;;:::o;9255:349::-;9324:6;9373:2;9361:9;9352:7;9348:23;9344:32;9341:119;;;9379:79;;:::i;:::-;9341:119;9499:1;9524:63;9579:7;9570:6;9559:9;9555:22;9524:63;:::i;:::-;9514:73;;9470:127;9255:349;;;;:::o;9610:529::-;9681:6;9689;9738:2;9726:9;9717:7;9713:23;9709:32;9706:119;;;9744:79;;:::i;:::-;9706:119;9892:1;9881:9;9877:17;9864:31;9922:18;9914:6;9911:30;9908:117;;;9944:79;;:::i;:::-;9908:117;10057:65;10114:7;10105:6;10094:9;10090:22;10057:65;:::i;:::-;10039:83;;;;9835:297;9610:529;;;;;:::o;10145:329::-;10204:6;10253:2;10241:9;10232:7;10228:23;10224:32;10221:119;;;10259:79;;:::i;:::-;10221:119;10379:1;10404:53;10449:7;10440:6;10429:9;10425:22;10404:53;:::i;:::-;10394:63;;10350:117;10145:329;;;;:::o;10480:325::-;10537:6;10586:2;10574:9;10565:7;10561:23;10557:32;10554:119;;;10592:79;;:::i;:::-;10554:119;10712:1;10737:51;10780:7;10771:6;10760:9;10756:22;10737:51;:::i;:::-;10727:61;;10683:115;10480:325;;;;:::o;10811:108::-;10888:24;10906:5;10888:24;:::i;:::-;10883:3;10876:37;10811:108;;:::o;10925:118::-;11012:24;11030:5;11012:24;:::i;:::-;11007:3;11000:37;10925:118;;:::o;11049:109::-;11130:21;11145:5;11130:21;:::i;:::-;11125:3;11118:34;11049:109;;:::o;11164:360::-;11250:3;11278:38;11310:5;11278:38;:::i;:::-;11332:70;11395:6;11390:3;11332:70;:::i;:::-;11325:77;;11411:52;11456:6;11451:3;11444:4;11437:5;11433:16;11411:52;:::i;:::-;11488:29;11510:6;11488:29;:::i;:::-;11483:3;11479:39;11472:46;;11254:270;11164:360;;;;:::o;11530:364::-;11618:3;11646:39;11679:5;11646:39;:::i;:::-;11701:71;11765:6;11760:3;11701:71;:::i;:::-;11694:78;;11781:52;11826:6;11821:3;11814:4;11807:5;11803:16;11781:52;:::i;:::-;11858:29;11880:6;11858:29;:::i;:::-;11853:3;11849:39;11842:46;;11622:272;11530:364;;;;:::o;11900:377::-;12006:3;12034:39;12067:5;12034:39;:::i;:::-;12089:89;12171:6;12166:3;12089:89;:::i;:::-;12082:96;;12187:52;12232:6;12227:3;12220:4;12213:5;12209:16;12187:52;:::i;:::-;12264:6;12259:3;12255:16;12248:23;;12010:267;11900:377;;;;:::o;12307:845::-;12410:3;12447:5;12441:12;12476:36;12502:9;12476:36;:::i;:::-;12528:89;12610:6;12605:3;12528:89;:::i;:::-;12521:96;;12648:1;12637:9;12633:17;12664:1;12659:137;;;;12810:1;12805:341;;;;12626:520;;12659:137;12743:4;12739:9;12728;12724:25;12719:3;12712:38;12779:6;12774:3;12770:16;12763:23;;12659:137;;12805:341;12872:38;12904:5;12872:38;:::i;:::-;12932:1;12946:154;12960:6;12957:1;12954:13;12946:154;;;13034:7;13028:14;13024:1;13019:3;13015:11;13008:35;13084:1;13075:7;13071:15;13060:26;;12982:4;12979:1;12975:12;12970:17;;12946:154;;;13129:6;13124:3;13120:16;13113:23;;12812:334;;12626:520;;12414:738;;12307:845;;;;:::o;13158:366::-;13300:3;13321:67;13385:2;13380:3;13321:67;:::i;:::-;13314:74;;13397:93;13486:3;13397:93;:::i;:::-;13515:2;13510:3;13506:12;13499:19;;13158:366;;;:::o;13530:::-;13672:3;13693:67;13757:2;13752:3;13693:67;:::i;:::-;13686:74;;13769:93;13858:3;13769:93;:::i;:::-;13887:2;13882:3;13878:12;13871:19;;13530:366;;;:::o;13902:::-;14044:3;14065:67;14129:2;14124:3;14065:67;:::i;:::-;14058:74;;14141:93;14230:3;14141:93;:::i;:::-;14259:2;14254:3;14250:12;14243:19;;13902:366;;;:::o;14274:::-;14416:3;14437:67;14501:2;14496:3;14437:67;:::i;:::-;14430:74;;14513:93;14602:3;14513:93;:::i;:::-;14631:2;14626:3;14622:12;14615:19;;14274:366;;;:::o;14646:::-;14788:3;14809:67;14873:2;14868:3;14809:67;:::i;:::-;14802:74;;14885:93;14974:3;14885:93;:::i;:::-;15003:2;14998:3;14994:12;14987:19;;14646:366;;;:::o;15018:::-;15160:3;15181:67;15245:2;15240:3;15181:67;:::i;:::-;15174:74;;15257:93;15346:3;15257:93;:::i;:::-;15375:2;15370:3;15366:12;15359:19;;15018:366;;;:::o;15390:::-;15532:3;15553:67;15617:2;15612:3;15553:67;:::i;:::-;15546:74;;15629:93;15718:3;15629:93;:::i;:::-;15747:2;15742:3;15738:12;15731:19;;15390:366;;;:::o;15762:::-;15904:3;15925:67;15989:2;15984:3;15925:67;:::i;:::-;15918:74;;16001:93;16090:3;16001:93;:::i;:::-;16119:2;16114:3;16110:12;16103:19;;15762:366;;;:::o;16134:::-;16276:3;16297:67;16361:2;16356:3;16297:67;:::i;:::-;16290:74;;16373:93;16462:3;16373:93;:::i;:::-;16491:2;16486:3;16482:12;16475:19;;16134:366;;;:::o;16506:::-;16648:3;16669:67;16733:2;16728:3;16669:67;:::i;:::-;16662:74;;16745:93;16834:3;16745:93;:::i;:::-;16863:2;16858:3;16854:12;16847:19;;16506:366;;;:::o;16878:::-;17020:3;17041:67;17105:2;17100:3;17041:67;:::i;:::-;17034:74;;17117:93;17206:3;17117:93;:::i;:::-;17235:2;17230:3;17226:12;17219:19;;16878:366;;;:::o;17250:::-;17392:3;17413:67;17477:2;17472:3;17413:67;:::i;:::-;17406:74;;17489:93;17578:3;17489:93;:::i;:::-;17607:2;17602:3;17598:12;17591:19;;17250:366;;;:::o;17622:::-;17764:3;17785:67;17849:2;17844:3;17785:67;:::i;:::-;17778:74;;17861:93;17950:3;17861:93;:::i;:::-;17979:2;17974:3;17970:12;17963:19;;17622:366;;;:::o;17994:::-;18136:3;18157:67;18221:2;18216:3;18157:67;:::i;:::-;18150:74;;18233:93;18322:3;18233:93;:::i;:::-;18351:2;18346:3;18342:12;18335:19;;17994:366;;;:::o;18366:::-;18508:3;18529:67;18593:2;18588:3;18529:67;:::i;:::-;18522:74;;18605:93;18694:3;18605:93;:::i;:::-;18723:2;18718:3;18714:12;18707:19;;18366:366;;;:::o;18738:::-;18880:3;18901:67;18965:2;18960:3;18901:67;:::i;:::-;18894:74;;18977:93;19066:3;18977:93;:::i;:::-;19095:2;19090:3;19086:12;19079:19;;18738:366;;;:::o;19110:::-;19252:3;19273:67;19337:2;19332:3;19273:67;:::i;:::-;19266:74;;19349:93;19438:3;19349:93;:::i;:::-;19467:2;19462:3;19458:12;19451:19;;19110:366;;;:::o;19482:::-;19624:3;19645:67;19709:2;19704:3;19645:67;:::i;:::-;19638:74;;19721:93;19810:3;19721:93;:::i;:::-;19839:2;19834:3;19830:12;19823:19;;19482:366;;;:::o;19854:::-;19996:3;20017:67;20081:2;20076:3;20017:67;:::i;:::-;20010:74;;20093:93;20182:3;20093:93;:::i;:::-;20211:2;20206:3;20202:12;20195:19;;19854:366;;;:::o;20226:::-;20368:3;20389:67;20453:2;20448:3;20389:67;:::i;:::-;20382:74;;20465:93;20554:3;20465:93;:::i;:::-;20583:2;20578:3;20574:12;20567:19;;20226:366;;;:::o;20598:::-;20740:3;20761:67;20825:2;20820:3;20761:67;:::i;:::-;20754:74;;20837:93;20926:3;20837:93;:::i;:::-;20955:2;20950:3;20946:12;20939:19;;20598:366;;;:::o;20970:::-;21112:3;21133:67;21197:2;21192:3;21133:67;:::i;:::-;21126:74;;21209:93;21298:3;21209:93;:::i;:::-;21327:2;21322:3;21318:12;21311:19;;20970:366;;;:::o;21342:::-;21484:3;21505:67;21569:2;21564:3;21505:67;:::i;:::-;21498:74;;21581:93;21670:3;21581:93;:::i;:::-;21699:2;21694:3;21690:12;21683:19;;21342:366;;;:::o;21714:::-;21856:3;21877:67;21941:2;21936:3;21877:67;:::i;:::-;21870:74;;21953:93;22042:3;21953:93;:::i;:::-;22071:2;22066:3;22062:12;22055:19;;21714:366;;;:::o;22086:::-;22228:3;22249:67;22313:2;22308:3;22249:67;:::i;:::-;22242:74;;22325:93;22414:3;22325:93;:::i;:::-;22443:2;22438:3;22434:12;22427:19;;22086:366;;;:::o;22458:::-;22600:3;22621:67;22685:2;22680:3;22621:67;:::i;:::-;22614:74;;22697:93;22786:3;22697:93;:::i;:::-;22815:2;22810:3;22806:12;22799:19;;22458:366;;;:::o;22830:::-;22972:3;22993:67;23057:2;23052:3;22993:67;:::i;:::-;22986:74;;23069:93;23158:3;23069:93;:::i;:::-;23187:2;23182:3;23178:12;23171:19;;22830:366;;;:::o;23202:::-;23344:3;23365:67;23429:2;23424:3;23365:67;:::i;:::-;23358:74;;23441:93;23530:3;23441:93;:::i;:::-;23559:2;23554:3;23550:12;23543:19;;23202:366;;;:::o;23574:::-;23716:3;23737:67;23801:2;23796:3;23737:67;:::i;:::-;23730:74;;23813:93;23902:3;23813:93;:::i;:::-;23931:2;23926:3;23922:12;23915:19;;23574:366;;;:::o;23946:::-;24088:3;24109:67;24173:2;24168:3;24109:67;:::i;:::-;24102:74;;24185:93;24274:3;24185:93;:::i;:::-;24303:2;24298:3;24294:12;24287:19;;23946:366;;;:::o;24388:527::-;24547:4;24542:3;24538:14;24634:4;24627:5;24623:16;24617:23;24653:63;24710:4;24705:3;24701:14;24687:12;24653:63;:::i;:::-;24562:164;24818:4;24811:5;24807:16;24801:23;24837:61;24892:4;24887:3;24883:14;24869:12;24837:61;:::i;:::-;24736:172;24516:399;24388:527;;:::o;24921:118::-;25008:24;25026:5;25008:24;:::i;:::-;25003:3;24996:37;24921:118;;:::o;25045:105::-;25120:23;25137:5;25120:23;:::i;:::-;25115:3;25108:36;25045:105;;:::o;25156:589::-;25381:3;25403:95;25494:3;25485:6;25403:95;:::i;:::-;25396:102;;25515:95;25606:3;25597:6;25515:95;:::i;:::-;25508:102;;25627:92;25715:3;25706:6;25627:92;:::i;:::-;25620:99;;25736:3;25729:10;;25156:589;;;;;;:::o;25751:222::-;25844:4;25882:2;25871:9;25867:18;25859:26;;25895:71;25963:1;25952:9;25948:17;25939:6;25895:71;:::i;:::-;25751:222;;;;:::o;25979:640::-;26174:4;26212:3;26201:9;26197:19;26189:27;;26226:71;26294:1;26283:9;26279:17;26270:6;26226:71;:::i;:::-;26307:72;26375:2;26364:9;26360:18;26351:6;26307:72;:::i;:::-;26389;26457:2;26446:9;26442:18;26433:6;26389:72;:::i;:::-;26508:9;26502:4;26498:20;26493:2;26482:9;26478:18;26471:48;26536:76;26607:4;26598:6;26536:76;:::i;:::-;26528:84;;25979:640;;;;;;;:::o;26625:210::-;26712:4;26750:2;26739:9;26735:18;26727:26;;26763:65;26825:1;26814:9;26810:17;26801:6;26763:65;:::i;:::-;26625:210;;;;:::o;26841:313::-;26954:4;26992:2;26981:9;26977:18;26969:26;;27041:9;27035:4;27031:20;27027:1;27016:9;27012:17;27005:47;27069:78;27142:4;27133:6;27069:78;:::i;:::-;27061:86;;26841:313;;;;:::o;27160:419::-;27326:4;27364:2;27353:9;27349:18;27341:26;;27413:9;27407:4;27403:20;27399:1;27388:9;27384:17;27377:47;27441:131;27567:4;27441:131;:::i;:::-;27433:139;;27160:419;;;:::o;27585:::-;27751:4;27789:2;27778:9;27774:18;27766:26;;27838:9;27832:4;27828:20;27824:1;27813:9;27809:17;27802:47;27866:131;27992:4;27866:131;:::i;:::-;27858:139;;27585:419;;;:::o;28010:::-;28176:4;28214:2;28203:9;28199:18;28191:26;;28263:9;28257:4;28253:20;28249:1;28238:9;28234:17;28227:47;28291:131;28417:4;28291:131;:::i;:::-;28283:139;;28010:419;;;:::o;28435:::-;28601:4;28639:2;28628:9;28624:18;28616:26;;28688:9;28682:4;28678:20;28674:1;28663:9;28659:17;28652:47;28716:131;28842:4;28716:131;:::i;:::-;28708:139;;28435:419;;;:::o;28860:::-;29026:4;29064:2;29053:9;29049:18;29041:26;;29113:9;29107:4;29103:20;29099:1;29088:9;29084:17;29077:47;29141:131;29267:4;29141:131;:::i;:::-;29133:139;;28860:419;;;:::o;29285:::-;29451:4;29489:2;29478:9;29474:18;29466:26;;29538:9;29532:4;29528:20;29524:1;29513:9;29509:17;29502:47;29566:131;29692:4;29566:131;:::i;:::-;29558:139;;29285:419;;;:::o;29710:::-;29876:4;29914:2;29903:9;29899:18;29891:26;;29963:9;29957:4;29953:20;29949:1;29938:9;29934:17;29927:47;29991:131;30117:4;29991:131;:::i;:::-;29983:139;;29710:419;;;:::o;30135:::-;30301:4;30339:2;30328:9;30324:18;30316:26;;30388:9;30382:4;30378:20;30374:1;30363:9;30359:17;30352:47;30416:131;30542:4;30416:131;:::i;:::-;30408:139;;30135:419;;;:::o;30560:::-;30726:4;30764:2;30753:9;30749:18;30741:26;;30813:9;30807:4;30803:20;30799:1;30788:9;30784:17;30777:47;30841:131;30967:4;30841:131;:::i;:::-;30833:139;;30560:419;;;:::o;30985:::-;31151:4;31189:2;31178:9;31174:18;31166:26;;31238:9;31232:4;31228:20;31224:1;31213:9;31209:17;31202:47;31266:131;31392:4;31266:131;:::i;:::-;31258:139;;30985:419;;;:::o;31410:::-;31576:4;31614:2;31603:9;31599:18;31591:26;;31663:9;31657:4;31653:20;31649:1;31638:9;31634:17;31627:47;31691:131;31817:4;31691:131;:::i;:::-;31683:139;;31410:419;;;:::o;31835:::-;32001:4;32039:2;32028:9;32024:18;32016:26;;32088:9;32082:4;32078:20;32074:1;32063:9;32059:17;32052:47;32116:131;32242:4;32116:131;:::i;:::-;32108:139;;31835:419;;;:::o;32260:::-;32426:4;32464:2;32453:9;32449:18;32441:26;;32513:9;32507:4;32503:20;32499:1;32488:9;32484:17;32477:47;32541:131;32667:4;32541:131;:::i;:::-;32533:139;;32260:419;;;:::o;32685:::-;32851:4;32889:2;32878:9;32874:18;32866:26;;32938:9;32932:4;32928:20;32924:1;32913:9;32909:17;32902:47;32966:131;33092:4;32966:131;:::i;:::-;32958:139;;32685:419;;;:::o;33110:::-;33276:4;33314:2;33303:9;33299:18;33291:26;;33363:9;33357:4;33353:20;33349:1;33338:9;33334:17;33327:47;33391:131;33517:4;33391:131;:::i;:::-;33383:139;;33110:419;;;:::o;33535:::-;33701:4;33739:2;33728:9;33724:18;33716:26;;33788:9;33782:4;33778:20;33774:1;33763:9;33759:17;33752:47;33816:131;33942:4;33816:131;:::i;:::-;33808:139;;33535:419;;;:::o;33960:::-;34126:4;34164:2;34153:9;34149:18;34141:26;;34213:9;34207:4;34203:20;34199:1;34188:9;34184:17;34177:47;34241:131;34367:4;34241:131;:::i;:::-;34233:139;;33960:419;;;:::o;34385:::-;34551:4;34589:2;34578:9;34574:18;34566:26;;34638:9;34632:4;34628:20;34624:1;34613:9;34609:17;34602:47;34666:131;34792:4;34666:131;:::i;:::-;34658:139;;34385:419;;;:::o;34810:::-;34976:4;35014:2;35003:9;34999:18;34991:26;;35063:9;35057:4;35053:20;35049:1;35038:9;35034:17;35027:47;35091:131;35217:4;35091:131;:::i;:::-;35083:139;;34810:419;;;:::o;35235:::-;35401:4;35439:2;35428:9;35424:18;35416:26;;35488:9;35482:4;35478:20;35474:1;35463:9;35459:17;35452:47;35516:131;35642:4;35516:131;:::i;:::-;35508:139;;35235:419;;;:::o;35660:::-;35826:4;35864:2;35853:9;35849:18;35841:26;;35913:9;35907:4;35903:20;35899:1;35888:9;35884:17;35877:47;35941:131;36067:4;35941:131;:::i;:::-;35933:139;;35660:419;;;:::o;36085:::-;36251:4;36289:2;36278:9;36274:18;36266:26;;36338:9;36332:4;36328:20;36324:1;36313:9;36309:17;36302:47;36366:131;36492:4;36366:131;:::i;:::-;36358:139;;36085:419;;;:::o;36510:::-;36676:4;36714:2;36703:9;36699:18;36691:26;;36763:9;36757:4;36753:20;36749:1;36738:9;36734:17;36727:47;36791:131;36917:4;36791:131;:::i;:::-;36783:139;;36510:419;;;:::o;36935:::-;37101:4;37139:2;37128:9;37124:18;37116:26;;37188:9;37182:4;37178:20;37174:1;37163:9;37159:17;37152:47;37216:131;37342:4;37216:131;:::i;:::-;37208:139;;36935:419;;;:::o;37360:::-;37526:4;37564:2;37553:9;37549:18;37541:26;;37613:9;37607:4;37603:20;37599:1;37588:9;37584:17;37577:47;37641:131;37767:4;37641:131;:::i;:::-;37633:139;;37360:419;;;:::o;37785:::-;37951:4;37989:2;37978:9;37974:18;37966:26;;38038:9;38032:4;38028:20;38024:1;38013:9;38009:17;38002:47;38066:131;38192:4;38066:131;:::i;:::-;38058:139;;37785:419;;;:::o;38210:::-;38376:4;38414:2;38403:9;38399:18;38391:26;;38463:9;38457:4;38453:20;38449:1;38438:9;38434:17;38427:47;38491:131;38617:4;38491:131;:::i;:::-;38483:139;;38210:419;;;:::o;38635:::-;38801:4;38839:2;38828:9;38824:18;38816:26;;38888:9;38882:4;38878:20;38874:1;38863:9;38859:17;38852:47;38916:131;39042:4;38916:131;:::i;:::-;38908:139;;38635:419;;;:::o;39060:::-;39226:4;39264:2;39253:9;39249:18;39241:26;;39313:9;39307:4;39303:20;39299:1;39288:9;39284:17;39277:47;39341:131;39467:4;39341:131;:::i;:::-;39333:139;;39060:419;;;:::o;39485:::-;39651:4;39689:2;39678:9;39674:18;39666:26;;39738:9;39732:4;39728:20;39724:1;39713:9;39709:17;39702:47;39766:131;39892:4;39766:131;:::i;:::-;39758:139;;39485:419;;;:::o;39910:346::-;40065:4;40103:2;40092:9;40088:18;40080:26;;40116:133;40246:1;40235:9;40231:17;40222:6;40116:133;:::i;:::-;39910:346;;;;:::o;40262:222::-;40355:4;40393:2;40382:9;40378:18;40370:26;;40406:71;40474:1;40463:9;40459:17;40450:6;40406:71;:::i;:::-;40262:222;;;;:::o;40490:129::-;40524:6;40551:20;;:::i;:::-;40541:30;;40580:33;40608:4;40600:6;40580:33;:::i;:::-;40490:129;;;:::o;40625:75::-;40658:6;40691:2;40685:9;40675:19;;40625:75;:::o;40706:311::-;40783:4;40873:18;40865:6;40862:30;40859:56;;;40895:18;;:::i;:::-;40859:56;40945:4;40937:6;40933:17;40925:25;;41005:4;40999;40995:15;40987:23;;40706:311;;;:::o;41023:::-;41100:4;41190:18;41182:6;41179:30;41176:56;;;41212:18;;:::i;:::-;41176:56;41262:4;41254:6;41250:17;41242:25;;41322:4;41316;41312:15;41304:23;;41023:311;;;:::o;41340:307::-;41401:4;41491:18;41483:6;41480:30;41477:56;;;41513:18;;:::i;:::-;41477:56;41551:29;41573:6;41551:29;:::i;:::-;41543:37;;41635:4;41629;41625:15;41617:23;;41340:307;;;:::o;41653:141::-;41702:4;41725:3;41717:11;;41748:3;41745:1;41738:14;41782:4;41779:1;41769:18;41761:26;;41653:141;;;:::o;41800:98::-;41851:6;41885:5;41879:12;41869:22;;41800:98;;;:::o;41904:99::-;41956:6;41990:5;41984:12;41974:22;;41904:99;;;:::o;42009:168::-;42092:11;42126:6;42121:3;42114:19;42166:4;42161:3;42157:14;42142:29;;42009:168;;;;:::o;42183:169::-;42267:11;42301:6;42296:3;42289:19;42341:4;42336:3;42332:14;42317:29;;42183:169;;;;:::o;42358:148::-;42460:11;42497:3;42482:18;;42358:148;;;;:::o;42512:273::-;42552:3;42571:20;42589:1;42571:20;:::i;:::-;42566:25;;42605:20;42623:1;42605:20;:::i;:::-;42600:25;;42727:1;42691:34;42687:42;42684:1;42681:49;42678:75;;;42733:18;;:::i;:::-;42678:75;42777:1;42774;42770:9;42763:16;;42512:273;;;;:::o;42791:305::-;42831:3;42850:20;42868:1;42850:20;:::i;:::-;42845:25;;42884:20;42902:1;42884:20;:::i;:::-;42879:25;;43038:1;42970:66;42966:74;42963:1;42960:81;42957:107;;;43044:18;;:::i;:::-;42957:107;43088:1;43085;43081:9;43074:16;;42791:305;;;;:::o;43102:185::-;43142:1;43159:20;43177:1;43159:20;:::i;:::-;43154:25;;43193:20;43211:1;43193:20;:::i;:::-;43188:25;;43232:1;43222:35;;43237:18;;:::i;:::-;43222:35;43279:1;43276;43272:9;43267:14;;43102:185;;;;:::o;43293:191::-;43333:4;43353:20;43371:1;43353:20;:::i;:::-;43348:25;;43387:20;43405:1;43387:20;:::i;:::-;43382:25;;43426:1;43423;43420:8;43417:34;;;43431:18;;:::i;:::-;43417:34;43476:1;43473;43469:9;43461:17;;43293:191;;;;:::o;43490:::-;43530:4;43550:20;43568:1;43550:20;:::i;:::-;43545:25;;43584:20;43602:1;43584:20;:::i;:::-;43579:25;;43623:1;43620;43617:8;43614:34;;;43628:18;;:::i;:::-;43614:34;43673:1;43670;43666:9;43658:17;;43490:191;;;;:::o;43687:96::-;43724:7;43753:24;43771:5;43753:24;:::i;:::-;43742:35;;43687:96;;;:::o;43789:90::-;43823:7;43866:5;43859:13;43852:21;43841:32;;43789:90;;;:::o;43885:149::-;43921:7;43961:66;43954:5;43950:78;43939:89;;43885:149;;;:::o;44040:118::-;44077:7;44117:34;44110:5;44106:46;44095:57;;44040:118;;;:::o;44164:126::-;44201:7;44241:42;44234:5;44230:54;44219:65;;44164:126;;;:::o;44296:77::-;44333:7;44362:5;44351:16;;44296:77;;;:::o;44379:101::-;44415:7;44455:18;44448:5;44444:30;44433:41;;44379:101;;;:::o;44486:86::-;44521:7;44561:4;44554:5;44550:16;44539:27;;44486:86;;;:::o;44578:154::-;44662:6;44657:3;44652;44639:30;44724:1;44715:6;44710:3;44706:16;44699:27;44578:154;;;:::o;44738:307::-;44806:1;44816:113;44830:6;44827:1;44824:13;44816:113;;;44915:1;44910:3;44906:11;44900:18;44896:1;44891:3;44887:11;44880:39;44852:2;44849:1;44845:10;44840:15;;44816:113;;;44947:6;44944:1;44941:13;44938:101;;;45027:1;45018:6;45013:3;45009:16;45002:27;44938:101;44787:258;44738:307;;;:::o;45051:171::-;45090:3;45113:24;45131:5;45113:24;:::i;:::-;45104:33;;45159:4;45152:5;45149:15;45146:41;;;45167:18;;:::i;:::-;45146:41;45214:1;45207:5;45203:13;45196:20;;45051:171;;;:::o;45228:320::-;45272:6;45309:1;45303:4;45299:12;45289:22;;45356:1;45350:4;45346:12;45377:18;45367:81;;45433:4;45425:6;45421:17;45411:27;;45367:81;45495:2;45487:6;45484:14;45464:18;45461:38;45458:84;;;45514:18;;:::i;:::-;45458:84;45279:269;45228:320;;;:::o;45554:281::-;45637:27;45659:4;45637:27;:::i;:::-;45629:6;45625:40;45767:6;45755:10;45752:22;45731:18;45719:10;45716:34;45713:62;45710:88;;;45778:18;;:::i;:::-;45710:88;45818:10;45814:2;45807:22;45597:238;45554:281;;:::o;45841:233::-;45880:3;45903:24;45921:5;45903:24;:::i;:::-;45894:33;;45949:66;45942:5;45939:77;45936:103;;;46019:18;;:::i;:::-;45936:103;46066:1;46059:5;46055:13;46048:20;;45841:233;;;:::o;46080:167::-;46117:3;46140:22;46156:5;46140:22;:::i;:::-;46131:31;;46184:4;46177:5;46174:15;46171:41;;;46192:18;;:::i;:::-;46171:41;46239:1;46232:5;46228:13;46221:20;;46080:167;;;:::o;46253:176::-;46285:1;46302:20;46320:1;46302:20;:::i;:::-;46297:25;;46336:20;46354:1;46336:20;:::i;:::-;46331:25;;46375:1;46365:35;;46380:18;;:::i;:::-;46365:35;46421:1;46418;46414:9;46409:14;;46253:176;;;;:::o;46435:180::-;46483:77;46480:1;46473:88;46580:4;46577:1;46570:15;46604:4;46601:1;46594:15;46621:180;46669:77;46666:1;46659:88;46766:4;46763:1;46756:15;46790:4;46787:1;46780:15;46807:180;46855:77;46852:1;46845:88;46952:4;46949:1;46942:15;46976:4;46973:1;46966:15;46993:180;47041:77;47038:1;47031:88;47138:4;47135:1;47128:15;47162:4;47159:1;47152:15;47179:180;47227:77;47224:1;47217:88;47324:4;47321:1;47314:15;47348:4;47345:1;47338:15;47365:117;47474:1;47471;47464:12;47488:117;47597:1;47594;47587:12;47611:117;47720:1;47717;47710:12;47734:117;47843:1;47840;47833:12;47857:117;47966:1;47963;47956:12;47980:117;48089:1;48086;48079:12;48103:102;48144:6;48195:2;48191:7;48186:2;48179:5;48175:14;48171:28;48161:38;;48103:102;;;:::o;48211:221::-;48351:34;48347:1;48339:6;48335:14;48328:58;48420:4;48415:2;48407:6;48403:15;48396:29;48211:221;:::o;48438:225::-;48578:34;48574:1;48566:6;48562:14;48555:58;48647:8;48642:2;48634:6;48630:15;48623:33;48438:225;:::o;48669:229::-;48809:34;48805:1;48797:6;48793:14;48786:58;48878:12;48873:2;48865:6;48861:15;48854:37;48669:229;:::o;48904:231::-;49044:34;49040:1;49032:6;49028:14;49021:58;49113:14;49108:2;49100:6;49096:15;49089:39;48904:231;:::o;49141:222::-;49281:34;49277:1;49269:6;49265:14;49258:58;49350:5;49345:2;49337:6;49333:15;49326:30;49141:222;:::o;49369:224::-;49509:34;49505:1;49497:6;49493:14;49486:58;49578:7;49573:2;49565:6;49561:15;49554:32;49369:224;:::o;49599:236::-;49739:34;49735:1;49727:6;49723:14;49716:58;49808:19;49803:2;49795:6;49791:15;49784:44;49599:236;:::o;49841:180::-;49981:32;49977:1;49969:6;49965:14;49958:56;49841:180;:::o;50027:165::-;50167:17;50163:1;50155:6;50151:14;50144:41;50027:165;:::o;50198:244::-;50338:34;50334:1;50326:6;50322:14;50315:58;50407:27;50402:2;50394:6;50390:15;50383:52;50198:244;:::o;50448:160::-;50588:12;50584:1;50576:6;50572:14;50565:36;50448:160;:::o;50614:168::-;50754:20;50750:1;50742:6;50738:14;50731:44;50614:168;:::o;50788:230::-;50928:34;50924:1;50916:6;50912:14;50905:58;50997:13;50992:2;50984:6;50980:15;50973:38;50788:230;:::o;51024:168::-;51164:20;51160:1;51152:6;51148:14;51141:44;51024:168;:::o;51198:225::-;51338:34;51334:1;51326:6;51322:14;51315:58;51407:8;51402:2;51394:6;51390:15;51383:33;51198:225;:::o;51429:163::-;51569:15;51565:1;51557:6;51553:14;51546:39;51429:163;:::o;51598:182::-;51738:34;51734:1;51726:6;51722:14;51715:58;51598:182;:::o;51786:234::-;51926:34;51922:1;51914:6;51910:14;51903:58;51995:17;51990:2;51982:6;51978:15;51971:42;51786:234;:::o;52026:176::-;52166:28;52162:1;52154:6;52150:14;52143:52;52026:176;:::o;52208:237::-;52348:34;52344:1;52336:6;52332:14;52325:58;52417:20;52412:2;52404:6;52400:15;52393:45;52208:237;:::o;52451:221::-;52591:34;52587:1;52579:6;52575:14;52568:58;52660:4;52655:2;52647:6;52643:15;52636:29;52451:221;:::o;52678:162::-;52818:14;52814:1;52806:6;52802:14;52795:38;52678:162;:::o;52846:238::-;52986:34;52982:1;52974:6;52970:14;52963:58;53055:21;53050:2;53042:6;53038:15;53031:46;52846:238;:::o;53090:179::-;53230:31;53226:1;53218:6;53214:14;53207:55;53090:179;:::o;53275:220::-;53415:34;53411:1;53403:6;53399:14;53392:58;53484:3;53479:2;53471:6;53467:15;53460:28;53275:220;:::o;53501:::-;53641:34;53637:1;53629:6;53625:14;53618:58;53710:3;53705:2;53697:6;53693:15;53686:28;53501:220;:::o;53727:233::-;53867:34;53863:1;53855:6;53851:14;53844:58;53936:16;53931:2;53923:6;53919:15;53912:41;53727:233;:::o;53966:234::-;54106:34;54102:1;54094:6;54090:14;54083:58;54175:17;54170:2;54162:6;54158:15;54151:42;53966:234;:::o;54206:232::-;54346:34;54342:1;54334:6;54330:14;54323:58;54415:15;54410:2;54402:6;54398:15;54391:40;54206:232;:::o;54444:221::-;54584:34;54580:1;54572:6;54568:14;54561:58;54653:4;54648:2;54640:6;54636:15;54629:29;54444:221;:::o;54671:122::-;54744:24;54762:5;54744:24;:::i;:::-;54737:5;54734:35;54724:63;;54783:1;54780;54773:12;54724:63;54671:122;:::o;54799:116::-;54869:21;54884:5;54869:21;:::i;:::-;54862:5;54859:32;54849:60;;54905:1;54902;54895:12;54849:60;54799:116;:::o;54921:120::-;54993:23;55010:5;54993:23;:::i;:::-;54986:5;54983:34;54973:62;;55031:1;55028;55021:12;54973:62;54921:120;:::o;55047:122::-;55120:24;55138:5;55120:24;:::i;:::-;55113:5;55110:35;55100:63;;55159:1;55156;55149:12;55100:63;55047:122;:::o;55175:118::-;55246:22;55262:5;55246:22;:::i;:::-;55239:5;55236:33;55226:61;;55283:1;55280;55273:12;55226:61;55175:118;:::o

Swarm Source

ipfs://8a37bfb2616649bfdbca6c490b90b55a0aeb289dc5da0b5435ba9562bf20dfe3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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