ETH Price: $2,073.57 (-2.85%)

Contract

0x34647e334271003e9fc8a0B0776372A2d3FDA48B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw149885812022-06-19 3:13:111364 days ago1655608391IN
0x34647e33...2d3FDA48B
0 ETH0.0009115623.13621203
Mint GLFX01149885732022-06-19 3:11:381364 days ago1655608298IN
0x34647e33...2d3FDA48B
0.05 ETH0.0047024323.27040886
Withdraw149525972022-06-12 22:28:441370 days ago1655072924IN
0x34647e33...2d3FDA48B
0 ETH0.0011195628.41538473
Mint GLFX01149520522022-06-12 20:11:041370 days ago1655064664IN
0x34647e33...2d3FDA48B
0.05 ETH0.0037549423.79075113
Withdraw149518492022-06-12 19:15:441370 days ago1655061344IN
0x34647e33...2d3FDA48B
0 ETH0.000748619
Mint GLFX01149415902022-06-11 1:24:451372 days ago1654910685IN
0x34647e33...2d3FDA48B
0.05 ETH0.0060220626
Withdraw147668432022-05-13 10:34:201401 days ago1652438060IN
0x34647e33...2d3FDA48B
0 ETH0.00177345
Mint GLFX01147514032022-05-10 23:23:261403 days ago1652225006IN
0x34647e33...2d3FDA48B
0.05 ETH0.0081804259.18833732
Mint GLFX01147480252022-05-10 10:23:151404 days ago1652178195IN
0x34647e33...2d3FDA48B
0.05 ETH0.0064442932.28962229
Withdraw147404222022-05-09 4:52:541405 days ago1652071974IN
0x34647e33...2d3FDA48B
0 ETH0.0007620719.34197476
Set Token URI Pr...147402252022-05-09 4:07:441405 days ago1652069264IN
0x34647e33...2d3FDA48B
0 ETH0.0010072423.21044473
Set Token URI Pr...147402222022-05-09 4:07:081405 days ago1652069228IN
0x34647e33...2d3FDA48B
0 ETH0.0010264523.65314404
Set Token URI Pr...147402212022-05-09 4:06:571405 days ago1652069217IN
0x34647e33...2d3FDA48B
0 ETH0.0010396823.95799144
Set Token URI Pr...147402202022-05-09 4:06:541405 days ago1652069214IN
0x34647e33...2d3FDA48B
0 ETH0.0011216525.84699926
Set Token URI Pr...147402192022-05-09 4:06:341405 days ago1652069194IN
0x34647e33...2d3FDA48B
0 ETH0.001001923.08749429
Set Token URI Pr...147402142022-05-09 4:05:391405 days ago1652069139IN
0x34647e33...2d3FDA48B
0 ETH0.001194627.52804559
Set Token URI Pr...147400842022-05-09 3:31:101405 days ago1652067070IN
0x34647e33...2d3FDA48B
0 ETH0.000894820.61944431
Mint GLFX01146824692022-04-30 0:43:321414 days ago1651279412IN
0x34647e33...2d3FDA48B
0.05 ETH0.0046247225
Mint GLFX01146809142022-04-29 18:47:581414 days ago1651258078IN
0x34647e33...2d3FDA48B
0.05 ETH0.01518253109.85119563
Mint GLFX01146809102022-04-29 18:46:491414 days ago1651258009IN
0x34647e33...2d3FDA48B
0.05 ETH0.011146280.64688888
Mint GLFX01146809072022-04-29 18:45:201414 days ago1651257920IN
0x34647e33...2d3FDA48B
0.05 ETH0.0168966184.66170226
Withdraw146310612022-04-21 22:54:011422 days ago1650581641IN
0x34647e33...2d3FDA48B
0 ETH0.0014139735.8877131
Mint GLFX01146113222022-04-18 20:31:431425 days ago1650313903IN
0x34647e33...2d3FDA48B
0.05 ETH0.006798829.34895828
Mint GLFX01146037172022-04-17 16:00:191427 days ago1650211219IN
0x34647e33...2d3FDA48B
0.05 ETH0.0030717519.46356172
Withdraw145989892022-04-16 22:20:331427 days ago1650147633IN
0x34647e33...2d3FDA48B
0 ETH0.00098525
View all transactions

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-149885812022-06-19 3:13:111364 days ago1655608391
0x34647e33...2d3FDA48B
0.05 ETH
-149525972022-06-12 22:28:441370 days ago1655072924
0x34647e33...2d3FDA48B
0.05 ETH
-149518492022-06-12 19:15:441370 days ago1655061344
0x34647e33...2d3FDA48B
0.05 ETH
-147668432022-05-13 10:34:201401 days ago1652438060
0x34647e33...2d3FDA48B
0.1 ETH
-147404222022-05-09 4:52:541405 days ago1652071974
0x34647e33...2d3FDA48B
0.2 ETH
-146310612022-04-21 22:54:011422 days ago1650581641
0x34647e33...2d3FDA48B
0.1 ETH
-145989892022-04-16 22:20:331427 days ago1650147633
0x34647e33...2d3FDA48B
0.05 ETH
-145988942022-04-16 21:56:391427 days ago1650146199
0x34647e33...2d3FDA48B
0.1 ETH
-145988822022-04-16 21:53:261427 days ago1650146006
0x34647e33...2d3FDA48B
0.1 ETH
-145987632022-04-16 21:23:041427 days ago1650144184
0x34647e33...2d3FDA48B
0.1 ETH
-145970322022-04-16 15:05:451428 days ago1650121545
0x34647e33...2d3FDA48B
0.05 ETH
-145870492022-04-15 1:36:421429 days ago1649986602
0x34647e33...2d3FDA48B
0.15 ETH
-145407412022-04-07 19:50:261436 days ago1649361026
0x34647e33...2d3FDA48B
0.05 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
glfxMinter01

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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

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

// File: @openzeppelin/contracts/security/Pausable.sol
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in paused state.
     */
    constructor() {
        _paused = true;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

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

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

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

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

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

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

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

        _;

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

// File: IManifoldERC721Edition.sol
/// @author: manifold.xyz
/**
 * Manifold ERC721 Edition Controller interface
 */
interface IManifoldERC721Edition {

    event SeriesCreated(address caller, address creator, uint256 series, uint256 maxSupply);

    /**
     * @dev Create a new series.  Returns the series id.
     */
    function createSeries(address creator, uint256 maxSupply, string calldata prefix) external returns(uint256);

    /**
     * @dev Get the latest series created.
     */
    function latestSeries(address creator) external view returns(uint256);

    /**
     * @dev Set the token uri prefix
     */
    function setTokenURIPrefix(address creator, uint256 series, string calldata prefix) external;
    
    /**
     * @dev Mint NFTs to a single recipient
     */
    function mintGLFX01(address creator, uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7, address recipient) external payable;

    /**
     * @dev Total supply of editions
     */
    function totalSupply(address creator, uint256 series) external view returns(uint256);

    /**
     * @dev Max supply of editions
     */
    function maxSupply(address creator, uint256 series) external view returns(uint256);
}

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

// File: @manifoldxyz/creator-core-solidity/contracts/extensions/ICreatorExtensionTokenURI.sol
/// @author: manifold.xyz

/**
 * @dev Implement this if you want your extension to have overloadable URI's
 */
interface ICreatorExtensionTokenURI is IERC165 {

    /**
     * Get the uri for a given creator/tokenId
     */
    function tokenURI(address creator, uint256 tokenId) external view returns (string memory);
}

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

// File: @manifoldxyz/creator-core-solidity/contracts/extensions/CreatorExtension.sol
/// @author: manifold.xyz
/**
 * @dev Base creator extension variables
 */
abstract contract CreatorExtension is ERC165 {

    /**
     * @dev Legacy extension interface identifiers
     *
     * {IERC165-supportsInterface} needs to return 'true' for this interface
     * in order backwards compatible with older creator contracts
     */
    bytes4 constant internal LEGACY_EXTENSION_INTERFACE = 0x7005caad;

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

// File: @manifoldxyz/creator-core-solidity/contracts/core/ICreatorCore.sol
/// @author: manifold.xyz
/**
 * @dev Core creator interface
 */
interface ICreatorCore is IERC165 {

    event ExtensionRegistered(address indexed extension, address indexed sender);
    event ExtensionUnregistered(address indexed extension, address indexed sender);
    event ExtensionBlacklisted(address indexed extension, address indexed sender);
    event MintPermissionsUpdated(address indexed extension, address indexed permissions, address indexed sender);
    event RoyaltiesUpdated(uint256 indexed tokenId, address payable[] receivers, uint256[] basisPoints);
    event DefaultRoyaltiesUpdated(address payable[] receivers, uint256[] basisPoints);
    event ExtensionRoyaltiesUpdated(address indexed extension, address payable[] receivers, uint256[] basisPoints);
    event ExtensionApproveTransferUpdated(address indexed extension, bool enabled);

    /**
     * @dev gets address of all extensions
     */
    function getExtensions() external view returns (address[] memory);

    /**
     * @dev add an extension.  Can only be called by contract owner or admin.
     * extension address must point to a contract implementing ICreatorExtension.
     * Returns True if newly added, False if already added.
     */
    function registerExtension(address extension, string calldata baseURI) external;

    /**
     * @dev add an extension.  Can only be called by contract owner or admin.
     * extension address must point to a contract implementing ICreatorExtension.
     * Returns True if newly added, False if already added.
     */
    function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external;

    /**
     * @dev add an extension.  Can only be called by contract owner or admin.
     * Returns True if removed, False if already removed.
     */
    function unregisterExtension(address extension) external;

    /**
     * @dev blacklist an extension.  Can only be called by contract owner or admin.
     * This function will destroy all ability to reference the metadata of any tokens created
     * by the specified extension. It will also unregister the extension if needed.
     * Returns True if removed, False if already removed.
     */
    function blacklistExtension(address extension) external;

    /**
     * @dev set the baseTokenURI of an extension.  Can only be called by extension.
     */
    function setBaseTokenURIExtension(string calldata uri) external;

    /**
     * @dev set the baseTokenURI of an extension.  Can only be called by extension.
     * For tokens with no uri configured, tokenURI will return "uri+tokenId"
     */
    function setBaseTokenURIExtension(string calldata uri, bool identical) external;

    /**
     * @dev set the common prefix of an extension.  Can only be called by extension.
     * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI"
     * Useful if you want to use ipfs/arweave
     */
    function setTokenURIPrefixExtension(string calldata prefix) external;

    /**
     * @dev set the tokenURI of a token extension.  Can only be called by extension that minted token.
     */
    function setTokenURIExtension(uint256 tokenId, string calldata uri) external;

    /**
     * @dev set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token.
     */
    function setTokenURIExtension(uint256[] memory tokenId, string[] calldata uri) external;

    /**
     * @dev set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin.
     * For tokens with no uri configured, tokenURI will return "uri+tokenId"
     */
    function setBaseTokenURI(string calldata uri) external;

    /**
     * @dev set the common prefix for tokens with no extension.  Can only be called by owner/admin.
     * If configured, and a token has a uri set, tokenURI will return "prefixURI+tokenURI"
     * Useful if you want to use ipfs/arweave
     */
    function setTokenURIPrefix(string calldata prefix) external;

    /**
     * @dev set the tokenURI of a token with no extension.  Can only be called by owner/admin.
     */
    function setTokenURI(uint256 tokenId, string calldata uri) external;

    /**
     * @dev set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin.
     */
    function setTokenURI(uint256[] memory tokenIds, string[] calldata uris) external;

    /**
     * @dev set a permissions contract for an extension.  Used to control minting.
     */
    function setMintPermissions(address extension, address permissions) external;

    /**
     * @dev Configure so transfers of tokens created by the caller (must be extension) gets approval
     * from the extension before transferring
     */
    function setApproveTransferExtension(bool enabled) external;

    /**
     * @dev get the extension of a given token
     */
    function tokenExtension(uint256 tokenId) external view returns (address);

    /**
     * @dev Set default royalties
     */
    function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external;

    /**
     * @dev Set royalties of a token
     */
    function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external;

    /**
     * @dev Set royalties of an extension
     */
    function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external;

    /**
     * @dev Get royalites of a token.  Returns list of receivers and basisPoints
     */
    function getRoyalties(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);
    
    // Royalty support for various other standards
    function getFeeRecipients(uint256 tokenId) external view returns (address payable[] memory);
    function getFeeBps(uint256 tokenId) external view returns (uint[] memory);
    function getFees(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);
    function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);

}

// File: @manifoldxyz/creator-core-solidity/contracts/core/IERC721CreatorCore.sol
/// @author: manifold.xyz
/**
 * @dev Core ERC721 creator interface
 */
interface IERC721CreatorCore is ICreatorCore {

    /**
     * @dev mint a token with no extension. Can only be called by an admin.
     * Returns tokenId minted
     */
    function mintBase(address to) external returns (uint256);

    /**
     * @dev mint a token with no extension. Can only be called by an admin.
     * Returns tokenId minted
     */
    function mintBase(address to, string calldata uri) external returns (uint256);

    /**
     * @dev batch mint a token with no extension. Can only be called by an admin.
     * Returns tokenId minted
     */
    function mintBaseBatch(address to, uint16 count) external returns (uint256[] memory);

    /**
     * @dev batch mint a token with no extension. Can only be called by an admin.
     * Returns tokenId minted
     */
    function mintBaseBatch(address to, string[] calldata uris) external returns (uint256[] memory);

    /**
     * @dev mint a token. Can only be called by a registered extension.
     * Returns tokenId minted
     */
    function mintExtension(address to) external returns (uint256);

    /**
     * @dev mint a token. Can only be called by a registered extension.
     * Returns tokenId minted
     */
    function mintExtension(address to, string calldata uri) external returns (uint256);

    /**
     * @dev batch mint a token. Can only be called by a registered extension.
     * Returns tokenIds minted
     */
    function mintExtensionBatch(address to, uint16 count) external returns (uint256[] memory);

    /**
     * @dev batch mint a token. Can only be called by a registered extension.
     * Returns tokenId minted
     */
    function mintExtensionBatch(address to, string[] calldata uris) external returns (uint256[] memory);

    /**
     * @dev burn a token. Can only be called by token owner or approved address.
     * On burn, calls back to the registered extension's onBurn method
     */
    function burn(uint256 tokenId) external;

}

// File: @manifoldxyz/libraries-solidity/contracts/access/IAdminControl.sol
/// @author: manifold.xyz
/**
 * @dev Interface for admin control
 */
interface IAdminControl is IERC165 {

    event AdminApproved(address indexed account, address indexed sender);
    event AdminRevoked(address indexed account, address indexed sender);

    /**
     * @dev gets address of all admins
     */
    function getAdmins() external view returns (address[] memory);

    /**
     * @dev add an admin.  Can only be called by contract owner.
     */
    function approveAdmin(address admin) external;

    /**
     * @dev remove an admin.  Can only be called by contract owner.
     */
    function revokeAdmin(address admin) external;

    /**
     * @dev checks whether or not given address is an admin
     * Returns True if they are
     */
    function isAdmin(address admin) external view returns (bool);

}

// File: glfxMinter01.sol
////////////////////////////////////////////////
//                                            //
//    ░▒█▀▀█░█░░█░░█░▄▀▀▄░█░░░░░▀░░█▀▄░█▀▀    //
//    ░▒█░▄▄░█░░█▄▄█░█▄▄█░█▀▀█░░█▀░█░░░▀▀▄    //
//    ░▒█▄▄▀░▀▀░▄▄▄▀░█░░░░▀░░▀░▀▀▀░▀▀▀░▀▀▀    //
//                Generation 1                //
//           by rDan @ Glyphics.eth           //
//////////////////////////////////////////////// 
contract glfxMinter01 is CreatorExtension, ICreatorExtensionTokenURI, IManifoldERC721Edition, Pausable, ReentrancyGuard {
    using Strings for uint256;

    struct IndexRange {
        uint256 startIndex;
        uint256 count;
    }

    uint256 public mintRate = 0.05 ether;

    mapping(address => mapping(uint256 => string)) _tokenPrefix;
    mapping(address => mapping(uint256 => uint256)) _maxSupply;
    mapping(address => mapping(uint256 => uint256)) _totalSupply;
    mapping(address => mapping(uint256 => IndexRange[])) _indexRanges;
    mapping(address => uint256) _currentSeries;
    
    /**
     * @dev Only allows approved admins to call the specified function
     */
    modifier creatorAdminRequired(address creator) {
        require(creator == 0x50a874E9333B8Bd0aE30aDBC2c91d10dDcc57B17,"Contract not authorized.");
        require(IAdminControl(creator).isAdmin(msg.sender), "Must be owner or admin of creator contract.");
        _;
    }
    
    function supportsInterface(bytes4 interfaceId) public view virtual override(CreatorExtension, IERC165) returns (bool) {
        return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || interfaceId == type(IManifoldERC721Edition).interfaceId ||
               CreatorExtension.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IManifoldERC721Edition-totalSupply}.
     */
    function totalSupply(address creator, uint256 series) external view override returns(uint256) {
        return _totalSupply[creator][series];
    }

    /**
     * @dev See {IManifoldERC721Edition-maxSupply}.
     */
    function maxSupply(address creator, uint256 series) external view override returns(uint256) {
        return _maxSupply[creator][series];
    }

    /**
     * @dev See {IManifoldERC721Edition-createSeries}.
     */
    function createSeries(address creator, uint256 maxSupply_, string calldata prefix) external override creatorAdminRequired(creator) returns(uint256) {
        _currentSeries[creator] += 1;
        uint256 series = _currentSeries[creator];
        _maxSupply[creator][series] = maxSupply_;
        _tokenPrefix[creator][series] = prefix;
        emit SeriesCreated(msg.sender, creator, series, maxSupply_);
        return series;
    }

    function pause(address creator) public creatorAdminRequired(creator) {
        _pause();
    }
    function pause() internal {
        _pause();
    }

    function unpause(address creator) public creatorAdminRequired(creator) {
        _unpause();
    }
    function unpause() internal {
        _unpause();
    }

    /**
     * @dev See {IManifoldERC721Edition-latestSeries}.
     */
    function latestSeries(address creator) external view override returns(uint256) {
        return _currentSeries[creator];
    }

    /**
     * See {IManifoldERC721Edition-setTokenURIPrefix}.
     */
    function setTokenURIPrefix(address creator, uint256 series, string calldata prefix) external override creatorAdminRequired(creator) {
        require(series > 0 && series <= 7, "Invalid series");
        _tokenPrefix[creator][series] = prefix;
    }
    
    /**
     * @dev See {ICreatorExtensionTokenURI-tokenURI}.
     */
    function tokenURI(address creator, uint256 tokenId) external view override returns (string memory) {
        (uint256 series, uint256 index) = _tokenSeriesAndIndex(creator, tokenId);
        return string(abi.encodePacked(_tokenPrefix[creator][series], (index+1).toString(), ".json"));
    }
    
    /**
     * @dev See {IManifoldERC721Edition-mint}.
     */
    function mintGLFX01(address creator, uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7, address recipient) external whenNotPaused payable override nonReentrant {
        require(msg.value >= mintRate, "Sorry, not enough ether.");
        uint256 statusCheck = 0;
        uint256 selectedSeries = 0;
        for (uint i = 1; i < 8; i++) { statusCheck = statusCheck + _totalSupply[creator][i]; }
        require(statusCheck < 1024, "Fully minted");
        selectedSeries = tokenCheck(series1, series2, series3, series4, series5, series6, series7);
        if(selectedSeries == 0){selectedSeries = tokenCheck2(series1, series2, series3, series4, series5, series6, series7);}
        if(selectedSeries == 0){selectedSeries = 7;}
        uint256[] memory tokenIds = IERC721CreatorCore(creator).mintExtensionBatch(recipient, 1);
        _updateIndexRanges(creator, selectedSeries, tokenIds[0], 1);
    }

    function tokenCheck(uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7) internal view returns (uint256){    
        uint256 series = 0;
        uint256 randomSeed = random();
        if(series1 == 1 && randomSeed < 3){series = 1;}
        if(series2 == 1 && (randomSeed <= 8 && randomSeed >= 3)){series = 2;}
        if(series3 == 1 && (randomSeed <= 16 && randomSeed > 8)){series = 3;}
        if(series4 == 1 && (randomSeed <= 24 && randomSeed > 16)){series = 4;}
        if(series5 == 1 && (randomSeed <= 32 && randomSeed > 24)){series = 5;}
        if(series6 == 1 && (randomSeed <= 72 && randomSeed > 32)){series = 6;}
        if(series7 == 1 && randomSeed > 72){series = 7;}
        return (series);
    }

    function tokenCheck2(uint256 series1, uint256 series2, uint256 series3, uint256 series4, uint256 series5, uint256 series6, uint256 series7) internal view returns (uint256){    
        uint256 series = 0;
        uint256 randomSeed = random();
        if(series1 == 1 && randomSeed < 2){series = 1;}
        if(series2 == 1 && (randomSeed <= 4 && randomSeed >= 2)){series = 2;}
        if(series3 == 1 && (randomSeed <= 8 && randomSeed > 4)){series = 3;}
        if(series4 == 1 && (randomSeed <= 16 && randomSeed > 8)){series = 4;}
        if(series5 == 1 && (randomSeed <= 32 && randomSeed > 16)){series = 5;}
        if(series6 == 1 && (randomSeed <= 64 && randomSeed > 32)){series = 6;}
        if(series7 == 1 && randomSeed > 64){series = 7;}
        return (series);
    }
    
    function random() internal view returns (uint256){
        uint256 tough = block.difficulty*block.timestamp;
        uint256 time = block.timestamp*block.difficulty;
        uint256 randomSeed = uint256(keccak256(abi.encodePacked(tough+1, time+1, msg.sender))) % 128;
        return (randomSeed);
    }

    /**
     * @dev Update the index ranges, which is used to figure out the index from a tokenId
     */
    function _updateIndexRanges(address creator, uint256 series, uint256 startIndex, uint256 count) internal {
        IndexRange[] storage indexRanges = _indexRanges[creator][series];
        if (indexRanges.length == 0) {
           indexRanges.push(IndexRange(startIndex, count));
        } else {
          IndexRange storage lastIndexRange = indexRanges[indexRanges.length-1];
          if ((lastIndexRange.startIndex + lastIndexRange.count) == startIndex) {
             lastIndexRange.count += count;
          } else {
            indexRanges.push(IndexRange(startIndex, count));
          }
        }
        _totalSupply[creator][series] += count;
    }

    /**
     * @dev Index from tokenId
     */
    function _tokenSeriesAndIndex(address creator, uint256 tokenId) internal view returns(uint256, uint256) {
        require(_currentSeries[creator] > 0, "Invalid token");
        for (uint series=1; series <= _currentSeries[creator]; series++) {
            IndexRange[] memory indexRanges = _indexRanges[creator][series];
            uint256 offset;
            for (uint i = 0; i < indexRanges.length; i++) {
                IndexRange memory currentIndex = indexRanges[i];
                if (tokenId < currentIndex.startIndex) break;
                if (tokenId >= currentIndex.startIndex && tokenId < currentIndex.startIndex + currentIndex.count) {
                   return (series, tokenId - currentIndex.startIndex + offset);
                }
                offset += currentIndex.count;
            }
        }
        revert("Invalid token");
    }
    
    function withdraw(address creator) public creatorAdminRequired(creator){
        require(address(this).balance > 0, "Balance is 0");
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"uint256","name":"series","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"SeriesCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"maxSupply_","type":"uint256"},{"internalType":"string","name":"prefix","type":"string"}],"name":"createSeries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"latestSeries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series1","type":"uint256"},{"internalType":"uint256","name":"series2","type":"uint256"},{"internalType":"uint256","name":"series3","type":"uint256"},{"internalType":"uint256","name":"series4","type":"uint256"},{"internalType":"uint256","name":"series5","type":"uint256"},{"internalType":"uint256","name":"series6","type":"uint256"},{"internalType":"uint256","name":"series7","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"mintGLFX01","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"string","name":"prefix","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"series","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405266b1a2bc2ec5000060025534801561001b57600080fd5b506000805460ff191660019081179091558055611a588061003d6000396000f3fe6080604052600436106100c25760003560e01c80635c975abb1161007f57806377e4486e1161005957806377e4486e1461023d5780637e4e3d6f14610250578063ca0dcf1614610293578063e9dc6375146102a957600080fd5b80635c975abb146101e5578063654fb5bd146101fd57806376a67a511461021d57600080fd5b806301ffc9a7146100c7578063151c6f41146100fc578063346e6c0e1461012a5780633580e71b1461016d57806351cff8d9146101a357806357b001f9146101c5575b600080fd5b3480156100d357600080fd5b506100e76100e2366004611718565b6102d6565b60405190151581526020015b60405180910390f35b34801561010857600080fd5b5061011c610117366004611540565b61031c565b6040519081526020016100f3565b34801561013657600080fd5b5061011c610145366004611516565b6001600160a01b03919091166000908152600560209081526040808320938352929052205490565b34801561017957600080fd5b5061011c6101883660046114f4565b6001600160a01b031660009081526007602052604090205490565b3480156101af57600080fd5b506101c36101be3660046114f4565b6104cb565b005b3480156101d157600080fd5b506101c36101e03660046114f4565b61060b565b3480156101f157600080fd5b5060005460ff166100e7565b34801561020957600080fd5b506101c3610218366004611540565b6106e7565b34801561022957600080fd5b506101c36102383660046114f4565b61083b565b6101c361024b3660046115c7565b610913565b34801561025c57600080fd5b5061011c61026b366004611516565b6001600160a01b03919091166000908152600460209081526040808320938352929052205490565b34801561029f57600080fd5b5061011c60025481565b3480156102b557600080fd5b506102c96102c4366004611516565b610b8b565b6040516100f39190611819565b60006001600160e01b0319821663e9dc637560e01b148061030757506001600160e01b03198216630f02e49d60e31b145b80610316575061031682610bff565b92915050565b6000847350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146103645760405162461bcd60e51b815260040161035b9061184c565b60405180910390fd5b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156103a357600080fd5b505afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db91906116f6565b6103f75760405162461bcd60e51b815260040161035b90611883565b6001600160a01b03861660009081526007602052604081208054600192906104209084906118ce565b90915550506001600160a01b0386166000818152600760209081526040808320546004835281842081855283528184208a905593835260038252808320848452909152902061047090868661143f565b50604080513381526001600160a01b0389166020820152908101829052606081018790527f739bed52023d4028ee60025b96a4024aacf5aff3162e8c9711084c74d6b8c6139060800160405180910390a19695505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146105085760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561054757600080fd5b505afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906116f6565b61059b5760405162461bcd60e51b815260040161035b90611883565b600047116105da5760405162461bcd60e51b815260206004820152600c60248201526b042616c616e636520697320360a41b604482015260640161035b565b60405133904780156108fc02916000818181858888f19350505050158015610606573d6000803e3d6000fd5b505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146106485760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561068757600080fd5b505afa15801561069b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bf91906116f6565b6106db5760405162461bcd60e51b815260040161035b90611883565b6106e3610c34565b5050565b837350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146107245760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b91906116f6565b6107b75760405162461bcd60e51b815260040161035b90611883565b6000841180156107c8575060078411155b6108055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073657269657360901b604482015260640161035b565b6001600160a01b0385166000908152600360209081526040808320878452909152902061083390848461143f565b505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146108785760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906116f6565b61090b5760405162461bcd60e51b815260040161035b90611883565b6106e3610cc7565b60005460ff16156109595760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b600260015414156109ac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161035b565b6002600181905554341015610a035760405162461bcd60e51b815260206004820152601860248201527f536f7272792c206e6f7420656e6f7567682065746865722e0000000000000000604482015260640161035b565b60008060015b6008811015610a54576001600160a01b038c166000908152600560209081526040808320848452909152902054610a4090846118ce565b925080610a4c8161199b565b915050610a09565b506104008210610a955760405162461bcd60e51b815260206004820152600c60248201526b119d5b1b1e481b5a5b9d195960a21b604482015260640161035b565b610aa48a8a8a8a8a8a8a610d42565b905080610abd57610aba8a8a8a8a8a8a8a610e50565b90505b80610ac6575060075b60405163e00aab4b60e01b81526001600160a01b03848116600483015260016024830152600091908d169063e00aab4b90604401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b50919081019061163e565b9050610b798c8383600081518110610b6a57610b6a6119f6565b60200260200101516001610f5b565b50506001805550505050505050505050565b6060600080610b9a85856110a8565b6001600160a01b038716600090815260036020908152604080832085845290915290209193509150610bd5610bd08360016118ce565b6112b4565b604051602001610be692919061175e565b6040516020818303038152906040529250505092915050565b60006001600160e01b03198216637005caad60e01b148061031657506301ffc9a760e01b6001600160e01b0319831614610316565b60005460ff16610c7d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161035b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615610d0d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610caa3390565b60008080610d4e6113ba565b9050896001148015610d605750600381105b15610d6a57600191505b886001148015610d87575060088111158015610d87575060038110155b15610d9157600291505b876001148015610dad575060108111158015610dad5750600881115b15610db757600391505b866001148015610dd3575060188111158015610dd35750601081115b15610ddd57600491505b856001148015610df9575060208111158015610df95750601881115b15610e0357600591505b846001148015610e1f575060488111158015610e1f5750602081115b15610e2957600691505b836001148015610e395750604881115b15610e4357600791505b5098975050505050505050565b60008080610e5c6113ba565b9050896001148015610e6e5750600281105b15610e7857600191505b886001148015610e95575060048111158015610e95575060028110155b15610e9f57600291505b876001148015610ebb575060088111158015610ebb5750600481115b15610ec557600391505b866001148015610ee1575060108111158015610ee15750600881115b15610eeb57600491505b856001148015610f07575060208111158015610f075750601081115b15610f1157600591505b846001148015610f2d575060408111158015610f2d5750602081115b15610f3757600691505b836001148015610e3957506040811115610e43575060079998505050505050505050565b6001600160a01b038416600090815260066020908152604080832086845290915290208054610fc1576040805180820190915283815260208082018481528354600181810186556000868152939093209351600290910290930192835551910155611069565b80546000908290610fd490600190611919565b81548110610fe457610fe46119f6565b90600052602060002090600202019050838160010154826000015461100991906118ce565b141561102e578281600101600082825461102391906118ce565b909155506110679050565b60408051808201909152848152602080820185815284546001818101875560008781529390932093516002909102909301928355519101555b505b6001600160a01b03851660009081526005602090815260408083208784529091528120805484929061109c9084906118ce565b90915550505050505050565b6001600160a01b03821660009081526007602052604081205481906110ff5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b60015b6001600160a01b0385166000908152600760205260409020548111611274576001600160a01b0385166000908152600660209081526040808320848452825280832080548251818502810185019093528083529192909190849084015b828210156111a55783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061115f565b505050509050600080600090505b825181101561125e5760008382815181106111d0576111d06119f6565b6020026020010151905080600001518810156111ec575061125e565b8051881080159061120c57506020810151815161120991906118ce565b88105b1561123957805185908490611221908b611919565b61122b91906118ce565b9650965050505050506112ad565b602081015161124890846118ce565b92505080806112569061199b565b9150506111b3565b505050808061126c9061199b565b915050611102565b5060405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b9250929050565b6060816112d85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130257806112ec8161199b565b91506112fb9050600a836118e6565b91506112dc565b60008167ffffffffffffffff81111561131d5761131d611a0c565b6040519080825280601f01601f191660200182016040528015611347576020820181803683370190505b5090505b84156113b25761135c600183611919565b9150611369600a866119b6565b6113749060306118ce565b60f81b818381518110611389576113896119f6565b60200101906001600160f81b031916908160001a9053506113ab600a866118e6565b945061134b565b949350505050565b6000806113c742446118fa565b905060006113d544426118fa565b9050600060806113e68460016118ce565b6113f18460016118ce565b60408051602081019390935282015233606090811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012060001c6113b291906119b6565b82805461144b90611960565b90600052602060002090601f01602090048101928261146d57600085556114b3565b82601f106114865782800160ff198235161785556114b3565b828001600101855582156114b3579182015b828111156114b3578235825591602001919060010190611498565b506114bf9291506114c3565b5090565b5b808211156114bf57600081556001016114c4565b80356001600160a01b03811681146114ef57600080fd5b919050565b60006020828403121561150657600080fd5b61150f826114d8565b9392505050565b6000806040838503121561152957600080fd5b611532836114d8565b946020939093013593505050565b6000806000806060858703121561155657600080fd5b61155f856114d8565b935060208501359250604085013567ffffffffffffffff8082111561158357600080fd5b818701915087601f83011261159757600080fd5b8135818111156115a657600080fd5b8860208285010111156115b857600080fd5b95989497505060200194505050565b60008060008060008060008060006101208a8c0312156115e657600080fd5b6115ef8a6114d8565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a0135915061162f6101008b016114d8565b90509295985092959850929598565b6000602080838503121561165157600080fd5b825167ffffffffffffffff8082111561166957600080fd5b818501915085601f83011261167d57600080fd5b81518181111561168f5761168f611a0c565b8060051b604051601f19603f830116810181811085821117156116b4576116b4611a0c565b604052828152858101935084860182860187018a10156116d357600080fd5b600095505b83861015610e435780518552600195909501949386019386016116d8565b60006020828403121561170857600080fd5b8151801515811461150f57600080fd5b60006020828403121561172a57600080fd5b81356001600160e01b03198116811461150f57600080fd5b60008151611754818560208601611930565b9290920192915050565b600080845481600182811c91508083168061177a57607f831692505b602080841082141561179a57634e487b7160e01b86526022600452602486fd5b8180156117ae57600181146117bf576117ec565b60ff198616895284890196506117ec565b60008b81526020902060005b868110156117e45781548b8201529085019083016117cb565b505084890196505b5050505050506118106117ff8286611742565b64173539b7b760d91b815260050190565b95945050505050565b6020815260008251806020840152611838816040850160208701611930565b601f01601f19169190910160400192915050565b60208082526018908201527f436f6e7472616374206e6f7420617574686f72697a65642e0000000000000000604082015260600190565b6020808252602b908201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60408201526a391031b7b73a3930b1ba1760a91b606082015260800190565b600082198211156118e1576118e16119ca565b500190565b6000826118f5576118f56119e0565b500490565b6000816000190483118215151615611914576119146119ca565b500290565b60008282101561192b5761192b6119ca565b500390565b60005b8381101561194b578181015183820152602001611933565b8381111561195a576000848401525b50505050565b600181811c9082168061197457607f821691505b6020821081141561199557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156119af576119af6119ca565b5060010190565b6000826119c5576119c56119e0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122013b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106100c25760003560e01c80635c975abb1161007f57806377e4486e1161005957806377e4486e1461023d5780637e4e3d6f14610250578063ca0dcf1614610293578063e9dc6375146102a957600080fd5b80635c975abb146101e5578063654fb5bd146101fd57806376a67a511461021d57600080fd5b806301ffc9a7146100c7578063151c6f41146100fc578063346e6c0e1461012a5780633580e71b1461016d57806351cff8d9146101a357806357b001f9146101c5575b600080fd5b3480156100d357600080fd5b506100e76100e2366004611718565b6102d6565b60405190151581526020015b60405180910390f35b34801561010857600080fd5b5061011c610117366004611540565b61031c565b6040519081526020016100f3565b34801561013657600080fd5b5061011c610145366004611516565b6001600160a01b03919091166000908152600560209081526040808320938352929052205490565b34801561017957600080fd5b5061011c6101883660046114f4565b6001600160a01b031660009081526007602052604090205490565b3480156101af57600080fd5b506101c36101be3660046114f4565b6104cb565b005b3480156101d157600080fd5b506101c36101e03660046114f4565b61060b565b3480156101f157600080fd5b5060005460ff166100e7565b34801561020957600080fd5b506101c3610218366004611540565b6106e7565b34801561022957600080fd5b506101c36102383660046114f4565b61083b565b6101c361024b3660046115c7565b610913565b34801561025c57600080fd5b5061011c61026b366004611516565b6001600160a01b03919091166000908152600460209081526040808320938352929052205490565b34801561029f57600080fd5b5061011c60025481565b3480156102b557600080fd5b506102c96102c4366004611516565b610b8b565b6040516100f39190611819565b60006001600160e01b0319821663e9dc637560e01b148061030757506001600160e01b03198216630f02e49d60e31b145b80610316575061031682610bff565b92915050565b6000847350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146103645760405162461bcd60e51b815260040161035b9061184c565b60405180910390fd5b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156103a357600080fd5b505afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db91906116f6565b6103f75760405162461bcd60e51b815260040161035b90611883565b6001600160a01b03861660009081526007602052604081208054600192906104209084906118ce565b90915550506001600160a01b0386166000818152600760209081526040808320546004835281842081855283528184208a905593835260038252808320848452909152902061047090868661143f565b50604080513381526001600160a01b0389166020820152908101829052606081018790527f739bed52023d4028ee60025b96a4024aacf5aff3162e8c9711084c74d6b8c6139060800160405180910390a19695505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146105085760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561054757600080fd5b505afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f91906116f6565b61059b5760405162461bcd60e51b815260040161035b90611883565b600047116105da5760405162461bcd60e51b815260206004820152600c60248201526b042616c616e636520697320360a41b604482015260640161035b565b60405133904780156108fc02916000818181858888f19350505050158015610606573d6000803e3d6000fd5b505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146106485760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561068757600080fd5b505afa15801561069b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bf91906116f6565b6106db5760405162461bcd60e51b815260040161035b90611883565b6106e3610c34565b5050565b837350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146107245760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b15801561076357600080fd5b505afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b91906116f6565b6107b75760405162461bcd60e51b815260040161035b90611883565b6000841180156107c8575060078411155b6108055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073657269657360901b604482015260640161035b565b6001600160a01b0385166000908152600360209081526040808320878452909152902061083390848461143f565b505050505050565b807350a874e9333b8bd0ae30adbc2c91d10ddcc57b176001600160a01b038216146108785760405162461bcd60e51b815260040161035b9061184c565b604051630935e01b60e21b81523360048201526001600160a01b038216906324d7806c9060240160206040518083038186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906116f6565b61090b5760405162461bcd60e51b815260040161035b90611883565b6106e3610cc7565b60005460ff16156109595760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b600260015414156109ac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161035b565b6002600181905554341015610a035760405162461bcd60e51b815260206004820152601860248201527f536f7272792c206e6f7420656e6f7567682065746865722e0000000000000000604482015260640161035b565b60008060015b6008811015610a54576001600160a01b038c166000908152600560209081526040808320848452909152902054610a4090846118ce565b925080610a4c8161199b565b915050610a09565b506104008210610a955760405162461bcd60e51b815260206004820152600c60248201526b119d5b1b1e481b5a5b9d195960a21b604482015260640161035b565b610aa48a8a8a8a8a8a8a610d42565b905080610abd57610aba8a8a8a8a8a8a8a610e50565b90505b80610ac6575060075b60405163e00aab4b60e01b81526001600160a01b03848116600483015260016024830152600091908d169063e00aab4b90604401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b50919081019061163e565b9050610b798c8383600081518110610b6a57610b6a6119f6565b60200260200101516001610f5b565b50506001805550505050505050505050565b6060600080610b9a85856110a8565b6001600160a01b038716600090815260036020908152604080832085845290915290209193509150610bd5610bd08360016118ce565b6112b4565b604051602001610be692919061175e565b6040516020818303038152906040529250505092915050565b60006001600160e01b03198216637005caad60e01b148061031657506301ffc9a760e01b6001600160e01b0319831614610316565b60005460ff16610c7d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161035b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60005460ff1615610d0d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161035b565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610caa3390565b60008080610d4e6113ba565b9050896001148015610d605750600381105b15610d6a57600191505b886001148015610d87575060088111158015610d87575060038110155b15610d9157600291505b876001148015610dad575060108111158015610dad5750600881115b15610db757600391505b866001148015610dd3575060188111158015610dd35750601081115b15610ddd57600491505b856001148015610df9575060208111158015610df95750601881115b15610e0357600591505b846001148015610e1f575060488111158015610e1f5750602081115b15610e2957600691505b836001148015610e395750604881115b15610e4357600791505b5098975050505050505050565b60008080610e5c6113ba565b9050896001148015610e6e5750600281105b15610e7857600191505b886001148015610e95575060048111158015610e95575060028110155b15610e9f57600291505b876001148015610ebb575060088111158015610ebb5750600481115b15610ec557600391505b866001148015610ee1575060108111158015610ee15750600881115b15610eeb57600491505b856001148015610f07575060208111158015610f075750601081115b15610f1157600591505b846001148015610f2d575060408111158015610f2d5750602081115b15610f3757600691505b836001148015610e3957506040811115610e43575060079998505050505050505050565b6001600160a01b038416600090815260066020908152604080832086845290915290208054610fc1576040805180820190915283815260208082018481528354600181810186556000868152939093209351600290910290930192835551910155611069565b80546000908290610fd490600190611919565b81548110610fe457610fe46119f6565b90600052602060002090600202019050838160010154826000015461100991906118ce565b141561102e578281600101600082825461102391906118ce565b909155506110679050565b60408051808201909152848152602080820185815284546001818101875560008781529390932093516002909102909301928355519101555b505b6001600160a01b03851660009081526005602090815260408083208784529091528120805484929061109c9084906118ce565b90915550505050505050565b6001600160a01b03821660009081526007602052604081205481906110ff5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b60015b6001600160a01b0385166000908152600760205260409020548111611274576001600160a01b0385166000908152600660209081526040808320848452825280832080548251818502810185019093528083529192909190849084015b828210156111a55783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061115f565b505050509050600080600090505b825181101561125e5760008382815181106111d0576111d06119f6565b6020026020010151905080600001518810156111ec575061125e565b8051881080159061120c57506020810151815161120991906118ce565b88105b1561123957805185908490611221908b611919565b61122b91906118ce565b9650965050505050506112ad565b602081015161124890846118ce565b92505080806112569061199b565b9150506111b3565b505050808061126c9061199b565b915050611102565b5060405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161035b565b9250929050565b6060816112d85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130257806112ec8161199b565b91506112fb9050600a836118e6565b91506112dc565b60008167ffffffffffffffff81111561131d5761131d611a0c565b6040519080825280601f01601f191660200182016040528015611347576020820181803683370190505b5090505b84156113b25761135c600183611919565b9150611369600a866119b6565b6113749060306118ce565b60f81b818381518110611389576113896119f6565b60200101906001600160f81b031916908160001a9053506113ab600a866118e6565b945061134b565b949350505050565b6000806113c742446118fa565b905060006113d544426118fa565b9050600060806113e68460016118ce565b6113f18460016118ce565b60408051602081019390935282015233606090811b6bffffffffffffffffffffffff1916908201526074016040516020818303038152906040528051906020012060001c6113b291906119b6565b82805461144b90611960565b90600052602060002090601f01602090048101928261146d57600085556114b3565b82601f106114865782800160ff198235161785556114b3565b828001600101855582156114b3579182015b828111156114b3578235825591602001919060010190611498565b506114bf9291506114c3565b5090565b5b808211156114bf57600081556001016114c4565b80356001600160a01b03811681146114ef57600080fd5b919050565b60006020828403121561150657600080fd5b61150f826114d8565b9392505050565b6000806040838503121561152957600080fd5b611532836114d8565b946020939093013593505050565b6000806000806060858703121561155657600080fd5b61155f856114d8565b935060208501359250604085013567ffffffffffffffff8082111561158357600080fd5b818701915087601f83011261159757600080fd5b8135818111156115a657600080fd5b8860208285010111156115b857600080fd5b95989497505060200194505050565b60008060008060008060008060006101208a8c0312156115e657600080fd5b6115ef8a6114d8565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a0135915061162f6101008b016114d8565b90509295985092959850929598565b6000602080838503121561165157600080fd5b825167ffffffffffffffff8082111561166957600080fd5b818501915085601f83011261167d57600080fd5b81518181111561168f5761168f611a0c565b8060051b604051601f19603f830116810181811085821117156116b4576116b4611a0c565b604052828152858101935084860182860187018a10156116d357600080fd5b600095505b83861015610e435780518552600195909501949386019386016116d8565b60006020828403121561170857600080fd5b8151801515811461150f57600080fd5b60006020828403121561172a57600080fd5b81356001600160e01b03198116811461150f57600080fd5b60008151611754818560208601611930565b9290920192915050565b600080845481600182811c91508083168061177a57607f831692505b602080841082141561179a57634e487b7160e01b86526022600452602486fd5b8180156117ae57600181146117bf576117ec565b60ff198616895284890196506117ec565b60008b81526020902060005b868110156117e45781548b8201529085019083016117cb565b505084890196505b5050505050506118106117ff8286611742565b64173539b7b760d91b815260050190565b95945050505050565b6020815260008251806020840152611838816040850160208701611930565b601f01601f19169190910160400192915050565b60208082526018908201527f436f6e7472616374206e6f7420617574686f72697a65642e0000000000000000604082015260600190565b6020808252602b908201527f4d757374206265206f776e6572206f722061646d696e206f662063726561746f60408201526a391031b7b73a3930b1ba1760a91b606082015260800190565b600082198211156118e1576118e16119ca565b500190565b6000826118f5576118f56119e0565b500490565b6000816000190483118215151615611914576119146119ca565b500290565b60008282101561192b5761192b6119ca565b500390565b60005b8381101561194b578181015183820152602001611933565b8381111561195a576000848401525b50505050565b600181811c9082168061197457607f821691505b6020821081141561199557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156119af576119af6119ca565b5060010190565b6000826119c5576119c56119e0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122013b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d64736f6c63430008070033

Deployed Bytecode Sourcemap

22558:8463:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23554:328;;;;;;;;;;-1:-1:-1;23554:328:0;;;;;:::i;:::-;;:::i;:::-;;;6924:14:1;;6917:22;6899:41;;6887:2;6872:18;23554:328:0;;;;;;;;24418:440;;;;;;;;;;-1:-1:-1;24418:440:0;;;;;:::i;:::-;;:::i;:::-;;;11024:25:1;;;11012:2;10997:18;24418:440:0;10878:177:1;23963:149:0;;;;;;;;;;-1:-1:-1;23963:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;24075:21:0;;;;24048:7;24075:21;;;:12;:21;;;;;;;;:29;;;;;;;;;23963:149;25274:128;;;;;;;;;;-1:-1:-1;25274:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;25371:23:0;25344:7;25371:23;;;:14;:23;;;;;;;25274:128;30816:202;;;;;;;;;;-1:-1:-1;30816:202:0;;;;;:::i;:::-;;:::i;:::-;;25029:100;;;;;;;;;;-1:-1:-1;25029:100:0;;;;;:::i;:::-;;:::i;2018:86::-;;;;;;;;;;-1:-1:-1;2065:4:0;2089:7;;;2018:86;;25484:252;;;;;;;;;;-1:-1:-1;25484:252:0;;;;;:::i;:::-;;:::i;24866:96::-;;;;;;;;;;-1:-1:-1;24866:96:0;;;;;:::i;:::-;;:::i;26193:977::-;;;;;;:::i;:::-;;:::i;24191:145::-;;;;;;;;;;-1:-1:-1;24191:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;24301:19:0;;;;24274:7;24301:19;;;:10;:19;;;;;;;;:27;;;;;;;;;24191:145;22806:36;;;;;;;;;;;;;;;;25821:294;;;;;;;;;;-1:-1:-1;25821:294:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23554:328::-;23666:4;-1:-1:-1;;;;;;23690:58:0;;-1:-1:-1;;;23690:58:0;;:117;;-1:-1:-1;;;;;;;23752:55:0;;-1:-1:-1;;;23752:55:0;23690:117;:184;;;;23827:47;23862:11;23827:34;:47::i;:::-;23683:191;23554:328;-1:-1:-1;;23554:328:0:o;24418:440::-;24557:7;24540;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;;;;;;;;;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24577:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:28;;24604:1:::1;::::0;24577:23;:28:::1;::::0;24604:1;;24577:28:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;24633:23:0;::::1;24616:14;24633:23:::0;;;:14:::1;:23;::::0;;;;;;;;24667:10:::1;:19:::0;;;;;:27;;;;;;;;:40;;;24718:21;;;:12:::1;:21:::0;;;;;:29;;;;;;;;:38:::1;::::0;24750:6;;24718:38:::1;:::i;:::-;-1:-1:-1::0;24772:54:0::1;::::0;;24786:10:::1;6277:34:1::0;;-1:-1:-1;;;;;6347:15:1;;6342:2;6327:18;;6320:43;6379:18;;;6372:34;;;6437:2;6422:18;;6415:34;;;24772:54:0::1;::::0;6226:3:1;6211:19;24772:54:0::1;;;;;;;24844:6:::0;24418:440;-1:-1:-1;;;;;;24418:440:0:o;30816:202::-;30879:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;30930:1:::1;30906:21;:25;30898:50;;;::::0;-1:-1:-1;;;30898:50:0;;9261:2:1;30898:50:0::1;::::0;::::1;9243:21:1::0;9300:2;9280:18;;;9273:30;-1:-1:-1;;;9319:18:1;;;9312:42;9371:18;;30898:50:0::1;9059:336:1::0;30898:50:0::1;30959:51;::::0;30967:10:::1;::::0;30988:21:::1;30959:51:::0;::::1;;;::::0;::::1;::::0;;;30988:21;30967:10;30959:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30816:202:::0;;:::o;25029:100::-;25091:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;25111:10:::1;:8;:10::i;:::-;25029:100:::0;;:::o;25484:252::-;25607:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;25644:1:::1;25635:6;:10;:25;;;;;25659:1;25649:6;:11;;25635:25;25627:52;;;::::0;-1:-1:-1;;;25627:52:0;;8918:2:1;25627:52:0::1;::::0;::::1;8900:21:1::0;8957:2;8937:18;;;8930:30;-1:-1:-1;;;8976:18:1;;;8969:44;9030:18;;25627:52:0::1;8716:338:1::0;25627:52:0::1;-1:-1:-1::0;;;;;25690:21:0;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;:29;;;;;;;;:38:::1;::::0;25722:6;;25690:38:::1;:::i;:::-;;25484:252:::0;;;;;:::o;24866:96::-;24926:7;23343:42;-1:-1:-1;;;;;23332:53:0;;;23324:89;;;;-1:-1:-1;;;23324:89:0;;;;;;;:::i;:::-;23432:42;;-1:-1:-1;;;23432:42:0;;23463:10;23432:42;;;5946:51:1;-1:-1:-1;;;;;23432:30:0;;;;;5919:18:1;;23432:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23424:98;;;;-1:-1:-1;;;23424:98:0;;;;;;;:::i;:::-;24946:8:::1;:6;:8::i;26193:977::-:0;2065:4;2089:7;;;2343:9;2335:38;;;;-1:-1:-1;;;2335:38:0;;8573:2:1;2335:38:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;2335:38:0;8371:340:1;2335:38:0;7074:1:::1;7672:7;;:19;;7664:63;;;::::0;-1:-1:-1;;;7664:63:0;;10720:2:1;7664:63:0::1;::::0;::::1;10702:21:1::0;10759:2;10739:18;;;10732:30;10798:33;10778:18;;;10771:61;10849:18;;7664:63:0::1;10518:355:1::0;7664:63:0::1;7074:1;7805:7;:18:::0;;;26453:8;26440:9:::2;:21;;26432:58;;;::::0;-1:-1:-1;;;26432:58:0;;10367:2:1;26432:58:0::2;::::0;::::2;10349:21:1::0;10406:2;10386:18;;;10379:30;10445:26;10425:18;;;10418:54;10489:18;;26432:58:0::2;10165:348:1::0;26432:58:0::2;26501:19;::::0;26586:1:::2;26572:86;26593:1;26589;:5;26572:86;;;-1:-1:-1::0;;;;;26631:21:0;::::2;;::::0;;;:12:::2;:21;::::0;;;;;;;:24;;;;;;;;;26617:38:::2;::::0;:11;:38:::2;:::i;:::-;26603:52:::0;-1:-1:-1;26596:3:0;::::2;::::0;::::2;:::i;:::-;;;;26572:86;;;;26690:4;26676:11;:18;26668:43;;;::::0;-1:-1:-1;;;26668:43:0;;7890:2:1;26668:43:0::2;::::0;::::2;7872:21:1::0;7929:2;7909:18;;;7902:30;-1:-1:-1;;;7948:18:1;;;7941:42;8000:18;;26668:43:0::2;7688:336:1::0;26668:43:0::2;26739:73;26750:7;26759;26768;26777;26786;26795;26804;26739:10;:73::i;:::-;26722:90:::0;-1:-1:-1;26826:19:0;26823:117:::2;;26864:74;26876:7;26885;26894;26903;26912;26921;26930;26864:11;:74::i;:::-;26847:91;;26823:117;26953:19:::0;26950:44:::2;;-1:-1:-1::0;26991:1:0::2;26950:44;27032:60;::::0;-1:-1:-1;;;27032:60:0;;-1:-1:-1;;;;;6659:32:1;;;27032:60:0::2;::::0;::::2;6641:51:1::0;27090:1:0::2;6708:18:1::0;;;6701:47;27004:25:0::2;::::0;27032:46;;::::2;::::0;::::2;::::0;6614:18:1;;27032:60:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;27032:60:0::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;27004:88;;27103:59;27122:7;27131:14;27147:8;27156:1;27147:11;;;;;;;;:::i;:::-;;;;;;;27160:1;27103:18;:59::i;:::-;-1:-1:-1::0;;7030:1:0::1;7984:22:::0;;-1:-1:-1;;;;;;;;;;26193:977:0:o;25821:294::-;25905:13;25932:14;25948:13;25965:38;25986:7;25995;25965:20;:38::i;:::-;-1:-1:-1;;;;;26045:21:0;;;;;;:12;:21;;;;;;;;:29;;;;;;;;25931:72;;-1:-1:-1;25931:72:0;-1:-1:-1;26076:20:0;26077:7;25931:72;26083:1;26077:7;:::i;:::-;26076:18;:20::i;:::-;26028:78;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26014:93;;;;25821:294;;;;:::o;12221:219::-;12314:4;-1:-1:-1;;;;;;12338:41:0;;-1:-1:-1;;;12338:41:0;;:94;;-1:-1:-1;;;;;;;;;;11586:40:0;;;12396:36;11477:157;3077:120;2065:4;2089:7;;;2613:41;;;;-1:-1:-1;;;2613:41:0;;7541:2:1;2613:41:0;;;7523:21:1;7580:2;7560:18;;;7553:30;-1:-1:-1;;;7599:18:1;;;7592:50;7659:18;;2613:41:0;7339:344:1;2613:41:0;3146:5:::1;3136:15:::0;;-1:-1:-1;;3136:15:0::1;::::0;;3167:22:::1;788:10:::0;3176:12:::1;3167:22;::::0;-1:-1:-1;;;;;5964:32:1;;;5946:51;;5934:2;5919:18;3167:22:0::1;;;;;;;3077:120::o:0;2818:118::-;2065:4;2089:7;;;2343:9;2335:38;;;;-1:-1:-1;;;2335:38:0;;8573:2:1;2335:38:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;2335:38:0;8371:340:1;2335:38:0;2878:7:::1;:14:::0;;-1:-1:-1;;2878:14:0::1;2888:4;2878:14;::::0;;2908:20:::1;2915:12;788:10:::0;;708:98;27178:790;27340:7;;;27413:8;:6;:8::i;:::-;27392:29;;27435:7;27446:1;27435:12;:30;;;;;27464:1;27451:10;:14;27435:30;27432:47;;;27476:1;27467:10;;27432:47;27492:7;27503:1;27492:12;:52;;;;;27523:1;27509:10;:15;;:34;;;;;27542:1;27528:10;:15;;27509:34;27489:69;;;27555:1;27546:10;;27489:69;27571:7;27582:1;27571:12;:52;;;;;27602:2;27588:10;:16;;:34;;;;;27621:1;27608:10;:14;27588:34;27568:69;;;27634:1;27625:10;;27568:69;27650:7;27661:1;27650:12;:53;;;;;27681:2;27667:10;:16;;:35;;;;;27700:2;27687:10;:15;27667:35;27647:70;;;27714:1;27705:10;;27647:70;27730:7;27741:1;27730:12;:53;;;;;27761:2;27747:10;:16;;:35;;;;;27780:2;27767:10;:15;27747:35;27727:70;;;27794:1;27785:10;;27727:70;27810:7;27821:1;27810:12;:53;;;;;27841:2;27827:10;:16;;:35;;;;;27860:2;27847:10;:15;27827:35;27807:70;;;27874:1;27865:10;;27807:70;27890:7;27901:1;27890:12;:31;;;;;27919:2;27906:10;:15;27890:31;27887:48;;;27932:1;27923:10;;27887:48;-1:-1:-1;27953:6:0;27178:790;-1:-1:-1;;;;;;;;27178:790:0:o;27976:789::-;28139:7;;;28212:8;:6;:8::i;:::-;28191:29;;28234:7;28245:1;28234:12;:30;;;;;28263:1;28250:10;:14;28234:30;28231:47;;;28275:1;28266:10;;28231:47;28291:7;28302:1;28291:12;:52;;;;;28322:1;28308:10;:15;;:34;;;;;28341:1;28327:10;:15;;28308:34;28288:69;;;28354:1;28345:10;;28288:69;28370:7;28381:1;28370:12;:51;;;;;28401:1;28387:10;:15;;:33;;;;;28419:1;28406:10;:14;28387:33;28367:68;;;28432:1;28423:10;;28367:68;28448:7;28459:1;28448:12;:52;;;;;28479:2;28465:10;:16;;:34;;;;;28498:1;28485:10;:14;28465:34;28445:69;;;28511:1;28502:10;;28445:69;28527:7;28538:1;28527:12;:53;;;;;28558:2;28544:10;:16;;:35;;;;;28577:2;28564:10;:15;28544:35;28524:70;;;28591:1;28582:10;;28524:70;28607:7;28618:1;28607:12;:53;;;;;28638:2;28624:10;:16;;:35;;;;;28657:2;28644:10;:15;28624:35;28604:70;;;28671:1;28662:10;;28604:70;28687:7;28698:1;28687:12;:31;;;;;28716:2;28703:10;:15;28684:48;;;-1:-1:-1;28729:1:0;;27976:789;-1:-1:-1;;;;;;;;;27976:789:0:o;29201:672::-;-1:-1:-1;;;;;29352:21:0;;29317:32;29352:21;;;:12;:21;;;;;;;;:29;;;;;;;;29396:18;;29392:425;;29452:29;;;;;;;;;;;;;;;;;;;29435:47;;;;;;;;-1:-1:-1;29435:47:0;;;;;;;;;;;;;;;;;;;;;;;29392:425;;;29561:18;;29513:33;;29549:11;;29561:20;;29580:1;;29561:20;:::i;:::-;29549:33;;;;;;;;:::i;:::-;;;;;;;;;;;29513:69;;29653:10;29628:14;:20;;;29600:14;:25;;;:48;;;;:::i;:::-;29599:64;29595:211;;;29705:5;29681:14;:20;;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;29595:211:0;;-1:-1:-1;29595:211:0;;29762:29;;;;;;;;;;;;;;;;;;;29745:47;;;;;;;;-1:-1:-1;29745:47:0;;;;;;;;;;;;;;;;;;;;;;;29595:211;29500:317;29392:425;-1:-1:-1;;;;;29827:21:0;;;;;;:12;:21;;;;;;;;:29;;;;;;;;:38;;29860:5;;29827:21;:38;;29860:5;;29827:38;:::i;:::-;;;;-1:-1:-1;;;;;;;29201:672:0:o;29931:873::-;-1:-1:-1;;;;;30054:23:0;;30017:7;30054:23;;;:14;:23;;;;;;30017:7;;30046:53;;;;-1:-1:-1;;;30046:53:0;;8231:2:1;30046:53:0;;;8213:21:1;8270:2;8250:18;;;8243:30;-1:-1:-1;;;8289:18:1;;;8282:43;8342:18;;30046:53:0;8029:337:1;30046:53:0;30127:1;30110:653;-1:-1:-1;;;;;30140:23:0;;;;;;:14;:23;;;;;;30130:33;;30110:653;;-1:-1:-1;;;;;30224:21:0;;30190:31;30224:21;;;:12;:21;;;;;;;;:29;;;;;;;;30190:63;;;;;;;;;;;;;;;;;;;30224:29;;30190:63;:31;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30268:14;30302:6;30311:1;30302:10;;30297:455;30318:11;:18;30314:1;:22;30297:455;;;30362:30;30395:11;30407:1;30395:14;;;;;;;;:::i;:::-;;;;;;;30362:47;;30442:12;:23;;;30432:7;:33;30428:44;;;30467:5;;;30428:44;30506:23;;30495:34;;;;;:92;;-1:-1:-1;30569:18:0;;;;30543:23;;:44;;30569:18;30543:44;:::i;:::-;30533:7;:54;30495:92;30491:199;;;30637:23;;30619:6;;30663;;30627:33;;:7;:33;:::i;:::-;:42;;;;:::i;:::-;30611:59;;;;;;;;;;;30491:199;30718:18;;;;30708:28;;;;:::i;:::-;;;30343:409;30338:3;;;;;:::i;:::-;;;;30297:455;;;;30175:588;;30165:8;;;;;:::i;:::-;;;;30110:653;;;-1:-1:-1;30773:23:0;;-1:-1:-1;;;30773:23:0;;8231:2:1;30773:23:0;;;8213:21:1;8270:2;8250:18;;;8243:30;-1:-1:-1;;;8289:18:1;;;8282:43;8342:18;;30773:23:0;8029:337:1;29931:873:0;;;;;;:::o;3536:723::-;3592:13;3813:10;3809:53;;-1:-1:-1;;3840:10:0;;;;;;;;;;;;-1:-1:-1;;;3840:10:0;;;;;3536:723::o;3809:53::-;3887:5;3872:12;3928:78;3935:9;;3928:78;;3961:8;;;;:::i;:::-;;-1:-1:-1;3984:10:0;;-1:-1:-1;3992:2:0;3984:10;;:::i;:::-;;;3928:78;;;4016:19;4048:6;4038:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4038:17:0;;4016:39;;4066:154;4073:10;;4066:154;;4100:11;4110:1;4100:11;;:::i;:::-;;-1:-1:-1;4169:10:0;4177:2;4169:5;:10;:::i;:::-;4156:24;;:2;:24;:::i;:::-;4143:39;;4126:6;4133;4126:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4126:56:0;;;;;;;;-1:-1:-1;4197:11:0;4206:2;4197:11;;:::i;:::-;;;4066:154;;;4244:6;3536:723;-1:-1:-1;;;;3536:723:0:o;28777:307::-;28818:7;;28853:32;28870:15;28853:16;:32;:::i;:::-;28837:48;-1:-1:-1;28896:12:0;28911:32;28927:16;28911:15;:32;:::i;:::-;28896:47;-1:-1:-1;28954:18:0;29043:3;29010:7;:5;29016:1;29010:7;:::i;:::-;29019:6;:4;29024:1;29019:6;:::i;:::-;28993:45;;;;;;5621:19:1;;;;5656:12;;5649:28;29027:10:0;5715:2:1;5711:15;;;-1:-1:-1;;5707:53:1;5693:12;;;5686:75;5777:12;;28993:45:0;;;;;;;;;;;;28983:56;;;;;;28975:65;;:71;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:254::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;627:2;612:18;;;;599:32;;-1:-1:-1;;;383:254:1:o;642:734::-;731:6;739;747;755;808:2;796:9;787:7;783:23;779:32;776:52;;;824:1;821;814:12;776:52;847:29;866:9;847:29;:::i;:::-;837:39;;923:2;912:9;908:18;895:32;885:42;;978:2;967:9;963:18;950:32;1001:18;1042:2;1034:6;1031:14;1028:34;;;1058:1;1055;1048:12;1028:34;1096:6;1085:9;1081:22;1071:32;;1141:7;1134:4;1130:2;1126:13;1122:27;1112:55;;1163:1;1160;1153:12;1112:55;1203:2;1190:16;1229:2;1221:6;1218:14;1215:34;;;1245:1;1242;1235:12;1215:34;1290:7;1285:2;1276:6;1272:2;1268:15;1264:24;1261:37;1258:57;;;1311:1;1308;1301:12;1258:57;642:734;;;;-1:-1:-1;;1342:2:1;1334:11;;-1:-1:-1;;;642:734:1:o;1381:742::-;1512:6;1520;1528;1536;1544;1552;1560;1568;1576;1629:3;1617:9;1608:7;1604:23;1600:33;1597:53;;;1646:1;1643;1636:12;1597:53;1669:29;1688:9;1669:29;:::i;:::-;1659:39;;1745:2;1734:9;1730:18;1717:32;1707:42;;1796:2;1785:9;1781:18;1768:32;1758:42;;1847:2;1836:9;1832:18;1819:32;1809:42;;1898:3;1887:9;1883:19;1870:33;1860:43;;1950:3;1939:9;1935:19;1922:33;1912:43;;2002:3;1991:9;1987:19;1974:33;1964:43;;2054:3;2043:9;2039:19;2026:33;2016:43;;2078:39;2112:3;2101:9;2097:19;2078:39;:::i;:::-;2068:49;;1381:742;;;;;;;;;;;:::o;2128:1116::-;2223:6;2254:2;2297;2285:9;2276:7;2272:23;2268:32;2265:52;;;2313:1;2310;2303:12;2265:52;2346:9;2340:16;2375:18;2416:2;2408:6;2405:14;2402:34;;;2432:1;2429;2422:12;2402:34;2470:6;2459:9;2455:22;2445:32;;2515:7;2508:4;2504:2;2500:13;2496:27;2486:55;;2537:1;2534;2527:12;2486:55;2566:2;2560:9;2588:2;2584;2581:10;2578:36;;;2594:18;;:::i;:::-;2640:2;2637:1;2633:10;2672:2;2666:9;2735:2;2731:7;2726:2;2722;2718:11;2714:25;2706:6;2702:38;2790:6;2778:10;2775:22;2770:2;2758:10;2755:18;2752:46;2749:72;;;2801:18;;:::i;:::-;2837:2;2830:22;2887:18;;;2921:15;;;;-1:-1:-1;2956:11:1;;;2986;;;2982:20;;2979:33;-1:-1:-1;2976:53:1;;;3025:1;3022;3015:12;2976:53;3047:1;3038:10;;3057:156;3071:2;3068:1;3065:9;3057:156;;;3128:10;;3116:23;;3089:1;3082:9;;;;;3159:12;;;;3191;;3057:156;;3249:277;3316:6;3369:2;3357:9;3348:7;3344:23;3340:32;3337:52;;;3385:1;3382;3375:12;3337:52;3417:9;3411:16;3470:5;3463:13;3456:21;3449:5;3446:32;3436:60;;3492:1;3489;3482:12;3531:286;3589:6;3642:2;3630:9;3621:7;3617:23;3613:32;3610:52;;;3658:1;3655;3648:12;3610:52;3684:23;;-1:-1:-1;;;;;;3736:32:1;;3726:43;;3716:71;;3783:1;3780;3773:12;3822:185;3864:3;3902:5;3896:12;3917:52;3962:6;3957:3;3950:4;3943:5;3939:16;3917:52;:::i;:::-;3985:16;;;;;3822:185;-1:-1:-1;;3822:185:1:o;4130:1301::-;4407:3;4436:1;4469:6;4463:13;4499:3;4521:1;4549:9;4545:2;4541:18;4531:28;;4609:2;4598:9;4594:18;4631;4621:61;;4675:4;4667:6;4663:17;4653:27;;4621:61;4701:2;4749;4741:6;4738:14;4718:18;4715:38;4712:165;;;-1:-1:-1;;;4776:33:1;;4832:4;4829:1;4822:15;4862:4;4783:3;4850:17;4712:165;4893:18;4920:104;;;;5038:1;5033:320;;;;4886:467;;4920:104;-1:-1:-1;;4953:24:1;;4941:37;;4998:16;;;;-1:-1:-1;4920:104:1;;5033:320;11133:1;11126:14;;;11170:4;11157:18;;5128:1;5142:165;5156:6;5153:1;5150:13;5142:165;;;5234:14;;5221:11;;;5214:35;5277:16;;;;5171:10;;5142:165;;;5146:3;;5336:6;5331:3;5327:16;5320:23;;4886:467;;;;;;;5369:56;5394:30;5420:3;5412:6;5394:30;:::i;:::-;-1:-1:-1;;;4072:20:1;;4117:1;4108:11;;4012:113;5369:56;5362:63;4130:1301;-1:-1:-1;;;;;4130:1301:1:o;6951:383::-;7100:2;7089:9;7082:21;7063:4;7132:6;7126:13;7175:6;7170:2;7159:9;7155:18;7148:34;7191:66;7250:6;7245:2;7234:9;7230:18;7225:2;7217:6;7213:15;7191:66;:::i;:::-;7318:2;7297:15;-1:-1:-1;;7293:29:1;7278:45;;;;7325:2;7274:54;;6951:383;-1:-1:-1;;6951:383:1:o;9400:348::-;9602:2;9584:21;;;9641:2;9621:18;;;9614:30;9680:26;9675:2;9660:18;;9653:54;9739:2;9724:18;;9400:348::o;9753:407::-;9955:2;9937:21;;;9994:2;9974:18;;;9967:30;10033:34;10028:2;10013:18;;10006:62;-1:-1:-1;;;10099:2:1;10084:18;;10077:41;10150:3;10135:19;;9753:407::o;11186:128::-;11226:3;11257:1;11253:6;11250:1;11247:13;11244:39;;;11263:18;;:::i;:::-;-1:-1:-1;11299:9:1;;11186:128::o;11319:120::-;11359:1;11385;11375:35;;11390:18;;:::i;:::-;-1:-1:-1;11424:9:1;;11319:120::o;11444:168::-;11484:7;11550:1;11546;11542:6;11538:14;11535:1;11532:21;11527:1;11520:9;11513:17;11509:45;11506:71;;;11557:18;;:::i;:::-;-1:-1:-1;11597:9:1;;11444:168::o;11617:125::-;11657:4;11685:1;11682;11679:8;11676:34;;;11690:18;;:::i;:::-;-1:-1:-1;11727:9:1;;11617:125::o;11747:258::-;11819:1;11829:113;11843:6;11840:1;11837:13;11829:113;;;11919:11;;;11913:18;11900:11;;;11893:39;11865:2;11858:10;11829:113;;;11960:6;11957:1;11954:13;11951:48;;;11995:1;11986:6;11981:3;11977:16;11970:27;11951:48;;11747:258;;;:::o;12010:380::-;12089:1;12085:12;;;;12132;;;12153:61;;12207:4;12199:6;12195:17;12185:27;;12153:61;12260:2;12252:6;12249:14;12229:18;12226:38;12223:161;;;12306:10;12301:3;12297:20;12294:1;12287:31;12341:4;12338:1;12331:15;12369:4;12366:1;12359:15;12223:161;;12010:380;;;:::o;12395:135::-;12434:3;-1:-1:-1;;12455:17:1;;12452:43;;;12475:18;;:::i;:::-;-1:-1:-1;12522:1:1;12511:13;;12395:135::o;12535:112::-;12567:1;12593;12583:35;;12598:18;;:::i;:::-;-1:-1:-1;12632:9:1;;12535:112::o;12652:127::-;12713:10;12708:3;12704:20;12701:1;12694:31;12744:4;12741:1;12734:15;12768:4;12765:1;12758:15;12784:127;12845:10;12840:3;12836:20;12833:1;12826:31;12876:4;12873:1;12866:15;12900:4;12897:1;12890:15;12916:127;12977:10;12972:3;12968:20;12965:1;12958:31;13008:4;13005:1;12998:15;13032:4;13029:1;13022:15;13048:127;13109:10;13104:3;13100:20;13097:1;13090:31;13140:4;13137:1;13130:15;13164:4;13161:1;13154:15

Swarm Source

ipfs://13b10742664fe55de6733a56455813eaf289bce7e51bbcc7c1e7078b023ece4d

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

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