Contract
0x51d25fb5fbfe57ff67b20c499d4dd1d3c64844b7
2
Contract Overview
Balance:
0 CRO
CRO Value:
$0.00
[ Download CSV Export ]
Latest 2 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x7ec645a4767e01b87e3ffd847e047af0bb2cb13e6283ba2df9e96930447f1ee9 | 1911870 | 325 days 2 hrs ago | 0x51d25fb5fbfe57ff67b20c499d4dd1d3c64844b7 | 0x1a79d6e75fa9fa7bf5c1f22572e9299836d148b3 | 828,276 CRO | ||
0x7ec645a4767e01b87e3ffd847e047af0bb2cb13e6283ba2df9e96930447f1ee9 | 1911870 | 325 days 2 hrs ago | 0x51d25fb5fbfe57ff67b20c499d4dd1d3c64844b7 | 0x823f149a1084d5e46b54372787edba0e5b92f9f2 | 72,024 CRO |
[ Download CSV Export ]
Contract Name:
CroQueenNFT
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-14 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @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: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); 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() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @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. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: contracts/CroQueenNFT.sol pragma solidity >=0.8.0 <0.9.0; contract CroQueenNFT is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; string public notRevealedURI; uint256 public cost = 300 ether; uint256 public costErc20Token = 5_000_000_000; uint256 public maxSupply = 3001; uint256 public maxMintAmount = 10; uint256 public maxSupplyForGiveaway = 100; uint256 public airdropAmount = 150_000_000_000; bool public paused = true; bool public revealAllowed = false; bool public giveAwayTokensMinted = false; bool public airdropAllowed = false; address public devAddress = 0x823f149a1084d5E46B54372787edBa0E5b92F9F2; address public teamAddress = 0x1A79d6E75fa9FA7bf5c1F22572E9299836D148B3; address public airdropAddress = 0x2474Fab2978929B5b45726de4b9C9F7e6b3b7B29; address public airdropToken = 0x0000000000000000000000000000000000000000; address public erc20PaymentToken = 0x065DE42E28E42d90c2052a1B49e7f83806Af0e1F; mapping(uint256 => bool) public tokenRevealed; mapping(uint256 => bool) public airdropClaimed; mapping(address => uint256) public totalMintedByAddress; event RevealedToken(uint256 _tokenId, address _owner); event ClaimedAirdrop(uint256 _tokenId, address _owner); constructor(string memory _name, string memory _symbol, string memory _initialBaseUri, string memory _initialNotRevealedUri) ERC721(_name, _symbol) { setBaseURI(_initialBaseUri); setNotRevealedURI(_initialNotRevealedUri); } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function mint(uint256 _mintAmount) public payable { require(!paused, "Minting is paused. Come back later!"); for (uint256 i = 1; i <= _mintAmount; i++) { require(totalSupply() < maxSupply, "Sold out!"); require(msg.value >= cost * _mintAmount, "Please enter the correct price"); require(totalMintedByAddress[msg.sender] < maxMintAmount, "You have reached the limit of NFT's you can mint"); totalMintedByAddress[msg.sender] = totalMintedByAddress[msg.sender] + 1; _safeMint(msg.sender, totalSupply() + 1); } uint256 paymentErc20TokenDemicals = IERC20Metadata(erc20PaymentToken).decimals(); IERC20(erc20PaymentToken).transferFrom(msg.sender, address(airdropAddress), (costErc20Token * _mintAmount) * 10 ** paymentErc20TokenDemicals); } function revealToken(uint256 _tokenId) public { require(_exists(_tokenId), "ERC721Metadata: URI query for nonexistent token"); require(ownerOf(_tokenId) == msg.sender, "You don't own this token"); require(!tokenRevealed[_tokenId], "This token has already been revealed"); require(revealAllowed, "Token reveal is not yet allowed"); tokenRevealed[_tokenId] = true; emit RevealedToken(_tokenId, msg.sender); } function claimAirdrop(uint256 _tokenId) public { require(_exists(_tokenId), "ERC721Metadata: URI query for nonexistent token"); require(ownerOf(_tokenId) == msg.sender, "You don't own this token"); require(tokenRevealed[_tokenId], "Token needs to be revealed to claim airdrop"); require(!airdropClaimed[_tokenId], "This token has already claimed the airdrop"); require(airdropAllowed, "Airdrop is not yet allowed"); uint256 airdropTokenDemicals = IERC20Metadata(airdropToken).decimals(); IERC20(airdropToken).transferFrom(address(airdropAddress), msg.sender, airdropAmount * 10 ** airdropTokenDemicals); airdropClaimed[_tokenId] = true; emit ClaimedAirdrop(_tokenId, msg.sender); } function tokenURI(uint256 _tokenId) public view virtual override returns(string memory) { require(_exists(_tokenId), "ERC721Metadata: URI query for nonexistent token"); if (!tokenRevealed[_tokenId]) { return notRevealedURI; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), baseExtension)) : ""; } function setPaused(bool _paused) public onlyOwner { paused = _paused; } function setRevealAllowed(bool _revealAllowed) public onlyOwner { revealAllowed = _revealAllowed; } function setAirdropAllowed(bool _airdropAllowed) public onlyOwner { airdropAllowed = _airdropAllowed; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setNotRevealedURI(string memory _newNotRevealedURI) public onlyOwner { notRevealedURI = _newNotRevealedURI; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setMaxMintAmount(uint256 _maxMintAmount) public onlyOwner { maxMintAmount = _maxMintAmount; } function mintGiveAwayTokens() public onlyOwner { require(!giveAwayTokensMinted, "Giveaway tokens already minted"); uint256 supply = totalSupply(); for (uint256 i = 1; i <= maxSupplyForGiveaway; i++) { _safeMint(teamAddress, supply + i); } giveAwayTokensMinted = true; } function setDevAddress(address _devAddress) public { require(msg.sender == devAddress, "You're not the dev"); devAddress = _devAddress; } function setTeamAddress(address _teamAddress) public { require(msg.sender == teamAddress, "You're not the team"); teamAddress = _teamAddress; } function setAirdropAddress(address _airdropAddress) public onlyOwner{ airdropAddress = _airdropAddress; } function setAirdropToken(address _airdropToken) public onlyOwner { airdropToken = _airdropToken; } function setAirdropAmount(uint256 _airdropAmount) public onlyOwner { airdropAmount = _airdropAmount; } function setErc20PaymentToken(address _erc20PaymentToken) public onlyOwner { erc20PaymentToken = _erc20PaymentToken; } function setCostErc20Token(uint256 _costErc20Token) public onlyOwner { costErc20Token = _costErc20Token; } function withdraw() public payable onlyOwner { (bool devPaid, ) = payable(devAddress).call{value: address(this).balance * 8 / 100}(""); require(devPaid); (bool teamPaid, ) = payable(teamAddress).call{value: address(this).balance}(""); require(teamPaid); } }
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initialBaseUri","type":"string"},{"internalType":"string","name":"_initialNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"ClaimedAirdrop","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":false,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"RevealedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"airdropAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"airdropClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"costErc20Token","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20PaymentToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveAwayTokensMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyForGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintGiveAwayTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedURI","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"revealToken","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":"_airdropAddress","type":"address"}],"name":"setAirdropAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_airdropAllowed","type":"bool"}],"name":"setAirdropAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_airdropAmount","type":"uint256"}],"name":"setAirdropAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_airdropToken","type":"address"}],"name":"setAirdropToken","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":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_costErc20Token","type":"uint256"}],"name":"setCostErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc20PaymentToken","type":"address"}],"name":"setErc20PaymentToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newNotRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_revealAllowed","type":"bool"}],"name":"setRevealAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamAddress","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"totalMintedByAddress","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":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60c06040526005608081905264173539b7b760d91b60a09081526200002891600c9190620002a7565b50681043561a8829300000600e5564012a05f200600f55610bb9601055600a60115560646012556422ecb25c006013556014805477823f149a1084d5e46b54372787edba0e5b92f9f2000000016001600160c01b0319909116179055601580546001600160a01b0319908116731a79d6e75fa9fa7bf5c1f22572e9299836d148b317909155601680548216732474fab2978929b5b45726de4b9c9f7e6b3b7b2917905560178054821690556018805490911673065de42e28e42d90c2052a1b49e7f83806af0e1f179055348015620000ff57600080fd5b506040516200393338038062003933833981016040819052620001229162000400565b8351849084906200013b906000906020850190620002a7565b50805162000151906001906020840190620002a7565b5050506200016e620001686200018e60201b60201c565b62000192565b6200017982620001e4565b62000184816200024c565b5050505062000507565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b03163314620002335760405162461bcd60e51b815260206004820181905260248201526000805160206200391383398151915260448201526064015b60405180910390fd5b80516200024890600b906020840190620002a7565b5050565b600a546001600160a01b03163314620002975760405162461bcd60e51b815260206004820181905260248201526000805160206200391383398151915260448201526064016200022a565b80516200024890600d9060208401905b828054620002b590620004b4565b90600052602060002090601f016020900481019282620002d9576000855562000324565b82601f10620002f457805160ff191683800117855562000324565b8280016001018555821562000324579182015b828111156200032457825182559160200191906001019062000307565b506200033292915062000336565b5090565b5b8082111562000332576000815560010162000337565b600082601f8301126200035e578081fd5b81516001600160401b03808211156200037b576200037b620004f1565b604051601f8301601f19908116603f01168101908282118183101715620003a657620003a6620004f1565b81604052838152602092508683858801011115620003c2578485fd5b8491505b83821015620003e55785820183015181830184015290820190620003c6565b83821115620003f657848385830101525b9695505050505050565b6000806000806080858703121562000416578384fd5b84516001600160401b03808211156200042d578586fd5b6200043b888389016200034d565b9550602087015191508082111562000451578485fd5b6200045f888389016200034d565b9450604087015191508082111562000475578384fd5b62000483888389016200034d565b9350606087015191508082111562000499578283fd5b50620004a8878288016200034d565b91505092959194509250565b600181811c90821680620004c957607f821691505b60208210811415620004eb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6133fc80620005176000396000f3fe60806040526004361061038a5760003560e01c806370a08231116101dc578063ab0eda9e11610102578063d3fb9359116100a0578063f2c4ce1e1161006f578063f2c4ce1e14610a61578063f2fde38b14610a81578063f4ab554614610aa1578063fc2ea8a514610ac057600080fd5b8063d3fb9359146109c2578063d5abeb01146109e2578063e30d4440146109f8578063e985e9c514610a1857600080fd5b8063c2709ac6116100dc578063c2709ac614610957578063c66828621461096d578063c87b56dd14610982578063d0d41fe1146109a257600080fd5b8063ab0eda9e146108f7578063ada01f9014610917578063b88d4fde1461093757600080fd5b806395d89b411161017a578063a22cb46511610149578063a22cb46514610867578063a3a2af4014610887578063a5500c30146108b7578063a96cc3ce146108d757600080fd5b806395d89b41146107e257806397cf84fc146107f75780639d89735114610824578063a0712d681461085457600080fd5b80637ec0276c116101b65780637ec0276c1461076457806384413b651461078457806389c5629c146107a45780638da5cb5b146107c457600080fd5b806370a082311461071a578063715018a61461073a578063722503801461074f57600080fd5b806334e591f0116102c15780634d06068a1161025f5780635c975abb1161022e5780635c975abb146106ab5780636352211e146106c55780636690864e146106e55780636c0360eb1461070557600080fd5b80634d06068a1461062b5780634f6ccce71461064b57806355f804b31461066b5780635a46cf3d1461068b57600080fd5b80633ccfd60b1161029b5780633ccfd60b146105c357806342842e0e146105cb57806344a0d68a146105eb57806347bdca6d1461060b57600080fd5b806334e591f0146105655780633ad10ef61461057b5780633cc3a0ed146105a357600080fd5b806313faede61161032e5780631c75f085116103085780631c75f085146104ef578063239c70ae1461050f57806323b872dd146105255780632f745c591461054557600080fd5b806313faede61461049657806316c38b3c146104ba57806318160ddd146104da57600080fd5b806306fdde031161036a57806306fdde03146103fc578063081812fc1461041e578063088a4ed014610456578063095ea7b31461047657600080fd5b8061fb5a1461038f57806301ffc9a7146103a657806303460f6c146103db575b600080fd5b34801561039b57600080fd5b506103a4610ad6565b005b3480156103b257600080fd5b506103c66103c1366004612e61565b610bc1565b60405190151581526020015b60405180910390f35b3480156103e757600080fd5b506014546103c6906301000000900460ff1681565b34801561040857600080fd5b50610411610bec565b6040516103d29190613043565b34801561042a57600080fd5b5061043e610439366004612edf565b610c7e565b6040516001600160a01b0390911681526020016103d2565b34801561046257600080fd5b506103a4610471366004612edf565b610d06565b34801561048257600080fd5b506103a4610491366004612e00565b610d35565b3480156104a257600080fd5b506104ac600e5481565b6040519081526020016103d2565b3480156104c657600080fd5b506103a46104d5366004612e29565b610e4b565b3480156104e657600080fd5b506008546104ac565b3480156104fb57600080fd5b5060155461043e906001600160a01b031681565b34801561051b57600080fd5b506104ac60115481565b34801561053157600080fd5b506103a4610540366004612d16565b610e88565b34801561055157600080fd5b506104ac610560366004612e00565b610eb9565b34801561057157600080fd5b506104ac600f5481565b34801561058757600080fd5b5060145461043e9064010000000090046001600160a01b031681565b3480156105af57600080fd5b506103a46105be366004612cca565b610f4f565b6103a4610f9b565b3480156105d757600080fd5b506103a46105e6366004612d16565b6110a6565b3480156105f757600080fd5b506103a4610606366004612edf565b6110c1565b34801561061757600080fd5b506103a4610626366004612cca565b6110f0565b34801561063757600080fd5b5060175461043e906001600160a01b031681565b34801561065757600080fd5b506104ac610666366004612edf565b61113c565b34801561067757600080fd5b506103a4610686366004612e99565b6111dd565b34801561069757600080fd5b506103a46106a6366004612edf565b61121a565b3480156106b757600080fd5b506014546103c69060ff1681565b3480156106d157600080fd5b5061043e6106e0366004612edf565b6113c4565b3480156106f157600080fd5b506103a4610700366004612cca565b61143b565b34801561071157600080fd5b506104116114ad565b34801561072657600080fd5b506104ac610735366004612cca565b61153b565b34801561074657600080fd5b506103a46115c2565b34801561075b57600080fd5b506104116115f8565b34801561077057600080fd5b506014546103c69062010000900460ff1681565b34801561079057600080fd5b5060165461043e906001600160a01b031681565b3480156107b057600080fd5b506103a46107bf366004612edf565b611605565b3480156107d057600080fd5b50600a546001600160a01b031661043e565b3480156107ee57600080fd5b50610411611634565b34801561080357600080fd5b506104ac610812366004612cca565b601b6020526000908152604090205481565b34801561083057600080fd5b506103c661083f366004612edf565b60196020526000908152604090205460ff1681565b6103a4610862366004612edf565b611643565b34801561087357600080fd5b506103a4610882366004612dca565b611964565b34801561089357600080fd5b506103c66108a2366004612edf565b601a6020526000908152604090205460ff1681565b3480156108c357600080fd5b506103a46108d2366004612edf565b61196f565b3480156108e357600080fd5b506103a46108f2366004612e29565b61199e565b34801561090357600080fd5b506103a4610912366004612cca565b6119e2565b34801561092357600080fd5b506103a4610932366004612e29565b611a2e565b34801561094357600080fd5b506103a4610952366004612d51565b611a76565b34801561096357600080fd5b506104ac60125481565b34801561097957600080fd5b50610411611aae565b34801561098e57600080fd5b5061041161099d366004612edf565b611abb565b3480156109ae57600080fd5b506103a46109bd366004612cca565b611be9565b3480156109ce57600080fd5b5060185461043e906001600160a01b031681565b3480156109ee57600080fd5b506104ac60105481565b348015610a0457600080fd5b506103a4610a13366004612edf565b611c6e565b348015610a2457600080fd5b506103c6610a33366004612ce4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a6d57600080fd5b506103a4610a7c366004612e99565b611fd3565b348015610a8d57600080fd5b506103a4610a9c366004612cca565b612010565b348015610aad57600080fd5b506014546103c690610100900460ff1681565b348015610acc57600080fd5b506104ac60135481565b600a546001600160a01b03163314610b095760405162461bcd60e51b8152600401610b00906130a8565b60405180910390fd5b60145462010000900460ff1615610b625760405162461bcd60e51b815260206004820152601e60248201527f476976656177617920746f6b656e7320616c7265616479206d696e74656400006044820152606401610b00565b6000610b6d60085490565b905060015b6012548111610bac57601554610b9a906001600160a01b0316610b95838561317d565b6120ab565b80610ba481613331565b915050610b72565b50506014805462ff0000191662010000179055565b60006001600160e01b0319821663780e9d6360e01b1480610be65750610be6826120c5565b92915050565b606060008054610bfb906132f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c27906132f6565b8015610c745780601f10610c4957610100808354040283529160200191610c74565b820191906000526020600020905b815481529060010190602001808311610c5757829003601f168201915b5050505050905090565b6000610c8982612115565b610cea5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b00565b506000908152600460205260409020546001600160a01b031690565b600a546001600160a01b03163314610d305760405162461bcd60e51b8152600401610b00906130a8565b601155565b6000610d40826113c4565b9050806001600160a01b0316836001600160a01b03161415610dae5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b00565b336001600160a01b0382161480610dca5750610dca8133610a33565b610e3c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b00565b610e468383612132565b505050565b600a546001600160a01b03163314610e755760405162461bcd60e51b8152600401610b00906130a8565b6014805460ff1916911515919091179055565b610e9233826121a0565b610eae5760405162461bcd60e51b8152600401610b009061312c565b610e4683838361228a565b6000610ec48361153b565b8210610f265760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610b00565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610f795760405162461bcd60e51b8152600401610b00906130a8565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610b00906130a8565b60145460009064010000000090046001600160a01b03166064610fe9476008613294565b610ff39190613195565b604051600081818185875af1925050503d806000811461102f576040519150601f19603f3d011682016040523d82523d6000602084013e611034565b606091505b505090508061104257600080fd5b6015546040516000916001600160a01b03169047908381818185875af1925050503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b50509050806110a257600080fd5b5050565b610e4683838360405180602001604052806000815250611a76565b600a546001600160a01b031633146110eb5760405162461bcd60e51b8152600401610b00906130a8565b600e55565b600a546001600160a01b0316331461111a5760405162461bcd60e51b8152600401610b00906130a8565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600061114760085490565b82106111aa5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610b00565b600882815481106111cb57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600a546001600160a01b031633146112075760405162461bcd60e51b8152600401610b00906130a8565b80516110a290600b906020840190612b9f565b61122381612115565b61123f5760405162461bcd60e51b8152600401610b00906130dd565b33611249826113c4565b6001600160a01b03161461129a5760405162461bcd60e51b81526020600482015260186024820152772cb7ba903237b713ba1037bbb7103a3434b9903a37b5b2b760411b6044820152606401610b00565b60008181526019602052604090205460ff16156113055760405162461bcd60e51b8152602060048201526024808201527f5468697320746f6b656e2068617320616c7265616479206265656e2072657665604482015263185b195960e21b6064820152608401610b00565b601454610100900460ff1661135c5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e2072657665616c206973206e6f742079657420616c6c6f776564006044820152606401610b00565b60008181526019602052604090819020805460ff19166001179055517fa1346e7b2c7bdffc7722973be1ba8ef45599a72cb4bd3763450f6c649c2dc8e0906113b990839033909182526001600160a01b0316602082015260400190565b60405180910390a150565b6000818152600260205260408120546001600160a01b031680610be65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b00565b6015546001600160a01b0316331461148b5760405162461bcd60e51b8152602060048201526013602482015272596f75277265206e6f7420746865207465616d60681b6044820152606401610b00565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b600b80546114ba906132f6565b80601f01602080910402602001604051908101604052809291908181526020018280546114e6906132f6565b80156115335780601f1061150857610100808354040283529160200191611533565b820191906000526020600020905b81548152906001019060200180831161151657829003601f168201915b505050505081565b60006001600160a01b0382166115a65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b00565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b00906130a8565b6115f66000612431565b565b600d80546114ba906132f6565b600a546001600160a01b0316331461162f5760405162461bcd60e51b8152600401610b00906130a8565b600f55565b606060018054610bfb906132f6565b60145460ff16156116a25760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e67206973207061757365642e20436f6d65206261636b206c617460448201526265722160e81b6064820152608401610b00565b60015b81811161181957601054600854106116eb5760405162461bcd60e51b8152602060048201526009602482015268536f6c64206f75742160b81b6044820152606401610b00565b81600e546116f99190613294565b3410156117485760405162461bcd60e51b815260206004820152601e60248201527f506c6561736520656e7465722074686520636f727265637420707269636500006044820152606401610b00565b601154336000908152601b6020526040902054106117c15760405162461bcd60e51b815260206004820152603060248201527f596f752068617665207265616368656420746865206c696d6974206f66204e4660448201526f1509dcc81e5bdd4818d85b881b5a5b9d60821b6064820152608401610b00565b336000908152601b60205260409020546117dc90600161317d565b336000818152601b6020526040902091909155611807906117fc60085490565b610b9590600161317d565b8061181181613331565b9150506116a5565b506018546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561185f57600080fd5b505afa158015611873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118979190612ef7565b60185460165460ff9290921692506001600160a01b03908116916323b872dd913391166118c585600a6131ec565b86600f546118d39190613294565b6118dd9190613294565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b15801561192c57600080fd5b505af1158015611940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190612e45565b6110a2338383612483565b600a546001600160a01b031633146119995760405162461bcd60e51b8152600401610b00906130a8565b601355565b600a546001600160a01b031633146119c85760405162461bcd60e51b8152600401610b00906130a8565b601480549115156101000261ff0019909216919091179055565b600a546001600160a01b03163314611a0c5760405162461bcd60e51b8152600401610b00906130a8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b03163314611a585760405162461bcd60e51b8152600401610b00906130a8565b6014805491151563010000000263ff00000019909216919091179055565b611a8033836121a0565b611a9c5760405162461bcd60e51b8152600401610b009061312c565b611aa884848484612552565b50505050565b600c80546114ba906132f6565b6060611ac682612115565b611ae25760405162461bcd60e51b8152600401610b00906130dd565b60008281526019602052604090205460ff16611b8a57600d8054611b05906132f6565b80601f0160208091040260200160405190810160405280929190818152602001828054611b31906132f6565b8015611b7e5780601f10611b5357610100808354040283529160200191611b7e565b820191906000526020600020905b815481529060010190602001808311611b6157829003601f168201915b50505050509050919050565b6000611b94612585565b90506000815111611bb45760405180602001604052806000815250611be2565b80611bbe84612594565b600c604051602001611bd293929190612f44565b6040516020818303038152906040525b9392505050565b60145464010000000090046001600160a01b03163314611c405760405162461bcd60e51b81526020600482015260126024820152712cb7ba93b932903737ba103a3432903232bb60711b6044820152606401610b00565b601480546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b611c7781612115565b611c935760405162461bcd60e51b8152600401610b00906130dd565b33611c9d826113c4565b6001600160a01b031614611cee5760405162461bcd60e51b81526020600482015260186024820152772cb7ba903237b713ba1037bbb7103a3434b9903a37b5b2b760411b6044820152606401610b00565b60008181526019602052604090205460ff16611d605760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e206e6565647320746f2062652072657665616c656420746f20636c60448201526a061696d2061697264726f760ac1b6064820152608401610b00565b6000818152601a602052604090205460ff1615611dd25760405162461bcd60e51b815260206004820152602a60248201527f5468697320746f6b656e2068617320616c726561647920636c61696d65642074604482015269068652061697264726f760b41b6064820152608401610b00565b6014546301000000900460ff16611e2b5760405162461bcd60e51b815260206004820152601a60248201527f41697264726f70206973206e6f742079657420616c6c6f7765640000000000006044820152606401610b00565b6017546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b158015611e7057600080fd5b505afa158015611e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea89190612ef7565b60175460165460ff9290921692506001600160a01b03908116916323b872dd911633611ed585600a6131ec565b601354611ee29190613294565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b158015611f3157600080fd5b505af1158015611f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f699190612e45565b506000828152601a602052604090819020805460ff19166001179055517f3ff52f429d06cfeddad667e9310326bf54c245c94c1c48116b14257aa0aed49f90611fc790849033909182526001600160a01b0316602082015260400190565b60405180910390a15050565b600a546001600160a01b03163314611ffd5760405162461bcd60e51b8152600401610b00906130a8565b80516110a290600d906020840190612b9f565b600a546001600160a01b0316331461203a5760405162461bcd60e51b8152600401610b00906130a8565b6001600160a01b03811661209f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b00565b6120a881612431565b50565b6110a28282604051806020016040528060008152506126ae565b60006001600160e01b031982166380ac58cd60e01b14806120f657506001600160e01b03198216635b5e139f60e01b145b80610be657506301ffc9a760e01b6001600160e01b0319831614610be6565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612167826113c4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006121ab82612115565b61220c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b00565b6000612217836113c4565b9050806001600160a01b0316846001600160a01b031614806122525750836001600160a01b031661224784610c7e565b6001600160a01b0316145b8061228257506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661229d826113c4565b6001600160a01b0316146123015760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b00565b6001600160a01b0382166123635760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b00565b61236e8383836126e1565b612379600082612132565b6001600160a01b03831660009081526003602052604081208054600192906123a29084906132b3565b90915550506001600160a01b03821660009081526003602052604081208054600192906123d090849061317d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156124e55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b00565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61255d84848461228a565b61256984848484612799565b611aa85760405162461bcd60e51b8152600401610b0090613056565b6060600b8054610bfb906132f6565b6060816125b85750506040805180820190915260018152600360fc1b602082015290565b8160005b81156125e257806125cc81613331565b91506125db9050600a83613195565b91506125bc565b60008167ffffffffffffffff81111561260b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612635576020820181803683370190505b5090505b84156122825761264a6001836132b3565b9150612657600a8661334c565b61266290603061317d565b60f81b81838151811061268557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506126a7600a86613195565b9450612639565b6126b883836128a6565b6126c56000848484612799565b610e465760405162461bcd60e51b8152600401610b0090613056565b6001600160a01b03831661273c5761273781600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61275f565b816001600160a01b0316836001600160a01b03161461275f5761275f83826129e5565b6001600160a01b03821661277657610e4681612a82565b826001600160a01b0316826001600160a01b031614610e4657610e468282612b5b565b60006001600160a01b0384163b1561289b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906127dd903390899088908890600401613006565b602060405180830381600087803b1580156127f757600080fd5b505af1925050508015612827575060408051601f3d908101601f1916820190925261282491810190612e7d565b60015b612881573d808015612855576040519150601f19603f3d011682016040523d82523d6000602084013e61285a565b606091505b5080516128795760405162461bcd60e51b8152600401610b0090613056565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612282565b506001949350505050565b6001600160a01b0382166128fc5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b00565b61290581612115565b156129525760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b00565b61295e600083836126e1565b6001600160a01b038216600090815260036020526040812080546001929061298790849061317d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016129f28461153b565b6129fc91906132b3565b600083815260076020526040902054909150808214612a4f576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612a94906001906132b3565b60008381526009602052604081205460088054939450909284908110612aca57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060088381548110612af957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612b3f57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612b668361153b565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054612bab906132f6565b90600052602060002090601f016020900481019282612bcd5760008555612c13565b82601f10612be657805160ff1916838001178555612c13565b82800160010185558215612c13579182015b82811115612c13578251825591602001919060010190612bf8565b50612c1f929150612c23565b5090565b5b80821115612c1f5760008155600101612c24565b600067ffffffffffffffff80841115612c5357612c5361338c565b604051601f8501601f19908116603f01168101908282118183101715612c7b57612c7b61338c565b81604052809350858152868686011115612c9457600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612cc557600080fd5b919050565b600060208284031215612cdb578081fd5b611be282612cae565b60008060408385031215612cf6578081fd5b612cff83612cae565b9150612d0d60208401612cae565b90509250929050565b600080600060608486031215612d2a578081fd5b612d3384612cae565b9250612d4160208501612cae565b9150604084013590509250925092565b60008060008060808587031215612d66578081fd5b612d6f85612cae565b9350612d7d60208601612cae565b925060408501359150606085013567ffffffffffffffff811115612d9f578182fd5b8501601f81018713612daf578182fd5b612dbe87823560208401612c38565b91505092959194509250565b60008060408385031215612ddc578182fd5b612de583612cae565b91506020830135612df5816133a2565b809150509250929050565b60008060408385031215612e12578182fd5b612e1b83612cae565b946020939093013593505050565b600060208284031215612e3a578081fd5b8135611be2816133a2565b600060208284031215612e56578081fd5b8151611be2816133a2565b600060208284031215612e72578081fd5b8135611be2816133b0565b600060208284031215612e8e578081fd5b8151611be2816133b0565b600060208284031215612eaa578081fd5b813567ffffffffffffffff811115612ec0578182fd5b8201601f81018413612ed0578182fd5b61228284823560208401612c38565b600060208284031215612ef0578081fd5b5035919050565b600060208284031215612f08578081fd5b815160ff81168114611be2578182fd5b60008151808452612f308160208601602086016132ca565b601f01601f19169290920160200192915050565b600084516020612f578285838a016132ca565b855191840191612f6a8184848a016132ca565b85549201918390600181811c9080831680612f8657607f831692505b858310811415612fa457634e487b7160e01b88526022600452602488fd5b808015612fb85760018114612fc957612ff5565b60ff19851688528388019550612ff5565b60008b815260209020895b85811015612fed5781548a820152908401908801612fd4565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061303990830184612f18565b9695505050505050565b602081526000611be26020830184612f18565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561319057613190613360565b500190565b6000826131a4576131a4613376565b500490565b600181815b808511156131e45781600019048211156131ca576131ca613360565b808516156131d757918102915b93841c93908002906131ae565b509250929050565b6000611be2838360008261320257506001610be6565b8161320f57506000610be6565b8160018114613225576002811461322f5761324b565b6001915050610be6565b60ff84111561324057613240613360565b50506001821b610be6565b5060208310610133831016604e8410600b841016171561326e575081810a610be6565b61327883836131a9565b806000190482111561328c5761328c613360565b029392505050565b60008160001904831182151516156132ae576132ae613360565b500290565b6000828210156132c5576132c5613360565b500390565b60005b838110156132e55781810151838201526020016132cd565b83811115611aa85750506000910152565b600181811c9082168061330a57607f821691505b6020821081141561332b57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561334557613345613360565b5060010190565b60008261335b5761335b613376565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146120a857600080fd5b6001600160e01b0319811681146120a857600080fdfea2646970667358221220d886b788426ccddc354063eb951294fcc93b93d72000ed7a5fd3b533b0e2f8ee64736f6c634300080400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000c43726f517565656e204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064352514e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f63726f6b696e6773746f726167652e626c6f622e636f72652e77696e646f77732e6e65742f63726f717565656e2f6d657461646174612f000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d534c3871636752774d31326e596e5a56544b544d464b38474b547738786a5043614d4647636a4e37565037370000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000c43726f517565656e204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064352514e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f68747470733a2f2f63726f6b696e6773746f726167652e626c6f622e636f72652e77696e646f77732e6e65742f63726f717565656e2f6d657461646174612f000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d534c3871636752774d31326e596e5a56544b544d464b38474b547738786a5043614d4647636a4e37565037370000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): CroQueen NFT
Arg [1] : _symbol (string): CRQNFT
Arg [2] : _initialBaseUri (string): https://crokingstorage.blob.core.windows.net/croqueen/metadata/
Arg [3] : _initialNotRevealedUri (string): ipfs://QmSL8qcgRwM12nYnZVTKTMFK8GKTw8xjPCaMFGcjN7VP77
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 43726f517565656e204e46540000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 4352514e46540000000000000000000000000000000000000000000000000000
Arg [8] : 000000000000000000000000000000000000000000000000000000000000003f
Arg [9] : 68747470733a2f2f63726f6b696e6773746f726167652e626c6f622e636f7265
Arg [10] : 2e77696e646f77732e6e65742f63726f717565656e2f6d657461646174612f00
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [12] : 697066733a2f2f516d534c3871636752774d31326e596e5a56544b544d464b38
Arg [13] : 474b547738786a5043614d4647636a4e37565037370000000000000000000000
Deployed ByteCode Sourcemap
49192:6745:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54304:338;;;;;;;;;;;;;:::i;:::-;;42961:224;;;;;;;;;;-1:-1:-1;42961:224:0;;;;;:::i;:::-;;:::i;:::-;;;8219:14:1;;8212:22;8194:41;;8182:2;8167:18;42961:224:0;;;;;;;;49786:34;;;;;;;;;;-1:-1:-1;49786:34:0;;;;;;;;;;;29781:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31340:221::-;;;;;;;;;;-1:-1:-1;31340:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7137:32:1;;;7119:51;;7107:2;7092:18;31340:221:0;7074:102:1;54180:116:0;;;;;;;;;;-1:-1:-1;54180:116:0;;;;;:::i;:::-;;:::i;30863:411::-;;;;;;;;;;-1:-1:-1;30863:411:0;;;;;:::i;:::-;;:::i;49392:31::-;;;;;;;;;;;;;;;;;;;20686:25:1;;;20674:2;20659:18;49392:31:0;20641:76:1;53494:85:0;;;;;;;;;;-1:-1:-1;53494:85:0;;;;;:::i;:::-;;:::i;43601:113::-;;;;;;;;;;-1:-1:-1;43689:10:0;:17;43601:113;;49906:71;;;;;;;;;;-1:-1:-1;49906:71:0;;;;-1:-1:-1;;;;;49906:71:0;;;49520:33;;;;;;;;;;;;;;;;32090:339;;;;;;;;;;-1:-1:-1;32090:339:0;;;;;:::i;:::-;;:::i;43269:256::-;;;;;;;;;;-1:-1:-1;43269:256:0;;;;;:::i;:::-;;:::i;49430:45::-;;;;;;;;;;;;;;;;49829:70;;;;;;;;;;-1:-1:-1;49829:70:0;;;;;;;-1:-1:-1;;;;;49829:70:0;;;55367:132;;;;;;;;;;-1:-1:-1;55367:132:0;;;;;:::i;:::-;;:::i;55635:299::-;;;:::i;32500:185::-;;;;;;;;;;-1:-1:-1;32500:185:0;;;;;:::i;:::-;;:::i;53833:86::-;;;;;;;;;;-1:-1:-1;53833:86:0;;;;;:::i;:::-;;:::i;55121:114::-;;;;;;;;;;-1:-1:-1;55121:114:0;;;;;:::i;:::-;;:::i;50065:72::-;;;;;;;;;;-1:-1:-1;50065:72:0;;;;-1:-1:-1;;;;;50065:72:0;;;43791:233;;;;;;;;;;-1:-1:-1;43791:233:0;;;;;:::i;:::-;;:::i;54068:104::-;;;;;;;;;;-1:-1:-1;54068:104:0;;;;;:::i;:::-;;:::i;51762:475::-;;;;;;;;;;-1:-1:-1;51762:475:0;;;;;:::i;:::-;;:::i;49667:25::-;;;;;;;;;;-1:-1:-1;49667:25:0;;;;;;;;29475:239;;;;;;;;;;-1:-1:-1;29475:239:0;;;;;:::i;:::-;;:::i;54818:166::-;;;;;;;;;;-1:-1:-1;54818:166:0;;;;;:::i;:::-;;:::i;49283:21::-;;;;;;;;;;;;;:::i;29205:208::-;;;;;;;;;;-1:-1:-1;29205:208:0;;;;;:::i;:::-;;:::i;8377:103::-;;;;;;;;;;;;;:::i;49355:28::-;;;;;;;;;;;;;:::i;49739:40::-;;;;;;;;;;-1:-1:-1;49739:40:0;;;;;;;;;;;49984:74;;;;;;;;;;-1:-1:-1;49984:74:0;;;;-1:-1:-1;;;;;49984:74:0;;;55507:120;;;;;;;;;;-1:-1:-1;55507:120:0;;;;;:::i;:::-;;:::i;7726:87::-;;;;;;;;;;-1:-1:-1;7799:6:0;;-1:-1:-1;;;;;7799:6:0;7726:87;;29950:104;;;;;;;;;;;;;:::i;50335:55::-;;;;;;;;;;-1:-1:-1;50335:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;50230:45;;;;;;;;;;-1:-1:-1;50230:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;50892:862;;;;;;:::i;:::-;;:::i;31633:155::-;;;;;;;;;;-1:-1:-1;31633:155:0;;;;;:::i;:::-;;:::i;50282:46::-;;;;;;;;;;-1:-1:-1;50282:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;55243:116;;;;;;;;;;-1:-1:-1;55243:116:0;;;;;:::i;:::-;;:::i;53587:113::-;;;;;;;;;;-1:-1:-1;53587:113:0;;;;;:::i;:::-;;:::i;54992:121::-;;;;;;;;;;-1:-1:-1;54992:121:0;;;;;:::i;:::-;;:::i;53708:117::-;;;;;;;;;;-1:-1:-1;53708:117:0;;;;;:::i;:::-;;:::i;32756:328::-;;;;;;;;;;-1:-1:-1;32756:328:0;;;;;:::i;:::-;;:::i;49560:41::-;;;;;;;;;;;;;;;;49311:37;;;;;;;;;;;;;:::i;53024:462::-;;;;;;;;;;-1:-1:-1;53024:462:0;;;;;:::i;:::-;;:::i;54650:160::-;;;;;;;;;;-1:-1:-1;54650:160:0;;;;;:::i;:::-;;:::i;50144:77::-;;;;;;;;;;-1:-1:-1;50144:77:0;;;;-1:-1:-1;;;;;50144:77:0;;;49482:31;;;;;;;;;;;;;;;;52245:771;;;;;;;;;;-1:-1:-1;52245:771:0;;;;;:::i;:::-;;:::i;31859:164::-;;;;;;;;;;-1:-1:-1;31859:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;31980:25:0;;;31956:4;31980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;31859:164;53927:133;;;;;;;;;;-1:-1:-1;53927:133:0;;;;;:::i;:::-;;:::i;8635:201::-;;;;;;;;;;-1:-1:-1;8635:201:0;;;;;:::i;:::-;;:::i;49699:33::-;;;;;;;;;;-1:-1:-1;49699:33:0;;;;;;;;;;;49608:46;;;;;;;;;;;;;;;;54304:338;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;;;;;;;;;54371:20:::1;::::0;;;::::1;;;54370:21;54362:64;;;::::0;-1:-1:-1;;;54362:64:0;;14970:2:1;54362:64:0::1;::::0;::::1;14952:21:1::0;15009:2;14989:18;;;14982:30;15048:32;15028:18;;;15021:60;15098:18;;54362:64:0::1;14942:180:1::0;54362:64:0::1;54439:14;54456:13;43689:10:::0;:17;;43601:113;54456:13:::1;54439:30:::0;-1:-1:-1;54499:1:0::1;54482:113;54507:20;;54502:1;:25;54482:113;;54559:11;::::0;54549:34:::1;::::0;-1:-1:-1;;;;;54559:11:0::1;54572:10;54581:1:::0;54572:6;:10:::1;:::i;:::-;54549:9;:34::i;:::-;54529:3:::0;::::1;::::0;::::1;:::i;:::-;;;;54482:113;;;-1:-1:-1::0;;54607:20:0::1;:27:::0;;-1:-1:-1;;54607:27:0::1;::::0;::::1;::::0;;54304:338::o;42961:224::-;43063:4;-1:-1:-1;;;;;;43087:50:0;;-1:-1:-1;;;43087:50:0;;:90;;;43141:36;43165:11;43141:23;:36::i;:::-;43080:97;42961:224;-1:-1:-1;;42961:224:0:o;29781:100::-;29835:13;29868:5;29861:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29781:100;:::o;31340:221::-;31416:7;31444:16;31452:7;31444;:16::i;:::-;31436:73;;;;-1:-1:-1;;;31436:73:0;;17223:2:1;31436:73:0;;;17205:21:1;17262:2;17242:18;;;17235:30;17301:34;17281:18;;;17274:62;-1:-1:-1;;;17352:18:1;;;17345:42;17404:19;;31436:73:0;17195:234:1;31436:73:0;-1:-1:-1;31529:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;31529:24:0;;31340:221::o;54180:116::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;54258:13:::1;:30:::0;54180:116::o;30863:411::-;30944:13;30960:23;30975:7;30960:14;:23::i;:::-;30944:39;;31008:5;-1:-1:-1;;;;;31002:11:0;:2;-1:-1:-1;;;;;31002:11:0;;;30994:57;;;;-1:-1:-1;;;30994:57:0;;18824:2:1;30994:57:0;;;18806:21:1;18863:2;18843:18;;;18836:30;18902:34;18882:18;;;18875:62;-1:-1:-1;;;18953:18:1;;;18946:31;18994:19;;30994:57:0;18796:223:1;30994:57:0;6530:10;-1:-1:-1;;;;;31086:21:0;;;;:62;;-1:-1:-1;31111:37:0;31128:5;6530:10;31859:164;:::i;31111:37::-;31064:168;;;;-1:-1:-1;;;31064:168:0;;14545:2:1;31064:168:0;;;14527:21:1;14584:2;14564:18;;;14557:30;14623:34;14603:18;;;14596:62;14694:26;14674:18;;;14667:54;14738:19;;31064:168:0;14517:246:1;31064:168:0;31245:21;31254:2;31258:7;31245:8;:21::i;:::-;30863:411;;;:::o;53494:85::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;53555:6:::1;:16:::0;;-1:-1:-1;;53555:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;53494:85::o;32090:339::-;32285:41;6530:10;32318:7;32285:18;:41::i;:::-;32277:103;;;;-1:-1:-1;;;32277:103:0;;;;;;;:::i;:::-;32393:28;32403:4;32409:2;32413:7;32393:9;:28::i;43269:256::-;43366:7;43402:23;43419:5;43402:16;:23::i;:::-;43394:5;:31;43386:87;;;;-1:-1:-1;;;43386:87:0;;9387:2:1;43386:87:0;;;9369:21:1;9426:2;9406:18;;;9399:30;9465:34;9445:18;;;9438:62;-1:-1:-1;;;9516:18:1;;;9509:41;9567:19;;43386:87:0;9359:233:1;43386:87:0;-1:-1:-1;;;;;;43491:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;43269:256::o;55367:132::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55453:17:::1;:38:::0;;-1:-1:-1;;;;;;55453:38:0::1;-1:-1:-1::0;;;;;55453:38:0;;;::::1;::::0;;;::::1;::::0;;55367:132::o;55635:299::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55718:10:::1;::::0;55692:12:::1;::::0;55718:10;;::::1;-1:-1:-1::0;;;;;55718:10:0::1;55770:3;55742:25;:21;55766:1;55742:25;:::i;:::-;:31;;;;:::i;:::-;55710:68;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55691:87;;;55797:7;55789:16;;;::::0;::::1;;55846:11;::::0;55838:59:::1;::::0;55819:13:::1;::::0;-1:-1:-1;;;;;55846:11:0::1;::::0;55871:21:::1;::::0;55819:13;55838:59;55819:13;55838:59;55871:21;55846:11;55838:59:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55818:79;;;55916:8;55908:17;;;::::0;::::1;;8017:1;;55635:299::o:0;32500:185::-;32638:39;32655:4;32661:2;32665:7;32638:39;;;;;;;;;;;;:16;:39::i;53833:86::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;53896:4:::1;:15:::0;53833:86::o;55121:114::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55197:12:::1;:28:::0;;-1:-1:-1;;;;;;55197:28:0::1;-1:-1:-1::0;;;;;55197:28:0;;;::::1;::::0;;;::::1;::::0;;55121:114::o;43791:233::-;43866:7;43902:30;43689:10;:17;;43601:113;43902:30;43894:5;:38;43886:95;;;;-1:-1:-1;;;43886:95:0;;19644:2:1;43886:95:0;;;19626:21:1;19683:2;19663:18;;;19656:30;19722:34;19702:18;;;19695:62;-1:-1:-1;;;19773:18:1;;;19766:42;19825:19;;43886:95:0;19616:234:1;43886:95:0;43999:10;44010:5;43999:17;;;;;;-1:-1:-1;;;43999:17:0;;;;;;;;;;;;;;;;;43992:24;;43791:233;;;:::o;54068:104::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;54143:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;51762:475::-:0;51827:17;51835:8;51827:7;:17::i;:::-;51819:77;;;;-1:-1:-1;;;51819:77:0;;;;;;;:::i;:::-;51936:10;51915:17;51923:8;51915:7;:17::i;:::-;-1:-1:-1;;;;;51915:31:0;;51907:68;;;;-1:-1:-1;;;51907:68:0;;15740:2:1;51907:68:0;;;15722:21:1;15779:2;15759:18;;;15752:30;-1:-1:-1;;;15798:18:1;;;15791:54;15862:18;;51907:68:0;15712:174:1;51907:68:0;51995:23;;;;:13;:23;;;;;;;;51994:24;51986:73;;;;-1:-1:-1;;;51986:73:0;;12564:2:1;51986:73:0;;;12546:21:1;12603:2;12583:18;;;12576:30;12642:34;12622:18;;;12615:62;-1:-1:-1;;;12693:18:1;;;12686:34;12737:19;;51986:73:0;12536:226:1;51986:73:0;52078:13;;;;;;;52070:57;;;;-1:-1:-1;;;52070:57:0;;8672:2:1;52070:57:0;;;8654:21:1;8711:2;8691:18;;;8684:30;8750:33;8730:18;;;8723:61;8801:18;;52070:57:0;8644:181:1;52070:57:0;52148:23;;;;:13;:23;;;;;;;:30;;-1:-1:-1;;52148:30:0;52174:4;52148:30;;;52194:35;;;;;52162:8;;52218:10;;20896:25:1;;;-1:-1:-1;;;;;20957:32:1;20952:2;20937:18;;20930:60;20884:2;20869:18;;20851:145;52194:35:0;;;;;;;;51762:475;:::o;29475:239::-;29547:7;29583:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29583:16:0;29618:19;29610:73;;;;-1:-1:-1;;;29610:73:0;;16093:2:1;29610:73:0;;;16075:21:1;16132:2;16112:18;;;16105:30;16171:34;16151:18;;;16144:62;-1:-1:-1;;;16222:18:1;;;16215:39;16271:19;;29610:73:0;16065:231:1;54818:166:0;54904:11;;-1:-1:-1;;;;;54904:11:0;54890:10;:25;54882:57;;;;-1:-1:-1;;;54882:57:0;;20057:2:1;54882:57:0;;;20039:21:1;20096:2;20076:18;;;20069:30;-1:-1:-1;;;20115:18:1;;;20108:49;20174:18;;54882:57:0;20029:169:1;54882:57:0;54950:11;:26;;-1:-1:-1;;;;;;54950:26:0;-1:-1:-1;;;;;54950:26:0;;;;;;;;;;54818:166::o;49283:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29205:208::-;29277:7;-1:-1:-1;;;;;29305:19:0;;29297:74;;;;-1:-1:-1;;;29297:74:0;;15329:2:1;29297:74:0;;;15311:21:1;15368:2;15348:18;;;15341:30;15407:34;15387:18;;;15380:62;-1:-1:-1;;;15458:18:1;;;15451:40;15508:19;;29297:74:0;15301:232:1;29297:74:0;-1:-1:-1;;;;;;29389:16:0;;;;;:9;:16;;;;;;;29205:208::o;8377:103::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;8442:30:::1;8469:1;8442:18;:30::i;:::-;8377:103::o:0;49355:28::-;;;;;;;:::i;55507:120::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55587:14:::1;:32:::0;55507:120::o;29950:104::-;30006:13;30039:7;30032:14;;;;;:::i;50892:862::-;50966:6;;;;50965:7;50957:55;;;;-1:-1:-1;;;50957:55:0;;14141:2:1;50957:55:0;;;14123:21:1;14180:2;14160:18;;;14153:30;14219:34;14199:18;;;14192:62;-1:-1:-1;;;14270:18:1;;;14263:33;14313:19;;50957:55:0;14113:225:1;50957:55:0;51042:1;51025:477;51050:11;51045:1;:16;51025:477;;51107:9;;43689:10;:17;51091:25;51083:47;;;;-1:-1:-1;;;51083:47:0;;20405:2:1;51083:47:0;;;20387:21:1;20444:1;20424:18;;;20417:29;-1:-1:-1;;;20462:18:1;;;20455:39;20511:18;;51083:47:0;20377:158:1;51083:47:0;51173:11;51166:4;;:18;;;;:::i;:::-;51153:9;:31;;51145:74;;;;-1:-1:-1;;;51145:74:0;;16503:2:1;51145:74:0;;;16485:21:1;16542:2;16522:18;;;16515:30;16581:32;16561:18;;;16554:60;16631:18;;51145:74:0;16475:180:1;51145:74:0;51277:13;;51263:10;51242:32;;;;:20;:32;;;;;;:48;51234:109;;;;-1:-1:-1;;;51234:109:0;;11388:2:1;51234:109:0;;;11370:21:1;11427:2;11407:18;;;11400:30;11466:34;11446:18;;;11439:62;-1:-1:-1;;;11517:18:1;;;11510:46;11573:19;;51234:109:0;11360:238:1;51234:109:0;51418:10;51397:32;;;;:20;:32;;;;;;:36;;51432:1;51397:36;:::i;:::-;51383:10;51362:32;;;;:20;:32;;;;;:71;;;;51450:40;;51472:13;43689:10;:17;;43601:113;51472:13;:17;;51488:1;51472:17;:::i;51450:40::-;51063:3;;;;:::i;:::-;;;;51025:477;;;-1:-1:-1;51565:17:0;;51550:44;;;-1:-1:-1;;;51550:44:0;;;;51514:33;;-1:-1:-1;;;;;51565:17:0;;51550:42;;:44;;;;;;;;;;;;;;51565:17;51550:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51612:17;;51664:14;;51514:80;;;;;;-1:-1:-1;;;;;;51612:17:0;;;;51605:38;;51644:10;;51664:14;51714:31;51514:80;51714:2;:31;:::i;:::-;51699:11;51682:14;;:28;;;;:::i;:::-;51681:64;;;;:::i;:::-;51605:141;;-1:-1:-1;;;;;;51605:141:0;;;;;;;-1:-1:-1;;;;;7439:15:1;;;51605:141:0;;;7421:34:1;7491:15;;;;7471:18;;;7464:43;7523:18;;;7516:34;7356:18;;51605:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31633:155::-;31728:52;6530:10;31761:8;31771;31728:18;:52::i;55243:116::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55321:13:::1;:30:::0;55243:116::o;53587:113::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;53662:13:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;53662:30:0;;::::1;::::0;;;::::1;::::0;;53587:113::o;54992:121::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;55071:14:::1;:32:::0;;-1:-1:-1;;;;;;55071:32:0::1;-1:-1:-1::0;;;;;55071:32:0;;;::::1;::::0;;;::::1;::::0;;54992:121::o;53708:117::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;53785:14:::1;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;53785:32:0;;::::1;::::0;;;::::1;::::0;;53708:117::o;32756:328::-;32931:41;6530:10;32964:7;32931:18;:41::i;:::-;32923:103;;;;-1:-1:-1;;;32923:103:0;;;;;;;:::i;:::-;33037:39;33051:4;33057:2;33061:7;33070:5;33037:13;:39::i;:::-;32756:328;;;;:::o;49311:37::-;;;;;;;:::i;53024:462::-;53097:13;53131:17;53139:8;53131:7;:17::i;:::-;53123:77;;;;-1:-1:-1;;;53123:77:0;;;;;;;:::i;:::-;53218:23;;;;:13;:23;;;;;;;;53213:78;;53265:14;53258:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53024:462;;;:::o;53213:78::-;53303:28;53334:10;:8;:10::i;:::-;53303:41;;53393:1;53368:14;53362:28;:32;:116;;;;;;;;;;;;;;;;;53421:14;53437:19;:8;:17;:19::i;:::-;53458:13;53404:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;53362:116;53355:123;53024:462;-1:-1:-1;;;53024:462:0:o;54650:160::-;54734:10;;;;;-1:-1:-1;;;;;54734:10:0;54720;:24;54712:55;;;;-1:-1:-1;;;54712:55:0;;12969:2:1;54712:55:0;;;12951:21:1;13008:2;12988:18;;;12981:30;-1:-1:-1;;;13027:18:1;;;13020:48;13085:18;;54712:55:0;12941:168:1;54712:55:0;54778:10;:24;;-1:-1:-1;;;;;54778:24:0;;;;;-1:-1:-1;;;;;;54778:24:0;;;;;;;;;54650:160::o;52245:771::-;52311:17;52319:8;52311:7;:17::i;:::-;52303:77;;;;-1:-1:-1;;;52303:77:0;;;;;;;:::i;:::-;52420:10;52399:17;52407:8;52399:7;:17::i;:::-;-1:-1:-1;;;;;52399:31:0;;52391:68;;;;-1:-1:-1;;;52391:68:0;;15740:2:1;52391:68:0;;;15722:21:1;15779:2;15759:18;;;15752:30;-1:-1:-1;;;15798:18:1;;;15791:54;15862:18;;52391:68:0;15712:174:1;52391:68:0;52478:23;;;;:13;:23;;;;;;;;52470:79;;;;-1:-1:-1;;;52470:79:0;;13729:2:1;52470:79:0;;;13711:21:1;13768:2;13748:18;;;13741:30;13807:34;13787:18;;;13780:62;-1:-1:-1;;;13858:18:1;;;13851:41;13909:19;;52470:79:0;13701:233:1;52470:79:0;52569:24;;;;:14;:24;;;;;;;;52568:25;52560:80;;;;-1:-1:-1;;;52560:80:0;;18413:2:1;52560:80:0;;;18395:21:1;18452:2;18432:18;;;18425:30;18491:34;18471:18;;;18464:62;-1:-1:-1;;;18542:18:1;;;18535:40;18592:19;;52560:80:0;18385:232:1;52560:80:0;52659:14;;;;;;;52651:53;;;;-1:-1:-1;;;52651:53:0;;9032:2:1;52651:53:0;;;9014:21:1;9071:2;9051:18;;;9044:30;9110:28;9090:18;;;9083:56;9156:18;;52651:53:0;9004:176:1;52651:53:0;52763:12;;52748:39;;;-1:-1:-1;;;52748:39:0;;;;52717:28;;-1:-1:-1;;;;;52763:12:0;;52748:37;;:39;;;;;;;;;;;;;;52763:12;52748:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52805:12;;52840:14;;52717:70;;;;;;-1:-1:-1;;;;;;52805:12:0;;;;52798:33;;52840:14;52857:10;52885:26;52717:70;52885:2;:26;:::i;:::-;52869:13;;:42;;;;:::i;:::-;52798:114;;-1:-1:-1;;;;;;52798:114:0;;;;;;;-1:-1:-1;;;;;7439:15:1;;;52798:114:0;;;7421:34:1;7491:15;;;;7471:18;;;7464:43;7523:18;;;7516:34;7356:18;;52798:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;52925:24:0;;;;:14;:24;;;;;;;:31;;-1:-1:-1;;52925:31:0;52952:4;52925:31;;;52972:36;;;;;52940:8;;52997:10;;20896:25:1;;;-1:-1:-1;;;;;20957:32:1;20952:2;20937:18;;20930:60;20884:2;20869:18;;20851:145;52972:36:0;;;;;;;;52245:771;;:::o;53927:133::-;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;54017:35;;::::1;::::0;:14:::1;::::0;:35:::1;::::0;::::1;::::0;::::1;:::i;8635:201::-:0;7799:6;;-1:-1:-1;;;;;7799:6:0;6530:10;7946:23;7938:68;;;;-1:-1:-1;;;7938:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8724:22:0;::::1;8716:73;;;::::0;-1:-1:-1;;;8716:73:0;;10218:2:1;8716:73:0::1;::::0;::::1;10200:21:1::0;10257:2;10237:18;;;10230:30;10296:34;10276:18;;;10269:62;-1:-1:-1;;;10347:18:1;;;10340:36;10393:19;;8716:73:0::1;10190:228:1::0;8716:73:0::1;8800:28;8819:8;8800:18;:28::i;:::-;8635:201:::0;:::o;35578:110::-;35654:26;35664:2;35668:7;35654:26;;;;;;;;;;;;:9;:26::i;28836:305::-;28938:4;-1:-1:-1;;;;;;28975:40:0;;-1:-1:-1;;;28975:40:0;;:105;;-1:-1:-1;;;;;;;29032:48:0;;-1:-1:-1;;;29032:48:0;28975:105;:158;;;-1:-1:-1;;;;;;;;;;20619:40:0;;;29097:36;20510:157;34594:127;34659:4;34683:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34683:16:0;:30;;;34594:127::o;38740:174::-;38815:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;38815:29:0;-1:-1:-1;;;;;38815:29:0;;;;;;;;:24;;38869:23;38815:24;38869:14;:23::i;:::-;-1:-1:-1;;;;;38860:46:0;;;;;;;;;;;38740:174;;:::o;34888:348::-;34981:4;35006:16;35014:7;35006;:16::i;:::-;34998:73;;;;-1:-1:-1;;;34998:73:0;;13316:2:1;34998:73:0;;;13298:21:1;13355:2;13335:18;;;13328:30;13394:34;13374:18;;;13367:62;-1:-1:-1;;;13445:18:1;;;13438:42;13497:19;;34998:73:0;13288:234:1;34998:73:0;35082:13;35098:23;35113:7;35098:14;:23::i;:::-;35082:39;;35151:5;-1:-1:-1;;;;;35140:16:0;:7;-1:-1:-1;;;;;35140:16:0;;:51;;;;35184:7;-1:-1:-1;;;;;35160:31:0;:20;35172:7;35160:11;:20::i;:::-;-1:-1:-1;;;;;35160:31:0;;35140:51;:87;;;-1:-1:-1;;;;;;31980:25:0;;;31956:4;31980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;35195:32;35132:96;34888:348;-1:-1:-1;;;;34888:348:0:o;37997:625::-;38156:4;-1:-1:-1;;;;;38129:31:0;:23;38144:7;38129:14;:23::i;:::-;-1:-1:-1;;;;;38129:31:0;;38121:81;;;;-1:-1:-1;;;38121:81:0;;10625:2:1;38121:81:0;;;10607:21:1;10664:2;10644:18;;;10637:30;10703:34;10683:18;;;10676:62;-1:-1:-1;;;10754:18:1;;;10747:35;10799:19;;38121:81:0;10597:227:1;38121:81:0;-1:-1:-1;;;;;38221:16:0;;38213:65;;;;-1:-1:-1;;;38213:65:0;;11805:2:1;38213:65:0;;;11787:21:1;11844:2;11824:18;;;11817:30;11883:34;11863:18;;;11856:62;-1:-1:-1;;;11934:18:1;;;11927:34;11978:19;;38213:65:0;11777:226:1;38213:65:0;38291:39;38312:4;38318:2;38322:7;38291:20;:39::i;:::-;38395:29;38412:1;38416:7;38395:8;:29::i;:::-;-1:-1:-1;;;;;38437:15:0;;;;;;:9;:15;;;;;:20;;38456:1;;38437:15;:20;;38456:1;;38437:20;:::i;:::-;;;;-1:-1:-1;;;;;;;38468:13:0;;;;;;:9;:13;;;;;:18;;38485:1;;38468:13;:18;;38485:1;;38468:18;:::i;:::-;;;;-1:-1:-1;;38497:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;38497:21:0;-1:-1:-1;;;;;38497:21:0;;;;;;;;;38536:27;;38497:16;;38536:27;;;;;;;30863:411;;;:::o;8996:191::-;9089:6;;;-1:-1:-1;;;;;9106:17:0;;;-1:-1:-1;;;;;;9106:17:0;;;;;;;9139:40;;9089:6;;;9106:17;9089:6;;9139:40;;9070:16;;9139:40;8996:191;;:::o;39056:315::-;39211:8;-1:-1:-1;;;;;39202:17:0;:5;-1:-1:-1;;;;;39202:17:0;;;39194:55;;;;-1:-1:-1;;;39194:55:0;;12210:2:1;39194:55:0;;;12192:21:1;12249:2;12229:18;;;12222:30;12288:27;12268:18;;;12261:55;12333:18;;39194:55:0;12182:175:1;39194:55:0;-1:-1:-1;;;;;39260:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;39260:46:0;;;;;;;;;;39322:41;;8194::1;;;39322::0;;8167:18:1;39322:41:0;;;;;;;39056:315;;;:::o;33966:::-;34123:28;34133:4;34139:2;34143:7;34123:9;:28::i;:::-;34170:48;34193:4;34199:2;34203:7;34212:5;34170:22;:48::i;:::-;34162:111;;;;-1:-1:-1;;;34162:111:0;;;;;;;:::i;50776:108::-;50836:13;50869:7;50862:14;;;;;:::i;4012:723::-;4068:13;4289:10;4285:53;;-1:-1:-1;;4316:10:0;;;;;;;;;;;;-1:-1:-1;;;4316:10:0;;;;;4012:723::o;4285:53::-;4363:5;4348:12;4404:78;4411:9;;4404:78;;4437:8;;;;:::i;:::-;;-1:-1:-1;4460:10:0;;-1:-1:-1;4468:2:0;4460:10;;:::i;:::-;;;4404:78;;;4492:19;4524:6;4514:17;;;;;;-1:-1:-1;;;4514:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4514:17:0;;4492:39;;4542:154;4549:10;;4542:154;;4576:11;4586:1;4576:11;;:::i;:::-;;-1:-1:-1;4645:10:0;4653:2;4645:5;:10;:::i;:::-;4632:24;;:2;:24;:::i;:::-;4619:39;;4602:6;4609;4602:14;;;;;;-1:-1:-1;;;4602:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;4602:56:0;;;;;;;;-1:-1:-1;4673:11:0;4682:2;4673:11;;:::i;:::-;;;4542:154;;35915:321;36045:18;36051:2;36055:7;36045:5;:18::i;:::-;36096:54;36127:1;36131:2;36135:7;36144:5;36096:22;:54::i;:::-;36074:154;;;;-1:-1:-1;;;36074:154:0;;;;;;;:::i;44637:589::-;-1:-1:-1;;;;;44843:18:0;;44839:187;;44878:40;44910:7;46053:10;:17;;46026:24;;;;:15;:24;;;;;:44;;;46081:24;;;;;;;;;;;;45949:164;44878:40;44839:187;;;44948:2;-1:-1:-1;;;;;44940:10:0;:4;-1:-1:-1;;;;;44940:10:0;;44936:90;;44967:47;45000:4;45006:7;44967:32;:47::i;:::-;-1:-1:-1;;;;;45040:16:0;;45036:183;;45073:45;45110:7;45073:36;:45::i;45036:183::-;45146:4;-1:-1:-1;;;;;45140:10:0;:2;-1:-1:-1;;;;;45140:10:0;;45136:83;;45167:40;45195:2;45199:7;45167:27;:40::i;39936:799::-;40091:4;-1:-1:-1;;;;;40112:13:0;;10722:19;:23;40108:620;;40148:72;;-1:-1:-1;;;40148:72:0;;-1:-1:-1;;;;;40148:36:0;;;;;:72;;6530:10;;40199:4;;40205:7;;40214:5;;40148:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40148:72:0;;;;;;;;-1:-1:-1;;40148:72:0;;;;;;;;;;;;:::i;:::-;;;40144:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40390:13:0;;40386:272;;40433:60;;-1:-1:-1;;;40433:60:0;;;;;;;:::i;40386:272::-;40608:6;40602:13;40593:6;40589:2;40585:15;40578:38;40144:529;-1:-1:-1;;;;;;40271:51:0;-1:-1:-1;;;40271:51:0;;-1:-1:-1;40264:58:0;;40108:620;-1:-1:-1;40712:4:0;39936:799;;;;;;:::o;36572:439::-;-1:-1:-1;;;;;36652:16:0;;36644:61;;;;-1:-1:-1;;;36644:61:0;;16862:2:1;36644:61:0;;;16844:21:1;;;16881:18;;;16874:30;16940:34;16920:18;;;16913:62;16992:18;;36644:61:0;16834:182:1;36644:61:0;36725:16;36733:7;36725;:16::i;:::-;36724:17;36716:58;;;;-1:-1:-1;;;36716:58:0;;11031:2:1;36716:58:0;;;11013:21:1;11070:2;11050:18;;;11043:30;11109;11089:18;;;11082:58;11157:18;;36716:58:0;11003:178:1;36716:58:0;36787:45;36816:1;36820:2;36824:7;36787:20;:45::i;:::-;-1:-1:-1;;;;;36845:13:0;;;;;;:9;:13;;;;;:18;;36862:1;;36845:13;:18;;36862:1;;36845:18;:::i;:::-;;;;-1:-1:-1;;36874:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;36874:21:0;-1:-1:-1;;;;;36874:21:0;;;;;;;;36913:33;;36874:16;;;36913:33;;36874:16;;36913:33;8017:1:::1;;55635:299::o:0;46740:988::-;47006:22;47056:1;47031:22;47048:4;47031:16;:22::i;:::-;:26;;;;:::i;:::-;47068:18;47089:26;;;:17;:26;;;;;;47006:51;;-1:-1:-1;47222:28:0;;;47218:328;;-1:-1:-1;;;;;47289:18:0;;47267:19;47289:18;;;:12;:18;;;;;;;;:34;;;;;;;;;47340:30;;;;;;:44;;;47457:30;;:17;:30;;;;;:43;;;47218:328;-1:-1:-1;47642:26:0;;;;:17;:26;;;;;;;;47635:33;;;-1:-1:-1;;;;;47686:18:0;;;;;:12;:18;;;;;:34;;;;;;;47679:41;46740:988::o;48023:1079::-;48301:10;:17;48276:22;;48301:21;;48321:1;;48301:21;:::i;:::-;48333:18;48354:24;;;:15;:24;;;;;;48727:10;:26;;48276:46;;-1:-1:-1;48354:24:0;;48276:46;;48727:26;;;;-1:-1:-1;;;48727:26:0;;;;;;;;;;;;;;;;;48705:48;;48791:11;48766:10;48777;48766:22;;;;;;-1:-1:-1;;;48766:22:0;;;;;;;;;;;;;;;;;;;;:36;;;;48871:28;;;:15;:28;;;;;;;:41;;;49043:24;;;;;49036:31;49078:10;:16;;;;;-1:-1:-1;;;49078:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;48023:1079;;;;:::o;45527:221::-;45612:14;45629:20;45646:2;45629:16;:20::i;:::-;-1:-1:-1;;;;;45660:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;45705:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;45527:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:2;;813:1;810;803:12;747:2;699:124;;;:::o;828:196::-;887:6;940:2;928:9;919:7;915:23;911:32;908:2;;;961:6;953;946:22;908:2;989:29;1008:9;989:29;:::i;1029:270::-;1097:6;1105;1158:2;1146:9;1137:7;1133:23;1129:32;1126:2;;;1179:6;1171;1164:22;1126:2;1207:29;1226:9;1207:29;:::i;:::-;1197:39;;1255:38;1289:2;1278:9;1274:18;1255:38;:::i;:::-;1245:48;;1116:183;;;;;:::o;1304:338::-;1381:6;1389;1397;1450:2;1438:9;1429:7;1425:23;1421:32;1418:2;;;1471:6;1463;1456:22;1418:2;1499:29;1518:9;1499:29;:::i;:::-;1489:39;;1547:38;1581:2;1570:9;1566:18;1547:38;:::i;:::-;1537:48;;1632:2;1621:9;1617:18;1604:32;1594:42;;1408:234;;;;;:::o;1647:696::-;1742:6;1750;1758;1766;1819:3;1807:9;1798:7;1794:23;1790:33;1787:2;;;1841:6;1833;1826:22;1787:2;1869:29;1888:9;1869:29;:::i;:::-;1859:39;;1917:38;1951:2;1940:9;1936:18;1917:38;:::i;:::-;1907:48;;2002:2;1991:9;1987:18;1974:32;1964:42;;2057:2;2046:9;2042:18;2029:32;2084:18;2076:6;2073:30;2070:2;;;2121:6;2113;2106:22;2070:2;2149:22;;2202:4;2194:13;;2190:27;-1:-1:-1;2180:2:1;;2236:6;2228;2221:22;2180:2;2264:73;2329:7;2324:2;2311:16;2306:2;2302;2298:11;2264:73;:::i;:::-;2254:83;;;1777:566;;;;;;;:::o;2348:325::-;2413:6;2421;2474:2;2462:9;2453:7;2449:23;2445:32;2442:2;;;2495:6;2487;2480:22;2442:2;2523:29;2542:9;2523:29;:::i;:::-;2513:39;;2602:2;2591:9;2587:18;2574:32;2615:28;2637:5;2615:28;:::i;:::-;2662:5;2652:15;;;2432:241;;;;;:::o;2678:264::-;2746:6;2754;2807:2;2795:9;2786:7;2782:23;2778:32;2775:2;;;2828:6;2820;2813:22;2775:2;2856:29;2875:9;2856:29;:::i;:::-;2846:39;2932:2;2917:18;;;;2904:32;;-1:-1:-1;;;2765:177:1:o;2947:251::-;3003:6;3056:2;3044:9;3035:7;3031:23;3027:32;3024:2;;;3077:6;3069;3062:22;3024:2;3121:9;3108:23;3140:28;3162:5;3140:28;:::i;3203:255::-;3270:6;3323:2;3311:9;3302:7;3298:23;3294:32;3291:2;;;3344:6;3336;3329:22;3291:2;3381:9;3375:16;3400:28;3422:5;3400:28;:::i;3463:255::-;3521:6;3574:2;3562:9;3553:7;3549:23;3545:32;3542:2;;;3595:6;3587;3580:22;3542:2;3639:9;3626:23;3658:30;3682:5;3658:30;:::i;3723:259::-;3792:6;3845:2;3833:9;3824:7;3820:23;3816:32;3813:2;;;3866:6;3858;3851:22;3813:2;3903:9;3897:16;3922:30;3946:5;3922:30;:::i;3987:480::-;4056:6;4109:2;4097:9;4088:7;4084:23;4080:32;4077:2;;;4130:6;4122;4115:22;4077:2;4175:9;4162:23;4208:18;4200:6;4197:30;4194:2;;;4245:6;4237;4230:22;4194:2;4273:22;;4326:4;4318:13;;4314:27;-1:-1:-1;4304:2:1;;4360:6;4352;4345:22;4304:2;4388:73;4453:7;4448:2;4435:16;4430:2;4426;4422:11;4388:73;:::i;4472:190::-;4531:6;4584:2;4572:9;4563:7;4559:23;4555:32;4552:2;;;4605:6;4597;4590:22;4552:2;-1:-1:-1;4633:23:1;;4542:120;-1:-1:-1;4542:120:1:o;4667:293::-;4735:6;4788:2;4776:9;4767:7;4763:23;4759:32;4756:2;;;4809:6;4801;4794:22;4756:2;4846:9;4840:16;4896:4;4889:5;4885:16;4878:5;4875:27;4865:2;;4921:6;4913;4906:22;4965:257;5006:3;5044:5;5038:12;5071:6;5066:3;5059:19;5087:63;5143:6;5136:4;5131:3;5127:14;5120:4;5113:5;5109:16;5087:63;:::i;:::-;5204:2;5183:15;-1:-1:-1;;5179:29:1;5170:39;;;;5211:4;5166:50;;5014:208;-1:-1:-1;;5014:208:1:o;5227:1531::-;5451:3;5489:6;5483:13;5515:4;5528:51;5572:6;5567:3;5562:2;5554:6;5550:15;5528:51;:::i;:::-;5642:13;;5601:16;;;;5664:55;5642:13;5601:16;5686:15;;;5664:55;:::i;:::-;5810:13;;5741:20;;;5781:3;;5870:1;5892:18;;;;5945;;;;5972:2;;6050:4;6040:8;6036:19;6024:31;;5972:2;6113;6103:8;6100:16;6080:18;6077:40;6074:2;;;-1:-1:-1;;;6140:33:1;;6196:4;6193:1;6186:15;6226:4;6147:3;6214:17;6074:2;6257:18;6284:110;;;;6408:1;6403:330;;;;6250:483;;6284:110;-1:-1:-1;;6319:24:1;;6305:39;;6364:20;;;;-1:-1:-1;6284:110:1;;6403:330;21048:4;21067:17;;;21117:4;21101:21;;6498:3;6514:169;6528:8;6525:1;6522:15;6514:169;;;6610:14;;6595:13;;;6588:37;6653:16;;;;6545:10;;6514:169;;;6518:3;;6714:8;6707:5;6703:20;6696:27;;6250:483;-1:-1:-1;6749:3:1;;5459:1299;-1:-1:-1;;;;;;;;;;;5459:1299:1:o;7561:488::-;-1:-1:-1;;;;;7830:15:1;;;7812:34;;7882:15;;7877:2;7862:18;;7855:43;7929:2;7914:18;;7907:34;;;7977:3;7972:2;7957:18;;7950:31;;;7755:4;;7998:45;;8023:19;;8015:6;7998:45;:::i;:::-;7990:53;7764:285;-1:-1:-1;;;;;;7764:285:1:o;8246:219::-;8395:2;8384:9;8377:21;8358:4;8415:44;8455:2;8444:9;8440:18;8432:6;8415:44;:::i;9597:414::-;9799:2;9781:21;;;9838:2;9818:18;;;9811:30;9877:34;9872:2;9857:18;;9850:62;-1:-1:-1;;;9943:2:1;9928:18;;9921:48;10001:3;9986:19;;9771:240::o;17434:356::-;17636:2;17618:21;;;17655:18;;;17648:30;17714:34;17709:2;17694:18;;17687:62;17781:2;17766:18;;17608:182::o;17795:411::-;17997:2;17979:21;;;18036:2;18016:18;;;18009:30;18075:34;18070:2;18055:18;;18048:62;-1:-1:-1;;;18141:2:1;18126:18;;18119:45;18196:3;18181:19;;17969:237::o;19024:413::-;19226:2;19208:21;;;19265:2;19245:18;;;19238:30;19304:34;19299:2;19284:18;;19277:62;-1:-1:-1;;;19370:2:1;19355:18;;19348:47;19427:3;19412:19;;19198:239::o;21133:128::-;21173:3;21204:1;21200:6;21197:1;21194:13;21191:2;;;21210:18;;:::i;:::-;-1:-1:-1;21246:9:1;;21181:80::o;21266:120::-;21306:1;21332;21322:2;;21337:18;;:::i;:::-;-1:-1:-1;21371:9:1;;21312:74::o;21391:422::-;21480:1;21523:5;21480:1;21537:270;21558:7;21548:8;21545:21;21537:270;;;21617:4;21613:1;21609:6;21605:17;21599:4;21596:27;21593:2;;;21626:18;;:::i;:::-;21676:7;21666:8;21662:22;21659:2;;;21696:16;;;;21659:2;21775:22;;;;21735:15;;;;21537:270;;;21541:3;21455:358;;;;;:::o;21818:131::-;21878:5;21907:36;21934:8;21928:4;22003:5;22033:8;22023:2;;-1:-1:-1;22074:1:1;22088:5;;22023:2;22122:4;22112:2;;-1:-1:-1;22159:1:1;22173:5;;22112:2;22204:4;22222:1;22217:59;;;;22290:1;22285:130;;;;22197:218;;22217:59;22247:1;22238:10;;22261:5;;;22285:130;22322:3;22312:8;22309:17;22306:2;;;22329:18;;:::i;:::-;-1:-1:-1;;22385:1:1;22371:16;;22400:5;;22197:218;;22499:2;22489:8;22486:16;22480:3;22474:4;22471:13;22467:36;22461:2;22451:8;22448:16;22443:2;22437:4;22434:12;22430:35;22427:77;22424:2;;;-1:-1:-1;22536:19:1;;;22568:5;;22424:2;22615:34;22640:8;22634:4;22615:34;:::i;:::-;22685:6;22681:1;22677:6;22673:19;22664:7;22661:32;22658:2;;;22696:18;;:::i;:::-;22734:20;;22013:747;-1:-1:-1;;;22013:747:1:o;22765:168::-;22805:7;22871:1;22867;22863:6;22859:14;22856:1;22853:21;22848:1;22841:9;22834:17;22830:45;22827:2;;;22878:18;;:::i;:::-;-1:-1:-1;22918:9:1;;22817:116::o;22938:125::-;22978:4;23006:1;23003;23000:8;22997:2;;;23011:18;;:::i;:::-;-1:-1:-1;23048:9:1;;22987:76::o;23068:258::-;23140:1;23150:113;23164:6;23161:1;23158:13;23150:113;;;23240:11;;;23234:18;23221:11;;;23214:39;23186:2;23179:10;23150:113;;;23281:6;23278:1;23275:13;23272:2;;;-1:-1:-1;;23316:1:1;23298:16;;23291:27;23121:205::o;23331:380::-;23410:1;23406:12;;;;23453;;;23474:2;;23528:4;23520:6;23516:17;23506:27;;23474:2;23581;23573:6;23570:14;23550:18;23547:38;23544:2;;;23627:10;23622:3;23618:20;23615:1;23608:31;23662:4;23659:1;23652:15;23690:4;23687:1;23680:15;23544:2;;23386:325;;;:::o;23716:135::-;23755:3;-1:-1:-1;;23776:17:1;;23773:2;;;23796:18;;:::i;:::-;-1:-1:-1;23843:1:1;23832:13;;23763:88::o;23856:112::-;23888:1;23914;23904:2;;23919:18;;:::i;:::-;-1:-1:-1;23953:9:1;;23894:74::o;23973:127::-;24034:10;24029:3;24025:20;24022:1;24015:31;24065:4;24062:1;24055:15;24089:4;24086:1;24079:15;24105:127;24166:10;24161:3;24157:20;24154:1;24147:31;24197:4;24194:1;24187:15;24221:4;24218:1;24211:15;24237:127;24298:10;24293:3;24289:20;24286:1;24279:31;24329:4;24326:1;24319:15;24353:4;24350:1;24343:15;24369:118;24455:5;24448:13;24441:21;24434:5;24431:32;24421:2;;24477:1;24474;24467:12;24492:131;-1:-1:-1;;;;;;24566:32:1;;24556:43;;24546:2;;24613:1;24610;24603:12
Swarm Source
ipfs://d886b788426ccddc354063eb951294fcc93b93d72000ed7a5fd3b533b0e2f8ee
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.