ERC-721
Overview
Max Total Supply
555 MEMLL
Holders
67
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 MEMLLLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GenerateNFTOnlineBase
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-19 */ /** Contract generated by Generate NFT Online https://generate-nft.online **/ // Sources flattened with hardhat v2.8.0 https://hardhat.org // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (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); } } } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/GenerateNFTOnline.sol pragma solidity ^0.8.4; // // https://generate-nft.online // contract GenerateNFTOnline is ERC721, Ownable { string internal baseUri; uint256 public cost = 0.05 ether; uint32 public maxPerMint = 5; uint32 public maxPerWallet = 20; uint32 public supply = 0; uint32 public totalSupply = 0; bool public open = false; mapping(address => uint256) internal addressMintedMap; uint32 private commission = 39; // 3.9% address private author = 0x0c9Aa7DEFD6ee081f18Af9Bed9Bd444ef8591148; constructor( string memory _uri, string memory _name, string memory _symbol, uint32 _totalSupply, uint256 _cost, bool _open ) ERC721(_name, _symbol) { baseUri = _uri; totalSupply = _totalSupply; cost = _cost; open = _open; } // ------ Author Only ------ function setCommission(uint32 _commision) public { require(msg.sender == author, "Incorrect Address"); commission = _commision; } // ------ Owner Only ------ function setCost(uint256 _cost) public onlyOwner { cost = _cost; } function setOpen(bool _open) public onlyOwner { open = _open; } function setMaxPerWallet(uint32 _max) public onlyOwner { maxPerWallet = _max; } function setMaxPerMint(uint32 _max) public onlyOwner { maxPerMint = _max; } function airdrop(address[] calldata to) public onlyOwner { for (uint32 i = 0; i < to.length; i++) { require(1 + supply <= totalSupply, "Limit reached"); _safeMint(to[i], ++supply, ""); } } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{ value: address(this).balance }(""); require(success); } // ------ Mint! ------ function mint(uint32 count) external payable preMintChecks(count) { require(open == true, "Mint not open"); performMint(count); } function performMint(uint32 count) internal { for (uint32 i = 0; i < count; i++) { _safeMint(msg.sender, ++supply, ""); } addressMintedMap[msg.sender] += count; (bool success, ) = payable(author).call{ value: (msg.value * commission) / 1000 }(""); require(success); } // ------ Read ------ // ------ Modifiers ------ modifier preMintChecks(uint32 count) { require(count > 0, "Mint at least one."); require(count < maxPerMint + 1, "Max mint reached."); require(msg.value >= cost * count, "Not enough fund."); require(supply + count < totalSupply + 1, "Mint sold out"); require( addressMintedMap[msg.sender] + count <= maxPerWallet, "Max total mint reached" ); _; } } // File contracts/extensions/Base.sol pragma solidity ^0.8.4; contract GenerateNFTOnlineBase is GenerateNFTOnline { constructor( string memory _uri, string memory _name, string memory _symbol, uint32 _totalSupply, uint256 _cost, bool _open ) GenerateNFTOnline(_uri, _name, _symbol, _totalSupply, _cost, _open) {} function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) { require(_tokenId <= supply, "Not minted yet"); return string( abi.encodePacked(baseUri, Strings.toString(_tokenId), ".json") ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_uri","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint32","name":"_totalSupply","type":"uint32"},{"internalType":"uint256","name":"_cost","type":"uint256"},{"internalType":"bool","name":"_open","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerMint","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_commision","type":"uint32"}],"name":"setCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setMaxPerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_max","type":"uint32"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"setOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","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":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405266b1a2bc2ec500006008556005600960006101000a81548163ffffffff021916908363ffffffff1602179055506014600960046101000a81548163ffffffff021916908363ffffffff1602179055506000600960086101000a81548163ffffffff021916908363ffffffff16021790555060006009600c6101000a81548163ffffffff021916908363ffffffff1602179055506000600960106101000a81548160ff0219169083151502179055506027600b60006101000a81548163ffffffff021916908363ffffffff160217905550730c9aa7defd6ee081f18af9bed9bd444ef8591148600b60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013657600080fd5b50604051620046563803806200465683398181016040528101906200015c91906200045a565b858585858585848481600090805190602001906200017c929190620002f3565b50806001908051906020019062000195929190620002f3565b505050620001b8620001ac6200022560201b60201c565b6200022d60201b60201c565b8560079080519060200190620001d0929190620002f3565b50826009600c6101000a81548163ffffffff021916908363ffffffff1602179055508160088190555080600960106101000a81548160ff0219169083151502179055505050505050505050505050506200071f565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200030190620005f6565b90600052602060002090601f01602090048101928262000325576000855562000371565b82601f106200034057805160ff191683800117855562000371565b8280016001018555821562000371579182015b828111156200037057825182559160200191906001019062000353565b5b50905062000380919062000384565b5090565b5b808211156200039f57600081600090555060010162000385565b5090565b6000620003ba620003b48462000564565b6200053b565b905082815260208101848484011115620003d357600080fd5b620003e0848285620005c0565b509392505050565b600081519050620003f981620006d1565b92915050565b600082601f8301126200041157600080fd5b815162000423848260208601620003a3565b91505092915050565b6000815190506200043d81620006eb565b92915050565b600081519050620004548162000705565b92915050565b60008060008060008060c087890312156200047457600080fd5b600087015167ffffffffffffffff8111156200048f57600080fd5b6200049d89828a01620003ff565b965050602087015167ffffffffffffffff811115620004bb57600080fd5b620004c989828a01620003ff565b955050604087015167ffffffffffffffff811115620004e757600080fd5b620004f589828a01620003ff565b94505060606200050889828a0162000443565b93505060806200051b89828a016200042c565b92505060a06200052e89828a01620003e8565b9150509295509295509295565b6000620005476200055a565b90506200055582826200062c565b919050565b6000604051905090565b600067ffffffffffffffff82111562000582576200058162000691565b5b6200058d82620006c0565b9050602081019050919050565b60008115159050919050565b6000819050919050565b600063ffffffff82169050919050565b60005b83811015620005e0578082015181840152602081019050620005c3565b83811115620005f0576000848401525b50505050565b600060028204905060018216806200060f57607f821691505b6020821081141562000626576200062562000662565b5b50919050565b6200063782620006c0565b810181811067ffffffffffffffff8211171562000659576200065862000691565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620006dc816200059a565b8114620006e857600080fd5b50565b620006f681620005a6565b81146200070257600080fd5b50565b6200071081620005b0565b81146200071c57600080fd5b50565b613f27806200072f6000396000f3fe6080604052600436106101cd5760003560e01c80636352211e116100f7578063a22cb46511610095578063e985e9c511610064578063e985e9c514610632578063f2fde38b1461066f578063f8048d8f14610698578063fcfff16f146106c1576101cd565b8063a22cb46514610587578063a71bbebe146105b0578063b88d4fde146105cc578063c87b56dd146105f5576101cd565b8063715018a6116100d1578063715018a6146104f1578063729ad39e146105085780638da5cb5b1461053157806395d89b411461055c576101cd565b80636352211e1461044e5780636fdca5e01461048b57806370a08231146104b4576101cd565b806318160ddd1161016f57806342842e0e1161013e57806342842e0e146103a657806344a0d68a146103cf578063453c2310146103f8578063507e094f14610423576101cd565b806318160ddd1461031f57806323b872dd1461034a5780633006b543146103735780633ccfd60b1461039c576101cd565b8063081812fc116101ab578063081812fc14610265578063092501a0146102a2578063095ea7b3146102cb57806313faede6146102f4576101cd565b806301ffc9a7146101d2578063047fc9aa1461020f57806306fdde031461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612a85565b6106ec565b60405161020691906130c0565b60405180910390f35b34801561021b57600080fd5b506102246107ce565b6040516102319190613418565b60405180910390f35b34801561024657600080fd5b5061024f6107e4565b60405161025c91906130db565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612ad7565b610876565b6040516102999190613059565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190612b00565b6108fb565b005b3480156102d757600080fd5b506102f260048036038101906102ed91906129db565b6109af565b005b34801561030057600080fd5b50610309610ac7565b60405161031691906133fd565b60405180910390f35b34801561032b57600080fd5b50610334610acd565b6040516103419190613418565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906128d5565b610ae3565b005b34801561037f57600080fd5b5061039a60048036038101906103959190612b00565b610b43565b005b6103a4610be3565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906128d5565b610cd8565b005b3480156103db57600080fd5b506103f660048036038101906103f19190612ad7565b610cf8565b005b34801561040457600080fd5b5061040d610d7e565b60405161041a9190613418565b60405180910390f35b34801561042f57600080fd5b50610438610d94565b6040516104459190613418565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190612ad7565b610daa565b6040516104829190613059565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612a5c565b610e5c565b005b3480156104c057600080fd5b506104db60048036038101906104d69190612870565b610ef5565b6040516104e891906133fd565b60405180910390f35b3480156104fd57600080fd5b50610506610fad565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612a17565b611035565b005b34801561053d57600080fd5b50610546611209565b6040516105539190613059565b60405180910390f35b34801561056857600080fd5b50610571611233565b60405161057e91906130db565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a9919061299f565b6112c5565b005b6105ca60048036038101906105c59190612b00565b6112db565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612924565b61157e565b005b34801561060157600080fd5b5061061c60048036038101906106179190612ad7565b6115e0565b60405161062991906130db565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612899565b61166f565b60405161066691906130c0565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612870565b611703565b005b3480156106a457600080fd5b506106bf60048036038101906106ba9190612b00565b6117fb565b005b3480156106cd57600080fd5b506106d661189b565b6040516106e391906130c0565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107b757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107c757506107c6826118ae565b5b9050919050565b600960089054906101000a900463ffffffff1681565b6060600080546107f390613701565b80601f016020809104026020016040519081016040528092919081815260200182805461081f90613701565b801561086c5780601f106108415761010080835404028352916020019161086c565b820191906000526020600020905b81548152906001019060200180831161084f57829003601f168201915b5050505050905090565b600061088182611918565b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061329d565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109829061337d565b60405180910390fd5b80600b60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60006109ba82610daa565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a229061331d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a4a611984565b73ffffffffffffffffffffffffffffffffffffffff161480610a795750610a7881610a73611984565b61166f565b5b610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf9061321d565b60405180910390fd5b610ac2838361198c565b505050565b60085481565b6009600c9054906101000a900463ffffffff1681565b610af4610aee611984565b82611a45565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a9061335d565b60405180910390fd5b610b3e838383611b23565b505050565b610b4b611984565b73ffffffffffffffffffffffffffffffffffffffff16610b69611209565b73ffffffffffffffffffffffffffffffffffffffff1614610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906132bd565b60405180910390fd5b80600960046101000a81548163ffffffff021916908363ffffffff16021790555050565b610beb611984565b73ffffffffffffffffffffffffffffffffffffffff16610c09611209565b73ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906132bd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610c8590613044565b60006040518083038185875af1925050503d8060008114610cc2576040519150601f19603f3d011682016040523d82523d6000602084013e610cc7565b606091505b5050905080610cd557600080fd5b50565b610cf38383836040518060200160405280600081525061157e565b505050565b610d00611984565b73ffffffffffffffffffffffffffffffffffffffff16610d1e611209565b73ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b906132bd565b60405180910390fd5b8060088190555050565b600960049054906101000a900463ffffffff1681565b600960009054906101000a900463ffffffff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a9061325d565b60405180910390fd5b80915050919050565b610e64611984565b73ffffffffffffffffffffffffffffffffffffffff16610e82611209565b73ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf906132bd565b60405180910390fd5b80600960106101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d9061323d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fb5611984565b73ffffffffffffffffffffffffffffffffffffffff16610fd3611209565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611020906132bd565b60405180910390fd5b6110336000611d7f565b565b61103d611984565b73ffffffffffffffffffffffffffffffffffffffff1661105b611209565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906132bd565b60405180910390fd5b60005b828290508163ffffffff161015611204576009600c9054906101000a900463ffffffff1663ffffffff16600960089054906101000a900463ffffffff1660016110fd9190613542565b63ffffffff161115611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906131dd565b60405180910390fd5b6111f183838363ffffffff16818110611186577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061119b9190612870565b6009600881819054906101000a900463ffffffff166111b9906137ad565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250611e45565b80806111fc906137ad565b9150506110b4565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461124290613701565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613701565b80156112bb5780601f10611290576101008083540402835291602001916112bb565b820191906000526020600020905b81548152906001019060200180831161129e57829003601f168201915b5050505050905090565b6112d76112d0611984565b8383611ea0565b5050565b8060008163ffffffff1611611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c906133dd565b60405180910390fd5b6001600960009054906101000a900463ffffffff166113449190613542565b63ffffffff168163ffffffff1610611391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611388906133bd565b60405180910390fd5b8063ffffffff166008546113a591906135ad565b3410156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061339d565b60405180910390fd5b60016009600c9054906101000a900463ffffffff166114069190613542565b63ffffffff1681600960089054906101000a900463ffffffff1661142a9190613542565b63ffffffff1610611470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611467906132fd565b60405180910390fd5b600960049054906101000a900463ffffffff1663ffffffff168163ffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114da91906134ec565b111561151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115129061317d565b60405180910390fd5b60011515600960109054906101000a900460ff16151514611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061333d565b60405180910390fd5b61157a8261200d565b5050565b61158f611589611984565b83611a45565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c59061335d565b60405180910390fd5b6115da848484846121ba565b50505050565b6060600960089054906101000a900463ffffffff1663ffffffff1682111561163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061311d565b60405180910390fd5b600761164883612216565b604051602001611659929190613015565b6040516020818303038152906040529050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61170b611984565b73ffffffffffffffffffffffffffffffffffffffff16611729611209565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611776906132bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e69061313d565b60405180910390fd5b6117f881611d7f565b50565b611803611984565b73ffffffffffffffffffffffffffffffffffffffff16611821611209565b73ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906132bd565b60405180910390fd5b80600960006101000a81548163ffffffff021916908363ffffffff16021790555050565b600960109054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119ff83610daa565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a5082611918565b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a86906131fd565b60405180910390fd5b6000611a9a83610daa565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0957508373ffffffffffffffffffffffffffffffffffffffff16611af184610876565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b1a5750611b19818561166f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4382610daa565b73ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906132dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061319d565b60405180910390fd5b611c148383836123c3565b611c1f60008261198c565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c6f9190613607565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc691906134ec565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e4f83836123c8565b611e5c6000848484612596565b611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e92906130fd565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f06906131bd565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161200091906130c0565b60405180910390a3505050565b60005b8163ffffffff168163ffffffff1610156120915761207e336009600881819054906101000a900463ffffffff16612046906137ad565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250611e45565b8080612089906137ad565b915050612010565b508063ffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120e791906134ec565b925050819055506000600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103e8600b60009054906101000a900463ffffffff1663ffffffff163461215091906135ad565b61215a919061357c565b60405161216690613044565b60006040518083038185875af1925050503d80600081146121a3576040519150601f19603f3d011682016040523d82523d6000602084013e6121a8565b606091505b50509050806121b657600080fd5b5050565b6121c5848484611b23565b6121d184848484612596565b612210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612207906130fd565b60405180910390fd5b50505050565b6060600082141561225e576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123be565b600082905060005b6000821461229057808061227990613764565b915050600a82612289919061357c565b9150612266565b60008167ffffffffffffffff8111156122d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156123045781602001600182028036833780820191505090505b5090505b600085146123b75760018261231d9190613607565b9150600a8561232c91906137da565b603061233891906134ec565b60f81b818381518110612374577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123b0919061357c565b9450612308565b8093505050505b919050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061327d565b60405180910390fd5b61244181611918565b15612481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124789061315d565b60405180910390fd5b61248d600083836123c3565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124dd91906134ec565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006125b78473ffffffffffffffffffffffffffffffffffffffff1661272d565b15612720578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125e0611984565b8786866040518563ffffffff1660e01b81526004016126029493929190613074565b602060405180830381600087803b15801561261c57600080fd5b505af192505050801561264d57506040513d601f19601f8201168201806040525081019061264a9190612aae565b60015b6126d0573d806000811461267d576040519150601f19603f3d011682016040523d82523d6000602084013e612682565b606091505b506000815114156126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf906130fd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612725565b600190505b949350505050565b600080823b905060008111915050919050565b600061275361274e84613458565b613433565b90508281526020810184848401111561276b57600080fd5b6127768482856136bf565b509392505050565b60008135905061278d81613e7e565b92915050565b60008083601f8401126127a557600080fd5b8235905067ffffffffffffffff8111156127be57600080fd5b6020830191508360208202830111156127d657600080fd5b9250929050565b6000813590506127ec81613e95565b92915050565b60008135905061280181613eac565b92915050565b60008151905061281681613eac565b92915050565b600082601f83011261282d57600080fd5b813561283d848260208601612740565b91505092915050565b60008135905061285581613ec3565b92915050565b60008135905061286a81613eda565b92915050565b60006020828403121561288257600080fd5b60006128908482850161277e565b91505092915050565b600080604083850312156128ac57600080fd5b60006128ba8582860161277e565b92505060206128cb8582860161277e565b9150509250929050565b6000806000606084860312156128ea57600080fd5b60006128f88682870161277e565b93505060206129098682870161277e565b925050604061291a86828701612846565b9150509250925092565b6000806000806080858703121561293a57600080fd5b60006129488782880161277e565b94505060206129598782880161277e565b935050604061296a87828801612846565b925050606085013567ffffffffffffffff81111561298757600080fd5b6129938782880161281c565b91505092959194509250565b600080604083850312156129b257600080fd5b60006129c08582860161277e565b92505060206129d1858286016127dd565b9150509250929050565b600080604083850312156129ee57600080fd5b60006129fc8582860161277e565b9250506020612a0d85828601612846565b9150509250929050565b60008060208385031215612a2a57600080fd5b600083013567ffffffffffffffff811115612a4457600080fd5b612a5085828601612793565b92509250509250929050565b600060208284031215612a6e57600080fd5b6000612a7c848285016127dd565b91505092915050565b600060208284031215612a9757600080fd5b6000612aa5848285016127f2565b91505092915050565b600060208284031215612ac057600080fd5b6000612ace84828501612807565b91505092915050565b600060208284031215612ae957600080fd5b6000612af784828501612846565b91505092915050565b600060208284031215612b1257600080fd5b6000612b208482850161285b565b91505092915050565b612b328161363b565b82525050565b612b418161364d565b82525050565b6000612b528261349e565b612b5c81856134b4565b9350612b6c8185602086016136ce565b612b75816138c7565b840191505092915050565b6000612b8b826134a9565b612b9581856134d0565b9350612ba58185602086016136ce565b612bae816138c7565b840191505092915050565b6000612bc4826134a9565b612bce81856134e1565b9350612bde8185602086016136ce565b80840191505092915050565b60008154612bf781613701565b612c0181866134e1565b94506001821660008114612c1c5760018114612c2d57612c60565b60ff19831686528186019350612c60565b612c3685613489565b60005b83811015612c5857815481890152600182019150602081019050612c39565b838801955050505b50505092915050565b6000612c766032836134d0565b9150612c81826138d8565b604082019050919050565b6000612c99600e836134d0565b9150612ca482613927565b602082019050919050565b6000612cbc6026836134d0565b9150612cc782613950565b604082019050919050565b6000612cdf601c836134d0565b9150612cea8261399f565b602082019050919050565b6000612d026016836134d0565b9150612d0d826139c8565b602082019050919050565b6000612d256024836134d0565b9150612d30826139f1565b604082019050919050565b6000612d486019836134d0565b9150612d5382613a40565b602082019050919050565b6000612d6b600d836134d0565b9150612d7682613a69565b602082019050919050565b6000612d8e602c836134d0565b9150612d9982613a92565b604082019050919050565b6000612db16038836134d0565b9150612dbc82613ae1565b604082019050919050565b6000612dd4602a836134d0565b9150612ddf82613b30565b604082019050919050565b6000612df76029836134d0565b9150612e0282613b7f565b604082019050919050565b6000612e1a6020836134d0565b9150612e2582613bce565b602082019050919050565b6000612e3d602c836134d0565b9150612e4882613bf7565b604082019050919050565b6000612e606005836134e1565b9150612e6b82613c46565b600582019050919050565b6000612e836020836134d0565b9150612e8e82613c6f565b602082019050919050565b6000612ea66029836134d0565b9150612eb182613c98565b604082019050919050565b6000612ec9600d836134d0565b9150612ed482613ce7565b602082019050919050565b6000612eec6021836134d0565b9150612ef782613d10565b604082019050919050565b6000612f0f600d836134d0565b9150612f1a82613d5f565b602082019050919050565b6000612f326000836134c5565b9150612f3d82613d88565b600082019050919050565b6000612f556031836134d0565b9150612f6082613d8b565b604082019050919050565b6000612f786011836134d0565b9150612f8382613dda565b602082019050919050565b6000612f9b6010836134d0565b9150612fa682613e03565b602082019050919050565b6000612fbe6011836134d0565b9150612fc982613e2c565b602082019050919050565b6000612fe16012836134d0565b9150612fec82613e55565b602082019050919050565b613000816136a5565b82525050565b61300f816136af565b82525050565b60006130218285612bea565b915061302d8284612bb9565b915061303882612e53565b91508190509392505050565b600061304f82612f25565b9150819050919050565b600060208201905061306e6000830184612b29565b92915050565b60006080820190506130896000830187612b29565b6130966020830186612b29565b6130a36040830185612ff7565b81810360608301526130b58184612b47565b905095945050505050565b60006020820190506130d56000830184612b38565b92915050565b600060208201905081810360008301526130f58184612b80565b905092915050565b6000602082019050818103600083015261311681612c69565b9050919050565b6000602082019050818103600083015261313681612c8c565b9050919050565b6000602082019050818103600083015261315681612caf565b9050919050565b6000602082019050818103600083015261317681612cd2565b9050919050565b6000602082019050818103600083015261319681612cf5565b9050919050565b600060208201905081810360008301526131b681612d18565b9050919050565b600060208201905081810360008301526131d681612d3b565b9050919050565b600060208201905081810360008301526131f681612d5e565b9050919050565b6000602082019050818103600083015261321681612d81565b9050919050565b6000602082019050818103600083015261323681612da4565b9050919050565b6000602082019050818103600083015261325681612dc7565b9050919050565b6000602082019050818103600083015261327681612dea565b9050919050565b6000602082019050818103600083015261329681612e0d565b9050919050565b600060208201905081810360008301526132b681612e30565b9050919050565b600060208201905081810360008301526132d681612e76565b9050919050565b600060208201905081810360008301526132f681612e99565b9050919050565b6000602082019050818103600083015261331681612ebc565b9050919050565b6000602082019050818103600083015261333681612edf565b9050919050565b6000602082019050818103600083015261335681612f02565b9050919050565b6000602082019050818103600083015261337681612f48565b9050919050565b6000602082019050818103600083015261339681612f6b565b9050919050565b600060208201905081810360008301526133b681612f8e565b9050919050565b600060208201905081810360008301526133d681612fb1565b9050919050565b600060208201905081810360008301526133f681612fd4565b9050919050565b60006020820190506134126000830184612ff7565b92915050565b600060208201905061342d6000830184613006565b92915050565b600061343d61344e565b90506134498282613733565b919050565b6000604051905090565b600067ffffffffffffffff82111561347357613472613898565b5b61347c826138c7565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006134f7826136a5565b9150613502836136a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135375761353661380b565b5b828201905092915050565b600061354d826136af565b9150613558836136af565b92508263ffffffff038211156135715761357061380b565b5b828201905092915050565b6000613587826136a5565b9150613592836136a5565b9250826135a2576135a161383a565b5b828204905092915050565b60006135b8826136a5565b91506135c3836136a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135fc576135fb61380b565b5b828202905092915050565b6000613612826136a5565b915061361d836136a5565b9250828210156136305761362f61380b565b5b828203905092915050565b600061364682613685565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156136ec5780820151818401526020810190506136d1565b838111156136fb576000848401525b50505050565b6000600282049050600182168061371957607f821691505b6020821081141561372d5761372c613869565b5b50919050565b61373c826138c7565b810181811067ffffffffffffffff8211171561375b5761375a613898565b5b80604052505050565b600061376f826136a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137a2576137a161380b565b5b600182019050919050565b60006137b8826136af565b915063ffffffff8214156137cf576137ce61380b565b5b600182019050919050565b60006137e5826136a5565b91506137f0836136a5565b925082613800576137ff61383a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f74206d696e74656420796574000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4d617820746f74616c206d696e74207265616368656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4c696d6974207265616368656400000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4d696e7420736f6c64206f757400000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206e6f74206f70656e00000000000000000000000000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f496e636f72726563742041646472657373000000000000000000000000000000600082015250565b7f4e6f7420656e6f7567682066756e642e00000000000000000000000000000000600082015250565b7f4d6178206d696e7420726561636865642e000000000000000000000000000000600082015250565b7f4d696e74206174206c65617374206f6e652e0000000000000000000000000000600082015250565b613e878161363b565b8114613e9257600080fd5b50565b613e9e8161364d565b8114613ea957600080fd5b50565b613eb581613659565b8114613ec057600080fd5b50565b613ecc816136a5565b8114613ed757600080fd5b50565b613ee3816136af565b8114613eee57600080fd5b5056fea264697066735822122076c27c69957c811a33dabcc2d1e0c86ffe1b962abd8326cb351dcf1f4081a30d64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022b0000000000000000000000000000000000000000000000000058d15e1762800000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696469736f70626d326470626f657836697134676d6636327a666169346a61696f376379646f753732726c657a75636572697562612f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e4d657461456c664d616e6961204c75636b79204c65707265636861756e73000000000000000000000000000000000000000000000000000000000000000000054d454d4c4c000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101cd5760003560e01c80636352211e116100f7578063a22cb46511610095578063e985e9c511610064578063e985e9c514610632578063f2fde38b1461066f578063f8048d8f14610698578063fcfff16f146106c1576101cd565b8063a22cb46514610587578063a71bbebe146105b0578063b88d4fde146105cc578063c87b56dd146105f5576101cd565b8063715018a6116100d1578063715018a6146104f1578063729ad39e146105085780638da5cb5b1461053157806395d89b411461055c576101cd565b80636352211e1461044e5780636fdca5e01461048b57806370a08231146104b4576101cd565b806318160ddd1161016f57806342842e0e1161013e57806342842e0e146103a657806344a0d68a146103cf578063453c2310146103f8578063507e094f14610423576101cd565b806318160ddd1461031f57806323b872dd1461034a5780633006b543146103735780633ccfd60b1461039c576101cd565b8063081812fc116101ab578063081812fc14610265578063092501a0146102a2578063095ea7b3146102cb57806313faede6146102f4576101cd565b806301ffc9a7146101d2578063047fc9aa1461020f57806306fdde031461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612a85565b6106ec565b60405161020691906130c0565b60405180910390f35b34801561021b57600080fd5b506102246107ce565b6040516102319190613418565b60405180910390f35b34801561024657600080fd5b5061024f6107e4565b60405161025c91906130db565b60405180910390f35b34801561027157600080fd5b5061028c60048036038101906102879190612ad7565b610876565b6040516102999190613059565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c49190612b00565b6108fb565b005b3480156102d757600080fd5b506102f260048036038101906102ed91906129db565b6109af565b005b34801561030057600080fd5b50610309610ac7565b60405161031691906133fd565b60405180910390f35b34801561032b57600080fd5b50610334610acd565b6040516103419190613418565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906128d5565b610ae3565b005b34801561037f57600080fd5b5061039a60048036038101906103959190612b00565b610b43565b005b6103a4610be3565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906128d5565b610cd8565b005b3480156103db57600080fd5b506103f660048036038101906103f19190612ad7565b610cf8565b005b34801561040457600080fd5b5061040d610d7e565b60405161041a9190613418565b60405180910390f35b34801561042f57600080fd5b50610438610d94565b6040516104459190613418565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190612ad7565b610daa565b6040516104829190613059565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612a5c565b610e5c565b005b3480156104c057600080fd5b506104db60048036038101906104d69190612870565b610ef5565b6040516104e891906133fd565b60405180910390f35b3480156104fd57600080fd5b50610506610fad565b005b34801561051457600080fd5b5061052f600480360381019061052a9190612a17565b611035565b005b34801561053d57600080fd5b50610546611209565b6040516105539190613059565b60405180910390f35b34801561056857600080fd5b50610571611233565b60405161057e91906130db565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a9919061299f565b6112c5565b005b6105ca60048036038101906105c59190612b00565b6112db565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612924565b61157e565b005b34801561060157600080fd5b5061061c60048036038101906106179190612ad7565b6115e0565b60405161062991906130db565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612899565b61166f565b60405161066691906130c0565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612870565b611703565b005b3480156106a457600080fd5b506106bf60048036038101906106ba9190612b00565b6117fb565b005b3480156106cd57600080fd5b506106d661189b565b6040516106e391906130c0565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107b757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107c757506107c6826118ae565b5b9050919050565b600960089054906101000a900463ffffffff1681565b6060600080546107f390613701565b80601f016020809104026020016040519081016040528092919081815260200182805461081f90613701565b801561086c5780601f106108415761010080835404028352916020019161086c565b820191906000526020600020905b81548152906001019060200180831161084f57829003601f168201915b5050505050905090565b600061088182611918565b6108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061329d565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109829061337d565b60405180910390fd5b80600b60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60006109ba82610daa565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a229061331d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a4a611984565b73ffffffffffffffffffffffffffffffffffffffff161480610a795750610a7881610a73611984565b61166f565b5b610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf9061321d565b60405180910390fd5b610ac2838361198c565b505050565b60085481565b6009600c9054906101000a900463ffffffff1681565b610af4610aee611984565b82611a45565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a9061335d565b60405180910390fd5b610b3e838383611b23565b505050565b610b4b611984565b73ffffffffffffffffffffffffffffffffffffffff16610b69611209565b73ffffffffffffffffffffffffffffffffffffffff1614610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906132bd565b60405180910390fd5b80600960046101000a81548163ffffffff021916908363ffffffff16021790555050565b610beb611984565b73ffffffffffffffffffffffffffffffffffffffff16610c09611209565b73ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c56906132bd565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610c8590613044565b60006040518083038185875af1925050503d8060008114610cc2576040519150601f19603f3d011682016040523d82523d6000602084013e610cc7565b606091505b5050905080610cd557600080fd5b50565b610cf38383836040518060200160405280600081525061157e565b505050565b610d00611984565b73ffffffffffffffffffffffffffffffffffffffff16610d1e611209565b73ffffffffffffffffffffffffffffffffffffffff1614610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b906132bd565b60405180910390fd5b8060088190555050565b600960049054906101000a900463ffffffff1681565b600960009054906101000a900463ffffffff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a9061325d565b60405180910390fd5b80915050919050565b610e64611984565b73ffffffffffffffffffffffffffffffffffffffff16610e82611209565b73ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf906132bd565b60405180910390fd5b80600960106101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d9061323d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fb5611984565b73ffffffffffffffffffffffffffffffffffffffff16610fd3611209565b73ffffffffffffffffffffffffffffffffffffffff1614611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611020906132bd565b60405180910390fd5b6110336000611d7f565b565b61103d611984565b73ffffffffffffffffffffffffffffffffffffffff1661105b611209565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906132bd565b60405180910390fd5b60005b828290508163ffffffff161015611204576009600c9054906101000a900463ffffffff1663ffffffff16600960089054906101000a900463ffffffff1660016110fd9190613542565b63ffffffff161115611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b906131dd565b60405180910390fd5b6111f183838363ffffffff16818110611186577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061119b9190612870565b6009600881819054906101000a900463ffffffff166111b9906137ad565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250611e45565b80806111fc906137ad565b9150506110b4565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461124290613701565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613701565b80156112bb5780601f10611290576101008083540402835291602001916112bb565b820191906000526020600020905b81548152906001019060200180831161129e57829003601f168201915b5050505050905090565b6112d76112d0611984565b8383611ea0565b5050565b8060008163ffffffff1611611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c906133dd565b60405180910390fd5b6001600960009054906101000a900463ffffffff166113449190613542565b63ffffffff168163ffffffff1610611391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611388906133bd565b60405180910390fd5b8063ffffffff166008546113a591906135ad565b3410156113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de9061339d565b60405180910390fd5b60016009600c9054906101000a900463ffffffff166114069190613542565b63ffffffff1681600960089054906101000a900463ffffffff1661142a9190613542565b63ffffffff1610611470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611467906132fd565b60405180910390fd5b600960049054906101000a900463ffffffff1663ffffffff168163ffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114da91906134ec565b111561151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115129061317d565b60405180910390fd5b60011515600960109054906101000a900460ff16151514611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061333d565b60405180910390fd5b61157a8261200d565b5050565b61158f611589611984565b83611a45565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c59061335d565b60405180910390fd5b6115da848484846121ba565b50505050565b6060600960089054906101000a900463ffffffff1663ffffffff1682111561163d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116349061311d565b60405180910390fd5b600761164883612216565b604051602001611659929190613015565b6040516020818303038152906040529050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61170b611984565b73ffffffffffffffffffffffffffffffffffffffff16611729611209565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611776906132bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e69061313d565b60405180910390fd5b6117f881611d7f565b50565b611803611984565b73ffffffffffffffffffffffffffffffffffffffff16611821611209565b73ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906132bd565b60405180910390fd5b80600960006101000a81548163ffffffff021916908363ffffffff16021790555050565b600960109054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119ff83610daa565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a5082611918565b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a86906131fd565b60405180910390fd5b6000611a9a83610daa565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b0957508373ffffffffffffffffffffffffffffffffffffffff16611af184610876565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b1a5750611b19818561166f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b4382610daa565b73ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906132dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009061319d565b60405180910390fd5b611c148383836123c3565b611c1f60008261198c565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c6f9190613607565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc691906134ec565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e4f83836123c8565b611e5c6000848484612596565b611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e92906130fd565b60405180910390fd5b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f06906131bd565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161200091906130c0565b60405180910390a3505050565b60005b8163ffffffff168163ffffffff1610156120915761207e336009600881819054906101000a900463ffffffff16612046906137ad565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1660405180602001604052806000815250611e45565b8080612089906137ad565b915050612010565b508063ffffffff16600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120e791906134ec565b925050819055506000600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166103e8600b60009054906101000a900463ffffffff1663ffffffff163461215091906135ad565b61215a919061357c565b60405161216690613044565b60006040518083038185875af1925050503d80600081146121a3576040519150601f19603f3d011682016040523d82523d6000602084013e6121a8565b606091505b50509050806121b657600080fd5b5050565b6121c5848484611b23565b6121d184848484612596565b612210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612207906130fd565b60405180910390fd5b50505050565b6060600082141561225e576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123be565b600082905060005b6000821461229057808061227990613764565b915050600a82612289919061357c565b9150612266565b60008167ffffffffffffffff8111156122d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156123045781602001600182028036833780820191505090505b5090505b600085146123b75760018261231d9190613607565b9150600a8561232c91906137da565b603061233891906134ec565b60f81b818381518110612374577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856123b0919061357c565b9450612308565b8093505050505b919050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061327d565b60405180910390fd5b61244181611918565b15612481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124789061315d565b60405180910390fd5b61248d600083836123c3565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124dd91906134ec565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006125b78473ffffffffffffffffffffffffffffffffffffffff1661272d565b15612720578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026125e0611984565b8786866040518563ffffffff1660e01b81526004016126029493929190613074565b602060405180830381600087803b15801561261c57600080fd5b505af192505050801561264d57506040513d601f19601f8201168201806040525081019061264a9190612aae565b60015b6126d0573d806000811461267d576040519150601f19603f3d011682016040523d82523d6000602084013e612682565b606091505b506000815114156126c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bf906130fd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612725565b600190505b949350505050565b600080823b905060008111915050919050565b600061275361274e84613458565b613433565b90508281526020810184848401111561276b57600080fd5b6127768482856136bf565b509392505050565b60008135905061278d81613e7e565b92915050565b60008083601f8401126127a557600080fd5b8235905067ffffffffffffffff8111156127be57600080fd5b6020830191508360208202830111156127d657600080fd5b9250929050565b6000813590506127ec81613e95565b92915050565b60008135905061280181613eac565b92915050565b60008151905061281681613eac565b92915050565b600082601f83011261282d57600080fd5b813561283d848260208601612740565b91505092915050565b60008135905061285581613ec3565b92915050565b60008135905061286a81613eda565b92915050565b60006020828403121561288257600080fd5b60006128908482850161277e565b91505092915050565b600080604083850312156128ac57600080fd5b60006128ba8582860161277e565b92505060206128cb8582860161277e565b9150509250929050565b6000806000606084860312156128ea57600080fd5b60006128f88682870161277e565b93505060206129098682870161277e565b925050604061291a86828701612846565b9150509250925092565b6000806000806080858703121561293a57600080fd5b60006129488782880161277e565b94505060206129598782880161277e565b935050604061296a87828801612846565b925050606085013567ffffffffffffffff81111561298757600080fd5b6129938782880161281c565b91505092959194509250565b600080604083850312156129b257600080fd5b60006129c08582860161277e565b92505060206129d1858286016127dd565b9150509250929050565b600080604083850312156129ee57600080fd5b60006129fc8582860161277e565b9250506020612a0d85828601612846565b9150509250929050565b60008060208385031215612a2a57600080fd5b600083013567ffffffffffffffff811115612a4457600080fd5b612a5085828601612793565b92509250509250929050565b600060208284031215612a6e57600080fd5b6000612a7c848285016127dd565b91505092915050565b600060208284031215612a9757600080fd5b6000612aa5848285016127f2565b91505092915050565b600060208284031215612ac057600080fd5b6000612ace84828501612807565b91505092915050565b600060208284031215612ae957600080fd5b6000612af784828501612846565b91505092915050565b600060208284031215612b1257600080fd5b6000612b208482850161285b565b91505092915050565b612b328161363b565b82525050565b612b418161364d565b82525050565b6000612b528261349e565b612b5c81856134b4565b9350612b6c8185602086016136ce565b612b75816138c7565b840191505092915050565b6000612b8b826134a9565b612b9581856134d0565b9350612ba58185602086016136ce565b612bae816138c7565b840191505092915050565b6000612bc4826134a9565b612bce81856134e1565b9350612bde8185602086016136ce565b80840191505092915050565b60008154612bf781613701565b612c0181866134e1565b94506001821660008114612c1c5760018114612c2d57612c60565b60ff19831686528186019350612c60565b612c3685613489565b60005b83811015612c5857815481890152600182019150602081019050612c39565b838801955050505b50505092915050565b6000612c766032836134d0565b9150612c81826138d8565b604082019050919050565b6000612c99600e836134d0565b9150612ca482613927565b602082019050919050565b6000612cbc6026836134d0565b9150612cc782613950565b604082019050919050565b6000612cdf601c836134d0565b9150612cea8261399f565b602082019050919050565b6000612d026016836134d0565b9150612d0d826139c8565b602082019050919050565b6000612d256024836134d0565b9150612d30826139f1565b604082019050919050565b6000612d486019836134d0565b9150612d5382613a40565b602082019050919050565b6000612d6b600d836134d0565b9150612d7682613a69565b602082019050919050565b6000612d8e602c836134d0565b9150612d9982613a92565b604082019050919050565b6000612db16038836134d0565b9150612dbc82613ae1565b604082019050919050565b6000612dd4602a836134d0565b9150612ddf82613b30565b604082019050919050565b6000612df76029836134d0565b9150612e0282613b7f565b604082019050919050565b6000612e1a6020836134d0565b9150612e2582613bce565b602082019050919050565b6000612e3d602c836134d0565b9150612e4882613bf7565b604082019050919050565b6000612e606005836134e1565b9150612e6b82613c46565b600582019050919050565b6000612e836020836134d0565b9150612e8e82613c6f565b602082019050919050565b6000612ea66029836134d0565b9150612eb182613c98565b604082019050919050565b6000612ec9600d836134d0565b9150612ed482613ce7565b602082019050919050565b6000612eec6021836134d0565b9150612ef782613d10565b604082019050919050565b6000612f0f600d836134d0565b9150612f1a82613d5f565b602082019050919050565b6000612f326000836134c5565b9150612f3d82613d88565b600082019050919050565b6000612f556031836134d0565b9150612f6082613d8b565b604082019050919050565b6000612f786011836134d0565b9150612f8382613dda565b602082019050919050565b6000612f9b6010836134d0565b9150612fa682613e03565b602082019050919050565b6000612fbe6011836134d0565b9150612fc982613e2c565b602082019050919050565b6000612fe16012836134d0565b9150612fec82613e55565b602082019050919050565b613000816136a5565b82525050565b61300f816136af565b82525050565b60006130218285612bea565b915061302d8284612bb9565b915061303882612e53565b91508190509392505050565b600061304f82612f25565b9150819050919050565b600060208201905061306e6000830184612b29565b92915050565b60006080820190506130896000830187612b29565b6130966020830186612b29565b6130a36040830185612ff7565b81810360608301526130b58184612b47565b905095945050505050565b60006020820190506130d56000830184612b38565b92915050565b600060208201905081810360008301526130f58184612b80565b905092915050565b6000602082019050818103600083015261311681612c69565b9050919050565b6000602082019050818103600083015261313681612c8c565b9050919050565b6000602082019050818103600083015261315681612caf565b9050919050565b6000602082019050818103600083015261317681612cd2565b9050919050565b6000602082019050818103600083015261319681612cf5565b9050919050565b600060208201905081810360008301526131b681612d18565b9050919050565b600060208201905081810360008301526131d681612d3b565b9050919050565b600060208201905081810360008301526131f681612d5e565b9050919050565b6000602082019050818103600083015261321681612d81565b9050919050565b6000602082019050818103600083015261323681612da4565b9050919050565b6000602082019050818103600083015261325681612dc7565b9050919050565b6000602082019050818103600083015261327681612dea565b9050919050565b6000602082019050818103600083015261329681612e0d565b9050919050565b600060208201905081810360008301526132b681612e30565b9050919050565b600060208201905081810360008301526132d681612e76565b9050919050565b600060208201905081810360008301526132f681612e99565b9050919050565b6000602082019050818103600083015261331681612ebc565b9050919050565b6000602082019050818103600083015261333681612edf565b9050919050565b6000602082019050818103600083015261335681612f02565b9050919050565b6000602082019050818103600083015261337681612f48565b9050919050565b6000602082019050818103600083015261339681612f6b565b9050919050565b600060208201905081810360008301526133b681612f8e565b9050919050565b600060208201905081810360008301526133d681612fb1565b9050919050565b600060208201905081810360008301526133f681612fd4565b9050919050565b60006020820190506134126000830184612ff7565b92915050565b600060208201905061342d6000830184613006565b92915050565b600061343d61344e565b90506134498282613733565b919050565b6000604051905090565b600067ffffffffffffffff82111561347357613472613898565b5b61347c826138c7565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006134f7826136a5565b9150613502836136a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135375761353661380b565b5b828201905092915050565b600061354d826136af565b9150613558836136af565b92508263ffffffff038211156135715761357061380b565b5b828201905092915050565b6000613587826136a5565b9150613592836136a5565b9250826135a2576135a161383a565b5b828204905092915050565b60006135b8826136a5565b91506135c3836136a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135fc576135fb61380b565b5b828202905092915050565b6000613612826136a5565b915061361d836136a5565b9250828210156136305761362f61380b565b5b828203905092915050565b600061364682613685565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156136ec5780820151818401526020810190506136d1565b838111156136fb576000848401525b50505050565b6000600282049050600182168061371957607f821691505b6020821081141561372d5761372c613869565b5b50919050565b61373c826138c7565b810181811067ffffffffffffffff8211171561375b5761375a613898565b5b80604052505050565b600061376f826136a5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137a2576137a161380b565b5b600182019050919050565b60006137b8826136af565b915063ffffffff8214156137cf576137ce61380b565b5b600182019050919050565b60006137e5826136a5565b91506137f0836136a5565b925082613800576137ff61383a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f74206d696e74656420796574000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4d617820746f74616c206d696e74207265616368656400000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4c696d6974207265616368656400000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4d696e7420736f6c64206f757400000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d696e74206e6f74206f70656e00000000000000000000000000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f496e636f72726563742041646472657373000000000000000000000000000000600082015250565b7f4e6f7420656e6f7567682066756e642e00000000000000000000000000000000600082015250565b7f4d6178206d696e7420726561636865642e000000000000000000000000000000600082015250565b7f4d696e74206174206c65617374206f6e652e0000000000000000000000000000600082015250565b613e878161363b565b8114613e9257600080fd5b50565b613e9e8161364d565b8114613ea957600080fd5b50565b613eb581613659565b8114613ec057600080fd5b50565b613ecc816136a5565b8114613ed757600080fd5b50565b613ee3816136af565b8114613eee57600080fd5b5056fea264697066735822122076c27c69957c811a33dabcc2d1e0c86ffe1b962abd8326cb351dcf1f4081a30d64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000022b0000000000000000000000000000000000000000000000000058d15e1762800000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000043697066733a2f2f626166796265696469736f70626d326470626f657836697134676d6636327a666169346a61696f376379646f753732726c657a75636572697562612f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e4d657461456c664d616e6961204c75636b79204c65707265636861756e73000000000000000000000000000000000000000000000000000000000000000000054d454d4c4c000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _uri (string): ipfs://bafybeidisopbm2dpboex6iq4gmf62zfai4jaio7cydou72rlezuceriuba/
Arg [1] : _name (string): MetaElfMania Lucky Leprechauns
Arg [2] : _symbol (string): MEMLL
Arg [3] : _totalSupply (uint32): 555
Arg [4] : _cost (uint256): 25000000000000000
Arg [5] : _open (bool): True
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [3] : 000000000000000000000000000000000000000000000000000000000000022b
Arg [4] : 0000000000000000000000000000000000000000000000000058d15e17628000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000043
Arg [7] : 697066733a2f2f626166796265696469736f70626d326470626f657836697134
Arg [8] : 676d6636327a666169346a61696f376379646f753732726c657a756365726975
Arg [9] : 62612f0000000000000000000000000000000000000000000000000000000000
Arg [10] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [11] : 4d657461456c664d616e6961204c75636b79204c65707265636861756e730000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [13] : 4d454d4c4c000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
39465:663:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21386:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36671:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22331:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23890:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37320:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23413:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36559:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36702:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24640:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37688:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38131:192;;;:::i;:::-;;25050:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37515:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36633:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36598:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22025:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37603:77;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21755:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35541:103;;;;;;;;;;;;;:::i;:::-;;37886:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34890:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22500:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24183:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38361:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25306:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39787:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24409:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35799:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37789:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36738:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21386:305;21488:4;21540:25;21525:40;;;:11;:40;;;;:105;;;;21597:33;21582:48;;;:11;:48;;;;21525:105;:158;;;;21647:36;21671:11;21647:23;:36::i;:::-;21525:158;21505:178;;21386:305;;;:::o;36671:24::-;;;;;;;;;;;;;:::o;22331:100::-;22385:13;22418:5;22411:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22331:100;:::o;23890:221::-;23966:7;23994:16;24002:7;23994;:16::i;:::-;23986:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24079:15;:24;24095:7;24079:24;;;;;;;;;;;;;;;;;;;;;24072:31;;23890:221;;;:::o;37320:152::-;37402:6;;;;;;;;;;;37388:20;;:10;:20;;;37380:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;37454:10;37441;;:23;;;;;;;;;;;;;;;;;;37320:152;:::o;23413:411::-;23494:13;23510:23;23525:7;23510:14;:23::i;:::-;23494:39;;23558:5;23552:11;;:2;:11;;;;23544:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23652:5;23636:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23661:37;23678:5;23685:12;:10;:12::i;:::-;23661:16;:37::i;:::-;23636:62;23614:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;23795:21;23804:2;23808:7;23795:8;:21::i;:::-;23413:411;;;:::o;36559:32::-;;;;:::o;36702:29::-;;;;;;;;;;;;;:::o;24640:339::-;24835:41;24854:12;:10;:12::i;:::-;24868:7;24835:18;:41::i;:::-;24827:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24943:28;24953:4;24959:2;24963:7;24943:9;:28::i;:::-;24640:339;;;:::o;37688:93::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37769:4:::1;37754:12;;:19;;;;;;;;;;;;;;;;;;37688:93:::0;:::o;38131:192::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38188:12:::1;38214:10;38206:24;;38252:21;38206:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38187:101;;;38307:7;38299:16;;;::::0;::::1;;35181:1;38131:192::o:0;25050:185::-;25188:39;25205:4;25211:2;25215:7;25188:39;;;;;;;;;;;;:16;:39::i;:::-;25050:185;;;:::o;37515:80::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37582:5:::1;37575:4;:12;;;;37515:80:::0;:::o;36633:31::-;;;;;;;;;;;;;:::o;36598:28::-;;;;;;;;;;;;;:::o;22025:239::-;22097:7;22117:13;22133:7;:16;22141:7;22133:16;;;;;;;;;;;;;;;;;;;;;22117:32;;22185:1;22168:19;;:5;:19;;;;22160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22251:5;22244:12;;;22025:239;;;:::o;37603:77::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37667:5:::1;37660:4;;:12;;;;;;;;;;;;;;;;;;37603:77:::0;:::o;21755:208::-;21827:7;21872:1;21855:19;;:5;:19;;;;21847:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21939:9;:16;21949:5;21939:16;;;;;;;;;;;;;;;;21932:23;;21755:208;;;:::o;35541:103::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35606:30:::1;35633:1;35606:18;:30::i;:::-;35541:103::o:0;37886:237::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37959:8:::1;37954:162;37977:2;;:9;;37973:1;:13;;;37954:162;;;38030:11;;;;;;;;;;;38016:25;;38020:6;;;;;;;;;;;38016:1;:10;;;;:::i;:::-;:25;;;;38008:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;38074:30;38084:2;;38087:1;38084:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38093:6;;38091:8;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;38074:30;;;;;;;;;;;;;::::0;:9:::1;:30::i;:::-;37988:3;;;;;:::i;:::-;;;;37954:162;;;;37886:237:::0;;:::o;34890:87::-;34936:7;34963:6;;;;;;;;;;;34956:13;;34890:87;:::o;22500:104::-;22556:13;22589:7;22582:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22500:104;:::o;24183:155::-;24278:52;24297:12;:10;:12::i;:::-;24311:8;24321;24278:18;:52::i;:::-;24183:155;;:::o;38361:152::-;38420:5;39012:1;39004:5;:9;;;38996:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;39076:1;39063:10;;;;;;;;;;;:14;;;;:::i;:::-;39055:22;;:5;:22;;;39047:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;39138:5;39131:12;;:4;;:12;;;;:::i;:::-;39118:9;:25;;39110:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;39214:1;39200:11;;;;;;;;;;;:15;;;;:::i;:::-;39183:32;;39192:5;39183:6;;;;;;;;;;;:14;;;;:::i;:::-;:32;;;39175:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;39306:12;;;;;;;;;;;39266:52;;39297:5;39266:36;;:16;:28;39283:10;39266:28;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;;39244:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;38454:4:::1;38446:12;;:4;;;;;;;;;;;:12;;;38438:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;38487:18;38499:5;38487:11;:18::i;:::-;38361:152:::0;;:::o;25306:328::-;25481:41;25500:12;:10;:12::i;:::-;25514:7;25481:18;:41::i;:::-;25473:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;25587:39;25601:4;25607:2;25611:7;25620:5;25587:13;:39::i;:::-;25306:328;;;;:::o;39787:338::-;39906:13;39957:6;;;;;;;;;;;39945:18;;:8;:18;;39937:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;40057:7;40066:26;40083:8;40066:16;:26::i;:::-;40040:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;39995:122;;39787:338;;;:::o;24409:164::-;24506:4;24530:18;:25;24549:5;24530:25;;;;;;;;;;;;;;;:35;24556:8;24530:35;;;;;;;;;;;;;;;;;;;;;;;;;24523:42;;24409:164;;;;:::o;35799:201::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35908:1:::1;35888:22;;:8;:22;;;;35880:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;35964:28;35983:8;35964:18;:28::i;:::-;35799:201:::0;:::o;37789:89::-;35121:12;:10;:12::i;:::-;35110:23;;:7;:5;:7::i;:::-;:23;;;35102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37866:4:::1;37853:10;;:17;;;;;;;;;;;;;;;;;;37789:89:::0;:::o;36738:24::-;;;;;;;;;;;;;:::o;19828:157::-;19913:4;19952:25;19937:40;;;:11;:40;;;;19930:47;;19828:157;;;:::o;27144:127::-;27209:4;27261:1;27233:30;;:7;:16;27241:7;27233:16;;;;;;;;;;;;;;;;;;;;;:30;;;;27226:37;;27144:127;;;:::o;16619:98::-;16672:7;16699:10;16692:17;;16619:98;:::o;31126:174::-;31228:2;31201:15;:24;31217:7;31201:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31284:7;31280:2;31246:46;;31255:23;31270:7;31255:14;:23::i;:::-;31246:46;;;;;;;;;;;;31126:174;;:::o;27438:348::-;27531:4;27556:16;27564:7;27556;:16::i;:::-;27548:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27632:13;27648:23;27663:7;27648:14;:23::i;:::-;27632:39;;27701:5;27690:16;;:7;:16;;;:51;;;;27734:7;27710:31;;:20;27722:7;27710:11;:20::i;:::-;:31;;;27690:51;:87;;;;27745:32;27762:5;27769:7;27745:16;:32::i;:::-;27690:87;27682:96;;;27438:348;;;;:::o;30430:578::-;30589:4;30562:31;;:23;30577:7;30562:14;:23::i;:::-;:31;;;30554:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;30672:1;30658:16;;:2;:16;;;;30650:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;30728:39;30749:4;30755:2;30759:7;30728:20;:39::i;:::-;30832:29;30849:1;30853:7;30832:8;:29::i;:::-;30893:1;30874:9;:15;30884:4;30874:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30922:1;30905:9;:13;30915:2;30905:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30953:2;30934:7;:16;30942:7;30934:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30992:7;30988:2;30973:27;;30982:4;30973:27;;;;;;;;;;;;30430:578;;;:::o;36160:191::-;36234:16;36253:6;;;;;;;;;;;36234:25;;36279:8;36270:6;;:17;;;;;;;;;;;;;;;;;;36334:8;36303:40;;36324:8;36303:40;;;;;;;;;;;;36160:191;;:::o;28465:321::-;28595:18;28601:2;28605:7;28595:5;:18::i;:::-;28646:54;28677:1;28681:2;28685:7;28694:5;28646:22;:54::i;:::-;28624:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;28465:321;;;:::o;31442:315::-;31597:8;31588:17;;:5;:17;;;;31580:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;31684:8;31646:18;:25;31665:5;31646:25;;;;;;;;;;;;;;;:35;31672:8;31646:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31730:8;31708:41;;31723:5;31708:41;;;31740:8;31708:41;;;;;;:::i;:::-;;;;;;;;31442:315;;;:::o;38521:356::-;38581:8;38576:97;38599:5;38595:9;;:1;:9;;;38576:97;;;38626:35;38636:10;38650:6;;38648:8;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;38626:35;;;;;;;;;;;;;;:9;:35::i;:::-;38606:3;;;;;:::i;:::-;;;;38576:97;;;;38717:5;38685:37;;:16;:28;38702:10;38685:28;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;38736:12;38762:6;;;;;;;;;;;38754:20;;38823:4;38809:10;;;;;;;;;;;38797:22;;:9;:22;;;;:::i;:::-;38796:31;;;;:::i;:::-;38754:88;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38735:107;;;38861:7;38853:16;;;;;;38521:356;;:::o;26516:315::-;26673:28;26683:4;26689:2;26693:7;26673:9;:28::i;:::-;26720:48;26743:4;26749:2;26753:7;26762:5;26720:22;:48::i;:::-;26712:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;26516:315;;;;:::o;17202:723::-;17258:13;17488:1;17479:5;:10;17475:53;;;17506:10;;;;;;;;;;;;;;;;;;;;;17475:53;17538:12;17553:5;17538:20;;17569:14;17594:78;17609:1;17601:4;:9;17594:78;;17627:8;;;;;:::i;:::-;;;;17658:2;17650:10;;;;;:::i;:::-;;;17594:78;;;17682:19;17714:6;17704:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17682:39;;17732:154;17748:1;17739:5;:10;17732:154;;17776:1;17766:11;;;;;:::i;:::-;;;17843:2;17835:5;:10;;;;:::i;:::-;17822:2;:24;;;;:::i;:::-;17809:39;;17792:6;17799;17792:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;17872:2;17863:11;;;;;:::i;:::-;;;17732:154;;;17910:6;17896:21;;;;;17202:723;;;;:::o;33693:126::-;;;;:::o;29122:382::-;29216:1;29202:16;;:2;:16;;;;29194:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;29275:16;29283:7;29275;:16::i;:::-;29274:17;29266:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;29337:45;29366:1;29370:2;29374:7;29337:20;:45::i;:::-;29412:1;29395:9;:13;29405:2;29395:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;29443:2;29424:7;:16;29432:7;29424:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29488:7;29484:2;29463:33;;29480:1;29463:33;;;;;;;;;;;;29122:382;;:::o;32322:799::-;32477:4;32498:15;:2;:13;;;:15::i;:::-;32494:620;;;32550:2;32534:36;;;32571:12;:10;:12::i;:::-;32585:4;32591:7;32600:5;32534:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32530:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32793:1;32776:6;:13;:18;32772:272;;;32819:60;;;;;;;;;;:::i;:::-;;;;;;;;32772:272;32994:6;32988:13;32979:6;32975:2;32971:15;32964:38;32530:529;32667:41;;;32657:51;;;:6;:51;;;;32650:58;;;;;32494:620;33098:4;33091:11;;32322:799;;;;;;;:::o;8605:387::-;8665:4;8873:12;8940:7;8928:20;8920:28;;8983:1;8976:4;:8;8969:15;;;8605:387;;;:::o;7:343:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:139::-;402:5;440:6;427:20;418:29;;456:33;483:5;456:33;:::i;:::-;408:87;;;;:::o;518:367::-;591:8;601:6;651:3;644:4;636:6;632:17;628:27;618:2;;669:1;666;659:12;618:2;705:6;692:20;682:30;;735:18;727:6;724:30;721:2;;;767:1;764;757:12;721:2;804:4;796:6;792:17;780:29;;858:3;850:4;842:6;838:17;828:8;824:32;821:41;818:2;;;875:1;872;865:12;818:2;608:277;;;;;:::o;891:133::-;934:5;972:6;959:20;950:29;;988:30;1012:5;988:30;:::i;:::-;940:84;;;;:::o;1030:137::-;1075:5;1113:6;1100:20;1091:29;;1129:32;1155:5;1129:32;:::i;:::-;1081:86;;;;:::o;1173:141::-;1229:5;1260:6;1254:13;1245:22;;1276:32;1302:5;1276:32;:::i;:::-;1235:79;;;;:::o;1333:271::-;1388:5;1437:3;1430:4;1422:6;1418:17;1414:27;1404:2;;1455:1;1452;1445:12;1404:2;1495:6;1482:20;1520:78;1594:3;1586:6;1579:4;1571:6;1567:17;1520:78;:::i;:::-;1511:87;;1394:210;;;;;:::o;1610:139::-;1656:5;1694:6;1681:20;1672:29;;1710:33;1737:5;1710:33;:::i;:::-;1662:87;;;;:::o;1755:137::-;1800:5;1838:6;1825:20;1816:29;;1854:32;1880:5;1854:32;:::i;:::-;1806:86;;;;:::o;1898:262::-;1957:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:2;;;2022:1;2019;2012:12;1974:2;2065:1;2090:53;2135:7;2126:6;2115:9;2111:22;2090:53;:::i;:::-;2080:63;;2036:117;1964:196;;;;:::o;2166:407::-;2234:6;2242;2291:2;2279:9;2270:7;2266:23;2262:32;2259:2;;;2307:1;2304;2297:12;2259:2;2350:1;2375:53;2420:7;2411:6;2400:9;2396:22;2375:53;:::i;:::-;2365:63;;2321:117;2477:2;2503:53;2548:7;2539:6;2528:9;2524:22;2503:53;:::i;:::-;2493:63;;2448:118;2249:324;;;;;:::o;2579:552::-;2656:6;2664;2672;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2737:1;2734;2727:12;2689:2;2780:1;2805:53;2850:7;2841:6;2830:9;2826:22;2805:53;:::i;:::-;2795:63;;2751:117;2907:2;2933:53;2978:7;2969:6;2958:9;2954:22;2933:53;:::i;:::-;2923:63;;2878:118;3035:2;3061:53;3106:7;3097:6;3086:9;3082:22;3061:53;:::i;:::-;3051:63;;3006:118;2679:452;;;;;:::o;3137:809::-;3232:6;3240;3248;3256;3305:3;3293:9;3284:7;3280:23;3276:33;3273:2;;;3322:1;3319;3312:12;3273:2;3365:1;3390:53;3435:7;3426:6;3415:9;3411:22;3390:53;:::i;:::-;3380:63;;3336:117;3492:2;3518:53;3563:7;3554:6;3543:9;3539:22;3518:53;:::i;:::-;3508:63;;3463:118;3620:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3591:118;3776:2;3765:9;3761:18;3748:32;3807:18;3799:6;3796:30;3793:2;;;3839:1;3836;3829:12;3793:2;3867:62;3921:7;3912:6;3901:9;3897:22;3867:62;:::i;:::-;3857:72;;3719:220;3263:683;;;;;;;:::o;3952:401::-;4017:6;4025;4074:2;4062:9;4053:7;4049:23;4045:32;4042:2;;;4090:1;4087;4080:12;4042:2;4133:1;4158:53;4203:7;4194:6;4183:9;4179:22;4158:53;:::i;:::-;4148:63;;4104:117;4260:2;4286:50;4328:7;4319:6;4308:9;4304:22;4286:50;:::i;:::-;4276:60;;4231:115;4032:321;;;;;:::o;4359:407::-;4427:6;4435;4484:2;4472:9;4463:7;4459:23;4455:32;4452:2;;;4500:1;4497;4490:12;4452:2;4543:1;4568:53;4613:7;4604:6;4593:9;4589:22;4568:53;:::i;:::-;4558:63;;4514:117;4670:2;4696:53;4741:7;4732:6;4721:9;4717:22;4696:53;:::i;:::-;4686:63;;4641:118;4442:324;;;;;:::o;4772:425::-;4858:6;4866;4915:2;4903:9;4894:7;4890:23;4886:32;4883:2;;;4931:1;4928;4921:12;4883:2;5002:1;4991:9;4987:17;4974:31;5032:18;5024:6;5021:30;5018:2;;;5064:1;5061;5054:12;5018:2;5100:80;5172:7;5163:6;5152:9;5148:22;5100:80;:::i;:::-;5082:98;;;;4945:245;4873:324;;;;;:::o;5203:256::-;5259:6;5308:2;5296:9;5287:7;5283:23;5279:32;5276:2;;;5324:1;5321;5314:12;5276:2;5367:1;5392:50;5434:7;5425:6;5414:9;5410:22;5392:50;:::i;:::-;5382:60;;5338:114;5266:193;;;;:::o;5465:260::-;5523:6;5572:2;5560:9;5551:7;5547:23;5543:32;5540:2;;;5588:1;5585;5578:12;5540:2;5631:1;5656:52;5700:7;5691:6;5680:9;5676:22;5656:52;:::i;:::-;5646:62;;5602:116;5530:195;;;;:::o;5731:282::-;5800:6;5849:2;5837:9;5828:7;5824:23;5820:32;5817:2;;;5865:1;5862;5855:12;5817:2;5908:1;5933:63;5988:7;5979:6;5968:9;5964:22;5933:63;:::i;:::-;5923:73;;5879:127;5807:206;;;;:::o;6019:262::-;6078:6;6127:2;6115:9;6106:7;6102:23;6098:32;6095:2;;;6143:1;6140;6133:12;6095:2;6186:1;6211:53;6256:7;6247:6;6236:9;6232:22;6211:53;:::i;:::-;6201:63;;6157:117;6085:196;;;;:::o;6287:260::-;6345:6;6394:2;6382:9;6373:7;6369:23;6365:32;6362:2;;;6410:1;6407;6400:12;6362:2;6453:1;6478:52;6522:7;6513:6;6502:9;6498:22;6478:52;:::i;:::-;6468:62;;6424:116;6352:195;;;;:::o;6553:118::-;6640:24;6658:5;6640:24;:::i;:::-;6635:3;6628:37;6618:53;;:::o;6677:109::-;6758:21;6773:5;6758:21;:::i;:::-;6753:3;6746:34;6736:50;;:::o;6792:360::-;6878:3;6906:38;6938:5;6906:38;:::i;:::-;6960:70;7023:6;7018:3;6960:70;:::i;:::-;6953:77;;7039:52;7084:6;7079:3;7072:4;7065:5;7061:16;7039:52;:::i;:::-;7116:29;7138:6;7116:29;:::i;:::-;7111:3;7107:39;7100:46;;6882:270;;;;;:::o;7158:364::-;7246:3;7274:39;7307:5;7274:39;:::i;:::-;7329:71;7393:6;7388:3;7329:71;:::i;:::-;7322:78;;7409:52;7454:6;7449:3;7442:4;7435:5;7431:16;7409:52;:::i;:::-;7486:29;7508:6;7486:29;:::i;:::-;7481:3;7477:39;7470:46;;7250:272;;;;;:::o;7528:377::-;7634:3;7662:39;7695:5;7662:39;:::i;:::-;7717:89;7799:6;7794:3;7717:89;:::i;:::-;7710:96;;7815:52;7860:6;7855:3;7848:4;7841:5;7837:16;7815:52;:::i;:::-;7892:6;7887:3;7883:16;7876:23;;7638:267;;;;;:::o;7935:845::-;8038:3;8075:5;8069:12;8104:36;8130:9;8104:36;:::i;:::-;8156:89;8238:6;8233:3;8156:89;:::i;:::-;8149:96;;8276:1;8265:9;8261:17;8292:1;8287:137;;;;8438:1;8433:341;;;;8254:520;;8287:137;8371:4;8367:9;8356;8352:25;8347:3;8340:38;8407:6;8402:3;8398:16;8391:23;;8287:137;;8433:341;8500:38;8532:5;8500:38;:::i;:::-;8560:1;8574:154;8588:6;8585:1;8582:13;8574:154;;;8662:7;8656:14;8652:1;8647:3;8643:11;8636:35;8712:1;8703:7;8699:15;8688:26;;8610:4;8607:1;8603:12;8598:17;;8574:154;;;8757:6;8752:3;8748:16;8741:23;;8440:334;;8254:520;;8042:738;;;;;;:::o;8786:366::-;8928:3;8949:67;9013:2;9008:3;8949:67;:::i;:::-;8942:74;;9025:93;9114:3;9025:93;:::i;:::-;9143:2;9138:3;9134:12;9127:19;;8932:220;;;:::o;9158:366::-;9300:3;9321:67;9385:2;9380:3;9321:67;:::i;:::-;9314:74;;9397:93;9486:3;9397:93;:::i;:::-;9515:2;9510:3;9506:12;9499:19;;9304:220;;;:::o;9530:366::-;9672:3;9693:67;9757:2;9752:3;9693:67;:::i;:::-;9686:74;;9769:93;9858:3;9769:93;:::i;:::-;9887:2;9882:3;9878:12;9871:19;;9676:220;;;:::o;9902:366::-;10044:3;10065:67;10129:2;10124:3;10065:67;:::i;:::-;10058:74;;10141:93;10230:3;10141:93;:::i;:::-;10259:2;10254:3;10250:12;10243:19;;10048:220;;;:::o;10274:366::-;10416:3;10437:67;10501:2;10496:3;10437:67;:::i;:::-;10430:74;;10513:93;10602:3;10513:93;:::i;:::-;10631:2;10626:3;10622:12;10615:19;;10420:220;;;:::o;10646:366::-;10788:3;10809:67;10873:2;10868:3;10809:67;:::i;:::-;10802:74;;10885:93;10974:3;10885:93;:::i;:::-;11003:2;10998:3;10994:12;10987:19;;10792:220;;;:::o;11018:366::-;11160:3;11181:67;11245:2;11240:3;11181:67;:::i;:::-;11174:74;;11257:93;11346:3;11257:93;:::i;:::-;11375:2;11370:3;11366:12;11359:19;;11164:220;;;:::o;11390:366::-;11532:3;11553:67;11617:2;11612:3;11553:67;:::i;:::-;11546:74;;11629:93;11718:3;11629:93;:::i;:::-;11747:2;11742:3;11738:12;11731:19;;11536:220;;;:::o;11762:366::-;11904:3;11925:67;11989:2;11984:3;11925:67;:::i;:::-;11918:74;;12001:93;12090:3;12001:93;:::i;:::-;12119:2;12114:3;12110:12;12103:19;;11908:220;;;:::o;12134:366::-;12276:3;12297:67;12361:2;12356:3;12297:67;:::i;:::-;12290:74;;12373:93;12462:3;12373:93;:::i;:::-;12491:2;12486:3;12482:12;12475:19;;12280:220;;;:::o;12506:366::-;12648:3;12669:67;12733:2;12728:3;12669:67;:::i;:::-;12662:74;;12745:93;12834:3;12745:93;:::i;:::-;12863:2;12858:3;12854:12;12847:19;;12652:220;;;:::o;12878:366::-;13020:3;13041:67;13105:2;13100:3;13041:67;:::i;:::-;13034:74;;13117:93;13206:3;13117:93;:::i;:::-;13235:2;13230:3;13226:12;13219:19;;13024:220;;;:::o;13250:366::-;13392:3;13413:67;13477:2;13472:3;13413:67;:::i;:::-;13406:74;;13489:93;13578:3;13489:93;:::i;:::-;13607:2;13602:3;13598:12;13591:19;;13396:220;;;:::o;13622:366::-;13764:3;13785:67;13849:2;13844:3;13785:67;:::i;:::-;13778:74;;13861:93;13950:3;13861:93;:::i;:::-;13979:2;13974:3;13970:12;13963:19;;13768:220;;;:::o;13994:400::-;14154:3;14175:84;14257:1;14252:3;14175:84;:::i;:::-;14168:91;;14268:93;14357:3;14268:93;:::i;:::-;14386:1;14381:3;14377:11;14370:18;;14158:236;;;:::o;14400:366::-;14542:3;14563:67;14627:2;14622:3;14563:67;:::i;:::-;14556:74;;14639:93;14728:3;14639:93;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14546:220;;;:::o;14772:366::-;14914:3;14935:67;14999:2;14994:3;14935:67;:::i;:::-;14928:74;;15011:93;15100:3;15011:93;:::i;:::-;15129:2;15124:3;15120:12;15113:19;;14918:220;;;:::o;15144:366::-;15286:3;15307:67;15371:2;15366:3;15307:67;:::i;:::-;15300:74;;15383:93;15472:3;15383:93;:::i;:::-;15501:2;15496:3;15492:12;15485:19;;15290:220;;;:::o;15516:366::-;15658:3;15679:67;15743:2;15738:3;15679:67;:::i;:::-;15672:74;;15755:93;15844:3;15755:93;:::i;:::-;15873:2;15868:3;15864:12;15857:19;;15662:220;;;:::o;15888:366::-;16030:3;16051:67;16115:2;16110:3;16051:67;:::i;:::-;16044:74;;16127:93;16216:3;16127:93;:::i;:::-;16245:2;16240:3;16236:12;16229:19;;16034:220;;;:::o;16260:398::-;16419:3;16440:83;16521:1;16516:3;16440:83;:::i;:::-;16433:90;;16532:93;16621:3;16532:93;:::i;:::-;16650:1;16645:3;16641:11;16634:18;;16423:235;;;:::o;16664:366::-;16806:3;16827:67;16891:2;16886:3;16827:67;:::i;:::-;16820:74;;16903:93;16992:3;16903:93;:::i;:::-;17021:2;17016:3;17012:12;17005:19;;16810:220;;;:::o;17036:366::-;17178:3;17199:67;17263:2;17258:3;17199:67;:::i;:::-;17192:74;;17275:93;17364:3;17275:93;:::i;:::-;17393:2;17388:3;17384:12;17377:19;;17182:220;;;:::o;17408:366::-;17550:3;17571:67;17635:2;17630:3;17571:67;:::i;:::-;17564:74;;17647:93;17736:3;17647:93;:::i;:::-;17765:2;17760:3;17756:12;17749:19;;17554:220;;;:::o;17780:366::-;17922:3;17943:67;18007:2;18002:3;17943:67;:::i;:::-;17936:74;;18019:93;18108:3;18019:93;:::i;:::-;18137:2;18132:3;18128:12;18121:19;;17926:220;;;:::o;18152:366::-;18294:3;18315:67;18379:2;18374:3;18315:67;:::i;:::-;18308:74;;18391:93;18480:3;18391:93;:::i;:::-;18509:2;18504:3;18500:12;18493:19;;18298:220;;;:::o;18524:118::-;18611:24;18629:5;18611:24;:::i;:::-;18606:3;18599:37;18589:53;;:::o;18648:115::-;18733:23;18750:5;18733:23;:::i;:::-;18728:3;18721:36;18711:52;;:::o;18769:695::-;19047:3;19069:92;19157:3;19148:6;19069:92;:::i;:::-;19062:99;;19178:95;19269:3;19260:6;19178:95;:::i;:::-;19171:102;;19290:148;19434:3;19290:148;:::i;:::-;19283:155;;19455:3;19448:10;;19051:413;;;;;:::o;19470:379::-;19654:3;19676:147;19819:3;19676:147;:::i;:::-;19669:154;;19840:3;19833:10;;19658:191;;;:::o;19855:222::-;19948:4;19986:2;19975:9;19971:18;19963:26;;19999:71;20067:1;20056:9;20052:17;20043:6;19999:71;:::i;:::-;19953:124;;;;:::o;20083:640::-;20278:4;20316:3;20305:9;20301:19;20293:27;;20330:71;20398:1;20387:9;20383:17;20374:6;20330:71;:::i;:::-;20411:72;20479:2;20468:9;20464:18;20455:6;20411:72;:::i;:::-;20493;20561:2;20550:9;20546:18;20537:6;20493:72;:::i;:::-;20612:9;20606:4;20602:20;20597:2;20586:9;20582:18;20575:48;20640:76;20711:4;20702:6;20640:76;:::i;:::-;20632:84;;20283:440;;;;;;;:::o;20729:210::-;20816:4;20854:2;20843:9;20839:18;20831:26;;20867:65;20929:1;20918:9;20914:17;20905:6;20867:65;:::i;:::-;20821:118;;;;:::o;20945:313::-;21058:4;21096:2;21085:9;21081:18;21073:26;;21145:9;21139:4;21135:20;21131:1;21120:9;21116:17;21109:47;21173:78;21246:4;21237:6;21173:78;:::i;:::-;21165:86;;21063:195;;;;:::o;21264:419::-;21430:4;21468:2;21457:9;21453:18;21445:26;;21517:9;21511:4;21507:20;21503:1;21492:9;21488:17;21481:47;21545:131;21671:4;21545:131;:::i;:::-;21537:139;;21435:248;;;:::o;21689:419::-;21855:4;21893:2;21882:9;21878:18;21870:26;;21942:9;21936:4;21932:20;21928:1;21917:9;21913:17;21906:47;21970:131;22096:4;21970:131;:::i;:::-;21962:139;;21860:248;;;:::o;22114:419::-;22280:4;22318:2;22307:9;22303:18;22295:26;;22367:9;22361:4;22357:20;22353:1;22342:9;22338:17;22331:47;22395:131;22521:4;22395:131;:::i;:::-;22387:139;;22285:248;;;:::o;22539:419::-;22705:4;22743:2;22732:9;22728:18;22720:26;;22792:9;22786:4;22782:20;22778:1;22767:9;22763:17;22756:47;22820:131;22946:4;22820:131;:::i;:::-;22812:139;;22710:248;;;:::o;22964:419::-;23130:4;23168:2;23157:9;23153:18;23145:26;;23217:9;23211:4;23207:20;23203:1;23192:9;23188:17;23181:47;23245:131;23371:4;23245:131;:::i;:::-;23237:139;;23135:248;;;:::o;23389:419::-;23555:4;23593:2;23582:9;23578:18;23570:26;;23642:9;23636:4;23632:20;23628:1;23617:9;23613:17;23606:47;23670:131;23796:4;23670:131;:::i;:::-;23662:139;;23560:248;;;:::o;23814:419::-;23980:4;24018:2;24007:9;24003:18;23995:26;;24067:9;24061:4;24057:20;24053:1;24042:9;24038:17;24031:47;24095:131;24221:4;24095:131;:::i;:::-;24087:139;;23985:248;;;:::o;24239:419::-;24405:4;24443:2;24432:9;24428:18;24420:26;;24492:9;24486:4;24482:20;24478:1;24467:9;24463:17;24456:47;24520:131;24646:4;24520:131;:::i;:::-;24512:139;;24410:248;;;:::o;24664:419::-;24830:4;24868:2;24857:9;24853:18;24845:26;;24917:9;24911:4;24907:20;24903:1;24892:9;24888:17;24881:47;24945:131;25071:4;24945:131;:::i;:::-;24937:139;;24835:248;;;:::o;25089:419::-;25255:4;25293:2;25282:9;25278:18;25270:26;;25342:9;25336:4;25332:20;25328:1;25317:9;25313:17;25306:47;25370:131;25496:4;25370:131;:::i;:::-;25362:139;;25260:248;;;:::o;25514:419::-;25680:4;25718:2;25707:9;25703:18;25695:26;;25767:9;25761:4;25757:20;25753:1;25742:9;25738:17;25731:47;25795:131;25921:4;25795:131;:::i;:::-;25787:139;;25685:248;;;:::o;25939:419::-;26105:4;26143:2;26132:9;26128:18;26120:26;;26192:9;26186:4;26182:20;26178:1;26167:9;26163:17;26156:47;26220:131;26346:4;26220:131;:::i;:::-;26212:139;;26110:248;;;:::o;26364:419::-;26530:4;26568:2;26557:9;26553:18;26545:26;;26617:9;26611:4;26607:20;26603:1;26592:9;26588:17;26581:47;26645:131;26771:4;26645:131;:::i;:::-;26637:139;;26535:248;;;:::o;26789:419::-;26955:4;26993:2;26982:9;26978:18;26970:26;;27042:9;27036:4;27032:20;27028:1;27017:9;27013:17;27006:47;27070:131;27196:4;27070:131;:::i;:::-;27062:139;;26960:248;;;:::o;27214:419::-;27380:4;27418:2;27407:9;27403:18;27395:26;;27467:9;27461:4;27457:20;27453:1;27442:9;27438:17;27431:47;27495:131;27621:4;27495:131;:::i;:::-;27487:139;;27385:248;;;:::o;27639:419::-;27805:4;27843:2;27832:9;27828:18;27820:26;;27892:9;27886:4;27882:20;27878:1;27867:9;27863:17;27856:47;27920:131;28046:4;27920:131;:::i;:::-;27912:139;;27810:248;;;:::o;28064:419::-;28230:4;28268:2;28257:9;28253:18;28245:26;;28317:9;28311:4;28307:20;28303:1;28292:9;28288:17;28281:47;28345:131;28471:4;28345:131;:::i;:::-;28337:139;;28235:248;;;:::o;28489:419::-;28655:4;28693:2;28682:9;28678:18;28670:26;;28742:9;28736:4;28732:20;28728:1;28717:9;28713:17;28706:47;28770:131;28896:4;28770:131;:::i;:::-;28762:139;;28660:248;;;:::o;28914:419::-;29080:4;29118:2;29107:9;29103:18;29095:26;;29167:9;29161:4;29157:20;29153:1;29142:9;29138:17;29131:47;29195:131;29321:4;29195:131;:::i;:::-;29187:139;;29085:248;;;:::o;29339:419::-;29505:4;29543:2;29532:9;29528:18;29520:26;;29592:9;29586:4;29582:20;29578:1;29567:9;29563:17;29556:47;29620:131;29746:4;29620:131;:::i;:::-;29612:139;;29510:248;;;:::o;29764:419::-;29930:4;29968:2;29957:9;29953:18;29945:26;;30017:9;30011:4;30007:20;30003:1;29992:9;29988:17;29981:47;30045:131;30171:4;30045:131;:::i;:::-;30037:139;;29935:248;;;:::o;30189:419::-;30355:4;30393:2;30382:9;30378:18;30370:26;;30442:9;30436:4;30432:20;30428:1;30417:9;30413:17;30406:47;30470:131;30596:4;30470:131;:::i;:::-;30462:139;;30360:248;;;:::o;30614:419::-;30780:4;30818:2;30807:9;30803:18;30795:26;;30867:9;30861:4;30857:20;30853:1;30842:9;30838:17;30831:47;30895:131;31021:4;30895:131;:::i;:::-;30887:139;;30785:248;;;:::o;31039:419::-;31205:4;31243:2;31232:9;31228:18;31220:26;;31292:9;31286:4;31282:20;31278:1;31267:9;31263:17;31256:47;31320:131;31446:4;31320:131;:::i;:::-;31312:139;;31210:248;;;:::o;31464:222::-;31557:4;31595:2;31584:9;31580:18;31572:26;;31608:71;31676:1;31665:9;31661:17;31652:6;31608:71;:::i;:::-;31562:124;;;;:::o;31692:218::-;31783:4;31821:2;31810:9;31806:18;31798:26;;31834:69;31900:1;31889:9;31885:17;31876:6;31834:69;:::i;:::-;31788:122;;;;:::o;31916:129::-;31950:6;31977:20;;:::i;:::-;31967:30;;32006:33;32034:4;32026:6;32006:33;:::i;:::-;31957:88;;;:::o;32051:75::-;32084:6;32117:2;32111:9;32101:19;;32091:35;:::o;32132:307::-;32193:4;32283:18;32275:6;32272:30;32269:2;;;32305:18;;:::i;:::-;32269:2;32343:29;32365:6;32343:29;:::i;:::-;32335:37;;32427:4;32421;32417:15;32409:23;;32198:241;;;:::o;32445:141::-;32494:4;32517:3;32509:11;;32540:3;32537:1;32530:14;32574:4;32571:1;32561:18;32553:26;;32499:87;;;:::o;32592:98::-;32643:6;32677:5;32671:12;32661:22;;32650:40;;;:::o;32696:99::-;32748:6;32782:5;32776:12;32766:22;;32755:40;;;:::o;32801:168::-;32884:11;32918:6;32913:3;32906:19;32958:4;32953:3;32949:14;32934:29;;32896:73;;;;:::o;32975:147::-;33076:11;33113:3;33098:18;;33088:34;;;;:::o;33128:169::-;33212:11;33246:6;33241:3;33234:19;33286:4;33281:3;33277:14;33262:29;;33224:73;;;;:::o;33303:148::-;33405:11;33442:3;33427:18;;33417:34;;;;:::o;33457:305::-;33497:3;33516:20;33534:1;33516:20;:::i;:::-;33511:25;;33550:20;33568:1;33550:20;:::i;:::-;33545:25;;33704:1;33636:66;33632:74;33629:1;33626:81;33623:2;;;33710:18;;:::i;:::-;33623:2;33754:1;33751;33747:9;33740:16;;33501:261;;;;:::o;33768:246::-;33807:3;33826:19;33843:1;33826:19;:::i;:::-;33821:24;;33859:19;33876:1;33859:19;:::i;:::-;33854:24;;33956:1;33944:10;33940:18;33937:1;33934:25;33931:2;;;33962:18;;:::i;:::-;33931:2;34006:1;34003;33999:9;33992:16;;33811:203;;;;:::o;34020:185::-;34060:1;34077:20;34095:1;34077:20;:::i;:::-;34072:25;;34111:20;34129:1;34111:20;:::i;:::-;34106:25;;34150:1;34140:2;;34155:18;;:::i;:::-;34140:2;34197:1;34194;34190:9;34185:14;;34062:143;;;;:::o;34211:348::-;34251:7;34274:20;34292:1;34274:20;:::i;:::-;34269:25;;34308:20;34326:1;34308:20;:::i;:::-;34303:25;;34496:1;34428:66;34424:74;34421:1;34418:81;34413:1;34406:9;34399:17;34395:105;34392:2;;;34503:18;;:::i;:::-;34392:2;34551:1;34548;34544:9;34533:20;;34259:300;;;;:::o;34565:191::-;34605:4;34625:20;34643:1;34625:20;:::i;:::-;34620:25;;34659:20;34677:1;34659:20;:::i;:::-;34654:25;;34698:1;34695;34692:8;34689:2;;;34703:18;;:::i;:::-;34689:2;34748:1;34745;34741:9;34733:17;;34610:146;;;;:::o;34762:96::-;34799:7;34828:24;34846:5;34828:24;:::i;:::-;34817:35;;34807:51;;;:::o;34864:90::-;34898:7;34941:5;34934:13;34927:21;34916:32;;34906:48;;;:::o;34960:149::-;34996:7;35036:66;35029:5;35025:78;35014:89;;35004:105;;;:::o;35115:126::-;35152:7;35192:42;35185:5;35181:54;35170:65;;35160:81;;;:::o;35247:77::-;35284:7;35313:5;35302:16;;35292:32;;;:::o;35330:93::-;35366:7;35406:10;35399:5;35395:22;35384:33;;35374:49;;;:::o;35429:154::-;35513:6;35508:3;35503;35490:30;35575:1;35566:6;35561:3;35557:16;35550:27;35480:103;;;:::o;35589:307::-;35657:1;35667:113;35681:6;35678:1;35675:13;35667:113;;;35766:1;35761:3;35757:11;35751:18;35747:1;35742:3;35738:11;35731:39;35703:2;35700:1;35696:10;35691:15;;35667:113;;;35798:6;35795:1;35792:13;35789:2;;;35878:1;35869:6;35864:3;35860:16;35853:27;35789:2;35638:258;;;;:::o;35902:320::-;35946:6;35983:1;35977:4;35973:12;35963:22;;36030:1;36024:4;36020:12;36051:18;36041:2;;36107:4;36099:6;36095:17;36085:27;;36041:2;36169;36161:6;36158:14;36138:18;36135:38;36132:2;;;36188:18;;:::i;:::-;36132:2;35953:269;;;;:::o;36228:281::-;36311:27;36333:4;36311:27;:::i;:::-;36303:6;36299:40;36441:6;36429:10;36426:22;36405:18;36393:10;36390:34;36387:62;36384:2;;;36452:18;;:::i;:::-;36384:2;36492:10;36488:2;36481:22;36271:238;;;:::o;36515:233::-;36554:3;36577:24;36595:5;36577:24;:::i;:::-;36568:33;;36623:66;36616:5;36613:77;36610:2;;;36693:18;;:::i;:::-;36610:2;36740:1;36733:5;36729:13;36722:20;;36558:190;;;:::o;36754:175::-;36792:3;36815:23;36832:5;36815:23;:::i;:::-;36806:32;;36860:10;36853:5;36850:21;36847:2;;;36874:18;;:::i;:::-;36847:2;36921:1;36914:5;36910:13;36903:20;;36796:133;;;:::o;36935:176::-;36967:1;36984:20;37002:1;36984:20;:::i;:::-;36979:25;;37018:20;37036:1;37018:20;:::i;:::-;37013:25;;37057:1;37047:2;;37062:18;;:::i;:::-;37047:2;37103:1;37100;37096:9;37091:14;;36969:142;;;;:::o;37117:180::-;37165:77;37162:1;37155:88;37262:4;37259:1;37252:15;37286:4;37283:1;37276:15;37303:180;37351:77;37348:1;37341:88;37448:4;37445:1;37438:15;37472:4;37469:1;37462:15;37489:180;37537:77;37534:1;37527:88;37634:4;37631:1;37624:15;37658:4;37655:1;37648:15;37675:180;37723:77;37720:1;37713:88;37820:4;37817:1;37810:15;37844:4;37841:1;37834:15;37861:102;37902:6;37953:2;37949:7;37944:2;37937:5;37933:14;37929:28;37919:38;;37909:54;;;:::o;37969:237::-;38109:34;38105:1;38097:6;38093:14;38086:58;38178:20;38173:2;38165:6;38161:15;38154:45;38075:131;:::o;38212:164::-;38352:16;38348:1;38340:6;38336:14;38329:40;38318:58;:::o;38382:225::-;38522:34;38518:1;38510:6;38506:14;38499:58;38591:8;38586:2;38578:6;38574:15;38567:33;38488:119;:::o;38613:178::-;38753:30;38749:1;38741:6;38737:14;38730:54;38719:72;:::o;38797:172::-;38937:24;38933:1;38925:6;38921:14;38914:48;38903:66;:::o;38975:223::-;39115:34;39111:1;39103:6;39099:14;39092:58;39184:6;39179:2;39171:6;39167:15;39160:31;39081:117;:::o;39204:175::-;39344:27;39340:1;39332:6;39328:14;39321:51;39310:69;:::o;39385:163::-;39525:15;39521:1;39513:6;39509:14;39502:39;39491:57;:::o;39554:231::-;39694:34;39690:1;39682:6;39678:14;39671:58;39763:14;39758:2;39750:6;39746:15;39739:39;39660:125;:::o;39791:243::-;39931:34;39927:1;39919:6;39915:14;39908:58;40000:26;39995:2;39987:6;39983:15;39976:51;39897:137;:::o;40040:229::-;40180:34;40176:1;40168:6;40164:14;40157:58;40249:12;40244:2;40236:6;40232:15;40225:37;40146:123;:::o;40275:228::-;40415:34;40411:1;40403:6;40399:14;40392:58;40484:11;40479:2;40471:6;40467:15;40460:36;40381:122;:::o;40509:182::-;40649:34;40645:1;40637:6;40633:14;40626:58;40615:76;:::o;40697:231::-;40837:34;40833:1;40825:6;40821:14;40814:58;40906:14;40901:2;40893:6;40889:15;40882:39;40803:125;:::o;40934:155::-;41074:7;41070:1;41062:6;41058:14;41051:31;41040:49;:::o;41095:182::-;41235:34;41231:1;41223:6;41219:14;41212:58;41201:76;:::o;41283:228::-;41423:34;41419:1;41411:6;41407:14;41400:58;41492:11;41487:2;41479:6;41475:15;41468:36;41389:122;:::o;41517:163::-;41657:15;41653:1;41645:6;41641:14;41634:39;41623:57;:::o;41686:220::-;41826:34;41822:1;41814:6;41810:14;41803:58;41895:3;41890:2;41882:6;41878:15;41871:28;41792:114;:::o;41912:163::-;42052:15;42048:1;42040:6;42036:14;42029:39;42018:57;:::o;42081:114::-;42187:8;:::o;42201:236::-;42341:34;42337:1;42329:6;42325:14;42318:58;42410:19;42405:2;42397:6;42393:15;42386:44;42307:130;:::o;42443:167::-;42583:19;42579:1;42571:6;42567:14;42560:43;42549:61;:::o;42616:166::-;42756:18;42752:1;42744:6;42740:14;42733:42;42722:60;:::o;42788:167::-;42928:19;42924:1;42916:6;42912:14;42905:43;42894:61;:::o;42961:168::-;43101:20;43097:1;43089:6;43085:14;43078:44;43067:62;:::o;43135:122::-;43208:24;43226:5;43208:24;:::i;:::-;43201:5;43198:35;43188:2;;43247:1;43244;43237:12;43188:2;43178:79;:::o;43263:116::-;43333:21;43348:5;43333:21;:::i;:::-;43326:5;43323:32;43313:2;;43369:1;43366;43359:12;43313:2;43303:76;:::o;43385:120::-;43457:23;43474:5;43457:23;:::i;:::-;43450:5;43447:34;43437:2;;43495:1;43492;43485:12;43437:2;43427:78;:::o;43511:122::-;43584:24;43602:5;43584:24;:::i;:::-;43577:5;43574:35;43564:2;;43623:1;43620;43613:12;43564:2;43554:79;:::o;43639:120::-;43711:23;43728:5;43711:23;:::i;:::-;43704:5;43701:34;43691:2;;43749:1;43746;43739:12;43691:2;43681:78;:::o
Swarm Source
ipfs://76c27c69957c811a33dabcc2d1e0c86ffe1b962abd8326cb351dcf1f4081a30d
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.