ERC-1155
Overview
Max Total Supply
705 SCYRAX
Holders
223
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MetaScyraX
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Ownable.sol"; import "./ERC1155.sol"; import "./ERC1155Supply.sol"; contract MetaScyraX is ERC1155Supply, Ownable { // Contract name string public name; // Contract symbol string public symbol; constructor( string memory uri, string memory _symbol, string memory _name ) ERC1155( uri ) { name = _name; symbol = _symbol; } function mint(address _to, uint _tokenId, uint _qty) external onlyOwner { _mint(_to, _tokenId, _qty, ""); } function setUri(string memory _newUri) public onlyOwner { _setURI(_newUri); } function withdraw() external onlyOwner { _withdraw(msg.sender, address(this).balance); } function _withdraw(address addr, uint256 amount) private { (bool success, ) = addr.call{value: amount}(""); require(success, "TRANSFER_FAIL"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; import "./IERC1155.sol"; import "./IERC1155Receiver.sol"; import "./IERC1155MetadataURI.sol"; import "./Address.sol"; import "./Context.sol"; import "./ERC165.sol"; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } function uint2str(uint _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len; while (_i != 0) { k = k-1; uint8 temp = (48 + uint8(_i - _i / 10 * 10)); bytes1 b1 = bytes1(temp); bstr[k] = b1; _i /= 10; } return string(bstr); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256 id) public view virtual override returns (string memory) { return string(abi.encodePacked(_uri, uint2str(id))); } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `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 memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - 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[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * 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 _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.0; import "./ERC1155.sol"; /** * @dev Extension of ERC1155 that adds tracking of total supply per id. * * Useful for scenarios where Fungible and Non-fungible tokens have to be * clearly identified. Note: While a totalSupply of 1 might mean the * corresponding is an NFT, there is no guarantees that no other token with the * same id are not going to be minted. */ abstract contract ERC1155Supply is ERC1155 { mapping(uint256 => uint256) private _totalSupply; /** * @dev Total amount of tokens in with a given id. */ function totalSupply(uint256 id) public view virtual returns (uint256) { return _totalSupply[id]; } /** * @dev Indicates whether any token exist with a given id, or not. */ function exists(uint256 id) public view virtual returns (bool) { return ERC1155Supply.totalSupply(id) > 0; } /** * @dev See {ERC1155-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); if (from == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] += amounts[i]; } } if (to == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] -= amounts[i]; } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @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; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; import "./IERC1155.sol"; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newUri","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620021183803806200211883398101604081905262000034916200025f565b82620000408162000081565b506200004c336200009a565b805162000061906005906020840190620000ec565b50815162000077906006906020850190620000ec565b505050506200032d565b805162000096906002906020840190620000ec565b5050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000fa90620002f0565b90600052602060002090601f0160209004810192826200011e576000855562000169565b82601f106200013957805160ff191683800117855562000169565b8280016001018555821562000169579182015b82811115620001695782518255916020019190600101906200014c565b50620001779291506200017b565b5090565b5b808211156200017757600081556001016200017c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ba57600080fd5b81516001600160401b0380821115620001d757620001d762000192565b604051601f8301601f19908116603f0116810190828211818310171562000202576200020262000192565b816040528381526020925086838588010111156200021f57600080fd5b600091505b8382101562000243578582018301518183018401529082019062000224565b83821115620002555760008385830101525b9695505050505050565b6000806000606084860312156200027557600080fd5b83516001600160401b03808211156200028d57600080fd5b6200029b87838801620001a8565b94506020860151915080821115620002b257600080fd5b620002c087838801620001a8565b93506040860151915080821115620002d757600080fd5b50620002e686828701620001a8565b9150509250925092565b600181811c908216806200030557607f821691505b602082108114156200032757634e487b7160e01b600052602260045260246000fd5b50919050565b611ddb806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c8063715018a6116100a2578063a22cb46511610071578063a22cb4651461023b578063bd85b0391461024e578063e985e9c51461026e578063f242432a146102aa578063f2fde38b146102bd57600080fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b41146102205780639b642de11461022857600080fd5b8063156e29f6116100e9578063156e29f61461018b5780632eb2c2d6146101a05780633ccfd60b146101b35780634e1273f4146101bb5780634f558e79146101db57600080fd5b8062fdd58e1461011a57806301ffc9a71461014057806306fdde03146101635780630e89341c14610178575b600080fd5b61012d6101283660046113bc565b6102d0565b6040519081526020015b60405180910390f35b61015361014e3660046113fc565b610367565b6040519015158152602001610137565b61016b6103b9565b604051610137919061147c565b61016b61018636600461148f565b610447565b61019e6101993660046114a8565b61047b565b005b61019e6101ae366004611631565b6104c5565b61019e61055c565b6101ce6101c93660046116db565b610592565b60405161013791906117e1565b6101536101e936600461148f565b600090815260036020526040902054151590565b61019e6106bc565b6004546040516001600160a01b039091168152602001610137565b61016b6106f0565b61019e6102363660046117f4565b6106fd565b61019e610249366004611845565b610733565b61012d61025c36600461148f565b60009081526003602052604090205490565b61015361027c366004611881565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61019e6102b83660046118b4565b610742565b61019e6102cb366004611919565b6107c9565b60006001600160a01b0383166103415760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061039857506001600160e01b031982166303a24d0760e21b145b806103b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600580546103c690611934565b80601f01602080910402602001604051908101604052809291908181526020018280546103f290611934565b801561043f5780601f106104145761010080835404028352916020019161043f565b820191906000526020600020905b81548152906001019060200180831161042257829003601f168201915b505050505081565b6060600261045483610861565b60405160200161046592919061198b565b6040516020818303038152906040529050919050565b6004546001600160a01b031633146104a55760405162461bcd60e51b815260040161033890611a32565b6104c08383836040518060200160405280600081525061098a565b505050565b6001600160a01b0385163314806104e157506104e1853361027c565b6105485760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610338565b6105558585858585610a9a565b5050505050565b6004546001600160a01b031633146105865760405162461bcd60e51b815260040161033890611a32565b6105903347610c85565b565b606081518351146105f75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610338565b6000835167ffffffffffffffff811115610613576106136114db565b60405190808252806020026020018201604052801561063c578160200160208202803683370190505b50905060005b84518110156106b45761068785828151811061066057610660611a67565b602002602001015185838151811061067a5761067a611a67565b60200260200101516102d0565b82828151811061069957610699611a67565b60209081029190910101526106ad81611a93565b9050610642565b509392505050565b6004546001600160a01b031633146106e65760405162461bcd60e51b815260040161033890611a32565b6105906000610d18565b600680546103c690611934565b6004546001600160a01b031633146107275760405162461bcd60e51b815260040161033890611a32565b61073081610d6a565b50565b61073e338383610d7d565b5050565b6001600160a01b03851633148061075e575061075e853361027c565b6107bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610338565b6105558585858585610e5e565b6004546001600160a01b031633146107f35760405162461bcd60e51b815260040161033890611a32565b6001600160a01b0381166108585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b61073081610d18565b6060816108855750506040805180820190915260018152600360fc1b602082015290565b8160005b81156108af578061089981611a93565b91506108a89050600a83611aae565b9150610889565b60008167ffffffffffffffff8111156108ca576108ca6114db565b6040519080825280601f01601f1916602001820160405280156108f4576020820181803683370190505b509050815b85156109815761090a600182611ad0565b90506000610919600a88611aae565b61092490600a611ae7565b61092e9088611ad0565b610939906030611b06565b905060008160f81b90508084848151811061095657610956611a67565b60200101906001600160f81b031916908160001a905350610978600a89611aae565b975050506108f9565b50949350505050565b6001600160a01b0384166109ea5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b33610a0a816000876109fb88610f7b565b610a0488610f7b565b87610fc6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610a3a908490611b2b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610555816000878787876110d2565b8151835114610afc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610338565b6001600160a01b038416610b225760405162461bcd60e51b815260040161033890611b43565b33610b31818787878787610fc6565b60005b8451811015610c17576000858281518110610b5157610b51611a67565b602002602001015190506000858381518110610b6f57610b6f611a67565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610bbf5760405162461bcd60e51b815260040161033890611b88565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610bfc908490611b2b565b9250508190555050505080610c1090611a93565b9050610b34565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610c67929190611bd2565b60405180910390a4610c7d81878787878761123d565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b50509050806104c05760405162461bcd60e51b815260206004820152600d60248201526c1514905394d1915497d1905253609a1b6044820152606401610338565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805161073e906002906020840190611307565b816001600160a01b0316836001600160a01b03161415610df15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610338565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610e845760405162461bcd60e51b815260040161033890611b43565b33610e948187876109fb88610f7b565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610ed55760405162461bcd60e51b815260040161033890611b88565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290610f12908490611b2b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610f728288888888886110d2565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fb557610fb5611a67565b602090810291909101015292915050565b6001600160a01b03851661104d5760005b835181101561104b57828181518110610ff257610ff2611a67565b60200260200101516003600086848151811061101057611010611a67565b6020026020010151815260200190815260200160002060008282546110359190611b2b565b90915550611044905081611a93565b9050610fd7565b505b6001600160a01b038416610c7d5760005b8351811015610f725782818151811061107957611079611a67565b60200260200101516003600086848151811061109757611097611a67565b6020026020010151815260200190815260200160002060008282546110bc9190611ad0565b909155506110cb905081611a93565b905061105e565b6001600160a01b0384163b15610c7d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906111169089908990889088908890600401611bf7565b602060405180830381600087803b15801561113057600080fd5b505af1925050508015611160575060408051601f3d908101601f1916820190925261115d91810190611c3c565b60015b61120d5761116c611c59565b806308c379a014156111a65750611181611c75565b8061118c57506111a8565b8060405162461bcd60e51b8152600401610338919061147c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610338565b6001600160e01b0319811663f23a6e6160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b6001600160a01b0384163b15610c7d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906112819089908990889088908890600401611d47565b602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112cb575060408051601f3d908101601f191682019092526112c891810190611c3c565b60015b6112d75761116c611c59565b6001600160e01b0319811663bc197c8160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b82805461131390611934565b90600052602060002090601f016020900481019282611335576000855561137b565b82601f1061134e57805160ff191683800117855561137b565b8280016001018555821561137b579182015b8281111561137b578251825591602001919060010190611360565b5061138792915061138b565b5090565b5b80821115611387576000815560010161138c565b80356001600160a01b03811681146113b757600080fd5b919050565b600080604083850312156113cf57600080fd5b6113d8836113a0565b946020939093013593505050565b6001600160e01b03198116811461073057600080fd5b60006020828403121561140e57600080fd5b8135611419816113e6565b9392505050565b60005b8381101561143b578181015183820152602001611423565b8381111561144a576000848401525b50505050565b60008151808452611468816020860160208601611420565b601f01601f19169290920160200192915050565b6020815260006114196020830184611450565b6000602082840312156114a157600080fd5b5035919050565b6000806000606084860312156114bd57600080fd5b6114c6846113a0565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611517576115176114db565b6040525050565b600067ffffffffffffffff821115611538576115386114db565b5060051b60200190565b600082601f83011261155357600080fd5b813560206115608261151e565b60405161156d82826114f1565b83815260059390931b850182019282810191508684111561158d57600080fd5b8286015b848110156115a85780358352918301918301611591565b509695505050505050565b600067ffffffffffffffff8311156115cd576115cd6114db565b6040516115e4601f8501601f1916602001826114f1565b8091508381528484840111156115f957600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261162257600080fd5b611419838335602085016115b3565b600080600080600060a0868803121561164957600080fd5b611652866113a0565b9450611660602087016113a0565b9350604086013567ffffffffffffffff8082111561167d57600080fd5b61168989838a01611542565b9450606088013591508082111561169f57600080fd5b6116ab89838a01611542565b935060808801359150808211156116c157600080fd5b506116ce88828901611611565b9150509295509295909350565b600080604083850312156116ee57600080fd5b823567ffffffffffffffff8082111561170657600080fd5b818501915085601f83011261171a57600080fd5b813560206117278261151e565b60405161173482826114f1565b83815260059390931b850182019282810191508984111561175457600080fd5b948201945b838610156117795761176a866113a0565b82529482019490820190611759565b9650508601359250508082111561178f57600080fd5b5061179c85828601611542565b9150509250929050565b600081518084526020808501945080840160005b838110156117d6578151875295820195908201906001016117ba565b509495945050505050565b60208152600061141960208301846117a6565b60006020828403121561180657600080fd5b813567ffffffffffffffff81111561181d57600080fd5b8201601f8101841361182e57600080fd5b61183d848235602084016115b3565b949350505050565b6000806040838503121561185857600080fd5b611861836113a0565b91506020830135801515811461187657600080fd5b809150509250929050565b6000806040838503121561189457600080fd5b61189d836113a0565b91506118ab602084016113a0565b90509250929050565b600080600080600060a086880312156118cc57600080fd5b6118d5866113a0565b94506118e3602087016113a0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561190d57600080fd5b6116ce88828901611611565b60006020828403121561192b57600080fd5b611419826113a0565b600181811c9082168061194857607f821691505b6020821081141561196957634e487b7160e01b600052602260045260246000fd5b50919050565b60008151611981818560208601611420565b9290920192915050565b600080845481600182811c9150808316806119a757607f831692505b60208084108214156119c757634e487b7160e01b86526022600452602486fd5b8180156119db57600181146119ec57611a19565b60ff19861689528489019650611a19565b60008b81526020902060005b86811015611a115781548b8201529085019083016119f8565b505084890196505b505050505050611a29818561196f565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611aa757611aa7611a7d565b5060010190565b600082611acb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae257611ae2611a7d565b500390565b6000816000190483118215151615611b0157611b01611a7d565b500290565b600060ff821660ff84168060ff03821115611b2357611b23611a7d565b019392505050565b60008219821115611b3e57611b3e611a7d565b500190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000611be560408301856117a6565b8281036020840152611a2981856117a6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c3190830184611450565b979650505050505050565b600060208284031215611c4e57600080fd5b8151611419816113e6565b600060033d1115611c725760046000803e5060005160e01c5b90565b600060443d1015611c835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611cb357505050505090565b8285019150815181811115611ccb5750505050505090565b843d8701016020828501011115611ce55750505050505090565b611cf4602082860101876114f1565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090611d73908301866117a6565b8281036060840152611d8581866117a6565b90508281036080840152611d998185611450565b9897505050505050505056fea264697066735822122084571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f0000000000000000000000000000000000000000000000000000000000000000065343595241580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4d65746153637972612058000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101155760003560e01c8063715018a6116100a2578063a22cb46511610071578063a22cb4651461023b578063bd85b0391461024e578063e985e9c51461026e578063f242432a146102aa578063f2fde38b146102bd57600080fd5b8063715018a6146101fd5780638da5cb5b1461020557806395d89b41146102205780639b642de11461022857600080fd5b8063156e29f6116100e9578063156e29f61461018b5780632eb2c2d6146101a05780633ccfd60b146101b35780634e1273f4146101bb5780634f558e79146101db57600080fd5b8062fdd58e1461011a57806301ffc9a71461014057806306fdde03146101635780630e89341c14610178575b600080fd5b61012d6101283660046113bc565b6102d0565b6040519081526020015b60405180910390f35b61015361014e3660046113fc565b610367565b6040519015158152602001610137565b61016b6103b9565b604051610137919061147c565b61016b61018636600461148f565b610447565b61019e6101993660046114a8565b61047b565b005b61019e6101ae366004611631565b6104c5565b61019e61055c565b6101ce6101c93660046116db565b610592565b60405161013791906117e1565b6101536101e936600461148f565b600090815260036020526040902054151590565b61019e6106bc565b6004546040516001600160a01b039091168152602001610137565b61016b6106f0565b61019e6102363660046117f4565b6106fd565b61019e610249366004611845565b610733565b61012d61025c36600461148f565b60009081526003602052604090205490565b61015361027c366004611881565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61019e6102b83660046118b4565b610742565b61019e6102cb366004611919565b6107c9565b60006001600160a01b0383166103415760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061039857506001600160e01b031982166303a24d0760e21b145b806103b357506301ffc9a760e01b6001600160e01b03198316145b92915050565b600580546103c690611934565b80601f01602080910402602001604051908101604052809291908181526020018280546103f290611934565b801561043f5780601f106104145761010080835404028352916020019161043f565b820191906000526020600020905b81548152906001019060200180831161042257829003601f168201915b505050505081565b6060600261045483610861565b60405160200161046592919061198b565b6040516020818303038152906040529050919050565b6004546001600160a01b031633146104a55760405162461bcd60e51b815260040161033890611a32565b6104c08383836040518060200160405280600081525061098a565b505050565b6001600160a01b0385163314806104e157506104e1853361027c565b6105485760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610338565b6105558585858585610a9a565b5050505050565b6004546001600160a01b031633146105865760405162461bcd60e51b815260040161033890611a32565b6105903347610c85565b565b606081518351146105f75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610338565b6000835167ffffffffffffffff811115610613576106136114db565b60405190808252806020026020018201604052801561063c578160200160208202803683370190505b50905060005b84518110156106b45761068785828151811061066057610660611a67565b602002602001015185838151811061067a5761067a611a67565b60200260200101516102d0565b82828151811061069957610699611a67565b60209081029190910101526106ad81611a93565b9050610642565b509392505050565b6004546001600160a01b031633146106e65760405162461bcd60e51b815260040161033890611a32565b6105906000610d18565b600680546103c690611934565b6004546001600160a01b031633146107275760405162461bcd60e51b815260040161033890611a32565b61073081610d6a565b50565b61073e338383610d7d565b5050565b6001600160a01b03851633148061075e575061075e853361027c565b6107bc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610338565b6105558585858585610e5e565b6004546001600160a01b031633146107f35760405162461bcd60e51b815260040161033890611a32565b6001600160a01b0381166108585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b61073081610d18565b6060816108855750506040805180820190915260018152600360fc1b602082015290565b8160005b81156108af578061089981611a93565b91506108a89050600a83611aae565b9150610889565b60008167ffffffffffffffff8111156108ca576108ca6114db565b6040519080825280601f01601f1916602001820160405280156108f4576020820181803683370190505b509050815b85156109815761090a600182611ad0565b90506000610919600a88611aae565b61092490600a611ae7565b61092e9088611ad0565b610939906030611b06565b905060008160f81b90508084848151811061095657610956611a67565b60200101906001600160f81b031916908160001a905350610978600a89611aae565b975050506108f9565b50949350505050565b6001600160a01b0384166109ea5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610338565b33610a0a816000876109fb88610f7b565b610a0488610f7b565b87610fc6565b6000848152602081815260408083206001600160a01b038916845290915281208054859290610a3a908490611b2b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610555816000878787876110d2565b8151835114610afc5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610338565b6001600160a01b038416610b225760405162461bcd60e51b815260040161033890611b43565b33610b31818787878787610fc6565b60005b8451811015610c17576000858281518110610b5157610b51611a67565b602002602001015190506000858381518110610b6f57610b6f611a67565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610bbf5760405162461bcd60e51b815260040161033890611b88565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610bfc908490611b2b565b9250508190555050505080610c1090611a93565b9050610b34565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610c67929190611bd2565b60405180910390a4610c7d81878787878761123d565b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610cd2576040519150601f19603f3d011682016040523d82523d6000602084013e610cd7565b606091505b50509050806104c05760405162461bcd60e51b815260206004820152600d60248201526c1514905394d1915497d1905253609a1b6044820152606401610338565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b805161073e906002906020840190611307565b816001600160a01b0316836001600160a01b03161415610df15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610338565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416610e845760405162461bcd60e51b815260040161033890611b43565b33610e948187876109fb88610f7b565b6000848152602081815260408083206001600160a01b038a16845290915290205483811015610ed55760405162461bcd60e51b815260040161033890611b88565b6000858152602081815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290610f12908490611b2b565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610f728288888888886110d2565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fb557610fb5611a67565b602090810291909101015292915050565b6001600160a01b03851661104d5760005b835181101561104b57828181518110610ff257610ff2611a67565b60200260200101516003600086848151811061101057611010611a67565b6020026020010151815260200190815260200160002060008282546110359190611b2b565b90915550611044905081611a93565b9050610fd7565b505b6001600160a01b038416610c7d5760005b8351811015610f725782818151811061107957611079611a67565b60200260200101516003600086848151811061109757611097611a67565b6020026020010151815260200190815260200160002060008282546110bc9190611ad0565b909155506110cb905081611a93565b905061105e565b6001600160a01b0384163b15610c7d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906111169089908990889088908890600401611bf7565b602060405180830381600087803b15801561113057600080fd5b505af1925050508015611160575060408051601f3d908101601f1916820190925261115d91810190611c3c565b60015b61120d5761116c611c59565b806308c379a014156111a65750611181611c75565b8061118c57506111a8565b8060405162461bcd60e51b8152600401610338919061147c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610338565b6001600160e01b0319811663f23a6e6160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b6001600160a01b0384163b15610c7d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906112819089908990889088908890600401611d47565b602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112cb575060408051601f3d908101601f191682019092526112c891810190611c3c565b60015b6112d75761116c611c59565b6001600160e01b0319811663bc197c8160e01b14610f725760405162461bcd60e51b815260040161033890611cff565b82805461131390611934565b90600052602060002090601f016020900481019282611335576000855561137b565b82601f1061134e57805160ff191683800117855561137b565b8280016001018555821561137b579182015b8281111561137b578251825591602001919060010190611360565b5061138792915061138b565b5090565b5b80821115611387576000815560010161138c565b80356001600160a01b03811681146113b757600080fd5b919050565b600080604083850312156113cf57600080fd5b6113d8836113a0565b946020939093013593505050565b6001600160e01b03198116811461073057600080fd5b60006020828403121561140e57600080fd5b8135611419816113e6565b9392505050565b60005b8381101561143b578181015183820152602001611423565b8381111561144a576000848401525b50505050565b60008151808452611468816020860160208601611420565b601f01601f19169290920160200192915050565b6020815260006114196020830184611450565b6000602082840312156114a157600080fd5b5035919050565b6000806000606084860312156114bd57600080fd5b6114c6846113a0565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611517576115176114db565b6040525050565b600067ffffffffffffffff821115611538576115386114db565b5060051b60200190565b600082601f83011261155357600080fd5b813560206115608261151e565b60405161156d82826114f1565b83815260059390931b850182019282810191508684111561158d57600080fd5b8286015b848110156115a85780358352918301918301611591565b509695505050505050565b600067ffffffffffffffff8311156115cd576115cd6114db565b6040516115e4601f8501601f1916602001826114f1565b8091508381528484840111156115f957600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261162257600080fd5b611419838335602085016115b3565b600080600080600060a0868803121561164957600080fd5b611652866113a0565b9450611660602087016113a0565b9350604086013567ffffffffffffffff8082111561167d57600080fd5b61168989838a01611542565b9450606088013591508082111561169f57600080fd5b6116ab89838a01611542565b935060808801359150808211156116c157600080fd5b506116ce88828901611611565b9150509295509295909350565b600080604083850312156116ee57600080fd5b823567ffffffffffffffff8082111561170657600080fd5b818501915085601f83011261171a57600080fd5b813560206117278261151e565b60405161173482826114f1565b83815260059390931b850182019282810191508984111561175457600080fd5b948201945b838610156117795761176a866113a0565b82529482019490820190611759565b9650508601359250508082111561178f57600080fd5b5061179c85828601611542565b9150509250929050565b600081518084526020808501945080840160005b838110156117d6578151875295820195908201906001016117ba565b509495945050505050565b60208152600061141960208301846117a6565b60006020828403121561180657600080fd5b813567ffffffffffffffff81111561181d57600080fd5b8201601f8101841361182e57600080fd5b61183d848235602084016115b3565b949350505050565b6000806040838503121561185857600080fd5b611861836113a0565b91506020830135801515811461187657600080fd5b809150509250929050565b6000806040838503121561189457600080fd5b61189d836113a0565b91506118ab602084016113a0565b90509250929050565b600080600080600060a086880312156118cc57600080fd5b6118d5866113a0565b94506118e3602087016113a0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561190d57600080fd5b6116ce88828901611611565b60006020828403121561192b57600080fd5b611419826113a0565b600181811c9082168061194857607f821691505b6020821081141561196957634e487b7160e01b600052602260045260246000fd5b50919050565b60008151611981818560208601611420565b9290920192915050565b600080845481600182811c9150808316806119a757607f831692505b60208084108214156119c757634e487b7160e01b86526022600452602486fd5b8180156119db57600181146119ec57611a19565b60ff19861689528489019650611a19565b60008b81526020902060005b86811015611a115781548b8201529085019083016119f8565b505084890196505b505050505050611a29818561196f565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611aa757611aa7611a7d565b5060010190565b600082611acb57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae257611ae2611a7d565b500390565b6000816000190483118215151615611b0157611b01611a7d565b500290565b600060ff821660ff84168060ff03821115611b2357611b23611a7d565b019392505050565b60008219821115611b3e57611b3e611a7d565b500190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000611be560408301856117a6565b8281036020840152611a2981856117a6565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611c3190830184611450565b979650505050505050565b600060208284031215611c4e57600080fd5b8151611419816113e6565b600060033d1115611c725760046000803e5060005160e01c5b90565b600060443d1015611c835790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715611cb357505050505090565b8285019150815181811115611ccb5750505050505090565b843d8701016020828501011115611ce55750505050505090565b611cf4602082860101876114f1565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090611d73908301866117a6565b8281036060840152611d8581866117a6565b90508281036080840152611d998185611450565b9897505050505050505056fea264697066735822122084571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f0000000000000000000000000000000000000000000000000000000000000000065343595241580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4d65746153637972612058000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : uri (string): https://metascyra.com/api/1155/
Arg [1] : _symbol (string): SCYRAX
Arg [2] : _name (string): MetaScyra X
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [4] : 68747470733a2f2f6d65746173637972612e636f6d2f6170692f313135352f00
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 5343595241580000000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 4d65746153637972612058000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
145:868:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2808:231:2;;;;;;:::i;:::-;;:::i;:::-;;;597:25:11;;;585:2;570:18;2808:231:2;;;;;;;;1207:310;;;;;;:::i;:::-;;:::i;:::-;;;1184:14:11;;1177:22;1159:41;;1147:2;1132:18;1207:310:2;1019:187:11;223:18:10;;;:::i;:::-;;;;;;;:::i;2509:148:2:-;;;;;;:::i;:::-;;:::i;506:120:10:-;;;;;;:::i;:::-;;:::i;:::-;;4747:442:2;;;;;;:::i;:::-;;:::i;733:102:10:-;;;:::i;3205:524:2:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;913:122:3:-;;;;;;:::i;:::-;970:4;791:16;;;:12;:16;;;;;;-1:-1:-1;;;913:122:3;1714:103:9;;;:::i;1063:87::-;1136:6;;1063:87;;-1:-1:-1;;;;;1136:6:9;;;7510:51:11;;7498:2;7483:18;1063:87:9;7364:203:11;272:20:10;;;:::i;634:91::-;;;;;;:::i;:::-;;:::i;3802:155:2:-;;;;;;:::i;:::-;;:::i;702:113:3:-;;;;;;:::i;:::-;764:7;791:16;;;:12;:16;;;;;;;702:113;4029:168:2;;;;;;:::i;:::-;-1:-1:-1;;;;;4152:27:2;;;4128:4;4152:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4029:168;4269:401;;;;;;:::i;:::-;;:::i;1972:201:9:-;;;;;;:::i;:::-;;:::i;2808:231:2:-;2894:7;-1:-1:-1;;;;;2922:21:2;;2914:77;;;;-1:-1:-1;;;2914:77:2;;9648:2:11;2914:77:2;;;9630:21:11;9687:2;9667:18;;;9660:30;9726:34;9706:18;;;9699:62;-1:-1:-1;;;9777:18:11;;;9770:41;9828:19;;2914:77:2;;;;;;;;;-1:-1:-1;3009:9:2;:13;;;;;;;;;;;-1:-1:-1;;;;;3009:22:2;;;;;;;;;;;;2808:231::o;1207:310::-;1309:4;-1:-1:-1;;;;;;1346:41:2;;-1:-1:-1;;;1346:41:2;;:110;;-1:-1:-1;;;;;;;1404:52:2;;-1:-1:-1;;;1404:52:2;1346:110;:163;;;-1:-1:-1;;;;;;;;;;963:40:4;;;1473:36:2;1326:183;1207:310;-1:-1:-1;;1207:310:2:o;223:18:10:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2509:148:2:-;2572:13;2629:4;2635:12;2644:2;2635:8;:12::i;:::-;2612:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2598:51;;2509:148;;;:::o;506:120:10:-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;588:30:10::1;594:3;599:8;609:4;588:30;;;;;;;;;;;::::0;:5:::1;:30::i;:::-;506:120:::0;;;:::o;4747:442:2:-;-1:-1:-1;;;;;4980:20:2;;736:10:1;4980:20:2;;:60;;-1:-1:-1;5004:36:2;5021:4;736:10:1;4029:168:2;:::i;5004:36::-;4958:160;;;;-1:-1:-1;;;4958:160:2;;12301:2:11;4958:160:2;;;12283:21:11;12340:2;12320:18;;;12313:30;12379:34;12359:18;;;12352:62;-1:-1:-1;;;12430:18:11;;;12423:48;12488:19;;4958:160:2;12099:414:11;4958:160:2;5129:52;5152:4;5158:2;5162:3;5167:7;5176:4;5129:22;:52::i;:::-;4747:442;;;;;:::o;733:102:10:-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;783:44:10::1;793:10;805:21;783:9;:44::i;:::-;733:102::o:0;3205:524:2:-;3361:16;3422:3;:10;3403:8;:15;:29;3395:83;;;;-1:-1:-1;;;3395:83:2;;12720:2:11;3395:83:2;;;12702:21:11;12759:2;12739:18;;;12732:30;12798:34;12778:18;;;12771:62;-1:-1:-1;;;12849:18:11;;;12842:39;12898:19;;3395:83:2;12518:405:11;3395:83:2;3491:30;3538:8;:15;3524:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3524:30:2;;3491:63;;3572:9;3567:122;3591:8;:15;3587:1;:19;3567:122;;;3647:30;3657:8;3666:1;3657:11;;;;;;;;:::i;:::-;;;;;;;3670:3;3674:1;3670:6;;;;;;;;:::i;:::-;;;;;;;3647:9;:30::i;:::-;3628:13;3642:1;3628:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;3608:3;;;:::i;:::-;;;3567:122;;;-1:-1:-1;3708:13:2;3205:524;-1:-1:-1;;;3205:524:2:o;1714:103:9:-;1136:6;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;1779:30:::1;1806:1;1779:18;:30::i;272:20:10:-:0;;;;;;;:::i;634:91::-;1136:6:9;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;701:16:10::1;709:7;701;:16::i;:::-;634:91:::0;:::o;3802:155:2:-;3897:52;736:10:1;3930:8:2;3940;3897:18;:52::i;:::-;3802:155;;:::o;4269:401::-;-1:-1:-1;;;;;4477:20:2;;736:10:1;4477:20:2;;:60;;-1:-1:-1;4501:36:2;4518:4;736:10:1;4029:168:2;:::i;4501:36::-;4455:151;;;;-1:-1:-1;;;4455:151:2;;13534:2:11;4455:151:2;;;13516:21:11;13573:2;13553:18;;;13546:30;13612:34;13592:18;;;13585:62;-1:-1:-1;;;13663:18:11;;;13656:39;13712:19;;4455:151:2;13332:405:11;4455:151:2;4617:45;4635:4;4641:2;4645;4649:6;4657:4;4617:17;:45::i;1972:201:9:-;1136:6;;-1:-1:-1;;;;;1136:6:9;736:10:1;1283:23:9;1275:68;;;;-1:-1:-1;;;1275:68:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;2061:22:9;::::1;2053:73;;;::::0;-1:-1:-1;;;2053:73:9;;13944:2:11;2053:73:9::1;::::0;::::1;13926:21:11::0;13983:2;13963:18;;;13956:30;14022:34;14002:18;;;13995:62;-1:-1:-1;;;14073:18:11;;;14066:36;14119:19;;2053:73:9::1;13742:402:11::0;2053:73:9::1;2137:28;2156:8;2137:18;:28::i;1525:573:2:-:0;1575:27;1619:7;1615:50;;-1:-1:-1;;1643:10:2;;;;;;;;;;;;-1:-1:-1;;;1643:10:2;;;;;1525:573::o;1615:50::-;1684:2;1675:6;1716:69;1723:6;;1716:69;;1746:5;;;;:::i;:::-;;-1:-1:-1;1766:7:2;;-1:-1:-1;1771:2:2;1766:7;;:::i;:::-;;;1716:69;;;1795:17;1825:3;1815:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1815:14:2;-1:-1:-1;1795:34:2;-1:-1:-1;1849:3:2;1863:198;1870:7;;1863:198;;1898:3;1900:1;1898;:3;:::i;:::-;1894:7;-1:-1:-1;1916:10:2;1946:7;1951:2;1946;:7;:::i;:::-;:12;;1956:2;1946:12;:::i;:::-;1941:17;;:2;:17;:::i;:::-;1930:29;;:2;:29;:::i;:::-;1916:44;;1975:9;1994:4;1987:12;;1975:24;;2024:2;2014:4;2019:1;2014:7;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;2014:12:2;;;;;;;;-1:-1:-1;2041:8:2;2047:2;2041:8;;:::i;:::-;;;1879:182;;1863:198;;;-1:-1:-1;2085:4:2;1525:573;-1:-1:-1;;;;1525:573:2:o;9223:569::-;-1:-1:-1;;;;;9376:16:2;;9368:62;;;;-1:-1:-1;;;9368:62:2;;15085:2:11;9368:62:2;;;15067:21:11;15124:2;15104:18;;;15097:30;15163:34;15143:18;;;15136:62;-1:-1:-1;;;15214:18:11;;;15207:31;15255:19;;9368:62:2;14883:397:11;9368:62:2;736:10:1;9487:102:2;736:10:1;9443:16:2;9530:2;9534:21;9552:2;9534:17;:21::i;:::-;9557:25;9575:6;9557:17;:25::i;:::-;9584:4;9487:20;:102::i;:::-;9602:9;:13;;;;;;;;;;;-1:-1:-1;;;;;9602:17:2;;;;;;;;;:27;;9623:6;;9602:9;:27;;9623:6;;9602:27;:::i;:::-;;;;-1:-1:-1;;9645:52:2;;;15592:25:11;;;15648:2;15633:18;;15626:34;;;-1:-1:-1;;;;;9645:52:2;;;;9678:1;;9645:52;;;;;;15565:18:11;9645:52:2;;;;;;;9710:74;9741:8;9759:1;9763:2;9767;9771:6;9779:4;9710:30;:74::i;6831:1074::-;7058:7;:14;7044:3;:10;:28;7036:81;;;;-1:-1:-1;;;7036:81:2;;15873:2:11;7036:81:2;;;15855:21:11;15912:2;15892:18;;;15885:30;15951:34;15931:18;;;15924:62;-1:-1:-1;;;16002:18:11;;;15995:38;16050:19;;7036:81:2;15671:404:11;7036:81:2;-1:-1:-1;;;;;7136:16:2;;7128:66;;;;-1:-1:-1;;;7128:66:2;;;;;;;:::i;:::-;736:10:1;7251:60:2;736:10:1;7282:4:2;7288:2;7292:3;7297:7;7306:4;7251:20;:60::i;:::-;7329:9;7324:421;7348:3;:10;7344:1;:14;7324:421;;;7380:10;7393:3;7397:1;7393:6;;;;;;;;:::i;:::-;;;;;;;7380:19;;7414:14;7431:7;7439:1;7431:10;;;;;;;;:::i;:::-;;;;;;;;;;;;7458:19;7480:13;;;;;;;;;;-1:-1:-1;;;;;7480:19:2;;;;;;;;;;;;7431:10;;-1:-1:-1;7522:21:2;;;;7514:76;;;;-1:-1:-1;;;7514:76:2;;;;;;;:::i;:::-;7634:9;:13;;;;;;;;;;;-1:-1:-1;;;;;7634:19:2;;;;;;;;;;7656:20;;;7634:42;;7706:17;;;;;;;:27;;7656:20;;7634:9;7706:27;;7656:20;;7706:27;:::i;:::-;;;;;;;;7365:380;;;7360:3;;;;:::i;:::-;;;7324:421;;;;7792:2;-1:-1:-1;;;;;7762:47:2;7786:4;-1:-1:-1;;;;;7762:47:2;7776:8;-1:-1:-1;;;;;7762:47:2;;7796:3;7801:7;7762:47;;;;;;;:::i;:::-;;;;;;;;7822:75;7858:8;7868:4;7874:2;7878:3;7883:7;7892:4;7822:35;:75::i;:::-;7025:880;6831:1074;;;;;:::o;843:167:10:-;912:12;930:4;-1:-1:-1;;;;;930:9:10;947:6;930:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:47;;;977:7;969:33;;;;-1:-1:-1;;;969:33:10;;17779:2:11;969:33:10;;;17761:21:11;17818:2;17798:18;;;17791:30;-1:-1:-1;;;17837:18:11;;;17830:43;17890:18;;969:33:10;17577:337:11;2333:191:9;2426:6;;;-1:-1:-1;;;;;2443:17:9;;;-1:-1:-1;;;;;;2443:17:9;;;;;;;2476:40;;2426:6;;;2443:17;2426:6;;2476:40;;2407:16;;2476:40;2396:128;2333:191;:::o;8749:88:2:-;8816:13;;;;:4;;:13;;;;;:::i;13017:331::-;13172:8;-1:-1:-1;;;;;13163:17:2;:5;-1:-1:-1;;;;;13163:17:2;;;13155:71;;;;-1:-1:-1;;;13155:71:2;;18121:2:11;13155:71:2;;;18103:21:11;18160:2;18140:18;;;18133:30;18199:34;18179:18;;;18172:62;-1:-1:-1;;;18250:18:11;;;18243:39;18299:19;;13155:71:2;17919:405:11;13155:71:2;-1:-1:-1;;;;;13237:25:2;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13237:46:2;;;;;;;;;;13299:41;;1159::11;;;13299::2;;1132:18:11;13299:41:2;;;;;;;13017:331;;;:::o;5653:820::-;-1:-1:-1;;;;;5841:16:2;;5833:66;;;;-1:-1:-1;;;5833:66:2;;;;;;;:::i;:::-;736:10:1;5956:96:2;736:10:1;5987:4:2;5993:2;5997:21;6015:2;5997:17;:21::i;5956:96::-;6065:19;6087:13;;;;;;;;;;;-1:-1:-1;;;;;6087:19:2;;;;;;;;;;6125:21;;;;6117:76;;;;-1:-1:-1;;;6117:76:2;;;;;;;:::i;:::-;6229:9;:13;;;;;;;;;;;-1:-1:-1;;;;;6229:19:2;;;;;;;;;;6251:20;;;6229:42;;6293:17;;;;;;;:27;;6251:20;;6229:9;6293:27;;6251:20;;6293:27;:::i;:::-;;;;-1:-1:-1;;6338:46:2;;;15592:25:11;;;15648:2;15633:18;;15626:34;;;-1:-1:-1;;;;;6338:46:2;;;;;;;;;;;;;;15565:18:11;6338:46:2;;;;;;;6397:68;6428:8;6438:4;6444:2;6448;6452:6;6460:4;6397:30;:68::i;:::-;5822:651;;5653:820;;;;;:::o;16106:198::-;16226:16;;;16240:1;16226:16;;;;;;;;;16172;;16201:22;;16226:16;;;;;;;;;;;;-1:-1:-1;16226:16:2;16201:41;;16264:7;16253:5;16259:1;16253:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;16291:5;16106:198;-1:-1:-1;;16106:198:2:o;1110:655:3:-;-1:-1:-1;;;;;1432:18:3;;1428:160;;1472:9;1467:110;1491:3;:10;1487:1;:14;1467:110;;;1551:7;1559:1;1551:10;;;;;;;;:::i;:::-;;;;;;;1527:12;:20;1540:3;1544:1;1540:6;;;;;;;;:::i;:::-;;;;;;;1527:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1503:3:3;;-1:-1:-1;1503:3:3;;:::i;:::-;;;1467:110;;;;1428:160;-1:-1:-1;;;;;1604:16:3;;1600:158;;1642:9;1637:110;1661:3;:10;1657:1;:14;1637:110;;;1721:7;1729:1;1721:10;;;;;;;;:::i;:::-;;;;;;;1697:12;:20;1710:3;1714:1;1710:6;;;;;;;;:::i;:::-;;;;;;;1697:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;1673:3:3;;-1:-1:-1;1673:3:3;;:::i;:::-;;;1637:110;;14533:744:2;-1:-1:-1;;;;;14748:13:2;;1120:20:0;1168:8;14744:526:2;;14784:72;;-1:-1:-1;;;14784:72:2;;-1:-1:-1;;;;;14784:38:2;;;;;:72;;14823:8;;14833:4;;14839:2;;14843:6;;14851:4;;14784:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14784:72:2;;;;;;;;-1:-1:-1;;14784:72:2;;;;;;;;;;;;:::i;:::-;;;14780:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15132:6;15125:14;;-1:-1:-1;;;15125:14:2;;;;;;;;:::i;14780:479::-;;;15181:62;;-1:-1:-1;;;15181:62:2;;20222:2:11;15181:62:2;;;20204:21:11;20261:2;20241:18;;;20234:30;20300:34;20280:18;;;20273:62;-1:-1:-1;;;20351:18:11;;;20344:50;20411:19;;15181:62:2;20020:416:11;14780:479:2;-1:-1:-1;;;;;;14906:55:2;;-1:-1:-1;;;14906:55:2;14902:154;;14986:50;;-1:-1:-1;;;14986:50:2;;;;;;;:::i;15285:813::-;-1:-1:-1;;;;;15525:13:2;;1120:20:0;1168:8;15521:570:2;;15561:79;;-1:-1:-1;;;15561:79:2;;-1:-1:-1;;;;;15561:43:2;;;;;:79;;15605:8;;15615:4;;15621:3;;15626:7;;15635:4;;15561:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15561:79:2;;;;;;;;-1:-1:-1;;15561:79:2;;;;;;;;;;;;:::i;:::-;;;15557:523;;;;:::i;:::-;-1:-1:-1;;;;;;15722:60:2;;-1:-1:-1;;;15722:60:2;15718:159;;15807:50;;-1:-1:-1;;;15807:50:2;;;;;;;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:11;82:20;;-1:-1:-1;;;;;131:31:11;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:11:o;633:131::-;-1:-1:-1;;;;;;707:32:11;;697:43;;687:71;;754:1;751;744:12;769:245;827:6;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;935:9;922:23;954:30;978:5;954:30;:::i;:::-;1003:5;769:245;-1:-1:-1;;;769:245:11:o;1211:258::-;1283:1;1293:113;1307:6;1304:1;1301:13;1293:113;;;1383:11;;;1377:18;1364:11;;;1357:39;1329:2;1322:10;1293:113;;;1424:6;1421:1;1418:13;1415:48;;;1459:1;1450:6;1445:3;1441:16;1434:27;1415:48;;1211:258;;;:::o;1474:269::-;1527:3;1565:5;1559:12;1592:6;1587:3;1580:19;1608:63;1664:6;1657:4;1652:3;1648:14;1641:4;1634:5;1630:16;1608:63;:::i;:::-;1725:2;1704:15;-1:-1:-1;;1700:29:11;1691:39;;;;1732:4;1687:50;;1474:269;-1:-1:-1;;1474:269:11:o;1748:231::-;1897:2;1886:9;1879:21;1860:4;1917:56;1969:2;1958:9;1954:18;1946:6;1917:56;:::i;1984:180::-;2043:6;2096:2;2084:9;2075:7;2071:23;2067:32;2064:52;;;2112:1;2109;2102:12;2064:52;-1:-1:-1;2135:23:11;;1984:180;-1:-1:-1;1984:180:11:o;2169:322::-;2246:6;2254;2262;2315:2;2303:9;2294:7;2290:23;2286:32;2283:52;;;2331:1;2328;2321:12;2283:52;2354:29;2373:9;2354:29;:::i;:::-;2344:39;2430:2;2415:18;;2402:32;;-1:-1:-1;2481:2:11;2466:18;;;2453:32;;2169:322;-1:-1:-1;;;2169:322:11:o;2496:127::-;2557:10;2552:3;2548:20;2545:1;2538:31;2588:4;2585:1;2578:15;2612:4;2609:1;2602:15;2628:249;2738:2;2719:13;;-1:-1:-1;;2715:27:11;2703:40;;2773:18;2758:34;;2794:22;;;2755:62;2752:88;;;2820:18;;:::i;:::-;2856:2;2849:22;-1:-1:-1;;2628:249:11:o;2882:183::-;2942:4;2975:18;2967:6;2964:30;2961:56;;;2997:18;;:::i;:::-;-1:-1:-1;3042:1:11;3038:14;3054:4;3034:25;;2882:183::o;3070:724::-;3124:5;3177:3;3170:4;3162:6;3158:17;3154:27;3144:55;;3195:1;3192;3185:12;3144:55;3231:6;3218:20;3257:4;3280:43;3320:2;3280:43;:::i;:::-;3352:2;3346:9;3364:31;3392:2;3384:6;3364:31;:::i;:::-;3430:18;;;3522:1;3518:10;;;;3506:23;;3502:32;;;3464:15;;;;-1:-1:-1;3546:15:11;;;3543:35;;;3574:1;3571;3564:12;3543:35;3610:2;3602:6;3598:15;3622:142;3638:6;3633:3;3630:15;3622:142;;;3704:17;;3692:30;;3742:12;;;;3655;;3622:142;;;-1:-1:-1;3782:6:11;3070:724;-1:-1:-1;;;;;;3070:724:11:o;3799:468::-;3863:5;3897:18;3889:6;3886:30;3883:56;;;3919:18;;:::i;:::-;3968:2;3962:9;3980:69;4037:2;4016:15;;-1:-1:-1;;4012:29:11;4043:4;4008:40;3962:9;3980:69;:::i;:::-;4067:6;4058:15;;4097:6;4089;4082:22;4137:3;4128:6;4123:3;4119:16;4116:25;4113:45;;;4154:1;4151;4144:12;4113:45;4204:6;4199:3;4192:4;4184:6;4180:17;4167:44;4259:1;4252:4;4243:6;4235;4231:19;4227:30;4220:41;;3799:468;;;;;:::o;4272:220::-;4314:5;4367:3;4360:4;4352:6;4348:17;4344:27;4334:55;;4385:1;4382;4375:12;4334:55;4407:79;4482:3;4473:6;4460:20;4453:4;4445:6;4441:17;4407:79;:::i;4497:943::-;4651:6;4659;4667;4675;4683;4736:3;4724:9;4715:7;4711:23;4707:33;4704:53;;;4753:1;4750;4743:12;4704:53;4776:29;4795:9;4776:29;:::i;:::-;4766:39;;4824:38;4858:2;4847:9;4843:18;4824:38;:::i;:::-;4814:48;;4913:2;4902:9;4898:18;4885:32;4936:18;4977:2;4969:6;4966:14;4963:34;;;4993:1;4990;4983:12;4963:34;5016:61;5069:7;5060:6;5049:9;5045:22;5016:61;:::i;:::-;5006:71;;5130:2;5119:9;5115:18;5102:32;5086:48;;5159:2;5149:8;5146:16;5143:36;;;5175:1;5172;5165:12;5143:36;5198:63;5253:7;5242:8;5231:9;5227:24;5198:63;:::i;:::-;5188:73;;5314:3;5303:9;5299:19;5286:33;5270:49;;5344:2;5334:8;5331:16;5328:36;;;5360:1;5357;5350:12;5328:36;;5383:51;5426:7;5415:8;5404:9;5400:24;5383:51;:::i;:::-;5373:61;;;4497:943;;;;;;;;:::o;5445:1208::-;5563:6;5571;5624:2;5612:9;5603:7;5599:23;5595:32;5592:52;;;5640:1;5637;5630:12;5592:52;5680:9;5667:23;5709:18;5750:2;5742:6;5739:14;5736:34;;;5766:1;5763;5756:12;5736:34;5804:6;5793:9;5789:22;5779:32;;5849:7;5842:4;5838:2;5834:13;5830:27;5820:55;;5871:1;5868;5861:12;5820:55;5907:2;5894:16;5929:4;5952:43;5992:2;5952:43;:::i;:::-;6024:2;6018:9;6036:31;6064:2;6056:6;6036:31;:::i;:::-;6102:18;;;6190:1;6186:10;;;;6178:19;;6174:28;;;6136:15;;;;-1:-1:-1;6214:19:11;;;6211:39;;;6246:1;6243;6236:12;6211:39;6270:11;;;;6290:148;6306:6;6301:3;6298:15;6290:148;;;6372:23;6391:3;6372:23;:::i;:::-;6360:36;;6323:12;;;;6416;;;;6290:148;;;6457:6;-1:-1:-1;;6501:18:11;;6488:32;;-1:-1:-1;;6532:16:11;;;6529:36;;;6561:1;6558;6551:12;6529:36;;6584:63;6639:7;6628:8;6617:9;6613:24;6584:63;:::i;:::-;6574:73;;;5445:1208;;;;;:::o;6658:435::-;6711:3;6749:5;6743:12;6776:6;6771:3;6764:19;6802:4;6831:2;6826:3;6822:12;6815:19;;6868:2;6861:5;6857:14;6889:1;6899:169;6913:6;6910:1;6907:13;6899:169;;;6974:13;;6962:26;;7008:12;;;;7043:15;;;;6935:1;6928:9;6899:169;;;-1:-1:-1;7084:3:11;;6658:435;-1:-1:-1;;;;;6658:435:11:o;7098:261::-;7277:2;7266:9;7259:21;7240:4;7297:56;7349:2;7338:9;7334:18;7326:6;7297:56;:::i;7572:450::-;7641:6;7694:2;7682:9;7673:7;7669:23;7665:32;7662:52;;;7710:1;7707;7700:12;7662:52;7750:9;7737:23;7783:18;7775:6;7772:30;7769:50;;;7815:1;7812;7805:12;7769:50;7838:22;;7891:4;7883:13;;7879:27;-1:-1:-1;7869:55:11;;7920:1;7917;7910:12;7869:55;7943:73;8008:7;8003:2;7990:16;7985:2;7981;7977:11;7943:73;:::i;:::-;7933:83;7572:450;-1:-1:-1;;;;7572:450:11:o;8027:347::-;8092:6;8100;8153:2;8141:9;8132:7;8128:23;8124:32;8121:52;;;8169:1;8166;8159:12;8121:52;8192:29;8211:9;8192:29;:::i;:::-;8182:39;;8271:2;8260:9;8256:18;8243:32;8318:5;8311:13;8304:21;8297:5;8294:32;8284:60;;8340:1;8337;8330:12;8284:60;8363:5;8353:15;;;8027:347;;;;;:::o;8379:260::-;8447:6;8455;8508:2;8496:9;8487:7;8483:23;8479:32;8476:52;;;8524:1;8521;8514:12;8476:52;8547:29;8566:9;8547:29;:::i;:::-;8537:39;;8595:38;8629:2;8618:9;8614:18;8595:38;:::i;:::-;8585:48;;8379:260;;;;;:::o;8644:606::-;8748:6;8756;8764;8772;8780;8833:3;8821:9;8812:7;8808:23;8804:33;8801:53;;;8850:1;8847;8840:12;8801:53;8873:29;8892:9;8873:29;:::i;:::-;8863:39;;8921:38;8955:2;8944:9;8940:18;8921:38;:::i;:::-;8911:48;;9006:2;8995:9;8991:18;8978:32;8968:42;;9057:2;9046:9;9042:18;9029:32;9019:42;;9112:3;9101:9;9097:19;9084:33;9140:18;9132:6;9129:30;9126:50;;;9172:1;9169;9162:12;9126:50;9195:49;9236:7;9227:6;9216:9;9212:22;9195:49;:::i;9255:186::-;9314:6;9367:2;9355:9;9346:7;9342:23;9338:32;9335:52;;;9383:1;9380;9373:12;9335:52;9406:29;9425:9;9406:29;:::i;9858:380::-;9937:1;9933:12;;;;9980;;;10001:61;;10055:4;10047:6;10043:17;10033:27;;10001:61;10108:2;10100:6;10097:14;10077:18;10074:38;10071:161;;;10154:10;10149:3;10145:20;10142:1;10135:31;10189:4;10186:1;10179:15;10217:4;10214:1;10207:15;10071:161;;9858:380;;;:::o;10369:185::-;10411:3;10449:5;10443:12;10464:52;10509:6;10504:3;10497:4;10490:5;10486:16;10464:52;:::i;:::-;10532:16;;;;;10369:185;-1:-1:-1;;10369:185:11:o;10559:1174::-;10735:3;10764:1;10797:6;10791:13;10827:3;10849:1;10877:9;10873:2;10869:18;10859:28;;10937:2;10926:9;10922:18;10959;10949:61;;11003:4;10995:6;10991:17;10981:27;;10949:61;11029:2;11077;11069:6;11066:14;11046:18;11043:38;11040:165;;;-1:-1:-1;;;11104:33:11;;11160:4;11157:1;11150:15;11190:4;11111:3;11178:17;11040:165;11221:18;11248:104;;;;11366:1;11361:320;;;;11214:467;;11248:104;-1:-1:-1;;11281:24:11;;11269:37;;11326:16;;;;-1:-1:-1;11248:104:11;;11361:320;10316:1;10309:14;;;10353:4;10340:18;;11456:1;11470:165;11484:6;11481:1;11478:13;11470:165;;;11562:14;;11549:11;;;11542:35;11605:16;;;;11499:10;;11470:165;;;11474:3;;11664:6;11659:3;11655:16;11648:23;;11214:467;;;;;;;11697:30;11723:3;11715:6;11697:30;:::i;:::-;11690:37;10559:1174;-1:-1:-1;;;;;10559:1174:11:o;11738:356::-;11940:2;11922:21;;;11959:18;;;11952:30;12018:34;12013:2;11998:18;;11991:62;12085:2;12070:18;;11738:356::o;12928:127::-;12989:10;12984:3;12980:20;12977:1;12970:31;13020:4;13017:1;13010:15;13044:4;13041:1;13034:15;13060:127;13121:10;13116:3;13112:20;13109:1;13102:31;13152:4;13149:1;13142:15;13176:4;13173:1;13166:15;13192:135;13231:3;-1:-1:-1;;13252:17:11;;13249:43;;;13272:18;;:::i;:::-;-1:-1:-1;13319:1:11;13308:13;;13192:135::o;14149:217::-;14189:1;14215;14205:132;;14259:10;14254:3;14250:20;14247:1;14240:31;14294:4;14291:1;14284:15;14322:4;14319:1;14312:15;14205:132;-1:-1:-1;14351:9:11;;14149:217::o;14371:125::-;14411:4;14439:1;14436;14433:8;14430:34;;;14444:18;;:::i;:::-;-1:-1:-1;14481:9:11;;14371:125::o;14501:168::-;14541:7;14607:1;14603;14599:6;14595:14;14592:1;14589:21;14584:1;14577:9;14570:17;14566:45;14563:71;;;14614:18;;:::i;:::-;-1:-1:-1;14654:9:11;;14501:168::o;14674:204::-;14712:3;14748:4;14745:1;14741:12;14780:4;14777:1;14773:12;14815:3;14809:4;14805:14;14800:3;14797:23;14794:49;;;14823:18;;:::i;:::-;14859:13;;14674:204;-1:-1:-1;;;14674:204:11:o;15285:128::-;15325:3;15356:1;15352:6;15349:1;15346:13;15343:39;;;15362:18;;:::i;:::-;-1:-1:-1;15398:9:11;;15285:128::o;16080:401::-;16282:2;16264:21;;;16321:2;16301:18;;;16294:30;16360:34;16355:2;16340:18;;16333:62;-1:-1:-1;;;16426:2:11;16411:18;;16404:35;16471:3;16456:19;;16080:401::o;16486:406::-;16688:2;16670:21;;;16727:2;16707:18;;;16700:30;16766:34;16761:2;16746:18;;16739:62;-1:-1:-1;;;16832:2:11;16817:18;;16810:40;16882:3;16867:19;;16486:406::o;16897:465::-;17154:2;17143:9;17136:21;17117:4;17180:56;17232:2;17221:9;17217:18;17209:6;17180:56;:::i;:::-;17284:9;17276:6;17272:22;17267:2;17256:9;17252:18;17245:50;17312:44;17349:6;17341;17312:44;:::i;18329:572::-;-1:-1:-1;;;;;18626:15:11;;;18608:34;;18678:15;;18673:2;18658:18;;18651:43;18725:2;18710:18;;18703:34;;;18768:2;18753:18;;18746:34;;;18588:3;18811;18796:19;;18789:32;;;18551:4;;18838:57;;18875:19;;18867:6;18838:57;:::i;:::-;18830:65;18329:572;-1:-1:-1;;;;;;;18329:572:11:o;18906:249::-;18975:6;19028:2;19016:9;19007:7;19003:23;18999:32;18996:52;;;19044:1;19041;19034:12;18996:52;19076:9;19070:16;19095:30;19119:5;19095:30;:::i;19160:179::-;19195:3;19237:1;19219:16;19216:23;19213:120;;;19283:1;19280;19277;19262:23;-1:-1:-1;19320:1:11;19314:8;19309:3;19305:18;19213:120;19160:179;:::o;19344:671::-;19383:3;19425:4;19407:16;19404:26;19401:39;;;19344:671;:::o;19401:39::-;19467:2;19461:9;-1:-1:-1;;19532:16:11;19528:25;;19525:1;19461:9;19504:50;19583:4;19577:11;19607:16;19642:18;19713:2;19706:4;19698:6;19694:17;19691:25;19686:2;19678:6;19675:14;19672:45;19669:58;;;19720:5;;;;;19344:671;:::o;19669:58::-;19757:6;19751:4;19747:17;19736:28;;19793:3;19787:10;19820:2;19812:6;19809:14;19806:27;;;19826:5;;;;;;19344:671;:::o;19806:27::-;19910:2;19891:16;19885:4;19881:27;19877:36;19870:4;19861:6;19856:3;19852:16;19848:27;19845:69;19842:82;;;19917:5;;;;;;19344:671;:::o;19842:82::-;19933:57;19984:4;19975:6;19967;19963:19;19959:30;19953:4;19933:57;:::i;:::-;-1:-1:-1;20006:3:11;;19344:671;-1:-1:-1;;;;;19344:671:11:o;20441:404::-;20643:2;20625:21;;;20682:2;20662:18;;;20655:30;20721:34;20716:2;20701:18;;20694:62;-1:-1:-1;;;20787:2:11;20772:18;;20765:38;20835:3;20820:19;;20441:404::o;20850:838::-;-1:-1:-1;;;;;21247:15:11;;;21229:34;;21299:15;;21294:2;21279:18;;21272:43;21209:3;21346:2;21331:18;;21324:31;;;21172:4;;21378:57;;21415:19;;21407:6;21378:57;:::i;:::-;21483:9;21475:6;21471:22;21466:2;21455:9;21451:18;21444:50;21517:44;21554:6;21546;21517:44;:::i;:::-;21503:58;;21610:9;21602:6;21598:22;21592:3;21581:9;21577:19;21570:51;21638:44;21675:6;21667;21638:44;:::i;:::-;21630:52;20850:838;-1:-1:-1;;;;;;;;20850:838:11:o
Swarm Source
ipfs://84571e5ca6da02e64fd4ffa14f0f4a6ae2a7814c1ade32538033f31ca6933faa
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.