ERC-721
Overview
Max Total Supply
485 CAZ
Holders
128
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
5 CAZLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CoolCazuki
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-14 */ // Sources flattened with hardhat v2.7.0 https://hardhat.org // File sol-temple/src/tokens/[email protected] pragma solidity >=0.8.0 <0.9.0; /* /*COOL CAZUKI */ /** * @title ERC721 * @notice A complete ERC721 implementation including metadata and enumerable * functions. Completely gas optimized and extensible. */ abstract contract ERC721 { /// @notice See {ERC721-Transfer}. event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); /// @notice See {ERC721-Approval}. event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); /// @notice See {ERC721-ApprovalForAll}. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @notice See {ERC721Metadata-name}. string public name; /// @notice See {ERC721Metadata-symbol}. string public symbol; /// @notice See {ERC721Enumerable-totalSupply}. uint256 public totalSupply; /// @notice Array of all owners. address[] private _owners; /// @notice Mapping of all balances. mapping(address => uint256) private _balanceOf; /// @notice Mapping from token Id to it's approved address. mapping(uint256 => address) private _tokenApprovals; /// @notice Mapping of approvals between owner and operator. mapping(address => mapping(address => bool)) private _isApprovedForAll; constructor(string memory name_, string memory symbol_) { name = name_; symbol = symbol_; } /// @notice See {ERC721-balanceOf}. function balanceOf(address account_) public view virtual returns (uint256) { require(account_ != address(0), "ERC721: balance query for the zero address"); return _balanceOf[account_]; } /// @notice See {ERC721-ownerOf}. function ownerOf(uint256 tokenId_) public view virtual returns (address) { require(_exists(tokenId_), "ERC721: query for nonexistent token"); address owner = _owners[tokenId_]; return owner; } /// @notice See {ERC721Metadata-tokenURI}. function tokenURI(uint256) public view virtual returns (string memory); /// @notice See {ERC721-approve}. function approve(address to_, uint256 tokenId_) public virtual { address owner = ownerOf(tokenId_); require(to_ != owner, "ERC721: approval to current owner"); require( msg.sender == owner || _isApprovedForAll[owner][msg.sender], "ERC721: caller is not owner nor approved for all" ); _approve(to_, tokenId_); } /// @notice See {ERC721-getApproved}. function getApproved(uint256 tokenId_) public view virtual returns (address) { require(_exists(tokenId_), "ERC721: query for nonexistent token"); return _tokenApprovals[tokenId_]; } /// @notice See {ERC721-setApprovalForAll}. function setApprovalForAll(address operator_, bool approved_) public virtual { _setApprovalForAll(msg.sender, operator_, approved_); } /// @notice See {ERC721-isApprovedForAll}. function isApprovedForAll(address account_, address operator_) public view virtual returns (bool) { return _isApprovedForAll[account_][operator_]; } /// @notice See {ERC721-transferFrom}. function transferFrom( address from_, address to_, uint256 tokenId_ ) public virtual { require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721: transfer caller is not owner nor approved"); _transfer(from_, to_, tokenId_); } /// @notice See {ERC721-safeTransferFrom}. function safeTransferFrom( address from_, address to_, uint256 tokenId_ ) public virtual { safeTransferFrom(from_, to_, tokenId_, ""); } /// @notice See {ERC721-safeTransferFrom}. function safeTransferFrom( address from_, address to_, uint256 tokenId_, bytes memory data_ ) public virtual { require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from_, to_, tokenId_, data_); } /// @notice See {ERC721Enumerable.tokenOfOwnerByIndex}. function tokenOfOwnerByIndex(address account_, uint256 index_) public view returns (uint256 tokenId) { require(index_ < balanceOf(account_), "ERC721Enumerable: Index out of bounds"); uint256 count; for (uint256 i; i < _owners.length; ++i) { if (account_ == _owners[i]) { if (count == index_) return i; else count++; } } revert("ERC721Enumerable: Index out of bounds"); } /// @notice See {ERC721Enumerable.tokenByIndex}. function tokenByIndex(uint256 index_) public view virtual returns (uint256) { require(index_ < _owners.length, "ERC721Enumerable: Index out of bounds"); return index_; } /// @notice Returns a list of all token Ids owned by `owner`. function walletOfOwner(address account_) public view returns (uint256[] memory) { uint256 balance = balanceOf(account_); uint256[] memory ids = new uint256[](balance); for (uint256 i = 0; i < balance; i++) { ids[i] = tokenOfOwnerByIndex(account_, i); } return ids; } /** * @notice Safely transfers `tokenId_` token from `from_` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. */ function _safeTransfer( address from_, address to_, uint256 tokenId_, bytes memory data_ ) internal virtual { _transfer(from_, to_, tokenId_); _checkOnERC721Received(from_, to_, tokenId_, data_); } /// @notice Returns whether `tokenId_` exists. function _exists(uint256 tokenId_) internal view virtual returns (bool) { return tokenId_ < _owners.length && _owners[tokenId_] != address(0); } /// @notice Returns whether `spender_` is allowed to manage `tokenId`. function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal view virtual returns (bool) { require(_exists(tokenId_), "ERC721: query for nonexistent token"); address owner = _owners[tokenId_]; return (spender_ == owner || getApproved(tokenId_) == spender_ || isApprovedForAll(owner, spender_)); } /// @notice Safely mints `tokenId_` and transfers it to `to`. function _safeMint(address to_, uint256 tokenId_) internal virtual { _safeMint(to_, tokenId_, ""); } /** * @notice Same as {_safeMint}, but with an additional `data_` parameter which is * forwarded in {ERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to_, uint256 tokenId_, bytes memory data_ ) internal virtual { _mint(to_, tokenId_); _checkOnERC721Received(address(0), to_, tokenId_, data_); } /// @notice Mints `tokenId_` and transfers it to `to_`. function _mint(address to_, uint256 tokenId_) internal virtual { require(!_exists(tokenId_), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to_, tokenId_); _owners.push(to_); totalSupply++; unchecked { _balanceOf[to_]++; } emit Transfer(address(0), to_, tokenId_); _afterTokenTransfer(address(0), to_, tokenId_); } /// @notice Destroys `tokenId`. The approval is cleared when the token is burned. function _burn(uint256 tokenId_) internal virtual { address owner = ownerOf(tokenId_); _beforeTokenTransfer(owner, address(0), tokenId_); // Clear approvals _approve(address(0), tokenId_); delete _owners[tokenId_]; totalSupply--; _balanceOf[owner]--; emit Transfer(owner, address(0), tokenId_); _afterTokenTransfer(owner, address(0), tokenId_); } /// @notice Transfers `tokenId_` from `from_` to `to`. function _transfer( address from_, address to_, uint256 tokenId_ ) internal virtual { require(_owners[tokenId_] == from_, "ERC721: transfer of token that is not own"); _beforeTokenTransfer(from_, to_, tokenId_); // Clear approvals from the previous owner _approve(address(0), tokenId_); _owners[tokenId_] = to_; unchecked { _balanceOf[from_]--; _balanceOf[to_]++; } emit Transfer(from_, to_, tokenId_); _afterTokenTransfer(from_, to_, tokenId_); } /// @notice Approve `to_` to operate on `tokenId_` function _approve(address to_, uint256 tokenId_) internal virtual { _tokenApprovals[tokenId_] = to_; emit Approval(_owners[tokenId_], to_, tokenId_); } /// @notice Approve `operator_` to operate on all of `account_` tokens. function _setApprovalForAll( address account_, address operator_, bool approved_ ) internal virtual { require(account_ != operator_, "ERC721: approve to caller"); _isApprovedForAll[account_][operator_] = approved_; emit ApprovalForAll(account_, operator_, approved_); } /// @notice ERC721Receiver callback checking and calling helper. function _checkOnERC721Received( address from_, address to_, uint256 tokenId_, bytes memory data_ ) private { if (to_.code.length > 0) { try IERC721Receiver(to_).onERC721Received(msg.sender, from_, tokenId_, data_) returns (bytes4 returned) { require(returned == 0x150b7a02, "ERC721: safe transfer to non ERC721Receiver implementation"); } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: safe transfer to non ERC721Receiver implementation"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } } /// @notice Hook that is called before any token transfer. function _beforeTokenTransfer( address from_, address to_, uint256 tokenId_ ) internal virtual {} /// @notice Hook that is called after any token transfer. function _afterTokenTransfer( address from_, address to_, uint256 tokenId_ ) internal virtual {} /// @notice See {IERC165-supportsInterface}. function supportsInterface(bytes4 interfaceId_) public view virtual returns (bool) { return interfaceId_ == 0x80ac58cd || // ERC721 interfaceId_ == 0x5b5e139f || // ERC721Metadata interfaceId_ == 0x780e9d63 || // ERC721Enumerable interfaceId_ == 0x01ffc9a7; // ERC165 } } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes memory data ) external returns (bytes4); } // File sol-temple/src/utils/[email protected] pragma solidity >=0.8.0 <0.9.0; /** * @title Auth * @notice Just a simple authing system. */ abstract contract Auth { /// @notice Emitted when the ownership is transfered. event OwnershipTransfered(address indexed from, address indexed to); /// @notice Contract's owner address. address public owner; /// @notice A simple modifier just to check whether the sender is the owner. modifier onlyOwner() { require(msg.sender == owner, "Auth: sender is not the owner"); _; } constructor() { _transferOwnership(msg.sender); } /// @notice Set the owner address to `owner_`. function transferOwnership(address owner_) public onlyOwner { require(owner != owner_, "Auth: transfering ownership to current owner"); _transferOwnership(owner_); } /// @notice Set the owner address to `owner_`. Does not require anything function _transferOwnership(address owner_) internal { address oldOwner = owner; owner = owner_; emit OwnershipTransfered(oldOwner, owner_); } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/token/ERC20/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File @openzeppelin/contracts/token/ERC1155/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File contracts/Yeee.sol // SPDX-License-Identifier: MIT pragma solidity 0.8.11; contract CoolCazuki is Auth, ERC721 { using Strings for uint256; /// @notice Max supply. uint256 public constant SUPPLY_MAX = 5000; /// @notice Max amount per claim. uint256 public constant SUPPLY_PER_TX = 5; /// @notice 0 = CLOSED, 1 = PUBLIC, 2 = WHITELIST. uint256 public saleState; /// @notice OpenSea proxy registry. address public opensea = 0xa5409ec958C83C3f309868babACA7c86DCB077c1; /// @notice LooksRare marketplace transfer manager. address public looksrare = 0xf42aa99F011A1fA7CDA90E5E98b277E306BcA83e; /// @notice Check if marketplaces pre-approve is enabled. bool public marketplacesApproved = true; /// @notice Unrevelead URI. string public unrevealedURI; /// @notice Metadata base URI. string public baseURI; /// @notice Metadata base file extension. string public baseExtension; constructor(string memory newUnrevealedURI) ERC721("Cool Cazuki", "CAZ") { unrevealedURI = newUnrevealedURI; } /// @notice Claim one or more tokens. function mint(uint256 amount) external payable { uint256 supply = totalSupply; require(supply + amount <= SUPPLY_MAX, "Max supply exceeded"); if (msg.sender != owner) { require(saleState == 1, "Public sale is not open"); require(amount > 0 && amount <= SUPPLY_PER_TX, "Invalid claim amount"); if (supply <= 400) require(msg.value == 0, "Invalid ether amount"); else require(msg.value == 0.015 ether, "Invalid ether amount"); } for (uint256 i = 0; i < amount; i++) _safeMint(msg.sender, supply++); } /// @notice See {IERC721-tokenURI}. function tokenURI(uint256 id) public view override returns (string memory) { require(_exists(id), "ERC721Metadata: query for nonexisting token"); if (bytes(unrevealedURI).length > 0) return unrevealedURI; return string(abi.encodePacked(baseURI, id.toString(), baseExtension)); } /// @notice Set baseURI to `newBaseURI`. function setBaseURI(string memory newBaseURI, string memory newBaseExtension) external onlyOwner { baseURI = newBaseURI; baseExtension = newBaseExtension; delete unrevealedURI; } /// @notice Set unrevealedURI to `newUnrevealedURI`. function setUnrevealedURI(string memory newUnrevealedURI) external onlyOwner { unrevealedURI = newUnrevealedURI; } /// @notice Set saleState to `newSaleState`. function setSaleState(uint256 newSaleState) external onlyOwner { saleState = newSaleState; } /// @notice Set opensea to `newOpensea`. function setOpensea(address newOpensea) external onlyOwner { opensea = newOpensea; } /// @notice Set looksrare to `newLooksrare`. function setLooksrare(address newLooksrare) external onlyOwner { looksrare = newLooksrare; } /// @notice Toggle pre-approve feature state for sender. function toggleMarketplacesApproved() external onlyOwner { marketplacesApproved = !marketplacesApproved; } /// @notice Withdraw `value` of ether to the sender. function withdraw(address payable to, uint256 amount) external onlyOwner { to.transfer(amount); } /// @notice Withdraw `value` of `token` to the sender. function withdrawERC20(IERC20 token, uint256 value) external onlyOwner { token.transfer(msg.sender, value); } /// @notice Withdraw `id` of `token` to the sender. function withdrawERC721(IERC721 token, uint256 id) external onlyOwner { token.safeTransferFrom(address(this), msg.sender, id); } /// @notice Withdraw `id` with `value` from `token` to the sender. function withdrawERC1155( IERC1155 token, uint256 id, uint256 value ) external onlyOwner { token.safeTransferFrom(address(this), msg.sender, id, value, ""); } /// @dev Modified for opensea and looksrare pre-approve so users can make truly gasless sales. function isApprovedForAll(address owner, address operator) public view override returns (bool) { if (!marketplacesApproved) return super.isApprovedForAll(owner, operator); return operator == address(ProxyRegistry(opensea).proxies(owner)) || operator == looksrare || super.isApprovedForAll(owner, operator); } } contract OwnableDelegateProxy {} contract ProxyRegistry { mapping(address => OwnableDelegateProxy) public proxies; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SUPPLY_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPPLY_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"looksrare","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketplacesApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opensea","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"},{"internalType":"string","name":"newBaseExtension","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLooksrare","type":"address"}],"name":"setLooksrare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOpensea","type":"address"}],"name":"setOpensea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSaleState","type":"uint256"}],"name":"setSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleMarketplacesApproved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unrevealedURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC1155","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"token","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawERC721","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600980546001600160a01b03191673a5409ec958c83c3f309868babaca7c86dcb077c1179055600a80547401f42aa99f011a1fa7cda90e5e98b277e306bca83e6001600160a81b03199091161790553480156200006057600080fd5b5060405162002d4538038062002d4583398101604081905262000083916200022b565b6040518060400160405280600b81526020016a436f6f6c2043617a756b6960a81b8152506040518060400160405280600381526020016221a0ad60e91b815250620000d4336200011f60201b60201c565b8151620000e99060019060208501906200016f565b508051620000ff9060029060208401906200016f565b50508151620001179150600b9060208401906200016f565b505062000344565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b8280546200017d9062000307565b90600052602060002090601f016020900481019282620001a15760008555620001ec565b82601f10620001bc57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001ec578251825591602001919060010190620001cf565b50620001fa929150620001fe565b5090565b5b80821115620001fa5760008155600101620001ff565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200023f57600080fd5b82516001600160401b03808211156200025757600080fd5b818501915085601f8301126200026c57600080fd5b81518181111562000281576200028162000215565b604051601f8201601f19908116603f01168101908382118183101715620002ac57620002ac62000215565b816040528281528886848701011115620002c557600080fd5b600093505b82841015620002e95784840186015181850187015292850192620002ca565b82841115620002fb5760008684830101525b98975050505050505050565b600181811c908216806200031c57607f821691505b602082108114156200033e57634e487b7160e01b600052602260045260246000fd5b50919050565b6129f180620003546000396000f3fe6080604052600436106102a05760003560e01c80636c0360eb1161016e578063b776c8a6116100cb578063e985e9c51161007f578063f3e414f811610064578063f3e414f814610705578063f3fef3a314610725578063fe2c7fee1461074557600080fd5b8063e985e9c5146106c5578063f2fde38b146106e557600080fd5b8063c6682862116100b0578063c66828621461067b578063c87b56dd14610690578063de562a53146106b057600080fd5b8063b776c8a61461063b578063b88d4fde1461065b57600080fd5b806395d89b4111610122578063a1db978211610107578063a1db9782146105db578063a22cb465146105fb578063a8e90b571461061b57600080fd5b806395d89b41146105b3578063a0712d68146105c857600080fd5b806370a082311161015357806370a082311461055d5780638da5cb5b1461057d578063958f6ed61461059d57600080fd5b80636c0360eb146105335780637035bf181461054857600080fd5b80632f745c591161021c5780634f6ccce7116101d0578063603f4d52116101b5578063603f4d52146104dd5780636352211e146104f35780636790a9de1461051357600080fd5b80634f6ccce71461049d578063511ed382146104bd57600080fd5b806339ead7201161020157806339ead7201461043057806342842e0e14610450578063438b63001461047057600080fd5b80632f745c59146103fb57806333c12e171461041b57600080fd5b8063084c40881161027357806318160ddd1161025857806318160ddd146103975780631e8858fb146103bb57806323b872dd146103db57600080fd5b8063084c408814610355578063095ea7b31461037757600080fd5b806301ffc9a7146102a5578063026ae102146102da57806306fdde03146102fb578063081812fc1461031d575b600080fd5b3480156102b157600080fd5b506102c56102c0366004612359565b610765565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b50600a546102c590600160a01b900460ff1681565b34801561030757600080fd5b50610310610836565b6040516102d191906123ce565b34801561032957600080fd5b5061033d6103383660046123e1565b6108c4565b6040516001600160a01b0390911681526020016102d1565b34801561036157600080fd5b506103756103703660046123e1565b610948565b005b34801561038357600080fd5b5061037561039236600461240f565b610995565b3480156103a357600080fd5b506103ad60035481565b6040519081526020016102d1565b3480156103c757600080fd5b506103756103d636600461243b565b610ae5565b3480156103e757600080fd5b506103756103f6366004612458565b610b4f565b34801561040757600080fd5b506103ad61041636600461240f565b610bd6565b34801561042757600080fd5b50610375610d03565b34801561043c57600080fd5b5061037561044b366004612499565b610d87565b34801561045c57600080fd5b5061037561046b366004612458565b610e68565b34801561047c57600080fd5b5061049061048b36600461243b565b610e83565b6040516102d191906124ce565b3480156104a957600080fd5b506103ad6104b83660046123e1565b610f25565b3480156104c957600080fd5b5060095461033d906001600160a01b031681565b3480156104e957600080fd5b506103ad60085481565b3480156104ff57600080fd5b5061033d61050e3660046123e1565b610f8b565b34801561051f57600080fd5b5061037561052e3660046125be565b61101f565b34801561053f57600080fd5b5061031061109f565b34801561055457600080fd5b506103106110ac565b34801561056957600080fd5b506103ad61057836600461243b565b6110b9565b34801561058957600080fd5b5060005461033d906001600160a01b031681565b3480156105a957600080fd5b506103ad61138881565b3480156105bf57600080fd5b50610310611153565b6103756105d63660046123e1565b611160565b3480156105e757600080fd5b506103756105f636600461240f565b611363565b34801561060757600080fd5b50610375610616366004612630565b611435565b34801561062757600080fd5b50600a5461033d906001600160a01b031681565b34801561064757600080fd5b5061037561065636600461243b565b611440565b34801561066757600080fd5b50610375610676366004612669565b6114aa565b34801561068757600080fd5b50610310611538565b34801561069c57600080fd5b506103106106ab3660046123e1565b611545565b3480156106bc57600080fd5b506103ad600581565b3480156106d157600080fd5b506102c56106e03660046126e9565b6116a0565b3480156106f157600080fd5b5061037561070036600461243b565b6117cd565b34801561071157600080fd5b5061037561072036600461240f565b6118a5565b34801561073157600080fd5b5061037561074036600461240f565b611970565b34801561075157600080fd5b50610375610760366004612717565b6119ee565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806107c857507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806107fc57507f780e9d63000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b8061083057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b600180546108439061274c565b80601f016020809104026020016040519081016040528092919081815260200182805461086f9061274c565b80156108bc5780601f10610891576101008083540402835291602001916108bc565b820191906000526020600020905b81548152906001019060200180831161089f57829003601f168201915b505050505081565b60006108cf82611a49565b61092c5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000546001600160a01b031633146109905760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600855565b60006109a082610f8b565b9050806001600160a01b0316836001600160a01b03161415610a2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610923565b336001600160a01b0382161480610a6457506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b610ad65760405162461bcd60e51b815260206004820152603060248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206e6f722060448201527f617070726f76656420666f7220616c6c000000000000000000000000000000006064820152608401610923565b610ae08383611a93565b505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b593382611b16565b610bcb5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b610ae0838383611be7565b6000610be1836110b9565b8210610c3d5760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000805b600454811015610cac5760048181548110610c5e57610c5e612787565b6000918252602090912001546001600160a01b0386811691161415610c9c5783821415610c8e5791506108309050565b81610c98816127b3565b9250505b610ca5816127b3565b9050610c41565b5060405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018390526064810182905260a06084820152600060a48201526001600160a01b0384169063f242432a9060c401600060405180830381600087803b158015610e4b57600080fd5b505af1158015610e5f573d6000803e3d6000fd5b50505050505050565b610ae0838383604051806020016040528060008152506114aa565b60606000610e90836110b9565b905060008167ffffffffffffffff811115610ead57610ead612512565b604051908082528060200260200182016040528015610ed6578160200160208202803683370190505b50905060005b82811015610f1d57610eee8582610bd6565b828281518110610f0057610f00612787565b602090810291909101015280610f15816127b3565b915050610edc565b509392505050565b6004546000908210610f875760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b5090565b6000610f9682611a49565b610fee5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b60006004838154811061100357611003612787565b6000918252602090912001546001600160a01b03169392505050565b6000546001600160a01b031633146110675760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b815161107a90600c906020850190612278565b50805161108e90600d906020840190612278565b5061109b600b60006122f8565b5050565b600c80546108439061274c565b600b80546108439061274c565b60006001600160a01b0382166111375760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610923565b506001600160a01b031660009081526005602052604090205490565b600280546108439061274c565b60035461138861117083836127ce565b11156111be5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c79206578636565646564000000000000000000000000006044820152606401610923565b6000546001600160a01b03163314611331576008546001146112225760405162461bcd60e51b815260206004820152601760248201527f5075626c69632073616c65206973206e6f74206f70656e0000000000000000006044820152606401610923565b600082118015611233575060058211155b61127f5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420636c61696d20616d6f756e740000000000000000000000006044820152606401610923565b61019081116112db5734156112d65760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b611331565b3466354a6ba7a18000146113315760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b60005b82811015610ae057611351338361134a816127b3565b9450611d28565b8061135b816127b3565b915050611334565b6000546001600160a01b031633146113ab5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611411573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae091906127e6565b61109b338383611d42565b6000546001600160a01b031633146114885760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6114b43383611b16565b6115265760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b61153284848484611e11565b50505050565b600d80546108439061274c565b606061155082611a49565b6115c25760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20717565727920666f72206e6f6e65786960448201527f7374696e6720746f6b656e0000000000000000000000000000000000000000006064820152608401610923565b6000600b80546115d19061274c565b9050111561166b57600b80546115e69061274c565b80601f01602080910402602001604051908101604052809291908181526020018280546116129061274c565b801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b50505050509050919050565b600c61167683611e28565b600d60405160200161168a9392919061289d565b6040516020818303038152906040529050919050565b600a54600090600160a01b900460ff166116e357506001600160a01b0382811660009081526007602090815260408083209385168352929052205460ff16610830565b6009546040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063c455279190602401602060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a91906128d0565b6001600160a01b0316826001600160a01b031614806117965750600a546001600160a01b038381169116145b806117c657506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b6000546001600160a01b031633146118155760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6000546001600160a01b03828116911614156118995760405162461bcd60e51b815260206004820152602c60248201527f417574683a207472616e73666572696e67206f776e65727368697020746f206360448201527f757272656e74206f776e657200000000000000000000000000000000000000006064820152608401610923565b6118a281611f5a565b50565b6000546001600160a01b031633146118ed5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018290526001600160a01b038316906342842e0e90606401600060405180830381600087803b15801561195457600080fd5b505af1158015611968573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119b85760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ae0573d6000803e3d6000fd5b6000546001600160a01b03163314611a365760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b805161109b90600b906020840190612278565b60045460009082108015610830575060006001600160a01b031660048381548110611a7657611a76612787565b6000918252602090912001546001600160a01b0316141592915050565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155600480548392919083908110611ad557611ad5612787565b60009182526020822001546040516001600160a01b03909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000611b2182611a49565b611b795760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b600060048381548110611b8e57611b8e612787565b6000918252602090912001546001600160a01b0390811691508416811480611bcf5750836001600160a01b0316611bc4846108c4565b6001600160a01b0316145b80611bdf5750611bdf81856116a0565b949350505050565b826001600160a01b031660048281548110611c0457611c04612787565b6000918252602090912001546001600160a01b031614611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610923565b611c97600082611a93565b8160048281548110611cab57611cab612787565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558583168083526005909152604080832080546000190190559285168083528383208054600101905592518493927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109b828260405180602001604052806000815250611faa565b816001600160a01b0316836001600160a01b03161415611da45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610923565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e1c848484611be7565b61153284848484611fbd565b606081611e6857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611e925780611e7c816127b3565b9150611e8b9050600a83612903565b9150611e6c565b60008167ffffffffffffffff811115611ead57611ead612512565b6040519080825280601f01601f191660200182016040528015611ed7576020820181803683370190505b5090505b8415611bdf57611eec600183612917565b9150611ef9600a8661292e565b611f049060306127ce565b60f81b818381518110611f1957611f19612787565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f53600a86612903565b9450611edb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b611fb48383612177565b610ae060008484845b6001600160a01b0383163b1561153257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611fff903390889087908790600401612942565b6020604051808303816000875af192505050801561203a575060408051601f3d908101601f191682019092526120379181019061297e565b60015b6120ea573d808015612068576040519150601f19603f3d011682016040523d82523d6000602084013e61206d565b606091505b5080516120e25760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b805181602001fd5b630a85bd0160e11b6001600160e01b03198216146121705760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b5050505050565b61218081611a49565b156121cd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610923565b6004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0385161790556003805491612225836127b3565b90915550506001600160a01b0382166000818152600560205260408082208054600101905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546122849061274c565b90600052602060002090601f0160209004810192826122a657600085556122ec565b82601f106122bf57805160ff19168380011785556122ec565b828001600101855582156122ec579182015b828111156122ec5782518255916020019190600101906122d1565b50610f8792915061232e565b5080546123049061274c565b6000825580601f10612314575050565b601f0160209004906000526020600020908101906118a291905b5b80821115610f87576000815560010161232f565b6001600160e01b0319811681146118a257600080fd5b60006020828403121561236b57600080fd5b81356117c681612343565b60005b83811015612391578181015183820152602001612379565b838111156115325750506000910152565b600081518084526123ba816020860160208601612376565b601f01601f19169290920160200192915050565b6020815260006117c660208301846123a2565b6000602082840312156123f357600080fd5b5035919050565b6001600160a01b03811681146118a257600080fd5b6000806040838503121561242257600080fd5b823561242d816123fa565b946020939093013593505050565b60006020828403121561244d57600080fd5b81356117c6816123fa565b60008060006060848603121561246d57600080fd5b8335612478816123fa565b92506020840135612488816123fa565b929592945050506040919091013590565b6000806000606084860312156124ae57600080fd5b83356124b9816123fa565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015612506578351835292840192918401916001016124ea565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561254357612543612512565b604051601f8501601f19908116603f0116810190828211818310171561256b5761256b612512565b8160405280935085815286868601111561258457600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126125af57600080fd5b6117c683833560208501612528565b600080604083850312156125d157600080fd5b823567ffffffffffffffff808211156125e957600080fd5b6125f58683870161259e565b9350602085013591508082111561260b57600080fd5b506126188582860161259e565b9150509250929050565b80151581146118a257600080fd5b6000806040838503121561264357600080fd5b823561264e816123fa565b9150602083013561265e81612622565b809150509250929050565b6000806000806080858703121561267f57600080fd5b843561268a816123fa565b9350602085013561269a816123fa565b925060408501359150606085013567ffffffffffffffff8111156126bd57600080fd5b8501601f810187136126ce57600080fd5b6126dd87823560208401612528565b91505092959194509250565b600080604083850312156126fc57600080fd5b8235612707816123fa565b9150602083013561265e816123fa565b60006020828403121561272957600080fd5b813567ffffffffffffffff81111561274057600080fd5b611bdf8482850161259e565b600181811c9082168061276057607f821691505b6020821081141561278157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127c7576127c761279d565b5060010190565b600082198211156127e1576127e161279d565b500190565b6000602082840312156127f857600080fd5b81516117c681612622565b8054600090600181811c908083168061281d57607f831692505b602080841082141561283f57634e487b7160e01b600052602260045260246000fd5b818015612853576001811461286457612891565b60ff19861689528489019650612891565b60008881526020902060005b868110156128895781548b820152908501908301612870565b505084890196505b50505050505092915050565b60006128a98286612803565b84516128b9818360208901612376565b6128c581830186612803565b979650505050505050565b6000602082840312156128e257600080fd5b81516117c6816123fa565b634e487b7160e01b600052601260045260246000fd5b600082612912576129126128ed565b500490565b6000828210156129295761292961279d565b500390565b60008261293d5761293d6128ed565b500690565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261297460808301846123a2565b9695505050505050565b60006020828403121561299057600080fd5b81516117c68161234356fe417574683a2073656e646572206973206e6f7420746865206f776e6572000000a26469706673582212205598a4ec4355912bb21e522b5431273ae3f76afb79a3c3e3ca13976288d1317264736f6c634300080b003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5a6568725676656d6d5a3775744a47775551635268743879547077573334786a746d384d48454c6a574851712f00000000000000000000
Deployed Bytecode
0x6080604052600436106102a05760003560e01c80636c0360eb1161016e578063b776c8a6116100cb578063e985e9c51161007f578063f3e414f811610064578063f3e414f814610705578063f3fef3a314610725578063fe2c7fee1461074557600080fd5b8063e985e9c5146106c5578063f2fde38b146106e557600080fd5b8063c6682862116100b0578063c66828621461067b578063c87b56dd14610690578063de562a53146106b057600080fd5b8063b776c8a61461063b578063b88d4fde1461065b57600080fd5b806395d89b4111610122578063a1db978211610107578063a1db9782146105db578063a22cb465146105fb578063a8e90b571461061b57600080fd5b806395d89b41146105b3578063a0712d68146105c857600080fd5b806370a082311161015357806370a082311461055d5780638da5cb5b1461057d578063958f6ed61461059d57600080fd5b80636c0360eb146105335780637035bf181461054857600080fd5b80632f745c591161021c5780634f6ccce7116101d0578063603f4d52116101b5578063603f4d52146104dd5780636352211e146104f35780636790a9de1461051357600080fd5b80634f6ccce71461049d578063511ed382146104bd57600080fd5b806339ead7201161020157806339ead7201461043057806342842e0e14610450578063438b63001461047057600080fd5b80632f745c59146103fb57806333c12e171461041b57600080fd5b8063084c40881161027357806318160ddd1161025857806318160ddd146103975780631e8858fb146103bb57806323b872dd146103db57600080fd5b8063084c408814610355578063095ea7b31461037757600080fd5b806301ffc9a7146102a5578063026ae102146102da57806306fdde03146102fb578063081812fc1461031d575b600080fd5b3480156102b157600080fd5b506102c56102c0366004612359565b610765565b60405190151581526020015b60405180910390f35b3480156102e657600080fd5b50600a546102c590600160a01b900460ff1681565b34801561030757600080fd5b50610310610836565b6040516102d191906123ce565b34801561032957600080fd5b5061033d6103383660046123e1565b6108c4565b6040516001600160a01b0390911681526020016102d1565b34801561036157600080fd5b506103756103703660046123e1565b610948565b005b34801561038357600080fd5b5061037561039236600461240f565b610995565b3480156103a357600080fd5b506103ad60035481565b6040519081526020016102d1565b3480156103c757600080fd5b506103756103d636600461243b565b610ae5565b3480156103e757600080fd5b506103756103f6366004612458565b610b4f565b34801561040757600080fd5b506103ad61041636600461240f565b610bd6565b34801561042757600080fd5b50610375610d03565b34801561043c57600080fd5b5061037561044b366004612499565b610d87565b34801561045c57600080fd5b5061037561046b366004612458565b610e68565b34801561047c57600080fd5b5061049061048b36600461243b565b610e83565b6040516102d191906124ce565b3480156104a957600080fd5b506103ad6104b83660046123e1565b610f25565b3480156104c957600080fd5b5060095461033d906001600160a01b031681565b3480156104e957600080fd5b506103ad60085481565b3480156104ff57600080fd5b5061033d61050e3660046123e1565b610f8b565b34801561051f57600080fd5b5061037561052e3660046125be565b61101f565b34801561053f57600080fd5b5061031061109f565b34801561055457600080fd5b506103106110ac565b34801561056957600080fd5b506103ad61057836600461243b565b6110b9565b34801561058957600080fd5b5060005461033d906001600160a01b031681565b3480156105a957600080fd5b506103ad61138881565b3480156105bf57600080fd5b50610310611153565b6103756105d63660046123e1565b611160565b3480156105e757600080fd5b506103756105f636600461240f565b611363565b34801561060757600080fd5b50610375610616366004612630565b611435565b34801561062757600080fd5b50600a5461033d906001600160a01b031681565b34801561064757600080fd5b5061037561065636600461243b565b611440565b34801561066757600080fd5b50610375610676366004612669565b6114aa565b34801561068757600080fd5b50610310611538565b34801561069c57600080fd5b506103106106ab3660046123e1565b611545565b3480156106bc57600080fd5b506103ad600581565b3480156106d157600080fd5b506102c56106e03660046126e9565b6116a0565b3480156106f157600080fd5b5061037561070036600461243b565b6117cd565b34801561071157600080fd5b5061037561072036600461240f565b6118a5565b34801561073157600080fd5b5061037561074036600461240f565b611970565b34801561075157600080fd5b50610375610760366004612717565b6119ee565b60007f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806107c857507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b806107fc57507f780e9d63000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b8061083057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b600180546108439061274c565b80601f016020809104026020016040519081016040528092919081815260200182805461086f9061274c565b80156108bc5780601f10610891576101008083540402835291602001916108bc565b820191906000526020600020905b81548152906001019060200180831161089f57829003601f168201915b505050505081565b60006108cf82611a49565b61092c5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000546001600160a01b031633146109905760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600855565b60006109a082610f8b565b9050806001600160a01b0316836001600160a01b03161415610a2a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610923565b336001600160a01b0382161480610a6457506001600160a01b038116600090815260076020908152604080832033845290915290205460ff165b610ad65760405162461bcd60e51b815260206004820152603060248201527f4552433732313a2063616c6c6572206973206e6f74206f776e6572206e6f722060448201527f617070726f76656420666f7220616c6c000000000000000000000000000000006064820152608401610923565b610ae08383611a93565b505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b593382611b16565b610bcb5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b610ae0838383611be7565b6000610be1836110b9565b8210610c3d5760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000805b600454811015610cac5760048181548110610c5e57610c5e612787565b6000918252602090912001546001600160a01b0386811691161415610c9c5783821415610c8e5791506108309050565b81610c98816127b3565b9250505b610ca5816127b3565b9050610c41565b5060405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517ff242432a000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018390526064810182905260a06084820152600060a48201526001600160a01b0384169063f242432a9060c401600060405180830381600087803b158015610e4b57600080fd5b505af1158015610e5f573d6000803e3d6000fd5b50505050505050565b610ae0838383604051806020016040528060008152506114aa565b60606000610e90836110b9565b905060008167ffffffffffffffff811115610ead57610ead612512565b604051908082528060200260200182016040528015610ed6578160200160208202803683370190505b50905060005b82811015610f1d57610eee8582610bd6565b828281518110610f0057610f00612787565b602090810291909101015280610f15816127b3565b915050610edc565b509392505050565b6004546000908210610f875760405162461bcd60e51b815260206004820152602560248201527f455243373231456e756d657261626c653a20496e646578206f7574206f6620626044820152646f756e647360d81b6064820152608401610923565b5090565b6000610f9682611a49565b610fee5760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b60006004838154811061100357611003612787565b6000918252602090912001546001600160a01b03169392505050565b6000546001600160a01b031633146110675760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b815161107a90600c906020850190612278565b50805161108e90600d906020840190612278565b5061109b600b60006122f8565b5050565b600c80546108439061274c565b600b80546108439061274c565b60006001600160a01b0382166111375760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610923565b506001600160a01b031660009081526005602052604090205490565b600280546108439061274c565b60035461138861117083836127ce565b11156111be5760405162461bcd60e51b815260206004820152601360248201527f4d617820737570706c79206578636565646564000000000000000000000000006044820152606401610923565b6000546001600160a01b03163314611331576008546001146112225760405162461bcd60e51b815260206004820152601760248201527f5075626c69632073616c65206973206e6f74206f70656e0000000000000000006044820152606401610923565b600082118015611233575060058211155b61127f5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420636c61696d20616d6f756e740000000000000000000000006044820152606401610923565b61019081116112db5734156112d65760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b611331565b3466354a6ba7a18000146113315760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420657468657220616d6f756e740000000000000000000000006044820152606401610923565b60005b82811015610ae057611351338361134a816127b3565b9450611d28565b8061135b816127b3565b915050611334565b6000546001600160a01b031633146113ab5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611411573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae091906127e6565b61109b338383611d42565b6000546001600160a01b031633146114885760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6114b43383611b16565b6115265760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610923565b61153284848484611e11565b50505050565b600d80546108439061274c565b606061155082611a49565b6115c25760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20717565727920666f72206e6f6e65786960448201527f7374696e6720746f6b656e0000000000000000000000000000000000000000006064820152608401610923565b6000600b80546115d19061274c565b9050111561166b57600b80546115e69061274c565b80601f01602080910402602001604051908101604052809291908181526020018280546116129061274c565b801561165f5780601f106116345761010080835404028352916020019161165f565b820191906000526020600020905b81548152906001019060200180831161164257829003601f168201915b50505050509050919050565b600c61167683611e28565b600d60405160200161168a9392919061289d565b6040516020818303038152906040529050919050565b600a54600090600160a01b900460ff166116e357506001600160a01b0382811660009081526007602090815260408083209385168352929052205460ff16610830565b6009546040517fc45527910000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063c455279190602401602060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a91906128d0565b6001600160a01b0316826001600160a01b031614806117965750600a546001600160a01b038381169116145b806117c657506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b6000546001600160a01b031633146118155760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6000546001600160a01b03828116911614156118995760405162461bcd60e51b815260206004820152602c60248201527f417574683a207472616e73666572696e67206f776e65727368697020746f206360448201527f757272656e74206f776e657200000000000000000000000000000000000000006064820152608401610923565b6118a281611f5a565b50565b6000546001600160a01b031633146118ed5760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040517f42842e0e000000000000000000000000000000000000000000000000000000008152306004820152336024820152604481018290526001600160a01b038316906342842e0e90606401600060405180830381600087803b15801561195457600080fd5b505af1158015611968573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119b85760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ae0573d6000803e3d6000fd5b6000546001600160a01b03163314611a365760405162461bcd60e51b815260206004820152601d602482015260008051602061299c8339815191526044820152606401610923565b805161109b90600b906020840190612278565b60045460009082108015610830575060006001600160a01b031660048381548110611a7657611a76612787565b6000918252602090912001546001600160a01b0316141592915050565b600081815260066020526040902080546001600160a01b0319166001600160a01b038416908117909155600480548392919083908110611ad557611ad5612787565b60009182526020822001546040516001600160a01b03909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6000611b2182611a49565b611b795760405162461bcd60e51b815260206004820152602360248201527f4552433732313a20717565727920666f72206e6f6e6578697374656e7420746f60448201526235b2b760e91b6064820152608401610923565b600060048381548110611b8e57611b8e612787565b6000918252602090912001546001600160a01b0390811691508416811480611bcf5750836001600160a01b0316611bc4846108c4565b6001600160a01b0316145b80611bdf5750611bdf81856116a0565b949350505050565b826001600160a01b031660048281548110611c0457611c04612787565b6000918252602090912001546001600160a01b031614611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610923565b611c97600082611a93565b8160048281548110611cab57611cab612787565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558583168083526005909152604080832080546000190190559285168083528383208054600101905592518493927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109b828260405180602001604052806000815250611faa565b816001600160a01b0316836001600160a01b03161415611da45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610923565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e1c848484611be7565b61153284848484611fbd565b606081611e6857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611e925780611e7c816127b3565b9150611e8b9050600a83612903565b9150611e6c565b60008167ffffffffffffffff811115611ead57611ead612512565b6040519080825280601f01601f191660200182016040528015611ed7576020820181803683370190505b5090505b8415611bdf57611eec600183612917565b9150611ef9600a8661292e565b611f049060306127ce565b60f81b818381518110611f1957611f19612787565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f53600a86612903565b9450611edb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee679190a35050565b611fb48383612177565b610ae060008484845b6001600160a01b0383163b1561153257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611fff903390889087908790600401612942565b6020604051808303816000875af192505050801561203a575060408051601f3d908101601f191682019092526120379181019061297e565b60015b6120ea573d808015612068576040519150601f19603f3d011682016040523d82523d6000602084013e61206d565b606091505b5080516120e25760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b805181602001fd5b630a85bd0160e11b6001600160e01b03198216146121705760405162461bcd60e51b815260206004820152603a60248201527f4552433732313a2073616665207472616e7366657220746f206e6f6e2045524360448201527f373231526563656976657220696d706c656d656e746174696f6e0000000000006064820152608401610923565b5050505050565b61218081611a49565b156121cd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610923565b6004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0385161790556003805491612225836127b3565b90915550506001600160a01b0382166000818152600560205260408082208054600101905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546122849061274c565b90600052602060002090601f0160209004810192826122a657600085556122ec565b82601f106122bf57805160ff19168380011785556122ec565b828001600101855582156122ec579182015b828111156122ec5782518255916020019190600101906122d1565b50610f8792915061232e565b5080546123049061274c565b6000825580601f10612314575050565b601f0160209004906000526020600020908101906118a291905b5b80821115610f87576000815560010161232f565b6001600160e01b0319811681146118a257600080fd5b60006020828403121561236b57600080fd5b81356117c681612343565b60005b83811015612391578181015183820152602001612379565b838111156115325750506000910152565b600081518084526123ba816020860160208601612376565b601f01601f19169290920160200192915050565b6020815260006117c660208301846123a2565b6000602082840312156123f357600080fd5b5035919050565b6001600160a01b03811681146118a257600080fd5b6000806040838503121561242257600080fd5b823561242d816123fa565b946020939093013593505050565b60006020828403121561244d57600080fd5b81356117c6816123fa565b60008060006060848603121561246d57600080fd5b8335612478816123fa565b92506020840135612488816123fa565b929592945050506040919091013590565b6000806000606084860312156124ae57600080fd5b83356124b9816123fa565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015612506578351835292840192918401916001016124ea565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561254357612543612512565b604051601f8501601f19908116603f0116810190828211818310171561256b5761256b612512565b8160405280935085815286868601111561258457600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126125af57600080fd5b6117c683833560208501612528565b600080604083850312156125d157600080fd5b823567ffffffffffffffff808211156125e957600080fd5b6125f58683870161259e565b9350602085013591508082111561260b57600080fd5b506126188582860161259e565b9150509250929050565b80151581146118a257600080fd5b6000806040838503121561264357600080fd5b823561264e816123fa565b9150602083013561265e81612622565b809150509250929050565b6000806000806080858703121561267f57600080fd5b843561268a816123fa565b9350602085013561269a816123fa565b925060408501359150606085013567ffffffffffffffff8111156126bd57600080fd5b8501601f810187136126ce57600080fd5b6126dd87823560208401612528565b91505092959194509250565b600080604083850312156126fc57600080fd5b8235612707816123fa565b9150602083013561265e816123fa565b60006020828403121561272957600080fd5b813567ffffffffffffffff81111561274057600080fd5b611bdf8482850161259e565b600181811c9082168061276057607f821691505b6020821081141561278157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127c7576127c761279d565b5060010190565b600082198211156127e1576127e161279d565b500190565b6000602082840312156127f857600080fd5b81516117c681612622565b8054600090600181811c908083168061281d57607f831692505b602080841082141561283f57634e487b7160e01b600052602260045260246000fd5b818015612853576001811461286457612891565b60ff19861689528489019650612891565b60008881526020902060005b868110156128895781548b820152908501908301612870565b505084890196505b50505050505092915050565b60006128a98286612803565b84516128b9818360208901612376565b6128c581830186612803565b979650505050505050565b6000602082840312156128e257600080fd5b81516117c6816123fa565b634e487b7160e01b600052601260045260246000fd5b600082612912576129126128ed565b500490565b6000828210156129295761292961279d565b500390565b60008261293d5761293d6128ed565b500690565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261297460808301846123a2565b9695505050505050565b60006020828403121561299057600080fd5b81516117c68161234356fe417574683a2073656e646572206973206e6f7420746865206f776e6572000000a26469706673582212205598a4ec4355912bb21e522b5431273ae3f76afb79a3c3e3ca13976288d1317264736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5a6568725676656d6d5a3775744a47775551635268743879547077573334786a746d384d48454c6a574851712f00000000000000000000
-----Decoded View---------------
Arg [0] : newUnrevealedURI (string): ipfs://QmZehrVvemmZ7utJGwUQcRht8yTpwW34xjtm8MHELjWHQq/
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [2] : 697066733a2f2f516d5a6568725676656d6d5a3775744a477755516352687438
Arg [3] : 79547077573334786a746d384d48454c6a574851712f00000000000000000000
Deployed Bytecode Sourcemap
26797:4251:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10094:305;;;;;;;;;;-1:-1:-1;10094:305:0;;;;;:::i;:::-;;:::i;:::-;;;611:14:1;;604:22;586:41;;574:2;559:18;10094:305:0;;;;;;;;27414:39;;;;;;;;;;-1:-1:-1;27414:39:0;;;;-1:-1:-1;;;27414:39:0;;;;;;812:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2577:194::-;;;;;;;;;;-1:-1:-1;2577:194:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1738:55:1;;;1720:74;;1708:2;1693:18;2577:194:0;1574:226:1;29216:100:0;;;;;;;;;;-1:-1:-1;29216:100:0;;;;;:::i;:::-;;:::i;:::-;;2174:356;;;;;;;;;;-1:-1:-1;2174:356:0;;;;;:::i;:::-;;:::i;957:26::-;;;;;;;;;;;;;;;;;;;2430:25:1;;;2418:2;2403:18;957:26:0;2284:177:1;29512:100:0;;;;;;;;;;-1:-1:-1;29512:100:0;;;;;:::i;:::-;;:::i;3222:256::-;;;;;;;;;;-1:-1:-1;3222:256:0;;;;;:::i;:::-;;:::i;4105:430::-;;;;;;;;;;-1:-1:-1;4105:430:0;;;;;:::i;:::-;;:::i;29678:114::-;;;;;;;;;;;;;:::i;30413:184::-;;;;;;;;;;-1:-1:-1;30413:184:0;;;;;:::i;:::-;;:::i;3530:162::-;;;;;;;;;;-1:-1:-1;3530:162:0;;;;;:::i;:::-;;:::i;4846:301::-;;;;;;;;;;-1:-1:-1;4846:301:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4593:182::-;;;;;;;;;;-1:-1:-1;4593:182:0;;;;;:::i;:::-;;:::i;27152:67::-;;;;;;;;;;-1:-1:-1;27152:67:0;;;;-1:-1:-1;;;;;27152:67:0;;;27082:24;;;;;;;;;;;;;;;;1798:210;;;;;;;;;;-1:-1:-1;1798:210:0;;;;;:::i;:::-;;:::i;28776:196::-;;;;;;;;;;-1:-1:-1;28776:196:0;;;;;:::i;:::-;;:::i;27557:21::-;;;;;;;;;;;;;:::i;27491:27::-;;;;;;;;;;;;;:::i;1556:199::-;;;;;;;;;;-1:-1:-1;1556:199:0;;;;;:::i;:::-;;:::i;10946:20::-;;;;;;;;;;-1:-1:-1;10946:20:0;;;;-1:-1:-1;;;;;10946:20:0;;;26897:41;;;;;;;;;;;;26934:4;26897:41;;879:20;;;;;;;;;;;;;:::i;27827:556::-;;;;;;:::i;:::-;;:::i;30023:117::-;;;;;;;;;;-1:-1:-1;30023:117:0;;;;;:::i;:::-;;:::i;2824:142::-;;;;;;;;;;-1:-1:-1;2824:142:0;;;;;:::i;:::-;;:::i;27279:69::-;;;;;;;;;;-1:-1:-1;27279:69:0;;;;-1:-1:-1;;;;;27279:69:0;;;29366:92;;;;;;;;;;-1:-1:-1;29366:92:0;;;;;:::i;:::-;;:::i;3744:296::-;;;;;;;;;;-1:-1:-1;3744:296:0;;;;;:::i;:::-;;:::i;27628:27::-;;;;;;;;;;;;;:::i;28428:298::-;;;;;;;;;;-1:-1:-1;28428:298:0;;;;;:::i;:::-;;:::i;26980:41::-;;;;;;;;;;;;27020:1;26980:41;;30701:344;;;;;;;;;;-1:-1:-1;30701:344:0;;;;;:::i;:::-;;:::i;11279:178::-;;;;;;;;;;-1:-1:-1;11279:178:0;;;;;:::i;:::-;;:::i;30201:136::-;;;;;;;;;;-1:-1:-1;30201:136:0;;;;;:::i;:::-;;:::i;29854:105::-;;;;;;;;;;-1:-1:-1;29854:105:0;;;;;:::i;:::-;;:::i;29034:128::-;;;;;;;;;;-1:-1:-1;29034:128:0;;;;;:::i;:::-;;:::i;10094:305::-;10171:4;10198:26;-1:-1:-1;;;;;;10198:26:0;;;;:73;;-1:-1:-1;10245:26:0;-1:-1:-1;;;;;;10245:26:0;;;10198:73;:128;;;-1:-1:-1;10300:26:0;-1:-1:-1;;;;;;10300:26:0;;;10198:128;:185;;;-1:-1:-1;10357:26:0;-1:-1:-1;;;;;;10357:26:0;;;10198:185;10184:199;10094:305;-1:-1:-1;;10094:305:0:o;812:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2577:194::-;2645:7;2669:17;2677:8;2669:7;:17::i;:::-;2661:65;;;;-1:-1:-1;;;2661:65:0;;9495:2:1;2661:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;2661:65:0;;;;;;;;;-1:-1:-1;2740:25:0;;;;:15;:25;;;;;;-1:-1:-1;;;;;2740:25:0;;2577:194::o;29216:100::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29286:9:::1;:24:::0;29216:100::o;2174:356::-;2244:13;2260:17;2268:8;2260:7;:17::i;:::-;2244:33;;2299:5;-1:-1:-1;;;;;2292:12:0;:3;-1:-1:-1;;;;;2292:12:0;;;2284:58;;;;-1:-1:-1;;;2284:58:0;;10257:2:1;2284:58:0;;;10239:21:1;10296:2;10276:18;;;10269:30;10335:34;10315:18;;;10308:62;10406:3;10386:18;;;10379:31;10427:19;;2284:58:0;10055:397:1;2284:58:0;2367:10;-1:-1:-1;;;;;2367:19:0;;;;:59;;-1:-1:-1;;;;;;2390:24:0;;;;;;:17;:24;;;;;;;;2415:10;2390:36;;;;;;;;;;2367:59;2351:141;;;;-1:-1:-1;;;2351:141:0;;10659:2:1;2351:141:0;;;10641:21:1;10698:2;10678:18;;;10671:30;10737:34;10717:18;;;10710:62;10808:18;10788;;;10781:46;10844:19;;2351:141:0;10457:412:1;2351:141:0;2501:23;2510:3;2515:8;2501;:23::i;:::-;2237:293;2174:356;;:::o;29512:100::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29582:9:::1;:24:::0;;-1:-1:-1;;;;;;29582:24:0::1;-1:-1:-1::0;;;;;29582:24:0;;;::::1;::::0;;;::::1;::::0;;29512:100::o;3222:256::-;3340:40;3359:10;3371:8;3340:18;:40::i;:::-;3332:102;;;;-1:-1:-1;;;3332:102:0;;11076:2:1;3332:102:0;;;11058:21:1;11115:2;11095:18;;;11088:30;11154:34;11134:18;;;11127:62;11225:19;11205:18;;;11198:47;11262:19;;3332:102:0;10874:413:1;3332:102:0;3441:31;3451:5;3458:3;3463:8;3441:9;:31::i;4105:430::-;4189:15;4230:19;4240:8;4230:9;:19::i;:::-;4221:6;:28;4213:78;;;;-1:-1:-1;;;4213:78:0;;11494:2:1;4213:78:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;4213:78:0;11292:401:1;4213:78:0;4298:13;4323:9;4318:158;4338:7;:14;4334:18;;4318:158;;;4384:7;4392:1;4384:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;4372:22:0;;;4384:10;;4372:22;4368:101;;;4420:6;4411:5;:15;4407:52;;;4435:1;-1:-1:-1;4428:8:0;;-1:-1:-1;4428:8:0;4407:52;4452:7;;;;:::i;:::-;;;;4407:52;4354:3;;;:::i;:::-;;;4318:158;;;-1:-1:-1;4482:47:0;;-1:-1:-1;;;4482:47:0;;11494:2:1;4482:47:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;4482:47:0;11292:401:1;29678:114:0;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29766:20:::1;::::0;;29742:44;;::::1;-1:-1:-1::0;;;29766:20:0;;;::::1;;;29765:21;29742:44:::0;;::::1;;::::0;;29678:114::o;30413:184::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;30527:64:::1;::::0;;;;30558:4:::1;30527:64;::::0;::::1;12572:34:1::0;30565:10:0::1;12622:18:1::0;;;12615:43;12674:18;;;12667:34;;;12717:18;;;12710:34;;;12781:3;12760:19;;;12753:32;-1:-1:-1;12801:19:1;;;12794:30;-1:-1:-1;;;;;30527:22:0;::::1;::::0;::::1;::::0;12841:19:1;;30527:64:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30413:184:::0;;;:::o;3530:162::-;3644:42;3661:5;3668:3;3673:8;3644:42;;;;;;;;;;;;:16;:42::i;4846:301::-;4908:16;4933:15;4951:19;4961:8;4951:9;:19::i;:::-;4933:37;;4977:20;5014:7;5000:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5000:22:0;;4977:45;;5034:9;5029:96;5053:7;5049:1;:11;5029:96;;;5085:32;5105:8;5115:1;5085:19;:32::i;:::-;5076:3;5080:1;5076:6;;;;;;;;:::i;:::-;;;;;;;;;;:41;5062:3;;;;:::i;:::-;;;;5029:96;;;-1:-1:-1;5138:3:0;4846:301;-1:-1:-1;;;4846:301:0:o;4593:182::-;4693:7;:14;4660:7;;4684:23;;4676:73;;;;-1:-1:-1;;;4676:73:0;;11494:2:1;4676:73:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;-1:-1:-1;;;11623:18:1;;;11616:35;11668:19;;4676:73:0;11292:401:1;4676:73:0;-1:-1:-1;4763:6:0;4593:182::o;1798:210::-;1862:7;1886:17;1894:8;1886:7;:17::i;:::-;1878:65;;;;-1:-1:-1;;;1878:65:0;;9495:2:1;1878:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;1878:65:0;9293:399:1;1878:65:0;1950:13;1966:7;1974:8;1966:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1966:17:0;;1798:210;-1:-1:-1;;;1798:210:0:o;28776:196::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;28880:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;28907:32:0;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;28946:20:0::1;28953:13;;28946:20;:::i;:::-;28776:196:::0;;:::o;27557:21::-;;;;;;;:::i;27491:27::-;;;;;;;:::i;1556:199::-;1622:7;-1:-1:-1;;;;;1646:22:0;;1638:77;;;;-1:-1:-1;;;1638:77:0;;13073:2:1;1638:77:0;;;13055:21:1;13112:2;13092:18;;;13085:30;13151:34;13131:18;;;13124:62;13222:12;13202:18;;;13195:40;13252:19;;1638:77:0;12871:406:1;1638:77:0;-1:-1:-1;;;;;;1729:20:0;;;;;:10;:20;;;;;;;1556:199::o;879:20::-;;;;;;;:::i;27827:556::-;27898:11;;26934:4;27924:15;27933:6;27898:11;27924:15;:::i;:::-;:29;;27916:61;;;;-1:-1:-1;;;27916:61:0;;13617:2:1;27916:61:0;;;13599:21:1;13656:2;13636:18;;;13629:30;13695:21;13675:18;;;13668:49;13734:18;;27916:61:0;13415:343:1;27916:61:0;28002:5;;-1:-1:-1;;;;;28002:5:0;27988:10;:19;27984:317;;28026:9;;28039:1;28026:14;28018:50;;;;-1:-1:-1;;;28018:50:0;;13965:2:1;28018:50:0;;;13947:21:1;14004:2;13984:18;;;13977:30;14043:25;14023:18;;;14016:53;14086:18;;28018:50:0;13763:347:1;28018:50:0;28094:1;28085:6;:10;:37;;;;;27020:1;28099:6;:23;;28085:37;28077:70;;;;-1:-1:-1;;;28077:70:0;;14317:2:1;28077:70:0;;;14299:21:1;14356:2;14336:18;;;14329:30;14395:22;14375:18;;;14368:50;14435:18;;28077:70:0;14115:344:1;28077:70:0;28170:3;28160:6;:13;28156:137;;28183:9;:14;28175:47;;;;-1:-1:-1;;;28175:47:0;;14666:2:1;28175:47:0;;;14648:21:1;14705:2;14685:18;;;14678:30;14744:22;14724:18;;;14717:50;14784:18;;28175:47:0;14464:344:1;28175:47:0;28156:137;;;28244:9;28257:11;28244:24;28236:57;;;;-1:-1:-1;;;28236:57:0;;14666:2:1;28236:57:0;;;14648:21:1;14705:2;14685:18;;;14678:30;14744:22;14724:18;;;14717:50;14784:18;;28236:57:0;14464:344:1;28236:57:0;28314:9;28309:68;28333:6;28329:1;:10;28309:68;;;28346:31;28356:10;28368:8;;;;:::i;:::-;;;28346:9;:31::i;:::-;28341:3;;;;:::i;:::-;;;;28309:68;;30023:117;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;30101:33:::1;::::0;;;;30116:10:::1;30101:33;::::0;::::1;14987:74:1::0;15077:18;;;15070:34;;;-1:-1:-1;;;;;30101:14:0;::::1;::::0;::::1;::::0;14960:18:1;;30101:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2824:142::-:0;2908:52;2927:10;2939:9;2950;2908:18;:52::i;29366:92::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29432:7:::1;:20:::0;;-1:-1:-1;;;;;;29432:20:0::1;-1:-1:-1::0;;;;;29432:20:0;;;::::1;::::0;;;::::1;::::0;;29366:92::o;3744:296::-;3891:40;3910:10;3922:8;3891:18;:40::i;:::-;3883:102;;;;-1:-1:-1;;;3883:102:0;;11076:2:1;3883:102:0;;;11058:21:1;11115:2;11095:18;;;11088:30;11154:34;11134:18;;;11127:62;11225:19;11205:18;;;11198:47;11262:19;;3883:102:0;10874:413:1;3883:102:0;3992:42;4006:5;4013:3;4018:8;4028:5;3992:13;:42::i;:::-;3744:296;;;;:::o;27628:27::-;;;;;;;:::i;28428:298::-;28488:13;28518:11;28526:2;28518:7;:11::i;:::-;28510:67;;;;-1:-1:-1;;;28510:67:0;;15567:2:1;28510:67:0;;;15549:21:1;15606:2;15586:18;;;15579:30;15645:34;15625:18;;;15618:62;15716:13;15696:18;;;15689:41;15747:19;;28510:67:0;15365:407:1;28510:67:0;28620:1;28596:13;28590:27;;;;;:::i;:::-;;;:31;28586:57;;;28630:13;28623:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28428:298;;;:::o;28586:57::-;28681:7;28690:13;:2;:11;:13::i;:::-;28705;28664:55;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28650:70;;28428:298;;;:::o;30701:344::-;30808:20;;30790:4;;-1:-1:-1;;;30808:20:0;;;;30803:73;;-1:-1:-1;;;;;;3130:27:0;;;3110:4;3130:27;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;30830:46;;30803:73;30933:7;;30919:37;;;;;-1:-1:-1;;;;;1738:55:1;;;30919:37:0;;;1720:74:1;30933:7:0;;;;30919:30;;1693:18:1;;30919:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30899:58:0;:8;-1:-1:-1;;;;;30899:58:0;;:90;;;-1:-1:-1;30980:9:0;;-1:-1:-1;;;;;30968:21:0;;;30980:9;;30968:21;30899:90;:140;;;-1:-1:-1;;;;;;3130:27:0;;;3110:4;3130:27;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;31000:39;30885:154;30701:344;-1:-1:-1;;;30701:344:0:o;11279:178::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;11354:5:::1;::::0;-1:-1:-1;;;;;11354:15:0;;::::1;:5:::0;::::1;:15;;11346:72;;;::::0;-1:-1:-1;;;11346:72:0;;17886:2:1;11346:72:0::1;::::0;::::1;17868:21:1::0;17925:2;17905:18;;;17898:30;17964:34;17944:18;;;17937:62;18035:14;18015:18;;;18008:42;18067:19;;11346:72:0::1;17684:408:1::0;11346:72:0::1;11425:26;11444:6;11425:18;:26::i;:::-;11279:178:::0;:::o;30201:136::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;30278:53:::1;::::0;;;;30309:4:::1;30278:53;::::0;::::1;18360:34:1::0;30316:10:0::1;18410:18:1::0;;;18403:43;18462:18;;;18455:34;;;-1:-1:-1;;;;;30278:22:0;::::1;::::0;::::1;::::0;18272:18:1;;30278:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30201:136:::0;;:::o;29854:105::-;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29934:19:::1;::::0;-1:-1:-1;;;;;29934:11:0;::::1;::::0;:19;::::1;;;::::0;29946:6;;29934:19:::1;::::0;;;29946:6;29934:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;29034:128:::0;11103:5;;-1:-1:-1;;;;;11103:5:0;11089:10;:19;11081:61;;;;-1:-1:-1;;;11081:61:0;;9899:2:1;11081:61:0;;;9881:21:1;9938:2;9918:18;;;9911:30;-1:-1:-1;;;;;;;;;;;9957:18:1;;;9950:59;10026:18;;11081:61:0;9697:353:1;11081:61:0;29118:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;5651:152::-:0;5748:7;:14;5717:4;;5737:25;;:60;;;;;5795:1;-1:-1:-1;;;;;5766:31:0;:7;5774:8;5766:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;5766:17:0;:31;;5730:67;5651:152;-1:-1:-1;;5651:152:0:o;8377:164::-;8450:25;;;;:15;:25;;;;;:31;;-1:-1:-1;;;;;;8450:31:0;-1:-1:-1;;;;;8450:31:0;;;;;;;;8502:7;:17;;8450:25;;:31;8502:7;8450:25;;8502:17;;;;;;:::i;:::-;;;;;;;;;;8493:42;;-1:-1:-1;;;;;8502:17:0;;;;8493:42;;;8377:164;;:::o;5883:326::-;5978:4;5999:17;6007:8;5999:7;:17::i;:::-;5991:65;;;;-1:-1:-1;;;5991:65:0;;9495:2:1;5991:65:0;;;9477:21:1;9534:2;9514:18;;;9507:30;9573:34;9553:18;;;9546:62;-1:-1:-1;;;9624:18:1;;;9617:33;9667:19;;5991:65:0;9293:399:1;5991:65:0;6063:13;6079:7;6087:8;6079:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6079:17:0;;;;-1:-1:-1;6111:17:0;;;;;:54;;;6157:8;-1:-1:-1;;;;;6132:33:0;:21;6144:8;6132:11;:21::i;:::-;-1:-1:-1;;;;;6132:33:0;;6111:54;:91;;;;6169:33;6186:5;6193:8;6169:16;:33::i;:::-;6103:100;5883:326;-1:-1:-1;;;;5883:326:0:o;7782:535::-;7920:5;-1:-1:-1;;;;;7899:26:0;:7;7907:8;7899:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7899:17:0;:26;7891:80;;;;-1:-1:-1;;;7891:80:0;;18702:2:1;7891:80:0;;;18684:21:1;18741:2;18721:18;;;18714:30;18780:34;18760:18;;;18753:62;18851:11;18831:18;;;18824:39;18880:19;;7891:80:0;18500:405:1;7891:80:0;8079:30;8096:1;8100:8;8079;:30::i;:::-;8138:3;8118:7;8126:8;8118:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;:23;;-1:-1:-1;;;;;;8118:23:0;-1:-1:-1;;;;;8118:23:0;;;;;;8167:17;;;;;;:10;:17;;;;;;;:19;;-1:-1:-1;;8167:19:0;;;8195:15;;;;;;;;;:17;;-1:-1:-1;8195:17:0;;;8233:30;;8254:8;;8195:15;8233:30;;;2237:293;2174:356;;:::o;6280:108::-;6354:28;6364:3;6369:8;6354:28;;;;;;;;;;;;:9;:28::i;8622:305::-;8767:9;-1:-1:-1;;;;;8755:21:0;:8;-1:-1:-1;;;;;8755:21:0;;;8747:59;;;;-1:-1:-1;;;8747:59:0;;19112:2:1;8747:59:0;;;19094:21:1;19151:2;19131:18;;;19124:30;19190:27;19170:18;;;19163:55;19235:18;;8747:59:0;18910:349:1;8747:59:0;-1:-1:-1;;;;;8813:27:0;;;;;;;:17;:27;;;;;;;;:38;;;;;;;;;;;;;:50;;-1:-1:-1;;8813:50:0;;;;;;;;;;8875:46;;586:41:1;;;8875:46:0;;559:18:1;8875:46:0;;;;;;;8622:305;;;:::o;5362:233::-;5500:31;5510:5;5517:3;5522:8;5500:9;:31::i;:::-;5538:51;5561:5;5568:3;5573:8;5583:5;5538:22;:51::i;12079:723::-;12135:13;12356:10;12352:53;;-1:-1:-1;;12383:10:0;;;;;;;;;;;;;;;;;;12079:723::o;12352:53::-;12430:5;12415:12;12471:78;12478:9;;12471:78;;12504:8;;;;:::i;:::-;;-1:-1:-1;12527:10:0;;-1:-1:-1;12535:2:0;12527:10;;:::i;:::-;;;12471:78;;;12559:19;12591:6;12581:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12581:17:0;;12559:39;;12609:154;12616:10;;12609:154;;12643:11;12653:1;12643:11;;:::i;:::-;;-1:-1:-1;12712:10:0;12720:2;12712:5;:10;:::i;:::-;12699:24;;:2;:24;:::i;:::-;12686:39;;12669:6;12676;12669:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;12740:11:0;12749:2;12740:11;;:::i;:::-;;;12609:154;;11539:162;11599:16;11618:5;;-1:-1:-1;;;;;11630:14:0;;;-1:-1:-1;;;;;;11630:14:0;;;;;;11658:37;;11618:5;;;;;;;11658:37;;11599:16;11658:37;11592:109;11539:162;:::o;6570:203::-;6684:20;6690:3;6695:8;6684:5;:20::i;:::-;6711:56;6742:1;6746:3;6751:8;6761:5;9001:673;-1:-1:-1;;;;;9143:15:0;;;:19;9139:530;;9177:73;;-1:-1:-1;;;9177:73:0;;-1:-1:-1;;;;;9177:37:0;;;;;:73;;9215:10;;9227:5;;9234:8;;9244:5;;9177:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9177:73:0;;;;;;;;-1:-1:-1;;9177:73:0;;;;;;;;;;;;:::i;:::-;;;9173:489;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9435:13:0;;9431:222;;9468:68;;-1:-1:-1;;;9468:68:0;;20798:2:1;9468:68:0;;;20780:21:1;20837:2;20817:18;;;20810:30;20876:34;20856:18;;;20849:62;20947:28;20927:18;;;20920:56;20993:19;;9468:68:0;20596:422:1;9431:222:0;9621:6;9615:13;9606:6;9602:2;9598:15;9591:38;9173:489;-1:-1:-1;;;;;;;;;9296:22:0;;;9288:93;;;;-1:-1:-1;;;9288:93:0;;20798:2:1;9288:93:0;;;20780:21:1;20837:2;20817:18;;;20810:30;20876:34;20856:18;;;20849:62;20947:28;20927:18;;;20920:56;20993:19;;9288:93:0;20596:422:1;9288:93:0;9251:140;9001:673;;;;:::o;6838:389::-;6917:17;6925:8;6917:7;:17::i;:::-;6916:18;6908:59;;;;-1:-1:-1;;;6908:59:0;;21225:2:1;6908:59:0;;;21207:21:1;21264:2;21244:18;;;21237:30;21303;21283:18;;;21276:58;21351:18;;6908:59:0;21023:352:1;6908:59:0;7032:7;:17;;;;;;;-1:-1:-1;7032:17:0;;;;;;;-1:-1:-1;;;;;;7032:17:0;-1:-1:-1;;;;;7032:17:0;;;;;7056:11;:13;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7095:15:0;;;;;;:10;:15;;;;;;:17;;;;;;7133:35;7159:8;;7095:15;;7133:35;;7095:15;;7133:35;28776:196;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:177:1;-1:-1:-1;;;;;;92:5:1;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:1;868:16;;861:27;638:258::o;901:::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1141:2;1120:15;-1:-1:-1;;1116:29:1;1107:39;;;;1148:4;1103:50;;901:258;-1:-1:-1;;901:258:1:o;1164:220::-;1313:2;1302:9;1295:21;1276:4;1333:45;1374:2;1363:9;1359:18;1351:6;1333:45;:::i;1389:180::-;1448:6;1501:2;1489:9;1480:7;1476:23;1472:32;1469:52;;;1517:1;1514;1507:12;1469:52;-1:-1:-1;1540:23:1;;1389:180;-1:-1:-1;1389:180:1:o;1805:154::-;-1:-1:-1;;;;;1884:5:1;1880:54;1873:5;1870:65;1860:93;;1949:1;1946;1939:12;1964:315;2032:6;2040;2093:2;2081:9;2072:7;2068:23;2064:32;2061:52;;;2109:1;2106;2099:12;2061:52;2148:9;2135:23;2167:31;2192:5;2167:31;:::i;:::-;2217:5;2269:2;2254:18;;;;2241:32;;-1:-1:-1;;;1964:315:1:o;2466:247::-;2525:6;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;2718:456::-;2795:6;2803;2811;2864:2;2852:9;2843:7;2839:23;2835:32;2832:52;;;2880:1;2877;2870:12;2832:52;2919:9;2906:23;2938:31;2963:5;2938:31;:::i;:::-;2988:5;-1:-1:-1;3045:2:1;3030:18;;3017:32;3058:33;3017:32;3058:33;:::i;:::-;2718:456;;3110:7;;-1:-1:-1;;;3164:2:1;3149:18;;;;3136:32;;2718:456::o;3179:400::-;3273:6;3281;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;3397:9;3384:23;3416:31;3441:5;3416:31;:::i;:::-;3466:5;3518:2;3503:18;;3490:32;;-1:-1:-1;3569:2:1;3554:18;;;3541:32;;3179:400;-1:-1:-1;;;3179:400:1:o;3584:632::-;3755:2;3807:21;;;3877:13;;3780:18;;;3899:22;;;3726:4;;3755:2;3978:15;;;;3952:2;3937:18;;;3726:4;4021:169;4035:6;4032:1;4029:13;4021:169;;;4096:13;;4084:26;;4165:15;;;;4130:12;;;;4057:1;4050:9;4021:169;;;-1:-1:-1;4207:3:1;;3584:632;-1:-1:-1;;;;;;3584:632:1:o;4221:184::-;-1:-1:-1;;;4270:1:1;4263:88;4370:4;4367:1;4360:15;4394:4;4391:1;4384:15;4410:632;4475:5;4505:18;4546:2;4538:6;4535:14;4532:40;;;4552:18;;:::i;:::-;4627:2;4621:9;4595:2;4681:15;;-1:-1:-1;;4677:24:1;;;4703:2;4673:33;4669:42;4657:55;;;4727:18;;;4747:22;;;4724:46;4721:72;;;4773:18;;:::i;:::-;4813:10;4809:2;4802:22;4842:6;4833:15;;4872:6;4864;4857:22;4912:3;4903:6;4898:3;4894:16;4891:25;4888:45;;;4929:1;4926;4919:12;4888:45;4979:6;4974:3;4967:4;4959:6;4955:17;4942:44;5034:1;5027:4;5018:6;5010;5006:19;5002:30;4995:41;;;;4410:632;;;;;:::o;5047:222::-;5090:5;5143:3;5136:4;5128:6;5124:17;5120:27;5110:55;;5161:1;5158;5151:12;5110:55;5183:80;5259:3;5250:6;5237:20;5230:4;5222:6;5218:17;5183:80;:::i;5274:543::-;5362:6;5370;5423:2;5411:9;5402:7;5398:23;5394:32;5391:52;;;5439:1;5436;5429:12;5391:52;5479:9;5466:23;5508:18;5549:2;5541:6;5538:14;5535:34;;;5565:1;5562;5555:12;5535:34;5588:50;5630:7;5621:6;5610:9;5606:22;5588:50;:::i;:::-;5578:60;;5691:2;5680:9;5676:18;5663:32;5647:48;;5720:2;5710:8;5707:16;5704:36;;;5736:1;5733;5726:12;5704:36;;5759:52;5803:7;5792:8;5781:9;5777:24;5759:52;:::i;:::-;5749:62;;;5274:543;;;;;:::o;6157:118::-;6243:5;6236:13;6229:21;6222:5;6219:32;6209:60;;6265:1;6262;6255:12;6280:382;6345:6;6353;6406:2;6394:9;6385:7;6381:23;6377:32;6374:52;;;6422:1;6419;6412:12;6374:52;6461:9;6448:23;6480:31;6505:5;6480:31;:::i;:::-;6530:5;-1:-1:-1;6587:2:1;6572:18;;6559:32;6600:30;6559:32;6600:30;:::i;:::-;6649:7;6639:17;;;6280:382;;;;;:::o;6667:795::-;6762:6;6770;6778;6786;6839:3;6827:9;6818:7;6814:23;6810:33;6807:53;;;6856:1;6853;6846:12;6807:53;6895:9;6882:23;6914:31;6939:5;6914:31;:::i;:::-;6964:5;-1:-1:-1;7021:2:1;7006:18;;6993:32;7034:33;6993:32;7034:33;:::i;:::-;7086:7;-1:-1:-1;7140:2:1;7125:18;;7112:32;;-1:-1:-1;7195:2:1;7180:18;;7167:32;7222:18;7211:30;;7208:50;;;7254:1;7251;7244:12;7208:50;7277:22;;7330:4;7322:13;;7318:27;-1:-1:-1;7308:55:1;;7359:1;7356;7349:12;7308:55;7382:74;7448:7;7443:2;7430:16;7425:2;7421;7417:11;7382:74;:::i;:::-;7372:84;;;6667:795;;;;;;;:::o;7467:388::-;7535:6;7543;7596:2;7584:9;7575:7;7571:23;7567:32;7564:52;;;7612:1;7609;7602:12;7564:52;7651:9;7638:23;7670:31;7695:5;7670:31;:::i;:::-;7720:5;-1:-1:-1;7777:2:1;7762:18;;7749:32;7790:33;7749:32;7790:33;:::i;8524:322::-;8593:6;8646:2;8634:9;8625:7;8621:23;8617:32;8614:52;;;8662:1;8659;8652:12;8614:52;8702:9;8689:23;8735:18;8727:6;8724:30;8721:50;;;8767:1;8764;8757:12;8721:50;8790;8832:7;8823:6;8812:9;8808:22;8790:50;:::i;8851:437::-;8930:1;8926:12;;;;8973;;;8994:61;;9048:4;9040:6;9036:17;9026:27;;8994:61;9101:2;9093:6;9090:14;9070:18;9067:38;9064:218;;;-1:-1:-1;;;9135:1:1;9128:88;9239:4;9236:1;9229:15;9267:4;9264:1;9257:15;9064:218;;8851:437;;;:::o;11698:184::-;-1:-1:-1;;;11747:1:1;11740:88;11847:4;11844:1;11837:15;11871:4;11868:1;11861:15;11887:184;-1:-1:-1;;;11936:1:1;11929:88;12036:4;12033:1;12026:15;12060:4;12057:1;12050:15;12076:135;12115:3;-1:-1:-1;;12136:17:1;;12133:43;;;12156:18;;:::i;:::-;-1:-1:-1;12203:1:1;12192:13;;12076:135::o;13282:128::-;13322:3;13353:1;13349:6;13346:1;13343:13;13340:39;;;13359:18;;:::i;:::-;-1:-1:-1;13395:9:1;;13282:128::o;15115:245::-;15182:6;15235:2;15223:9;15214:7;15210:23;15206:32;15203:52;;;15251:1;15248;15241:12;15203:52;15283:9;15277:16;15302:28;15324:5;15302:28;:::i;15903:1030::-;15988:12;;15953:3;;16043:1;16063:18;;;;16116;;;;16143:61;;16197:4;16189:6;16185:17;16175:27;;16143:61;16223:2;16271;16263:6;16260:14;16240:18;16237:38;16234:218;;;-1:-1:-1;;;16305:1:1;16298:88;16409:4;16406:1;16399:15;16437:4;16434:1;16427:15;16234:218;16468:18;16495:104;;;;16613:1;16608:319;;;;16461:466;;16495:104;-1:-1:-1;;16528:24:1;;16516:37;;16573:16;;;;-1:-1:-1;16495:104:1;;16608:319;15850:1;15843:14;;;15887:4;15874:18;;16702:1;16716:165;16730:6;16727:1;16724:13;16716:165;;;16808:14;;16795:11;;;16788:35;16851:16;;;;16745:10;;16716:165;;;16720:3;;16910:6;16905:3;16901:16;16894:23;;16461:466;;;;;;;15903:1030;;;;:::o;16938:456::-;17159:3;17187:38;17221:3;17213:6;17187:38;:::i;:::-;17254:6;17248:13;17270:52;17315:6;17311:2;17304:4;17296:6;17292:17;17270:52;:::i;:::-;17338:50;17380:6;17376:2;17372:15;17364:6;17338:50;:::i;:::-;17331:57;16938:456;-1:-1:-1;;;;;;;16938:456:1:o;17399:280::-;17498:6;17551:2;17539:9;17530:7;17526:23;17522:32;17519:52;;;17567:1;17564;17557:12;17519:52;17599:9;17593:16;17618:31;17643:5;17618:31;:::i;19264:184::-;-1:-1:-1;;;19313:1:1;19306:88;19413:4;19410:1;19403:15;19437:4;19434:1;19427:15;19453:120;19493:1;19519;19509:35;;19524:18;;:::i;:::-;-1:-1:-1;19558:9:1;;19453:120::o;19578:125::-;19618:4;19646:1;19643;19640:8;19637:34;;;19651:18;;:::i;:::-;-1:-1:-1;19688:9:1;;19578:125::o;19708:112::-;19740:1;19766;19756:35;;19771:18;;:::i;:::-;-1:-1:-1;19805:9:1;;19708:112::o;19825:512::-;20019:4;-1:-1:-1;;;;;20129:2:1;20121:6;20117:15;20106:9;20099:34;20181:2;20173:6;20169:15;20164:2;20153:9;20149:18;20142:43;;20221:6;20216:2;20205:9;20201:18;20194:34;20264:3;20259:2;20248:9;20244:18;20237:31;20285:46;20326:3;20315:9;20311:19;20303:6;20285:46;:::i;:::-;20277:54;19825:512;-1:-1:-1;;;;;;19825:512:1:o;20342:249::-;20411:6;20464:2;20452:9;20443:7;20439:23;20435:32;20432:52;;;20480:1;20477;20470:12;20432:52;20512:9;20506:16;20531:30;20555:5;20531:30;:::i
Swarm Source
ipfs://5598a4ec4355912bb21e522b5431273ae3f76afb79a3c3e3ca13976288d13172
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.