ETH Price: $2,505.59 (-0.77%)

Token

BMC Hashdroid (HD)
 

Overview

Max Total Supply

7,637 HD

Holders

470

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 HD
0xbf81714d2d3df88a3eae8e20e8462e3d97aa5c80
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

BMC has dropped the Play-To-Mine game and Hashdroids are the builders of the Mars economy. Owning one or more Hashdroids gives players the ability to build miners, upgrade parts and earn $HASH.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HASHDroid

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

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


/**
 * @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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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);
            }
        }
    }
}

interface ERC721TokenReceiver {
    function onERC721Received(address operator,address from, uint256 id, bytes calldata data) external returns (bytes4);
}

/**
 * Built to optimize for lower gas during batch mints and transfers. 
 * A new locking mechanism has been added to protect users from all attempted scams.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 */
abstract contract ERC721slimBatch {
    using Address for address;
    using Strings for uint256;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    struct collectionData {
        string name;
        string symbol;
        uint256 index;
        uint256 burned;
    }

    address private _contractOwner;
    collectionData internal _collectionData;
    mapping(uint256 => address) internal _ownerships;
    mapping(address => uint256) internal _addressData;
    mapping(uint256 => address) internal _tokenApprovals;
    mapping(address => mapping(address => bool)) private  _operatorApprovals;

    constructor(string memory _name, string memory _symbol) {
        _collectionData.name = _name;
        _collectionData.symbol = _symbol;
        _transferOwnership(_msgSender());
    }

    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    /**
     * @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` or `_safeMint`),
     */
    function _exists(uint256 tokenId) public view virtual returns (bool) {
        return tokenId < _collectionData.index;
    }

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        unchecked {
            if (tokenId < _collectionData.index) {
                address ownership = _ownerships[tokenId];
                if (ownership != address(0)) {
                    return ownership;
                }
                    while (true) {
                        tokenId--;
                        ownership = _ownerships[tokenId];

                        if (ownership != address(0)) {
                            return ownership;
                        }
                         
                    }
                }
            }

        revert ();
    }

    /**
     * @dev Returns the number of tokens in `_owner`'s account.
     */
    function balanceOf(address _owner) public view returns (uint256) {
        require(_owner != address(0), "Address 0");
        return _addressData[_owner];
    }

    /**
     * @dev Mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 quantity) internal {
        require(to != address(0), "Address 0");
        require(quantity > 0, "Quantity 0");

        unchecked {
            uint256 updatedIndex = _collectionData.index;
            _addressData[to] += quantity;
            _ownerships[updatedIndex] = to;
            
            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex++);
            }

            _collectionData.index = updatedIndex;
        }
    }

    /**
     * @dev See Below {ERC721L-_safeMint}.
     */
    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    /**
     * @dev Safely mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {onERC721Received}, which is called for each safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 quantity, bytes memory _data) internal {
        require(to != address(0), "Address 0");
        require(quantity > 0, "Quantity 0");

        unchecked {
            uint256 updatedIndex = _collectionData.index;
            _addressData[to] += quantity;
            _ownerships[updatedIndex] = to;
            
            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                require(to.code.length == 0 ||
                        ERC721TokenReceiver(to).onERC721Received(_msgSender(), address(0), updatedIndex, _data) ==
                        ERC721TokenReceiver.onERC721Received.selector, "Unsafe Destination");
                updatedIndex++;
            }

            _collectionData.index = updatedIndex;
        }
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - `from` must not have tokens locked.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) public virtual {
        address currentOwner = ownerOf(tokenId);
        require((_msgSender() == currentOwner ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(currentOwner,_msgSender())), "Not Approved");
        require(currentOwner == from, "Not Owner");
        require(to != address(0), "Address 0");

        delete _tokenApprovals[tokenId]; 
        unchecked {
            _addressData[from] -= 1;
            _addressData[to] += 1;
            _ownerships[tokenId] = to;
            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId] == address(0) && nextTokenId < _collectionData.index) {
                _ownerships[nextTokenId] = currentOwner;
            }
        }

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev See Below {ERC721L-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual {
        safeTransferFrom(from, to, tokenId, '');
    }

    /**
     * @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 {ERC721TokenReceiver}, which is called upon a safe transfer.
     * - `from` must not have tokens locked.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual {
        transferFrom(from, to, tokenId);
        require(to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(_msgSender(), address(0), tokenId, _data) ==
                ERC721TokenReceiver.onERC721Received.selector, "Unsafe Destination");
    }
    
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() public view returns (uint256) {
        unchecked {
            return _collectionData.index - _collectionData.burned;
        }
    }

    /**
     * @dev Returns the total amount of tokens created by the contract.
     */
    function totalCreated() public view returns (uint256) {
        return _collectionData.index;
    }

    /**
     * @dev Returns the total amount of tokens burned by the contract.
     */
    function totalBurned() public view returns (uint256) {
        return _collectionData.burned;
    }

    /**
     * @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.
     * - Owner must not have tokens locked.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool approved) public {
        require(operator != _msgSender(), "Address is Owner");

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

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `_owner` and tokens are unlocked for `_owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address _owner, address operator) public view returns (bool) {
        return _operatorApprovals[_owner][operator];
    }

    /**
     * @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) public {
        address tokenOwner = ownerOf(tokenId);
        require(_msgSender() == tokenOwner || isApprovedForAll(tokenOwner, _msgSender()), "ERC721L: Not Approved");
        _tokenApprovals[tokenId] = to;
        emit Approval(tokenOwner, to, tokenId);
    }

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) public view returns (address) {
        require(_exists(tokenId), "ERC721L: Null ID");
        return _tokenApprovals[tokenId];
    }

    /**
     * @dev Returns the token collection name.
     */
    function name() public view returns (string memory) {
        return _collectionData.name;
    }

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() public view returns (string memory) {
        return _collectionData.symbol;
    }

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {
        require(_exists(tokenId), "Non Existent");
        string memory _baseURI = baseURI();
        return bytes(_baseURI).length > 0 ? string(abi.encodePacked(_baseURI, tokenId.toString())) : '';
    }

    /**
     * @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() public view virtual returns (string memory) {
        return '';
    }

    /**
     * @dev Returns tokenIDs owned by `_owner`.
     */
    function tokensOfOwner(address _owner) public view returns (uint256[] memory) {
        uint256 totalOwned = _addressData[_owner];
        require(totalOwned > 0, "balance 0");
        uint256 supply = _collectionData.index;
        uint256[] memory tokenIDs = new uint256[](totalOwned);
        uint256 ownedIndex;
        address currentOwner;

        unchecked {
            for (uint256 i; i < supply; i++) {
                address currentAddress = _ownerships[i];
                if (currentAddress != address(0)) {
                    currentOwner = currentAddress;
                }
                if (currentOwner == _owner) {
                    tokenIDs[ownedIndex++] = i;
                    if (ownedIndex == totalOwned){
                        return tokenIDs;
                    }
                }
            }
        }

        revert();
    }

    function owner() public view returns (address) {
        return _contractOwner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Caller not owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        address oldOwner = _contractOwner;
        _contractOwner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    /**
     * @dev Returns the token collection information.
     */
    function collectionInformation() public view returns (collectionData memory) {
        return _collectionData;
    }

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

}

interface IRocketPass {
    function balanceOf(address _address, uint256 id) external view returns (uint256);
}


contract HASHDroid is ERC721slimBatch {

    string private _baseURI = "ipfs://QmZov5NNjcx472daCYvD3unxgWXQ1UJwYsAPr6yMFiJT5a/";
    uint256 public constant maxPublicMinted = 2063;

    uint256 public publicMaxMint = 7;
    uint256 public priceDroid = .069 ether;
    uint256 public publicMinted;

    bool public depreciatedMint;
    bool public mintStatus;
    IRocketPass public rocketPass;

    mapping(address => uint256) public mintedRP;

  constructor(address _rocketPass) ERC721slimBatch("BMC Hashdroid", "HD") {
      rocketPass = IRocketPass(_rocketPass);
  }

  modifier callerIsUser() {
    require(tx.origin == _msgSender(), "Contract Caller");
    _;
  }

  function rpMint(uint256 _quantity) public callerIsUser() {
    require(mintStatus, "Public sale not active");
    require(rocketPass.balanceOf(_msgSender(), 1) - mintedRP[_msgSender()] >= _quantity, "Insufficient Rocket Passes remaining");

    mintedRP[_msgSender()] += _quantity;
    _mint(_msgSender(), _quantity);
  }

  function publicMint(uint256 _quantity) public payable callerIsUser() {
    require(mintStatus, "Public sale not active");
    require(_quantity <= publicMaxMint, "Invalid quantity");
    unchecked {
        require(publicMinted + _quantity <= maxPublicMinted, "Insufficient supply remaining");
        require(msg.value >= priceDroid * _quantity, "Insufficient payment");
    }
    publicMinted += _quantity;
    _mint(_msgSender(), _quantity);
  }

  function baseURI() public view override returns (string memory) {
    return _baseURI;
  }

  function setBaseURI(string calldata newBaseURI) external onlyOwner {
    _baseURI = newBaseURI;
  }

  function setRocketPass(address _address) external onlyOwner {
    require(!depreciatedMint, "Contract is depreciated.");
    rocketPass = IRocketPass(_address);
  }

  function setPublicState(bool _state) external onlyOwner {
    require(!depreciatedMint, "Contract is depreciated.");
    mintStatus = _state;
  }

  function setPublicMaxMint(uint256 _newLimit) external onlyOwner {
    require(!depreciatedMint, "Contract is already depreciated.");
    publicMaxMint = _newLimit;
  }

  function depreciateMint() external onlyOwner {
    require(!depreciatedMint, "Contract is already depreciated.");
    delete mintStatus;
    depreciatedMint = true;
    uint256 excess = 7777 - totalSupply();
    if (excess > 0){
        uint256 droidsToMint = excess > 60 ? 60 : excess; 
        _mint(_msgSender(), droidsToMint);
    }
    
  }

  function verifyRP(address _address) external view returns (bool){
    return (rocketPass.balanceOf(_address, 1) - mintedRP[_address]) > 0;
  }

  function withdrawFunding() external onlyOwner {
    uint256 currentBalance = address(this).balance;
    (bool sent, ) = address(msg.sender).call{value: currentBalance}('');
    require(sent, "Transfer Error");    
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_rocketPass","type":"address"}],"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":"uint256","name":"tokenId","type":"uint256"}],"name":"_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionInformation","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"burned","type":"uint256"}],"internalType":"struct ERC721slimBatch.collectionData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depreciateMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depreciatedMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPublicMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedRP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceDroid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rocketPass","outputs":[{"internalType":"contract IRocketPass","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"rpMint","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":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setPublicMaxMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPublicState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setRocketPass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"address","name":"_address","type":"address"}],"name":"verifyRP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFunding","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405260366080818152906200245c60a039805162000029916009916020909101906200015b565b506007600a5566f5232269808000600b553480156200004757600080fd5b5060405162002492380380620024928339810160408190526200006a9162000201565b604080518082018252600d81526c109350c812185cda191c9bda59609a1b602080830191825283518085019094526002845261121160f21b908401528151919291620000b9916001916200015b565b508051620000cf9060029060208401906200015b565b50620000db336200010b565b5050600d80546001600160a01b03909216620100000262010000600160b01b03199092169190911790556200026f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001699062000233565b90600052602060002090601f0160209004810192826200018d5760008555620001d8565b82601f10620001a857805160ff1916838001178555620001d8565b82800160010185558215620001d8579182015b82811115620001d8578251825591602001919060010190620001bb565b50620001e6929150620001ea565b5090565b5b80821115620001e65760008155600101620001eb565b6000602082840312156200021457600080fd5b81516001600160a01b03811681146200022c57600080fd5b9392505050565b600181811c908216806200024857607f821691505b6020821081036200026957634e487b7160e01b600052602260045260246000fd5b50919050565b6121dd806200027f6000396000f3fe60806040526004361061023b5760003560e01c806370a082311161012e578063a974e37a116100ab578063d89135cd1161006f578063d89135cd14610674578063e37c466514610689578063e985e9c5146106af578063f2fde38b146106f8578063f8e76cc01461071857600080fd5b8063a974e37a146105de578063b88d4fde146105fe578063c48156af1461061e578063c87b56dd1461063e578063d21c0ad01461065e57600080fd5b806395d89b41116100f257806395d89b41146105545780639da3f8fd14610569578063a22cb46514610588578063a4f4f8af146105a8578063a59585a8146105be57600080fd5b806370a08231146104bf578063715018a6146104df578063844e0acd146104f45780638462151c146105095780638da5cb5b1461053657600080fd5b8063305c7d4a116101bc578063454503b311610180578063454503b31461041d57806355f804b31461044a5780636352211e1461046a578063688203101461048a5780636c0360eb146104aa57600080fd5b8063305c7d4a1461039b57806330b9af98146103b15780633fee0c62146103c65780633ffea8c8146103db57806342842e0e146103fd57600080fd5b80630e43f355116102035780630e43f3551461031557806318160ddd1461032f57806323b872dd146103485780632db11544146103685780632f0a6c831461037b57600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102cf5780630c56b0b3146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004611c04565b61073a565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61078c565b60405161026c9190611c79565b3480156102a357600080fd5b506102b76102b2366004611c8c565b610821565b6040516001600160a01b03909116815260200161026c565b3480156102db57600080fd5b506102ef6102ea366004611cc1565b61088e565b005b3480156102fd57600080fd5b5061030761080f81565b60405190815260200161026c565b34801561032157600080fd5b50600d546102609060ff1681565b34801561033b57600080fd5b5060045460035403610307565b34801561035457600080fd5b506102ef610363366004611ceb565b610957565b6102ef610376366004611c8c565b610b3b565b34801561038757600080fd5b506102ef610396366004611d27565b610cd8565b3480156103a757600080fd5b50610307600a5481565b3480156103bd57600080fd5b506102ef610d7a565b3480156103d257600080fd5b506102ef610e33565b3480156103e757600080fd5b506103f0610eff565b60405161026c9190611d42565b34801561040957600080fd5b506102ef610418366004611ceb565b611074565b34801561042957600080fd5b50610307610438366004611d27565b600e6020526000908152604090205481565b34801561045657600080fd5b506102ef610465366004611d9c565b611094565b34801561047657600080fd5b506102b7610485366004611c8c565b6110ca565b34801561049657600080fd5b506102ef6104a5366004611c8c565b61112e565b3480156104b657600080fd5b5061028a6112d2565b3480156104cb57600080fd5b506103076104da366004611d27565b6112e1565b3480156104eb57600080fd5b506102ef611325565b34801561050057600080fd5b50600354610307565b34801561051557600080fd5b50610529610524366004611d27565b61135b565b60405161026c9190611e0e565b34801561054257600080fd5b506000546001600160a01b03166102b7565b34801561056057600080fd5b5061028a611485565b34801561057557600080fd5b50600d5461026090610100900460ff1681565b34801561059457600080fd5b506102ef6105a3366004611e62565b611496565b3480156105b457600080fd5b50610307600c5481565b3480156105ca57600080fd5b506102ef6105d9366004611c8c565b61154d565b3480156105ea57600080fd5b506102606105f9366004611d27565b6115cf565b34801561060a57600080fd5b506102ef610619366004611eab565b61166e565b34801561062a57600080fd5b506102ef610639366004611f87565b611756565b34801561064a57600080fd5b5061028a610659366004611c8c565b6117e8565b34801561066a57600080fd5b50610307600b5481565b34801561068057600080fd5b50600454610307565b34801561069557600080fd5b50600d546102b7906201000090046001600160a01b031681565b3480156106bb57600080fd5b506102606106ca366004611fa2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561070457600080fd5b506102ef610713366004611d27565b61188c565b34801561072457600080fd5b50610260610733366004611c8c565b6003541190565b60006301ffc9a760e01b6001600160e01b03198316148061076b57506380ac58cd60e01b6001600160e01b03198316145b806107865750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606001600001805461079e90611fcc565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90611fcc565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b600061082e826003541190565b6108725760405162461bcd60e51b815260206004820152601060248201526f115490cdcc8c530e88139d5b1b08125160821b60448201526064015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610899826110ca565b9050336001600160a01b03821614806108b757506108b781336106ca565b6108fb5760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c530e88139bdd08105c1c1c9bdd9959605a1b6044820152606401610869565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610962826110ca565b9050336001600160a01b038216148061098b57503361098083610821565b6001600160a01b0316145b8061099b575061099b81336106ca565b6109d65760405162461bcd60e51b815260206004820152600c60248201526b139bdd08105c1c1c9bdd995960a21b6044820152606401610869565b836001600160a01b0316816001600160a01b031614610a235760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610869565b6001600160a01b038316610a495760405162461bcd60e51b815260040161086990612006565b600082815260076020908152604080832080546001600160a01b03199081169091556001600160a01b03888116855260068452828520805460001901905587811680865283862080546001908101909155888752600590955283862080549093161790915591850180845292205416158015610ac6575060035481105b15610af357600081815260056020526040902080546001600160a01b0319166001600160a01b0384161790555b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b323314610b7c5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff16610bcc5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b600a54811115610c115760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610869565b61080f81600c54011115610c675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420737570706c792072656d61696e696e670000006044820152606401610869565b80600b5402341015610cb25760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610869565b80600c6000828254610cc4919061203f565b90915550610cd59050335b82611904565b50565b6000546001600160a01b03163314610d025760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610d505760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000546001600160a01b03163314610da45760405162461bcd60e51b815260040161086990612057565b6040514790600090339083908381818185875af1925050503d8060008114610de8576040519150601f19603f3d011682016040523d82523d6000602084013e610ded565b606091505b5050905080610e2f5760405162461bcd60e51b815260206004820152600e60248201526d2a3930b739b332b91022b93937b960911b6044820152606401610869565b5050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610eb05760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600d805461ffff191660011790556000610ecd6004546003540390565b610ed990611e61612081565b90508015610cd5576000603c8211610ef15781610ef4565b603c5b9050610e2f33610ccf565b610f2a6040518060800160405280606081526020016060815260200160008152602001600081525090565b6001604051806080016040529081600082018054610f4790611fcc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7390611fcc565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152602001600182018054610fd990611fcc565b80601f016020809104026020016040519081016040528092919081815260200182805461100590611fcc565b80156110525780601f1061102757610100808354040283529160200191611052565b820191906000526020600020905b81548152906001019060200180831161103557829003601f168201915b5050505050815260200160028201548152602001600382015481525050905090565b61108f8383836040518060200160405280600081525061166e565b505050565b6000546001600160a01b031633146110be5760405162461bcd60e51b815260040161086990612057565b61108f60098383611b55565b60035460009082101561023b576000828152600560205260409020546001600160a01b031680156110fb5792915050565b506000199091016000818152600560205260409020549091906001600160a01b031680156111295792915050565b6110fb565b32331461116f5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff166111bf5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b336000818152600e602090815260409182902054600d548351627eeac760e11b81526004810195909552600160248601529251859491936201000090046001600160a01b03169262fdd58e92604480820193918290030181865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190612098565b6112599190612081565b10156112b35760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e7420526f636b6574205061737365732072656d61696044820152636e696e6760e01b6064820152608401610869565b336000908152600e602052604081208054839290610cc490849061203f565b60606009805461079e90611fcc565b60006001600160a01b0382166113095760405162461bcd60e51b815260040161086990612006565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b0316331461134f5760405162461bcd60e51b815260040161086990612057565b61135960006119fc565b565b6001600160a01b038116600090815260066020526040902054606090806113b05760405162461bcd60e51b8152602060048201526009602482015268062616c616e636520360bc1b6044820152606401610869565b60035460008267ffffffffffffffff8111156113ce576113ce611e95565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b50905060008060005b8481101561023b576000818152600560205260409020546001600160a01b0316801561142a578092505b886001600160a01b0316836001600160a01b03160361147c578185858060010196508151811061145c5761145c6120b1565b60200260200101818152505086840361147c575092979650505050505050565b50600101611400565b606060018001805461079e90611fcc565b336001600160a01b038316036114e15760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b99027bbb732b960811b6044820152606401610869565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146115775760405162461bcd60e51b815260040161086990612057565b600d5460ff16156115ca5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600a55565b6001600160a01b038181166000818152600e602052604080822054600d549151627eeac760e11b81526004810194909452600160248501529193849362010000909204169062fdd58e90604401602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612098565b6116679190612081565b1192915050565b611679848484610957565b6001600160a01b0383163b158061170f5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906116c0903390600090889088906004016120c7565b6020604051808303816000875af11580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612104565b6001600160e01b031916145b6117505760405162461bcd60e51b81526020600482015260126024820152712ab739b0b332902232b9ba34b730ba34b7b760711b6044820152606401610869565b50505050565b6000546001600160a01b031633146117805760405162461bcd60e51b815260040161086990612057565b600d5460ff16156117ce5760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80549115156101000261ff0019909216919091179055565b60606117f5826003541190565b6118305760405162461bcd60e51b815260206004820152600c60248201526b139bdb88115e1a5cdd195b9d60a21b6044820152606401610869565b600061183a6112d2565b9050600081511161185a5760405180602001604052806000815250611885565b8061186484611a4c565b604051602001611875929190612121565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118b65760405162461bcd60e51b815260040161086990612057565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610869565b610cd5816119fc565b6001600160a01b03821661192a5760405162461bcd60e51b815260040161086990612006565b600081116119675760405162461bcd60e51b815260206004820152600a60248201526905175616e7469747920360b41b6044820152606401610869565b6003546001600160a01b03831660008181526006602090815260408083208054870190558483526005909152812080546001600160a01b0319169092179091555b828110156119f4576040516001830192906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016119a8565b506003555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081600003611a735750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a9d5780611a8781612150565b9150611a969050600a8361217f565b9150611a77565b60008167ffffffffffffffff811115611ab857611ab8611e95565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b5090505b8415611b4d57611af7600183612081565b9150611b04600a86612193565b611b0f90603061203f565b60f81b818381518110611b2457611b246120b1565b60200101906001600160f81b031916908160001a905350611b46600a8661217f565b9450611ae6565b949350505050565b828054611b6190611fcc565b90600052602060002090601f016020900481019282611b835760008555611bc9565b82601f10611b9c5782800160ff19823516178555611bc9565b82800160010185558215611bc9579182015b82811115611bc9578235825591602001919060010190611bae565b50611bd5929150611bd9565b5090565b5b80821115611bd55760008155600101611bda565b6001600160e01b031981168114610cd557600080fd5b600060208284031215611c1657600080fd5b813561188581611bee565b60005b83811015611c3c578181015183820152602001611c24565b838111156117505750506000910152565b60008151808452611c65816020860160208601611c21565b601f01601f19169290920160200192915050565b6020815260006118856020830184611c4d565b600060208284031215611c9e57600080fd5b5035919050565b80356001600160a01b0381168114611cbc57600080fd5b919050565b60008060408385031215611cd457600080fd5b611cdd83611ca5565b946020939093013593505050565b600080600060608486031215611d0057600080fd5b611d0984611ca5565b9250611d1760208501611ca5565b9150604084013590509250925092565b600060208284031215611d3957600080fd5b61188582611ca5565b602081526000825160806020840152611d5e60a0840182611c4d565b90506020840151601f19848303016040850152611d7b8282611c4d565b91505060408401516060840152606084015160808401528091505092915050565b60008060208385031215611daf57600080fd5b823567ffffffffffffffff80821115611dc757600080fd5b818501915085601f830112611ddb57600080fd5b813581811115611dea57600080fd5b866020828501011115611dfc57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e4657835183529284019291840191600101611e2a565b50909695505050505050565b80358015158114611cbc57600080fd5b60008060408385031215611e7557600080fd5b611e7e83611ca5565b9150611e8c60208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ec157600080fd5b611eca85611ca5565b9350611ed860208601611ca5565b925060408501359150606085013567ffffffffffffffff80821115611efc57600080fd5b818701915087601f830112611f1057600080fd5b813581811115611f2257611f22611e95565b604051601f8201601f19908116603f01168101908382118183101715611f4a57611f4a611e95565b816040528281528a6020848701011115611f6357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611f9957600080fd5b61188582611e52565b60008060408385031215611fb557600080fd5b611fbe83611ca5565b9150611e8c60208401611ca5565b600181811c90821680611fe057607f821691505b60208210810361200057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526804164647265737320360bc1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561205257612052612029565b500190565b60208082526010908201526f21b0b63632b9103737ba1037bbb732b960811b604082015260600190565b60008282101561209357612093612029565b500390565b6000602082840312156120aa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120fa90830184611c4d565b9695505050505050565b60006020828403121561211657600080fd5b815161188581611bee565b60008351612133818460208801611c21565b835190830190612147818360208801611c21565b01949350505050565b60006001820161216257612162612029565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261218e5761218e612169565b500490565b6000826121a2576121a2612169565b50069056fea26469706673582212206816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c64736f6c634300080e0033697066733a2f2f516d5a6f76354e4e6a637834373264614359764433756e786757585131554a77597341507236794d46694a5435612f000000000000000000000000b50b3d5b519e5df96275a09deccc6080dc0800d9

Deployed Bytecode

0x60806040526004361061023b5760003560e01c806370a082311161012e578063a974e37a116100ab578063d89135cd1161006f578063d89135cd14610674578063e37c466514610689578063e985e9c5146106af578063f2fde38b146106f8578063f8e76cc01461071857600080fd5b8063a974e37a146105de578063b88d4fde146105fe578063c48156af1461061e578063c87b56dd1461063e578063d21c0ad01461065e57600080fd5b806395d89b41116100f257806395d89b41146105545780639da3f8fd14610569578063a22cb46514610588578063a4f4f8af146105a8578063a59585a8146105be57600080fd5b806370a08231146104bf578063715018a6146104df578063844e0acd146104f45780638462151c146105095780638da5cb5b1461053657600080fd5b8063305c7d4a116101bc578063454503b311610180578063454503b31461041d57806355f804b31461044a5780636352211e1461046a578063688203101461048a5780636c0360eb146104aa57600080fd5b8063305c7d4a1461039b57806330b9af98146103b15780633fee0c62146103c65780633ffea8c8146103db57806342842e0e146103fd57600080fd5b80630e43f355116102035780630e43f3551461031557806318160ddd1461032f57806323b872dd146103485780632db11544146103685780632f0a6c831461037b57600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102cf5780630c56b0b3146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004611c04565b61073a565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a61078c565b60405161026c9190611c79565b3480156102a357600080fd5b506102b76102b2366004611c8c565b610821565b6040516001600160a01b03909116815260200161026c565b3480156102db57600080fd5b506102ef6102ea366004611cc1565b61088e565b005b3480156102fd57600080fd5b5061030761080f81565b60405190815260200161026c565b34801561032157600080fd5b50600d546102609060ff1681565b34801561033b57600080fd5b5060045460035403610307565b34801561035457600080fd5b506102ef610363366004611ceb565b610957565b6102ef610376366004611c8c565b610b3b565b34801561038757600080fd5b506102ef610396366004611d27565b610cd8565b3480156103a757600080fd5b50610307600a5481565b3480156103bd57600080fd5b506102ef610d7a565b3480156103d257600080fd5b506102ef610e33565b3480156103e757600080fd5b506103f0610eff565b60405161026c9190611d42565b34801561040957600080fd5b506102ef610418366004611ceb565b611074565b34801561042957600080fd5b50610307610438366004611d27565b600e6020526000908152604090205481565b34801561045657600080fd5b506102ef610465366004611d9c565b611094565b34801561047657600080fd5b506102b7610485366004611c8c565b6110ca565b34801561049657600080fd5b506102ef6104a5366004611c8c565b61112e565b3480156104b657600080fd5b5061028a6112d2565b3480156104cb57600080fd5b506103076104da366004611d27565b6112e1565b3480156104eb57600080fd5b506102ef611325565b34801561050057600080fd5b50600354610307565b34801561051557600080fd5b50610529610524366004611d27565b61135b565b60405161026c9190611e0e565b34801561054257600080fd5b506000546001600160a01b03166102b7565b34801561056057600080fd5b5061028a611485565b34801561057557600080fd5b50600d5461026090610100900460ff1681565b34801561059457600080fd5b506102ef6105a3366004611e62565b611496565b3480156105b457600080fd5b50610307600c5481565b3480156105ca57600080fd5b506102ef6105d9366004611c8c565b61154d565b3480156105ea57600080fd5b506102606105f9366004611d27565b6115cf565b34801561060a57600080fd5b506102ef610619366004611eab565b61166e565b34801561062a57600080fd5b506102ef610639366004611f87565b611756565b34801561064a57600080fd5b5061028a610659366004611c8c565b6117e8565b34801561066a57600080fd5b50610307600b5481565b34801561068057600080fd5b50600454610307565b34801561069557600080fd5b50600d546102b7906201000090046001600160a01b031681565b3480156106bb57600080fd5b506102606106ca366004611fa2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561070457600080fd5b506102ef610713366004611d27565b61188c565b34801561072457600080fd5b50610260610733366004611c8c565b6003541190565b60006301ffc9a760e01b6001600160e01b03198316148061076b57506380ac58cd60e01b6001600160e01b03198316145b806107865750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606001600001805461079e90611fcc565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca90611fcc565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b600061082e826003541190565b6108725760405162461bcd60e51b815260206004820152601060248201526f115490cdcc8c530e88139d5b1b08125160821b60448201526064015b60405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610899826110ca565b9050336001600160a01b03821614806108b757506108b781336106ca565b6108fb5760405162461bcd60e51b8152602060048201526015602482015274115490cdcc8c530e88139bdd08105c1c1c9bdd9959605a1b6044820152606401610869565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610962826110ca565b9050336001600160a01b038216148061098b57503361098083610821565b6001600160a01b0316145b8061099b575061099b81336106ca565b6109d65760405162461bcd60e51b815260206004820152600c60248201526b139bdd08105c1c1c9bdd995960a21b6044820152606401610869565b836001600160a01b0316816001600160a01b031614610a235760405162461bcd60e51b81526020600482015260096024820152682737ba1027bbb732b960b91b6044820152606401610869565b6001600160a01b038316610a495760405162461bcd60e51b815260040161086990612006565b600082815260076020908152604080832080546001600160a01b03199081169091556001600160a01b03888116855260068452828520805460001901905587811680865283862080546001908101909155888752600590955283862080549093161790915591850180845292205416158015610ac6575060035481105b15610af357600081815260056020526040902080546001600160a01b0319166001600160a01b0384161790555b5081836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b323314610b7c5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff16610bcc5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b600a54811115610c115760405162461bcd60e51b815260206004820152601060248201526f496e76616c6964207175616e7469747960801b6044820152606401610869565b61080f81600c54011115610c675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420737570706c792072656d61696e696e670000006044820152606401610869565b80600b5402341015610cb25760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610869565b80600c6000828254610cc4919061203f565b90915550610cd59050335b82611904565b50565b6000546001600160a01b03163314610d025760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610d505760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000546001600160a01b03163314610da45760405162461bcd60e51b815260040161086990612057565b6040514790600090339083908381818185875af1925050503d8060008114610de8576040519150601f19603f3d011682016040523d82523d6000602084013e610ded565b606091505b5050905080610e2f5760405162461bcd60e51b815260206004820152600e60248201526d2a3930b739b332b91022b93937b960911b6044820152606401610869565b5050565b6000546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161086990612057565b600d5460ff1615610eb05760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600d805461ffff191660011790556000610ecd6004546003540390565b610ed990611e61612081565b90508015610cd5576000603c8211610ef15781610ef4565b603c5b9050610e2f33610ccf565b610f2a6040518060800160405280606081526020016060815260200160008152602001600081525090565b6001604051806080016040529081600082018054610f4790611fcc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7390611fcc565b8015610fc05780601f10610f9557610100808354040283529160200191610fc0565b820191906000526020600020905b815481529060010190602001808311610fa357829003601f168201915b50505050508152602001600182018054610fd990611fcc565b80601f016020809104026020016040519081016040528092919081815260200182805461100590611fcc565b80156110525780601f1061102757610100808354040283529160200191611052565b820191906000526020600020905b81548152906001019060200180831161103557829003601f168201915b5050505050815260200160028201548152602001600382015481525050905090565b61108f8383836040518060200160405280600081525061166e565b505050565b6000546001600160a01b031633146110be5760405162461bcd60e51b815260040161086990612057565b61108f60098383611b55565b60035460009082101561023b576000828152600560205260409020546001600160a01b031680156110fb5792915050565b506000199091016000818152600560205260409020549091906001600160a01b031680156111295792915050565b6110fb565b32331461116f5760405162461bcd60e51b815260206004820152600f60248201526e21b7b73a3930b1ba1021b0b63632b960891b6044820152606401610869565b600d54610100900460ff166111bf5760405162461bcd60e51b81526020600482015260166024820152755075626c69632073616c65206e6f742061637469766560501b6044820152606401610869565b336000818152600e602090815260409182902054600d548351627eeac760e11b81526004810195909552600160248601529251859491936201000090046001600160a01b03169262fdd58e92604480820193918290030181865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190612098565b6112599190612081565b10156112b35760405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e7420526f636b6574205061737365732072656d61696044820152636e696e6760e01b6064820152608401610869565b336000908152600e602052604081208054839290610cc490849061203f565b60606009805461079e90611fcc565b60006001600160a01b0382166113095760405162461bcd60e51b815260040161086990612006565b506001600160a01b031660009081526006602052604090205490565b6000546001600160a01b0316331461134f5760405162461bcd60e51b815260040161086990612057565b61135960006119fc565b565b6001600160a01b038116600090815260066020526040902054606090806113b05760405162461bcd60e51b8152602060048201526009602482015268062616c616e636520360bc1b6044820152606401610869565b60035460008267ffffffffffffffff8111156113ce576113ce611e95565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b50905060008060005b8481101561023b576000818152600560205260409020546001600160a01b0316801561142a578092505b886001600160a01b0316836001600160a01b03160361147c578185858060010196508151811061145c5761145c6120b1565b60200260200101818152505086840361147c575092979650505050505050565b50600101611400565b606060018001805461079e90611fcc565b336001600160a01b038316036114e15760405162461bcd60e51b815260206004820152601060248201526f20b2323932b9b99034b99027bbb732b960811b6044820152606401610869565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000546001600160a01b031633146115775760405162461bcd60e51b815260040161086990612057565b600d5460ff16156115ca5760405162461bcd60e51b815260206004820181905260248201527f436f6e747261637420697320616c72656164792064657072656369617465642e6044820152606401610869565b600a55565b6001600160a01b038181166000818152600e602052604080822054600d549151627eeac760e11b81526004810194909452600160248501529193849362010000909204169062fdd58e90604401602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612098565b6116679190612081565b1192915050565b611679848484610957565b6001600160a01b0383163b158061170f5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906116c0903390600090889088906004016120c7565b6020604051808303816000875af11580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612104565b6001600160e01b031916145b6117505760405162461bcd60e51b81526020600482015260126024820152712ab739b0b332902232b9ba34b730ba34b7b760711b6044820152606401610869565b50505050565b6000546001600160a01b031633146117805760405162461bcd60e51b815260040161086990612057565b600d5460ff16156117ce5760405162461bcd60e51b815260206004820152601860248201527721b7b73a3930b1ba1034b9903232b83932b1b4b0ba32b21760411b6044820152606401610869565b600d80549115156101000261ff0019909216919091179055565b60606117f5826003541190565b6118305760405162461bcd60e51b815260206004820152600c60248201526b139bdb88115e1a5cdd195b9d60a21b6044820152606401610869565b600061183a6112d2565b9050600081511161185a5760405180602001604052806000815250611885565b8061186484611a4c565b604051602001611875929190612121565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146118b65760405162461bcd60e51b815260040161086990612057565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610869565b610cd5816119fc565b6001600160a01b03821661192a5760405162461bcd60e51b815260040161086990612006565b600081116119675760405162461bcd60e51b815260206004820152600a60248201526905175616e7469747920360b41b6044820152606401610869565b6003546001600160a01b03831660008181526006602090815260408083208054870190558483526005909152812080546001600160a01b0319169092179091555b828110156119f4576040516001830192906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46001016119a8565b506003555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081600003611a735750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a9d5780611a8781612150565b9150611a969050600a8361217f565b9150611a77565b60008167ffffffffffffffff811115611ab857611ab8611e95565b6040519080825280601f01601f191660200182016040528015611ae2576020820181803683370190505b5090505b8415611b4d57611af7600183612081565b9150611b04600a86612193565b611b0f90603061203f565b60f81b818381518110611b2457611b246120b1565b60200101906001600160f81b031916908160001a905350611b46600a8661217f565b9450611ae6565b949350505050565b828054611b6190611fcc565b90600052602060002090601f016020900481019282611b835760008555611bc9565b82601f10611b9c5782800160ff19823516178555611bc9565b82800160010185558215611bc9579182015b82811115611bc9578235825591602001919060010190611bae565b50611bd5929150611bd9565b5090565b5b80821115611bd55760008155600101611bda565b6001600160e01b031981168114610cd557600080fd5b600060208284031215611c1657600080fd5b813561188581611bee565b60005b83811015611c3c578181015183820152602001611c24565b838111156117505750506000910152565b60008151808452611c65816020860160208601611c21565b601f01601f19169290920160200192915050565b6020815260006118856020830184611c4d565b600060208284031215611c9e57600080fd5b5035919050565b80356001600160a01b0381168114611cbc57600080fd5b919050565b60008060408385031215611cd457600080fd5b611cdd83611ca5565b946020939093013593505050565b600080600060608486031215611d0057600080fd5b611d0984611ca5565b9250611d1760208501611ca5565b9150604084013590509250925092565b600060208284031215611d3957600080fd5b61188582611ca5565b602081526000825160806020840152611d5e60a0840182611c4d565b90506020840151601f19848303016040850152611d7b8282611c4d565b91505060408401516060840152606084015160808401528091505092915050565b60008060208385031215611daf57600080fd5b823567ffffffffffffffff80821115611dc757600080fd5b818501915085601f830112611ddb57600080fd5b813581811115611dea57600080fd5b866020828501011115611dfc57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e4657835183529284019291840191600101611e2a565b50909695505050505050565b80358015158114611cbc57600080fd5b60008060408385031215611e7557600080fd5b611e7e83611ca5565b9150611e8c60208401611e52565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ec157600080fd5b611eca85611ca5565b9350611ed860208601611ca5565b925060408501359150606085013567ffffffffffffffff80821115611efc57600080fd5b818701915087601f830112611f1057600080fd5b813581811115611f2257611f22611e95565b604051601f8201601f19908116603f01168101908382118183101715611f4a57611f4a611e95565b816040528281528a6020848701011115611f6357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215611f9957600080fd5b61188582611e52565b60008060408385031215611fb557600080fd5b611fbe83611ca5565b9150611e8c60208401611ca5565b600181811c90821680611fe057607f821691505b60208210810361200057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526009908201526804164647265737320360bc1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561205257612052612029565b500190565b60208082526010908201526f21b0b63632b9103737ba1037bbb732b960811b604082015260600190565b60008282101561209357612093612029565b500390565b6000602082840312156120aa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120fa90830184611c4d565b9695505050505050565b60006020828403121561211657600080fd5b815161188581611bee565b60008351612133818460208801611c21565b835190830190612147818360208801611c21565b01949350505050565b60006001820161216257612162612029565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261218e5761218e612169565b500490565b6000826121a2576121a2612169565b50069056fea26469706673582212206816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c64736f6c634300080e0033

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

000000000000000000000000b50b3d5b519e5df96275a09deccc6080dc0800d9

-----Decoded View---------------
Arg [0] : _rocketPass (address): 0xb50B3d5B519e5dF96275A09deccC6080dC0800d9

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


Deployed Bytecode Sourcemap

24381:2937:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23913:340;;;;;;;;;;-1:-1:-1;23913:340:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;23913:340:0;;;;;;;;21030:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20782:174::-;;;;;;;;;;-1:-1:-1;20782:174:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;20782:174:0;1528:203:1;20308:315:0;;;;;;;;;;-1:-1:-1;20308:315:0;;;;;:::i;:::-;;:::i;:::-;;24517:46;;;;;;;;;;;;24559:4;24517:46;;;;;2319:25:1;;;2307:2;2292:18;24517:46:0;2173:177:1;24692:27:0;;;;;;;;;;-1:-1:-1;24692:27:0;;;;;;;;18281:161;;;;;;;;;;-1:-1:-1;18401:22:0;;;18377:21;:46;18281:161;;15952:874;;;;;;;;;;-1:-1:-1;15952:874:0;;;;;:::i;:::-;;:::i;25410:457::-;;;;;;:::i;:::-;;:::i;26078:167::-;;;;;;;;;;-1:-1:-1;26078:167:0;;;;;:::i;:::-;;:::i;24572:32::-;;;;;;;;;;;;;;;;27092:221;;;;;;;;;;;;;:::i;26581:355::-;;;;;;;;;;;;;:::i;23787:118::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16903:142::-;;;;;;;;;;-1:-1:-1;16903:142:0;;;;;:::i;:::-;;:::i;24793:43::-;;;;;;;;;;-1:-1:-1;24793:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;25971:101;;;;;;;;;;-1:-1:-1;25971:101:0;;;;;:::i;:::-;;:::i;12595:687::-;;;;;;;;;;-1:-1:-1;12595:687:0;;;;;:::i;:::-;;:::i;25077:327::-;;;;;;;;;;-1:-1:-1;25077:327:0;;;;;:::i;:::-;;:::i;25873:92::-;;;;;;;;;;;;;:::i;13373:164::-;;;;;;;;;;-1:-1:-1;13373:164:0;;;;;:::i;:::-;;:::i;23221:103::-;;;;;;;;;;;;;:::i;18541:101::-;;;;;;;;;;-1:-1:-1;18613:21:0;;18541:101;;22116:890;;;;;;;;;;-1:-1:-1;22116:890:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23014:87::-;;;;;;;;;;-1:-1:-1;23052:7:0;23079:14;-1:-1:-1;;;;;23079:14:0;23014:87;;21204:102;;;;;;;;;;;;;:::i;24726:22::-;;;;;;;;;;-1:-1:-1;24726:22:0;;;;;;;;;;;19218:269;;;;;;;;;;-1:-1:-1;19218:269:0;;;;;:::i;:::-;;:::i;24656:27::-;;;;;;;;;;;;;;;;26405:170;;;;;;;;;;-1:-1:-1;26405:170:0;;;;;:::i;:::-;;:::i;26942:144::-;;;;;;;;;;-1:-1:-1;26942:144:0;;;;;:::i;:::-;;:::i;17795:384::-;;;;;;;;;;-1:-1:-1;17795:384:0;;;;;:::i;:::-;;:::i;26251:148::-;;;;;;;;;;-1:-1:-1;26251:148:0;;;;;:::i;:::-;;:::i;21412:290::-;;;;;;;;;;-1:-1:-1;21412:290:0;;;;;:::i;:::-;;:::i;24611:38::-;;;;;;;;;;;;;;;;18740:101;;;;;;;;;;-1:-1:-1;18811:22:0;;18740:101;;24755:29;;;;;;;;;;-1:-1:-1;24755:29:0;;;;;;;-1:-1:-1;;;;;24755:29:0;;;19681:149;;;;;;;;;;-1:-1:-1;19681:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;19786:26:0;;;19762:4;19786:26;;;:18;:26;;;;;;;;:36;;;;;;;;;;;;;;;19681:149;23332:167;;;;;;;;;;-1:-1:-1;23332:167:0;;;;;:::i;:::-;;:::i;12318:126::-;;;;;;;;;;-1:-1:-1;12318:126:0;;;;;:::i;:::-;12415:21;;-1:-1:-1;12405:31:0;12318:126;23913:340;23989:4;-1:-1:-1;;;;;;;;;24026:25:0;;;;:101;;-1:-1:-1;;;;;;;;;;24102:25:0;;;24026:101;:177;;;-1:-1:-1;;;;;;;;;;24178:25:0;;;24026:177;24006:197;23913:340;-1:-1:-1;;23913:340:0:o;21030:98::-;21067:13;21100:15;:20;;21093:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21030:98;:::o;20782:174::-;20841:7;20869:16;20877:7;12415:21;;-1:-1:-1;12405:31:0;12318:126;20869:16;20861:45;;;;-1:-1:-1;;;20861:45:0;;7773:2:1;20861:45:0;;;7755:21:1;7812:2;7792:18;;;7785:30;-1:-1:-1;;;7831:18:1;;;7824:46;7887:18;;20861:45:0;;;;;;;;;-1:-1:-1;20924:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;20924:24:0;;20782:174::o;20308:315::-;20372:18;20393:16;20401:7;20393;:16::i;:::-;20372:37;-1:-1:-1;12030:10:0;-1:-1:-1;;;;;20428:26:0;;;;:72;;-1:-1:-1;20458:42:0;20475:10;12030;19681:149;:::i;20458:42::-;20420:106;;;;-1:-1:-1;;;20420:106:0;;8118:2:1;20420:106:0;;;8100:21:1;8157:2;8137:18;;;8130:30;-1:-1:-1;;;8176:18:1;;;8169:51;8237:18;;20420:106:0;7916:345:1;20420:106:0;20537:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;20537:29:0;-1:-1:-1;;;;;20537:29:0;;;;;;;;;20582:33;;20537:24;;20582:33;;;;;;;20361:262;20308:315;;:::o;15952:874::-;16043:20;16066:16;16074:7;16066;:16::i;:::-;16043:39;-1:-1:-1;12030:10:0;-1:-1:-1;;;;;16102:28:0;;;;:81;;-1:-1:-1;12030:10:0;16147:20;16159:7;16147:11;:20::i;:::-;-1:-1:-1;;;;;16147:36:0;;16102:81;:141;;;-1:-1:-1;16200:43:0;16217:12;12030:10;19681:149;:::i;16200:43::-;16093:168;;;;-1:-1:-1;;;16093:168:0;;8468:2:1;16093:168:0;;;8450:21:1;8507:2;8487:18;;;8480:30;-1:-1:-1;;;8526:18:1;;;8519:42;8578:18;;16093:168:0;8266:336:1;16093:168:0;16296:4;-1:-1:-1;;;;;16280:20:0;:12;-1:-1:-1;;;;;16280:20:0;;16272:42;;;;-1:-1:-1;;;16272:42:0;;8809:2:1;16272:42:0;;;8791:21:1;8848:1;8828:18;;;8821:29;-1:-1:-1;;;8866:18:1;;;8859:39;8915:18;;16272:42:0;8607:332:1;16272:42:0;-1:-1:-1;;;;;16333:16:0;;16325:38;;;;-1:-1:-1;;;16325:38:0;;;;;;;:::i;:::-;16383:24;;;;:15;:24;;;;;;;;16376:31;;-1:-1:-1;;;;;;16376:31:0;;;;;;-1:-1:-1;;;;;16444:18:0;;;;;:12;:18;;;;;:23;;-1:-1:-1;;16444:23:0;;;16482:16;;;;;;;;;:21;;16376:31;16482:21;;;;;;16518:20;;;:11;:20;;;;;;:25;;;;;;;;;16580:11;;;16610:24;;;;;;;:38;:77;;;;-1:-1:-1;16666:21:0;;16652:35;;16610:77;16606:157;;;16708:24;;;;:11;:24;;;;;:39;;-1:-1:-1;;;;;;16708:39:0;-1:-1:-1;;;;;16708:39:0;;;;;16606:157;16419:355;16810:7;16806:2;-1:-1:-1;;;;;16791:27:0;16800:4;-1:-1:-1;;;;;16791:27:0;;;;;;;;;;;16032:794;15952:874;;;:::o;25410:457::-;25012:9;12030:10;25012:25;25004:53;;;;-1:-1:-1;;;25004:53:0;;9483:2:1;25004:53:0;;;9465:21:1;9522:2;9502:18;;;9495:30;-1:-1:-1;;;9541:18:1;;;9534:45;9596:18;;25004:53:0;9281:339:1;25004:53:0;25494:10:::1;::::0;::::1;::::0;::::1;;;25486:45;;;::::0;-1:-1:-1;;;25486:45:0;;9827:2:1;25486:45:0::1;::::0;::::1;9809:21:1::0;9866:2;9846:18;;;9839:30;-1:-1:-1;;;9885:18:1;;;9878:52;9947:18;;25486:45:0::1;9625:346:1::0;25486:45:0::1;25559:13;;25546:9;:26;;25538:55;;;::::0;-1:-1:-1;;;25538:55:0;;10178:2:1;25538:55:0::1;::::0;::::1;10160:21:1::0;10217:2;10197:18;;;10190:30;-1:-1:-1;;;10236:18:1;;;10229:46;10292:18;;25538:55:0::1;9976:340:1::0;25538:55:0::1;24559:4;25644:9;25629:12;;:24;:43;;25621:85;;;::::0;-1:-1:-1;;;25621:85:0;;10523:2:1;25621:85:0::1;::::0;::::1;10505:21:1::0;10562:2;10542:18;;;10535:30;10601:31;10581:18;;;10574:59;10650:18;;25621:85:0::1;10321:353:1::0;25621:85:0::1;25751:9;25738:10;;:22;25725:9;:35;;25717:68;;;::::0;-1:-1:-1;;;25717:68:0;;10881:2:1;25717:68:0::1;::::0;::::1;10863:21:1::0;10920:2;10900:18;;;10893:30;-1:-1:-1;;;10939:18:1;;;10932:50;10999:18;;25717:68:0::1;10679:344:1::0;25717:68:0::1;25815:9;25799:12;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;25831:30:0::1;::::0;-1:-1:-1;12030:10:0;25837:12:::1;25851:9;25831:5;:30::i;:::-;25410:457:::0;:::o;26078:167::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26154:15:::1;::::0;::::1;;26153:16;26145:53;;;::::0;-1:-1:-1;;;26145:53:0;;11840:2:1;26145:53:0::1;::::0;::::1;11822:21:1::0;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:1;;;11891:54;11962:18;;26145:53:0::1;11638:348:1::0;26145:53:0::1;26205:10;:34:::0;;-1:-1:-1;;;;;26205:34:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;26205:34:0;;::::1;::::0;;;::::1;::::0;;26078:167::o;27092:221::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;27214:51:::1;::::0;27170:21:::1;::::0;27145:22:::1;::::0;27222:10:::1;::::0;27170:21;;27145:22;27214:51;27145:22;27214:51;27170:21;27222:10;27214:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27198:67;;;27280:4;27272:31;;;::::0;-1:-1:-1;;;27272:31:0;;12403:2:1;27272:31:0::1;::::0;::::1;12385:21:1::0;12442:2;12422:18;;;12415:30;-1:-1:-1;;;12461:18:1;;;12454:44;12515:18;;27272:31:0::1;12201:338:1::0;27272:31:0::1;27138:175;;27092:221::o:0;26581:355::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26642:15:::1;::::0;::::1;;26641:16;26633:61;;;::::0;-1:-1:-1;;;26633:61:0;;12746:2:1;26633:61:0::1;::::0;::::1;12728:21:1::0;;;12765:18;;;12758:30;12824:34;12804:18;;;12797:62;12876:18;;26633:61:0::1;12544:356:1::0;26633:61:0::1;26708:10;26701:17:::0;;-1:-1:-1;;26725:22:0;26708:10:::1;26725:22;::::0;;-1:-1:-1;26778:13:0::1;18401:22:::0;;;18377:21;:46;;18281:161;26778:13:::1;26771:20;::::0;:4:::1;:20;:::i;:::-;26754:37:::0;-1:-1:-1;26802:10:0;;26798:127:::1;;26824:20;26856:2;26847:6;:11;:25;;26866:6;26847:25;;;26861:2;26847:25;26824:48:::0;-1:-1:-1;26884:33:0::1;12030:10:::0;26890:12:::1;11950:98:::0;23787:118;23841:21;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23841:21:0;23882:15;23875:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23787:118;:::o;16903:142::-;16998:39;17015:4;17021:2;17025:7;16998:39;;;;;;;;;;;;:16;:39::i;:::-;16903:142;;;:::o;25971:101::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26045:21:::1;:8;26056:10:::0;;26045:21:::1;:::i;12595:687::-:0;12717:21;;12658:7;;12707:31;;12703:535;;;12759:17;12779:20;;;:11;:20;;;;;;-1:-1:-1;;;;;12779:20:0;12822:23;;12818:88;;12877:9;12595:687;-1:-1:-1;;12595:687:0:o;12818:88::-;-1:-1:-1;;;12968:9:0;;;13016:20;;;;:11;:20;;;;;;12968:9;;-1:-1:-1;;;;;;13016:20:0;13069:23;;13065:104;;13132:9;12595:687;-1:-1:-1;;12595:687:0:o;13065:104::-;12928:291;;25077:327;25012:9;12030:10;25012:25;25004:53;;;;-1:-1:-1;;;25004:53:0;;9483:2:1;25004:53:0;;;9465:21:1;9522:2;9502:18;;;9495:30;-1:-1:-1;;;9541:18:1;;;9534:45;9596:18;;25004:53:0;9281:339:1;25004:53:0;25149:10:::1;::::0;::::1;::::0;::::1;;;25141:45;;;::::0;-1:-1:-1;;;25141:45:0;;9827:2:1;25141:45:0::1;::::0;::::1;9809:21:1::0;9866:2;9846:18;;;9839:30;-1:-1:-1;;;9885:18:1;;;9878:52;9947:18;;25141:45:0::1;9625:346:1::0;25141:45:0::1;12030:10:::0;25241:22:::1;::::0;;;:8:::1;:22;::::0;;;;;;;;;25201:10:::1;::::0;:37;;-1:-1:-1;;;25201:37:0;;::::1;::::0;::::1;13217:51:1::0;;;;25236:1:0::1;13284:18:1::0;;;13277:34;25201:37:0;;25267:9;;25241:22;;25201:10;;::::1;-1:-1:-1::0;;;;;25201:10:0::1;::::0;:20:::1;::::0;13190:18:1;;;;;25201:37:0;;;;;;:10;:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;:75;;25193:124;;;::::0;-1:-1:-1;;;25193:124:0;;13713:2:1;25193:124:0::1;::::0;::::1;13695:21:1::0;13752:2;13732:18;;;13725:30;13791:34;13771:18;;;13764:62;-1:-1:-1;;;13842:18:1;;;13835:34;13886:19;;25193:124:0::1;13511:400:1::0;25193:124:0::1;12030:10:::0;25326:22:::1;::::0;;;:8:::1;:22;::::0;;;;:35;;25352:9;;25326:22;:35:::1;::::0;25352:9;;25326:35:::1;:::i;25873:92::-:0;25922:13;25951:8;25944:15;;;;;:::i;13373:164::-;13429:7;-1:-1:-1;;;;;13457:20:0;;13449:42;;;;-1:-1:-1;;;13449:42:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13509:20:0;;;;;:12;:20;;;;;;;13373:164::o;23221:103::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;23286:30:::1;23313:1;23286:18;:30::i;:::-;23221:103::o:0;22116:890::-;-1:-1:-1;;;;;22226:20:0;;22205:18;22226:20;;;:12;:20;;;;;;22176:16;;22265:14;22257:36;;;;-1:-1:-1;;;22257:36:0;;14118:2:1;22257:36:0;;;14100:21:1;14157:1;14137:18;;;14130:29;-1:-1:-1;;;14175:18:1;;;14168:39;14224:18;;22257:36:0;13916:332:1;22257:36:0;22321:21;;22304:14;22395:10;22381:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22381:25:0;;22353:53;;22417:18;22446:20;22509:9;22504:463;22524:6;22520:1;:10;22504:463;;;22556:22;22581:14;;;:11;:14;;;;;;-1:-1:-1;;;;;22581:14:0;22618:28;;22614:106;;22686:14;22671:29;;22614:106;22758:6;-1:-1:-1;;;;;22742:22:0;:12;-1:-1:-1;;;;;22742:22:0;;22738:214;;22814:1;22789:8;22798:12;;;;;;22789:22;;;;;;;;:::i;:::-;;;;;;:26;;;;;22856:10;22842;:24;22838:95;;-1:-1:-1;22901:8:0;;22116:890;-1:-1:-1;;;;;;;22116:890:0:o;22838:95::-;-1:-1:-1;22532:3:0;;22504:463;;21204:102;21243:13;21276:15;:22;;21269:29;;;;;:::i;19218:269::-;12030:10;-1:-1:-1;;;;;19304:24:0;;;19296:53;;;;-1:-1:-1;;;19296:53:0;;14587:2:1;19296:53:0;;;14569:21:1;14626:2;14606:18;;;14599:30;-1:-1:-1;;;14645:18:1;;;14638:46;14701:18;;19296:53:0;14385:340:1;19296:53:0;12030:10;19362:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;19362:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;19362:53:0;;;;;;;;;;19431:48;;540:41:1;;;19362:42:0;;12030:10;19431:48;;513:18:1;19431:48:0;;;;;;;19218:269;;:::o;26405:170::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26485:15:::1;::::0;::::1;;26484:16;26476:61;;;::::0;-1:-1:-1;;;26476:61:0;;12746:2:1;26476:61:0::1;::::0;::::1;12728:21:1::0;;;12765:18;;;12758:30;12824:34;12804:18;;;12797:62;12876:18;;26476:61:0::1;12544:356:1::0;26476:61:0::1;26544:13;:25:::0;26405:170::o;26942:144::-;-1:-1:-1;;;;;27057:18:0;;;27001:4;27057:18;;;:8;:18;;;;;;;27021:10;;:33;;-1:-1:-1;;;27021:33:0;;;;;13217:51:1;;;;27052:1:0;13284:18:1;;;13277:34;27001:4:0;;;;27021:10;;;;;;:20;;13190:18:1;;27021:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;27020:60;;26942:144;-1:-1:-1;;26942:144:0:o;17795:384::-;17910:31;17923:4;17929:2;17933:7;17910:12;:31::i;:::-;-1:-1:-1;;;;;17960:14:0;;;:19;;:188;;-1:-1:-1;18000:82:0;;-1:-1:-1;;;18000:82:0;;;18103:45;-1:-1:-1;;;;;18000:40:0;;;18103:45;;18000:82;;12030:10;;18063:1;;18067:7;;18076:5;;18000:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18000:148:0;;17960:188;17952:219;;;;-1:-1:-1;;;17952:219:0;;15680:2:1;17952:219:0;;;15662:21:1;15719:2;15699:18;;;15692:30;-1:-1:-1;;;15738:18:1;;;15731:48;15796:18;;17952:219:0;15478:342:1;17952:219:0;17795:384;;;;:::o;26251:148::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;26323:15:::1;::::0;::::1;;26322:16;26314:53;;;::::0;-1:-1:-1;;;26314:53:0;;11840:2:1;26314:53:0::1;::::0;::::1;11822:21:1::0;11879:2;11859:18;;;11852:30;-1:-1:-1;;;11898:18:1;;;11891:54;11962:18;;26314:53:0::1;11638:348:1::0;26314:53:0::1;26374:10;:19:::0;;;::::1;;;;-1:-1:-1::0;;26374:19:0;;::::1;::::0;;;::::1;::::0;;26251:148::o;21412:290::-;21476:13;21510:16;21518:7;12415:21;;-1:-1:-1;12405:31:0;12318:126;21510:16;21502:41;;;;-1:-1:-1;;;21502:41:0;;16027:2:1;21502:41:0;;;16009:21:1;16066:2;16046:18;;;16039:30;-1:-1:-1;;;16085:18:1;;;16078:42;16137:18;;21502:41:0;15825:336:1;21502:41:0;21554:22;21579:9;:7;:9::i;:::-;21554:34;;21631:1;21612:8;21606:22;:26;:88;;;;;;;;;;;;;;;;;21659:8;21669:18;:7;:16;:18::i;:::-;21642:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21606:88;21599:95;21412:290;-1:-1:-1;;;21412:290:0:o;23332:167::-;23052:7;23079:14;-1:-1:-1;;;;;23079:14:0;12030:10;23149:23;23141:52;;;;-1:-1:-1;;;23141:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23413:22:0;::::1;23405:47;;;::::0;-1:-1:-1;;;23405:47:0;;16843:2:1;23405:47:0::1;::::0;::::1;16825:21:1::0;16882:2;16862:18;;;16855:30;-1:-1:-1;;;16901:18:1;;;16894:42;16953:18;;23405:47:0::1;16641:336:1::0;23405:47:0::1;23463:28;23482:8;23463:18;:28::i;13751:534::-:0;-1:-1:-1;;;;;13824:16:0;;13816:38;;;;-1:-1:-1;;;13816:38:0;;;;;;;:::i;:::-;13884:1;13873:8;:12;13865:35;;;;-1:-1:-1;;;13865:35:0;;17184:2:1;13865:35:0;;;17166:21:1;17223:2;17203:18;;;17196:30;-1:-1:-1;;;17242:18:1;;;17235:40;17292:18;;13865:35:0;16982:334:1;13865:35:0;13961:21;;-1:-1:-1;;;;;13997:16:0;;13938:20;13997:16;;;:12;:16;;;;;;;;:28;;;;;;14040:25;;;:11;:25;;;;;:30;;-1:-1:-1;;;;;;14040:30:0;;;;;;;14099:115;14119:8;14115:1;:12;14099:115;;;14158:40;;14183:14;;;;;-1:-1:-1;;;;;14158:40:0;;;14175:1;;14158:40;;14175:1;;14158:40;14129:3;;14099:115;;;-1:-1:-1;14230:21:0;:36;-1:-1:-1;;13751:534:0:o;23507:199::-;23573:16;23592:14;;-1:-1:-1;;;;;23617:25:0;;;-1:-1:-1;;;;;;23617:25:0;;;;;;23658:40;;23592:14;;;;;;;23658:40;;23573:16;23658:40;23562:144;23507:199;:::o;289:723::-;345:13;566:5;575:1;566:10;562:53;;-1:-1:-1;;593:10:0;;;;;;;;;;;;-1:-1:-1;;;593:10:0;;;;;289:723::o;562:53::-;640:5;625:12;681:78;688:9;;681:78;;714:8;;;;:::i;:::-;;-1:-1:-1;737:10:0;;-1:-1:-1;745:2:0;737:10;;:::i;:::-;;;681:78;;;769:19;801:6;791:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:17:0;;769:39;;819:154;826:10;;819:154;;853:11;863:1;853:11;;:::i;:::-;;-1:-1:-1;922:10:0;930:2;922:5;:10;:::i;:::-;909:24;;:2;:24;:::i;:::-;896:39;;879:6;886;879:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;879:56:0;;;;;;;;-1:-1:-1;950:11:0;959:2;950:11;;:::i;:::-;;;819:154;;;997:6;289:723;-1:-1:-1;;;;289:723:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:1;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:1:o;2355:328::-;2432:6;2440;2448;2501:2;2489:9;2480:7;2476:23;2472:32;2469:52;;;2517:1;2514;2507:12;2469:52;2540:29;2559:9;2540:29;:::i;:::-;2530:39;;2588:38;2622:2;2611:9;2607:18;2588:38;:::i;:::-;2578:48;;2673:2;2662:9;2658:18;2645:32;2635:42;;2355:328;;;;;:::o;2688:186::-;2747:6;2800:2;2788:9;2779:7;2775:23;2771:32;2768:52;;;2816:1;2813;2806:12;2768:52;2839:29;2858:9;2839:29;:::i;2879:691::-;3070:2;3059:9;3052:21;3033:4;3108:6;3102:13;3151:4;3146:2;3135:9;3131:18;3124:32;3179:52;3226:3;3215:9;3211:19;3197:12;3179:52;:::i;:::-;3165:66;;3280:2;3272:6;3268:15;3262:22;3352:2;3348:7;3336:9;3328:6;3324:22;3320:36;3315:2;3304:9;3300:18;3293:64;3380:41;3414:6;3398:14;3380:41;:::i;:::-;3366:55;;;3475:2;3467:6;3463:15;3457:22;3452:2;3441:9;3437:18;3430:50;3536:2;3528:6;3524:15;3518:22;3511:4;3500:9;3496:20;3489:52;3558:6;3550:14;;;2879:691;;;;:::o;3575:592::-;3646:6;3654;3707:2;3695:9;3686:7;3682:23;3678:32;3675:52;;;3723:1;3720;3713:12;3675:52;3763:9;3750:23;3792:18;3833:2;3825:6;3822:14;3819:34;;;3849:1;3846;3839:12;3819:34;3887:6;3876:9;3872:22;3862:32;;3932:7;3925:4;3921:2;3917:13;3913:27;3903:55;;3954:1;3951;3944:12;3903:55;3994:2;3981:16;4020:2;4012:6;4009:14;4006:34;;;4036:1;4033;4026:12;4006:34;4081:7;4076:2;4067:6;4063:2;4059:15;4055:24;4052:37;4049:57;;;4102:1;4099;4092:12;4049:57;4133:2;4125:11;;;;;4155:6;;-1:-1:-1;3575:592:1;;-1:-1:-1;;;;3575:592:1:o;4172:632::-;4343:2;4395:21;;;4465:13;;4368:18;;;4487:22;;;4314:4;;4343:2;4566:15;;;;4540:2;4525:18;;;4314:4;4609:169;4623:6;4620:1;4617:13;4609:169;;;4684:13;;4672:26;;4753:15;;;;4718:12;;;;4645:1;4638:9;4609:169;;;-1:-1:-1;4795:3:1;;4172:632;-1:-1:-1;;;;;;4172:632:1:o;4809:160::-;4874:20;;4930:13;;4923:21;4913:32;;4903:60;;4959:1;4956;4949:12;4974:254;5039:6;5047;5100:2;5088:9;5079:7;5075:23;5071:32;5068:52;;;5116:1;5113;5106:12;5068:52;5139:29;5158:9;5139:29;:::i;:::-;5129:39;;5187:35;5218:2;5207:9;5203:18;5187:35;:::i;:::-;5177:45;;4974:254;;;;;:::o;5233:127::-;5294:10;5289:3;5285:20;5282:1;5275:31;5325:4;5322:1;5315:15;5349:4;5346:1;5339:15;5365:1138;5460:6;5468;5476;5484;5537:3;5525:9;5516:7;5512:23;5508:33;5505:53;;;5554:1;5551;5544:12;5505:53;5577:29;5596:9;5577:29;:::i;:::-;5567:39;;5625:38;5659:2;5648:9;5644:18;5625:38;:::i;:::-;5615:48;;5710:2;5699:9;5695:18;5682:32;5672:42;;5765:2;5754:9;5750:18;5737:32;5788:18;5829:2;5821:6;5818:14;5815:34;;;5845:1;5842;5835:12;5815:34;5883:6;5872:9;5868:22;5858:32;;5928:7;5921:4;5917:2;5913:13;5909:27;5899:55;;5950:1;5947;5940:12;5899:55;5986:2;5973:16;6008:2;6004;6001:10;5998:36;;;6014:18;;:::i;:::-;6089:2;6083:9;6057:2;6143:13;;-1:-1:-1;;6139:22:1;;;6163:2;6135:31;6131:40;6119:53;;;6187:18;;;6207:22;;;6184:46;6181:72;;;6233:18;;:::i;:::-;6273:10;6269:2;6262:22;6308:2;6300:6;6293:18;6348:7;6343:2;6338;6334;6330:11;6326:20;6323:33;6320:53;;;6369:1;6366;6359:12;6320:53;6425:2;6420;6416;6412:11;6407:2;6399:6;6395:15;6382:46;6470:1;6465:2;6460;6452:6;6448:15;6444:24;6437:35;6491:6;6481:16;;;;;;;5365:1138;;;;;;;:::o;6508:180::-;6564:6;6617:2;6605:9;6596:7;6592:23;6588:32;6585:52;;;6633:1;6630;6623:12;6585:52;6656:26;6672:9;6656:26;:::i;6921:260::-;6989:6;6997;7050:2;7038:9;7029:7;7025:23;7021:32;7018:52;;;7066:1;7063;7056:12;7018:52;7089:29;7108:9;7089:29;:::i;:::-;7079:39;;7137:38;7171:2;7160:9;7156:18;7137:38;:::i;7186:380::-;7265:1;7261:12;;;;7308;;;7329:61;;7383:4;7375:6;7371:17;7361:27;;7329:61;7436:2;7428:6;7425:14;7405:18;7402:38;7399:161;;7482:10;7477:3;7473:20;7470:1;7463:31;7517:4;7514:1;7507:15;7545:4;7542:1;7535:15;7399:161;;7186:380;;;:::o;8944:332::-;9146:2;9128:21;;;9185:1;9165:18;;;9158:29;-1:-1:-1;;;9218:2:1;9203:18;;9196:39;9267:2;9252:18;;8944:332::o;11028:127::-;11089:10;11084:3;11080:20;11077:1;11070:31;11120:4;11117:1;11110:15;11144:4;11141:1;11134:15;11160:128;11200:3;11231:1;11227:6;11224:1;11221:13;11218:39;;;11237:18;;:::i;:::-;-1:-1:-1;11273:9:1;;11160:128::o;11293:340::-;11495:2;11477:21;;;11534:2;11514:18;;;11507:30;-1:-1:-1;;;11568:2:1;11553:18;;11546:46;11624:2;11609:18;;11293:340::o;12905:125::-;12945:4;12973:1;12970;12967:8;12964:34;;;12978:18;;:::i;:::-;-1:-1:-1;13015:9:1;;12905:125::o;13322:184::-;13392:6;13445:2;13433:9;13424:7;13420:23;13416:32;13413:52;;;13461:1;13458;13451:12;13413:52;-1:-1:-1;13484:16:1;;13322:184;-1:-1:-1;13322:184:1:o;14253:127::-;14314:10;14309:3;14305:20;14302:1;14295:31;14345:4;14342:1;14335:15;14369:4;14366:1;14359:15;14730:489;-1:-1:-1;;;;;14999:15:1;;;14981:34;;15051:15;;15046:2;15031:18;;15024:43;15098:2;15083:18;;15076:34;;;15146:3;15141:2;15126:18;;15119:31;;;14924:4;;15167:46;;15193:19;;15185:6;15167:46;:::i;:::-;15159:54;14730:489;-1:-1:-1;;;;;;14730:489:1:o;15224:249::-;15293:6;15346:2;15334:9;15325:7;15321:23;15317:32;15314:52;;;15362:1;15359;15352:12;15314:52;15394:9;15388:16;15413:30;15437:5;15413:30;:::i;16166:470::-;16345:3;16383:6;16377:13;16399:53;16445:6;16440:3;16433:4;16425:6;16421:17;16399:53;:::i;:::-;16515:13;;16474:16;;;;16537:57;16515:13;16474:16;16571:4;16559:17;;16537:57;:::i;:::-;16610:20;;16166:470;-1:-1:-1;;;;16166:470:1:o;17321:135::-;17360:3;17381:17;;;17378:43;;17401:18;;:::i;:::-;-1:-1:-1;17448:1:1;17437:13;;17321:135::o;17461:127::-;17522:10;17517:3;17513:20;17510:1;17503:31;17553:4;17550:1;17543:15;17577:4;17574:1;17567:15;17593:120;17633:1;17659;17649:35;;17664:18;;:::i;:::-;-1:-1:-1;17698:9:1;;17593:120::o;17718:112::-;17750:1;17776;17766:35;;17781:18;;:::i;:::-;-1:-1:-1;17815:9:1;;17718:112::o

Swarm Source

ipfs://6816e0167be9b539f66577dfc6c3177fbfefee264cd713795b594e5e7938ec5c
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.