Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 65 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 17434790 | 612 days ago | IN | 0 ETH | 0.00063369 | ||||
Set Approval For... | 17421506 | 614 days ago | IN | 0 ETH | 0.00128235 | ||||
Set Approval For... | 17421505 | 614 days ago | IN | 0 ETH | 0.00127372 | ||||
Mint Pandas | 17419605 | 614 days ago | IN | 0.015 ETH | 0.00436013 | ||||
Mint Pandas | 17419604 | 614 days ago | IN | 0.003 ETH | 0.00207987 | ||||
Mint Pandas | 17419584 | 614 days ago | IN | 0.012 ETH | 0.0027848 | ||||
Mint Pandas | 17419577 | 614 days ago | IN | 0.015 ETH | 0.00385758 | ||||
Mint Pandas | 17419564 | 614 days ago | IN | 0.003 ETH | 0.0021449 | ||||
Mint Pandas | 17419508 | 614 days ago | IN | 0.015 ETH | 0.00493124 | ||||
Mint Pandas | 17419501 | 614 days ago | IN | 0.003 ETH | 0.00255081 | ||||
Mint Pandas | 17419479 | 614 days ago | IN | 0.015 ETH | 0.00448542 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00440073 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00059546 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00440073 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00440073 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00440073 | ||||
Mint Pandas | 17419464 | 614 days ago | IN | 0.015 ETH | 0.00440073 | ||||
Mint Pandas | 17419432 | 614 days ago | IN | 0.015 ETH | 0.00428774 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17434790 | 612 days ago | 0.726 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ChipPandas
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-05 */ /** *Submitted for verification at Etherscan.io on 2021-08-31 */ // Sources flattened with hardhat v2.5.0 https://hardhat.org // File contracts/utils/introspection/IERC165.sol // SPDX-License-Identifier: MIT 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 contracts/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 contracts/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 contracts/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 contracts/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; // solhint-disable-next-line no-inline-assembly 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File contracts/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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File contracts/utils/Strings.sol pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "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] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File contracts/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 contracts/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}. 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 { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_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 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(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { // solhint-disable-next-line no-inline-assembly 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` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } } // File contracts/token/ERC721/extensions/ERC721URIStorage.sol pragma solidity ^0.8.0; /** * @dev ERC721 token with storage based token URI management. */ abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; // Optional mapping for token URIs mapping (uint256 => string) private _tokenURIs; /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } /** * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } /** * @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 override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } // File contracts/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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.8.0; contract ChipPandas is ERC721URIStorage, Ownable{ event MintPandas(address indexed minter, uint256 startWith, uint256 times); uint256 public totalPandass; uint256 public totalCount = 4275; //bruhTotal uint256 public maxBatch = 5; // bruhBatch uint256 public price = 0.003 ether; // 0.003 eth uint256 public releaseUnix = 1685975400; // mint time string public baseURI; mapping(address => uint256) public userMintCount; constructor(string memory baseURI_) ERC721("ChipPandas","ChipPandas") { baseURI = baseURI_; } modifier mintEnabled() { require(block.timestamp >= releaseUnix, "Wait baby"); _; } function totalSupply() public view virtual returns (uint256) { return totalPandass; } function _baseURI() internal view virtual override returns (string memory){ return baseURI; } function setBaseURI(string memory _newURI) public onlyOwner { baseURI = _newURI; } function changeTotalCount(uint256 _totalCount) public onlyOwner { require(_totalCount <=10000, "value error"); totalCount = _totalCount; } function changeMaxbatch(uint256 _maxBatch) public onlyOwner { maxBatch = _maxBatch; } function changePrice(uint256 _newPrice) public onlyOwner { price = _newPrice; } function changeStartDate(uint256 newDate) public onlyOwner { releaseUnix = newDate; } function setTokenURI(uint256 _tokenId, string memory _tokenURI) public onlyOwner { _setTokenURI(_tokenId, _tokenURI); } function mintPandas(uint256 _times) payable public mintEnabled { require(_times >0 && userMintCount[msg.sender]+_times <= maxBatch, "mint wrong number"); require(totalPandass + _times <= totalCount, "too much"); require(msg.value >= _times * price, "value error"); emit MintPandas(_msgSender(), totalPandass+1, _times); for(uint256 i=0; i< _times; i++){ _mint(_msgSender(), 1 + totalPandass++); } userMintCount[msg.sender]+=_times; } function withdraw() public onlyOwner { uint balance = address(this).balance; payable(owner()).transfer(balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"startWith","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"times","type":"uint256"}],"name":"MintPandas","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"},{"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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBatch","type":"uint256"}],"name":"changeMaxbatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDate","type":"uint256"}],"name":"changeStartDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalCount","type":"uint256"}],"name":"changeTotalCount","outputs":[],"stateMutability":"nonpayable","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":"maxBatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_times","type":"uint256"}],"name":"mintPandas","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseUnix","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"string","name":"_newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPandass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMintCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526110b36009556005600a55660aa87bee538000600b5563647df168600c553480156200002f57600080fd5b50604051620046bb380380620046bb83398181016040528101906200005591906200034c565b6040518060400160405280600a81526020017f4368697050616e646173000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f4368697050616e646173000000000000000000000000000000000000000000008152508160009081620000d29190620005e8565b508060019081620000e49190620005e8565b5050506000620000f9620001b160201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600d9081620001a99190620005e8565b5050620006cf565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200022282620001d7565b810181811067ffffffffffffffff82111715620002445762000243620001e8565b5b80604052505050565b600062000259620001b9565b905062000267828262000217565b919050565b600067ffffffffffffffff8211156200028a5762000289620001e8565b5b6200029582620001d7565b9050602081019050919050565b60005b83811015620002c2578082015181840152602081019050620002a5565b60008484015250505050565b6000620002e5620002df846200026c565b6200024d565b905082815260208101848484011115620003045762000303620001d2565b5b62000311848285620002a2565b509392505050565b600082601f830112620003315762000330620001cd565b5b815162000343848260208601620002ce565b91505092915050565b600060208284031215620003655762000364620001c3565b5b600082015167ffffffffffffffff811115620003865762000385620001c8565b5b620003948482850162000319565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003f057607f821691505b602082108103620004065762000405620003a8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000431565b6200047c868362000431565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004c9620004c3620004bd8462000494565b6200049e565b62000494565b9050919050565b6000819050919050565b620004e583620004a8565b620004fd620004f482620004d0565b8484546200043e565b825550505050565b600090565b6200051462000505565b62000521818484620004da565b505050565b5b8181101562000549576200053d6000826200050a565b60018101905062000527565b5050565b601f821115620005985762000562816200040c565b6200056d8462000421565b810160208510156200057d578190505b620005956200058c8562000421565b83018262000526565b50505b505050565b600082821c905092915050565b6000620005bd600019846008026200059d565b1980831691505092915050565b6000620005d88383620005aa565b9150826002028217905092915050565b620005f3826200039d565b67ffffffffffffffff8111156200060f576200060e620001e8565b5b6200061b8254620003d7565b620006288282856200054d565b600060209050601f8311600181146200066057600084156200064b578287015190505b620006578582620005ca565b865550620006c7565b601f19841662000670866200040c565b60005b828110156200069a5784890151825560018201915060208501945060208101905062000673565b86831015620006ba5784890151620006b6601f891682620005aa565b8355505b6001600288020188555050505b505050505050565b613fdc80620006df6000396000f3fe6080604052600436106101e25760003560e01c80636352211e1161010257806395d89b4111610095578063b88d4fde11610064578063b88d4fde146106aa578063c87b56dd146106d3578063e985e9c514610710578063f2fde38b1461074d576101e2565b806395d89b4114610602578063a035b1fe1461062d578063a22cb46514610658578063a2b40d1914610681576101e2565b8063715018a6116100d1578063715018a61461056c57806383ebc808146105835780638c491d63146105ae5780638da5cb5b146105d7576101e2565b80636352211e1461049c57806367765b87146104d95780636c0360eb1461050457806370a082311461052f576101e2565b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610405578063441f95711461042e57806355f804b3146104575780635f42a00614610480576101e2565b806323b872dd1461035d57806334eafb11146103865780633950891f146103b15780633ccfd60b146103ee576101e2565b8063081812fc116101b6578063081812fc146102a3578063095ea7b3146102e0578063162094c41461030957806318160ddd14610332576101e2565b8062739f2a146101e757806301ffc9a71461021057806306704bd61461024d57806306fdde0314610278575b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612769565b610776565b005b34801561021c57600080fd5b50610237600480360381019061023291906127ee565b6107fc565b6040516102449190612836565b60405180910390f35b34801561025957600080fd5b506102626108de565b60405161026f9190612860565b60405180910390f35b34801561028457600080fd5b5061028d6108e4565b60405161029a919061290b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612769565b610976565b6040516102d7919061296e565b60405180910390f35b3480156102ec57600080fd5b50610307600480360381019061030291906129b5565b6109fb565b005b34801561031557600080fd5b50610330600480360381019061032b9190612b2a565b610b12565b005b34801561033e57600080fd5b50610347610b9c565b6040516103549190612860565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612b86565b610ba6565b005b34801561039257600080fd5b5061039b610c06565b6040516103a89190612860565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612bd9565b610c0c565b6040516103e59190612860565b60405180910390f35b3480156103fa57600080fd5b50610403610c24565b005b34801561041157600080fd5b5061042c60048036038101906104279190612b86565b610cf6565b005b34801561043a57600080fd5b5061045560048036038101906104509190612769565b610d16565b005b34801561046357600080fd5b5061047e60048036038101906104799190612c06565b610de1565b005b61049a60048036038101906104959190612769565b610e70565b005b3480156104a857600080fd5b506104c360048036038101906104be9190612769565b611102565b6040516104d0919061296e565b60405180910390f35b3480156104e557600080fd5b506104ee6111b3565b6040516104fb9190612860565b60405180910390f35b34801561051057600080fd5b506105196111b9565b604051610526919061290b565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190612bd9565b611247565b6040516105639190612860565b60405180910390f35b34801561057857600080fd5b506105816112fe565b005b34801561058f57600080fd5b5061059861143b565b6040516105a59190612860565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612769565b611441565b005b3480156105e357600080fd5b506105ec6114c7565b6040516105f9919061296e565b60405180910390f35b34801561060e57600080fd5b506106176114f1565b604051610624919061290b565b60405180910390f35b34801561063957600080fd5b50610642611583565b60405161064f9190612860565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612c7b565b611589565b005b34801561068d57600080fd5b506106a860048036038101906106a39190612769565b611709565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612d5c565b61178f565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190612769565b6117f1565b604051610707919061290b565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190612ddf565b611942565b6040516107449190612836565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190612bd9565b6119d6565b005b61077e611b81565b73ffffffffffffffffffffffffffffffffffffffff1661079c6114c7565b73ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990612e6b565b60405180910390fd5b80600c8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d757506108d682611b89565b5b9050919050565b60085481565b6060600080546108f390612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461091f90612eba565b801561096c5780601f106109415761010080835404028352916020019161096c565b820191906000526020600020905b81548152906001019060200180831161094f57829003601f168201915b5050505050905090565b600061098182611bf3565b6109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790612f5d565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a0682611102565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90612fef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a95611b81565b73ffffffffffffffffffffffffffffffffffffffff161480610ac45750610ac381610abe611b81565b611942565b5b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90613081565b60405180910390fd5b610b0d8383611c5f565b505050565b610b1a611b81565b73ffffffffffffffffffffffffffffffffffffffff16610b386114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590612e6b565b60405180910390fd5b610b988282611d18565b5050565b6000600854905090565b610bb7610bb1611b81565b82611d85565b610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90613113565b60405180910390fd5b610c01838383611e63565b505050565b60095481565b600e6020528060005260406000206000915090505481565b610c2c611b81565b73ffffffffffffffffffffffffffffffffffffffff16610c4a6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790612e6b565b60405180910390fd5b6000479050610cad6114c7565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf2573d6000803e3d6000fd5b5050565b610d118383836040518060200160405280600081525061178f565b505050565b610d1e611b81565b73ffffffffffffffffffffffffffffffffffffffff16610d3c6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990612e6b565b60405180910390fd5b612710811115610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce9061317f565b60405180910390fd5b8060098190555050565b610de9611b81565b73ffffffffffffffffffffffffffffffffffffffff16610e076114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490612e6b565b60405180910390fd5b80600d9081610e6c919061334b565b5050565b600c54421015610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613469565b60405180910390fd5b600081118015610f115750600a5481600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0e91906134b8565b11155b610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790613538565b60405180910390fd5b60095481600854610f6191906134b8565b1115610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f99906135a4565b60405180910390fd5b600b5481610fb091906135c4565b341015610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe99061317f565b60405180910390fd5b610ffa611b81565b73ffffffffffffffffffffffffffffffffffffffff167f1d41e02b08d5a35bb72b6a1c29dcc6df862a58a45f0421a01bc488029a3623ec600160085461104091906134b8565b8360405161104f929190613606565b60405180910390a260005b818110156110a85761109561106d611b81565b600860008154809291906110809061362f565b91905055600161109091906134b8565b6120be565b80806110a09061362f565b91505061105a565b5080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110f891906134b8565b9250508190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906136e9565b60405180910390fd5b80915050919050565b600a5481565b600d80546111c690612eba565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290612eba565b801561123f5780601f106112145761010080835404028352916020019161123f565b820191906000526020600020905b81548152906001019060200180831161122257829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae9061377b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611306611b81565b73ffffffffffffffffffffffffffffffffffffffff166113246114c7565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5481565b611449611b81565b73ffffffffffffffffffffffffffffffffffffffff166114676114c7565b73ffffffffffffffffffffffffffffffffffffffff16146114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b490612e6b565b60405180910390fd5b80600a8190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461150090612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461152c90612eba565b80156115795780601f1061154e57610100808354040283529160200191611579565b820191906000526020600020905b81548152906001019060200180831161155c57829003601f168201915b5050505050905090565b600b5481565b611591611b81565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906137e7565b60405180910390fd5b806005600061160b611b81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166116b8611b81565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116fd9190612836565b60405180910390a35050565b611711611b81565b73ffffffffffffffffffffffffffffffffffffffff1661172f6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90612e6b565b60405180910390fd5b80600b8190555050565b6117a061179a611b81565b83611d85565b6117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613113565b60405180910390fd5b6117eb8484848461228b565b50505050565b60606117fc82611bf3565b61183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613879565b60405180910390fd5b600060066000848152602001908152602001600020805461185b90612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461188790612eba565b80156118d45780601f106118a9576101008083540402835291602001916118d4565b820191906000526020600020905b8154815290600101906020018083116118b757829003601f168201915b5050505050905060006118e56122e7565b905060008151036118fa57819250505061193d565b60008251111561192f5780826040516020016119179291906138d5565b6040516020818303038152906040529250505061193d565b61193884612379565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119de611b81565b73ffffffffffffffffffffffffffffffffffffffff166119fc6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4990612e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab89061396b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611cd283611102565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611d2182611bf3565b611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d57906139fd565b60405180910390fd5b80600660008481526020019081526020016000209081611d80919061334b565b505050565b6000611d9082611bf3565b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc690613a8f565b60405180910390fd5b6000611dda83611102565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e4957508373ffffffffffffffffffffffffffffffffffffffff16611e3184610976565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e5a5750611e598185611942565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e8382611102565b73ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090613b21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613bb3565b60405180910390fd5b611f53838383612420565b611f5e600082611c5f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fae9190613bd3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461200591906134b8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490613c53565b60405180910390fd5b61213681611bf3565b15612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d90613cbf565b60405180910390fd5b61218260008383612420565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121d291906134b8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612296848484611e63565b6122a284848484612425565b6122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890613d51565b60405180910390fd5b50505050565b6060600d80546122f690612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461232290612eba565b801561236f5780601f106123445761010080835404028352916020019161236f565b820191906000526020600020905b81548152906001019060200180831161235257829003601f168201915b5050505050905090565b606061238482611bf3565b6123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90613de3565b60405180910390fd5b60006123cd6122e7565b905060008151116123ed5760405180602001604052806000815250612418565b806123f7846125ac565b6040516020016124089291906138d5565b6040516020818303038152906040525b915050919050565b505050565b60006124468473ffffffffffffffffffffffffffffffffffffffff1661270c565b1561259f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261246f611b81565b8786866040518563ffffffff1660e01b81526004016124919493929190613e58565b6020604051808303816000875af19250505080156124cd57506040513d601f19601f820116820180604052508101906124ca9190613eb9565b60015b61254f573d80600081146124fd576040519150601f19603f3d011682016040523d82523d6000602084013e612502565b606091505b506000815103612547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253e90613d51565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125a4565b600190505b949350505050565b6060600082036125f3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612707565b600082905060005b6000821461262557808061260e9061362f565b915050600a8261261e9190613f15565b91506125fb565b60008167ffffffffffffffff811115612641576126406129ff565b5b6040519080825280601f01601f1916602001820160405280156126735781602001600182028036833780820191505090505b5090505b600085146127005760018261268c9190613bd3565b9150600a8561269b9190613f46565b60306126a791906134b8565b60f81b8183815181106126bd576126bc613f77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126f99190613f15565b9450612677565b8093505050505b919050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61274681612733565b811461275157600080fd5b50565b6000813590506127638161273d565b92915050565b60006020828403121561277f5761277e612729565b5b600061278d84828501612754565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127cb81612796565b81146127d657600080fd5b50565b6000813590506127e8816127c2565b92915050565b60006020828403121561280457612803612729565b5b6000612812848285016127d9565b91505092915050565b60008115159050919050565b6128308161281b565b82525050565b600060208201905061284b6000830184612827565b92915050565b61285a81612733565b82525050565b60006020820190506128756000830184612851565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128b557808201518184015260208101905061289a565b60008484015250505050565b6000601f19601f8301169050919050565b60006128dd8261287b565b6128e78185612886565b93506128f7818560208601612897565b612900816128c1565b840191505092915050565b6000602082019050818103600083015261292581846128d2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129588261292d565b9050919050565b6129688161294d565b82525050565b6000602082019050612983600083018461295f565b92915050565b6129928161294d565b811461299d57600080fd5b50565b6000813590506129af81612989565b92915050565b600080604083850312156129cc576129cb612729565b5b60006129da858286016129a0565b92505060206129eb85828601612754565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a37826128c1565b810181811067ffffffffffffffff82111715612a5657612a556129ff565b5b80604052505050565b6000612a6961271f565b9050612a758282612a2e565b919050565b600067ffffffffffffffff821115612a9557612a946129ff565b5b612a9e826128c1565b9050602081019050919050565b82818337600083830152505050565b6000612acd612ac884612a7a565b612a5f565b905082815260208101848484011115612ae957612ae86129fa565b5b612af4848285612aab565b509392505050565b600082601f830112612b1157612b106129f5565b5b8135612b21848260208601612aba565b91505092915050565b60008060408385031215612b4157612b40612729565b5b6000612b4f85828601612754565b925050602083013567ffffffffffffffff811115612b7057612b6f61272e565b5b612b7c85828601612afc565b9150509250929050565b600080600060608486031215612b9f57612b9e612729565b5b6000612bad868287016129a0565b9350506020612bbe868287016129a0565b9250506040612bcf86828701612754565b9150509250925092565b600060208284031215612bef57612bee612729565b5b6000612bfd848285016129a0565b91505092915050565b600060208284031215612c1c57612c1b612729565b5b600082013567ffffffffffffffff811115612c3a57612c3961272e565b5b612c4684828501612afc565b91505092915050565b612c588161281b565b8114612c6357600080fd5b50565b600081359050612c7581612c4f565b92915050565b60008060408385031215612c9257612c91612729565b5b6000612ca0858286016129a0565b9250506020612cb185828601612c66565b9150509250929050565b600067ffffffffffffffff821115612cd657612cd56129ff565b5b612cdf826128c1565b9050602081019050919050565b6000612cff612cfa84612cbb565b612a5f565b905082815260208101848484011115612d1b57612d1a6129fa565b5b612d26848285612aab565b509392505050565b600082601f830112612d4357612d426129f5565b5b8135612d53848260208601612cec565b91505092915050565b60008060008060808587031215612d7657612d75612729565b5b6000612d84878288016129a0565b9450506020612d95878288016129a0565b9350506040612da687828801612754565b925050606085013567ffffffffffffffff811115612dc757612dc661272e565b5b612dd387828801612d2e565b91505092959194509250565b60008060408385031215612df657612df5612729565b5b6000612e04858286016129a0565b9250506020612e15858286016129a0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e55602083612886565b9150612e6082612e1f565b602082019050919050565b60006020820190508181036000830152612e8481612e48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ed257607f821691505b602082108103612ee557612ee4612e8b565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612f47602c83612886565b9150612f5282612eeb565b604082019050919050565b60006020820190508181036000830152612f7681612f3a565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd9602183612886565b9150612fe482612f7d565b604082019050919050565b6000602082019050818103600083015261300881612fcc565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061306b603883612886565b91506130768261300f565b604082019050919050565b6000602082019050818103600083015261309a8161305e565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006130fd603183612886565b9150613108826130a1565b604082019050919050565b6000602082019050818103600083015261312c816130f0565b9050919050565b7f76616c7565206572726f72000000000000000000000000000000000000000000600082015250565b6000613169600b83612886565b915061317482613133565b602082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826131c4565b61320b86836131c4565b95508019841693508086168417925050509392505050565b6000819050919050565b600061324861324361323e84612733565b613223565b612733565b9050919050565b6000819050919050565b6132628361322d565b61327661326e8261324f565b8484546131d1565b825550505050565b600090565b61328b61327e565b613296818484613259565b505050565b5b818110156132ba576132af600082613283565b60018101905061329c565b5050565b601f8211156132ff576132d08161319f565b6132d9846131b4565b810160208510156132e8578190505b6132fc6132f4856131b4565b83018261329b565b50505b505050565b600082821c905092915050565b600061332260001984600802613304565b1980831691505092915050565b600061333b8383613311565b9150826002028217905092915050565b6133548261287b565b67ffffffffffffffff81111561336d5761336c6129ff565b5b6133778254612eba565b6133828282856132be565b600060209050601f8311600181146133b557600084156133a3578287015190505b6133ad858261332f565b865550613415565b601f1984166133c38661319f565b60005b828110156133eb578489015182556001820191506020850194506020810190506133c6565b868310156134085784890151613404601f891682613311565b8355505b6001600288020188555050505b505050505050565b7f5761697420626162790000000000000000000000000000000000000000000000600082015250565b6000613453600983612886565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c382612733565b91506134ce83612733565b92508282019050808211156134e6576134e5613489565b5b92915050565b7f6d696e742077726f6e67206e756d626572000000000000000000000000000000600082015250565b6000613522601183612886565b915061352d826134ec565b602082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f746f6f206d756368000000000000000000000000000000000000000000000000600082015250565b600061358e600883612886565b915061359982613558565b602082019050919050565b600060208201905081810360008301526135bd81613581565b9050919050565b60006135cf82612733565b91506135da83612733565b92508282026135e881612733565b915082820484148315176135ff576135fe613489565b5b5092915050565b600060408201905061361b6000830185612851565b6136286020830184612851565b9392505050565b600061363a82612733565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366c5761366b613489565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006136d3602983612886565b91506136de82613677565b604082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613765602a83612886565b915061377082613709565b604082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006137d1601983612886565b91506137dc8261379b565b602082019050919050565b60006020820190508181036000830152613800816137c4565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000613863603183612886565b915061386e82613807565b604082019050919050565b6000602082019050818103600083015261389281613856565b9050919050565b600081905092915050565b60006138af8261287b565b6138b98185613899565b93506138c9818560208601612897565b80840191505092915050565b60006138e182856138a4565b91506138ed82846138a4565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613955602683612886565b9150613960826138f9565b604082019050919050565b6000602082019050818103600083015261398481613948565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006139e7602e83612886565b91506139f28261398b565b604082019050919050565b60006020820190508181036000830152613a16816139da565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613a79602c83612886565b9150613a8482613a1d565b604082019050919050565b60006020820190508181036000830152613aa881613a6c565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613b0b602983612886565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b9d602483612886565b9150613ba882613b41565b604082019050919050565b60006020820190508181036000830152613bcc81613b90565b9050919050565b6000613bde82612733565b9150613be983612733565b9250828203905081811115613c0157613c00613489565b5b92915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c3d602083612886565b9150613c4882613c07565b602082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613ca9601c83612886565b9150613cb482613c73565b602082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d3b603283612886565b9150613d4682613cdf565b604082019050919050565b60006020820190508181036000830152613d6a81613d2e565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613dcd602f83612886565b9150613dd882613d71565b604082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613e2a82613e03565b613e348185613e0e565b9350613e44818560208601612897565b613e4d816128c1565b840191505092915050565b6000608082019050613e6d600083018761295f565b613e7a602083018661295f565b613e876040830185612851565b8181036060830152613e998184613e1f565b905095945050505050565b600081519050613eb3816127c2565b92915050565b600060208284031215613ecf57613ece612729565b5b6000613edd84828501613ea4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2082612733565b9150613f2b83612733565b925082613f3b57613f3a613ee6565b5b828204905092915050565b6000613f5182612733565b9150613f5c83612733565b925082613f6c57613f6b613ee6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122061bc4ab3efb4d23d61eeb0e419a2f14384aa391a4eb2da038edc559d59711b5164736f6c634300081200330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f6368697070616e6461732e78797a2f6a736f6e2f00000000
Deployed Bytecode
0x6080604052600436106101e25760003560e01c80636352211e1161010257806395d89b4111610095578063b88d4fde11610064578063b88d4fde146106aa578063c87b56dd146106d3578063e985e9c514610710578063f2fde38b1461074d576101e2565b806395d89b4114610602578063a035b1fe1461062d578063a22cb46514610658578063a2b40d1914610681576101e2565b8063715018a6116100d1578063715018a61461056c57806383ebc808146105835780638c491d63146105ae5780638da5cb5b146105d7576101e2565b80636352211e1461049c57806367765b87146104d95780636c0360eb1461050457806370a082311461052f576101e2565b806323b872dd1161017a57806342842e0e1161014957806342842e0e14610405578063441f95711461042e57806355f804b3146104575780635f42a00614610480576101e2565b806323b872dd1461035d57806334eafb11146103865780633950891f146103b15780633ccfd60b146103ee576101e2565b8063081812fc116101b6578063081812fc146102a3578063095ea7b3146102e0578063162094c41461030957806318160ddd14610332576101e2565b8062739f2a146101e757806301ffc9a71461021057806306704bd61461024d57806306fdde0314610278575b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612769565b610776565b005b34801561021c57600080fd5b50610237600480360381019061023291906127ee565b6107fc565b6040516102449190612836565b60405180910390f35b34801561025957600080fd5b506102626108de565b60405161026f9190612860565b60405180910390f35b34801561028457600080fd5b5061028d6108e4565b60405161029a919061290b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612769565b610976565b6040516102d7919061296e565b60405180910390f35b3480156102ec57600080fd5b50610307600480360381019061030291906129b5565b6109fb565b005b34801561031557600080fd5b50610330600480360381019061032b9190612b2a565b610b12565b005b34801561033e57600080fd5b50610347610b9c565b6040516103549190612860565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612b86565b610ba6565b005b34801561039257600080fd5b5061039b610c06565b6040516103a89190612860565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612bd9565b610c0c565b6040516103e59190612860565b60405180910390f35b3480156103fa57600080fd5b50610403610c24565b005b34801561041157600080fd5b5061042c60048036038101906104279190612b86565b610cf6565b005b34801561043a57600080fd5b5061045560048036038101906104509190612769565b610d16565b005b34801561046357600080fd5b5061047e60048036038101906104799190612c06565b610de1565b005b61049a60048036038101906104959190612769565b610e70565b005b3480156104a857600080fd5b506104c360048036038101906104be9190612769565b611102565b6040516104d0919061296e565b60405180910390f35b3480156104e557600080fd5b506104ee6111b3565b6040516104fb9190612860565b60405180910390f35b34801561051057600080fd5b506105196111b9565b604051610526919061290b565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190612bd9565b611247565b6040516105639190612860565b60405180910390f35b34801561057857600080fd5b506105816112fe565b005b34801561058f57600080fd5b5061059861143b565b6040516105a59190612860565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612769565b611441565b005b3480156105e357600080fd5b506105ec6114c7565b6040516105f9919061296e565b60405180910390f35b34801561060e57600080fd5b506106176114f1565b604051610624919061290b565b60405180910390f35b34801561063957600080fd5b50610642611583565b60405161064f9190612860565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612c7b565b611589565b005b34801561068d57600080fd5b506106a860048036038101906106a39190612769565b611709565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612d5c565b61178f565b005b3480156106df57600080fd5b506106fa60048036038101906106f59190612769565b6117f1565b604051610707919061290b565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190612ddf565b611942565b6040516107449190612836565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190612bd9565b6119d6565b005b61077e611b81565b73ffffffffffffffffffffffffffffffffffffffff1661079c6114c7565b73ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990612e6b565b60405180910390fd5b80600c8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d757506108d682611b89565b5b9050919050565b60085481565b6060600080546108f390612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461091f90612eba565b801561096c5780601f106109415761010080835404028352916020019161096c565b820191906000526020600020905b81548152906001019060200180831161094f57829003601f168201915b5050505050905090565b600061098182611bf3565b6109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790612f5d565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a0682611102565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90612fef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a95611b81565b73ffffffffffffffffffffffffffffffffffffffff161480610ac45750610ac381610abe611b81565b611942565b5b610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afa90613081565b60405180910390fd5b610b0d8383611c5f565b505050565b610b1a611b81565b73ffffffffffffffffffffffffffffffffffffffff16610b386114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590612e6b565b60405180910390fd5b610b988282611d18565b5050565b6000600854905090565b610bb7610bb1611b81565b82611d85565b610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90613113565b60405180910390fd5b610c01838383611e63565b505050565b60095481565b600e6020528060005260406000206000915090505481565b610c2c611b81565b73ffffffffffffffffffffffffffffffffffffffff16610c4a6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790612e6b565b60405180910390fd5b6000479050610cad6114c7565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610cf2573d6000803e3d6000fd5b5050565b610d118383836040518060200160405280600081525061178f565b505050565b610d1e611b81565b73ffffffffffffffffffffffffffffffffffffffff16610d3c6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990612e6b565b60405180910390fd5b612710811115610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce9061317f565b60405180910390fd5b8060098190555050565b610de9611b81565b73ffffffffffffffffffffffffffffffffffffffff16610e076114c7565b73ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490612e6b565b60405180910390fd5b80600d9081610e6c919061334b565b5050565b600c54421015610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613469565b60405180910390fd5b600081118015610f115750600a5481600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0e91906134b8565b11155b610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790613538565b60405180910390fd5b60095481600854610f6191906134b8565b1115610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f99906135a4565b60405180910390fd5b600b5481610fb091906135c4565b341015610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe99061317f565b60405180910390fd5b610ffa611b81565b73ffffffffffffffffffffffffffffffffffffffff167f1d41e02b08d5a35bb72b6a1c29dcc6df862a58a45f0421a01bc488029a3623ec600160085461104091906134b8565b8360405161104f929190613606565b60405180910390a260005b818110156110a85761109561106d611b81565b600860008154809291906110809061362f565b91905055600161109091906134b8565b6120be565b80806110a09061362f565b91505061105a565b5080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110f891906134b8565b9250508190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906136e9565b60405180910390fd5b80915050919050565b600a5481565b600d80546111c690612eba565b80601f01602080910402602001604051908101604052809291908181526020018280546111f290612eba565b801561123f5780601f106112145761010080835404028352916020019161123f565b820191906000526020600020905b81548152906001019060200180831161122257829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae9061377b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611306611b81565b73ffffffffffffffffffffffffffffffffffffffff166113246114c7565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190612e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5481565b611449611b81565b73ffffffffffffffffffffffffffffffffffffffff166114676114c7565b73ffffffffffffffffffffffffffffffffffffffff16146114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b490612e6b565b60405180910390fd5b80600a8190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461150090612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461152c90612eba565b80156115795780601f1061154e57610100808354040283529160200191611579565b820191906000526020600020905b81548152906001019060200180831161155c57829003601f168201915b5050505050905090565b600b5481565b611591611b81565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f5906137e7565b60405180910390fd5b806005600061160b611b81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166116b8611b81565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116fd9190612836565b60405180910390a35050565b611711611b81565b73ffffffffffffffffffffffffffffffffffffffff1661172f6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90612e6b565b60405180910390fd5b80600b8190555050565b6117a061179a611b81565b83611d85565b6117df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d690613113565b60405180910390fd5b6117eb8484848461228b565b50505050565b60606117fc82611bf3565b61183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613879565b60405180910390fd5b600060066000848152602001908152602001600020805461185b90612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461188790612eba565b80156118d45780601f106118a9576101008083540402835291602001916118d4565b820191906000526020600020905b8154815290600101906020018083116118b757829003601f168201915b5050505050905060006118e56122e7565b905060008151036118fa57819250505061193d565b60008251111561192f5780826040516020016119179291906138d5565b6040516020818303038152906040529250505061193d565b61193884612379565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119de611b81565b73ffffffffffffffffffffffffffffffffffffffff166119fc6114c7565b73ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4990612e6b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab89061396b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611cd283611102565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611d2182611bf3565b611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d57906139fd565b60405180910390fd5b80600660008481526020019081526020016000209081611d80919061334b565b505050565b6000611d9082611bf3565b611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc690613a8f565b60405180910390fd5b6000611dda83611102565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e4957508373ffffffffffffffffffffffffffffffffffffffff16611e3184610976565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e5a5750611e598185611942565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e8382611102565b73ffffffffffffffffffffffffffffffffffffffff1614611ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed090613b21565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f90613bb3565b60405180910390fd5b611f53838383612420565b611f5e600082611c5f565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fae9190613bd3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461200591906134b8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490613c53565b60405180910390fd5b61213681611bf3565b15612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d90613cbf565b60405180910390fd5b61218260008383612420565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121d291906134b8565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b612296848484611e63565b6122a284848484612425565b6122e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d890613d51565b60405180910390fd5b50505050565b6060600d80546122f690612eba565b80601f016020809104026020016040519081016040528092919081815260200182805461232290612eba565b801561236f5780601f106123445761010080835404028352916020019161236f565b820191906000526020600020905b81548152906001019060200180831161235257829003601f168201915b5050505050905090565b606061238482611bf3565b6123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90613de3565b60405180910390fd5b60006123cd6122e7565b905060008151116123ed5760405180602001604052806000815250612418565b806123f7846125ac565b6040516020016124089291906138d5565b6040516020818303038152906040525b915050919050565b505050565b60006124468473ffffffffffffffffffffffffffffffffffffffff1661270c565b1561259f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261246f611b81565b8786866040518563ffffffff1660e01b81526004016124919493929190613e58565b6020604051808303816000875af19250505080156124cd57506040513d601f19601f820116820180604052508101906124ca9190613eb9565b60015b61254f573d80600081146124fd576040519150601f19603f3d011682016040523d82523d6000602084013e612502565b606091505b506000815103612547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253e90613d51565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125a4565b600190505b949350505050565b6060600082036125f3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612707565b600082905060005b6000821461262557808061260e9061362f565b915050600a8261261e9190613f15565b91506125fb565b60008167ffffffffffffffff811115612641576126406129ff565b5b6040519080825280601f01601f1916602001820160405280156126735781602001600182028036833780820191505090505b5090505b600085146127005760018261268c9190613bd3565b9150600a8561269b9190613f46565b60306126a791906134b8565b60f81b8183815181106126bd576126bc613f77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126f99190613f15565b9450612677565b8093505050505b919050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61274681612733565b811461275157600080fd5b50565b6000813590506127638161273d565b92915050565b60006020828403121561277f5761277e612729565b5b600061278d84828501612754565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127cb81612796565b81146127d657600080fd5b50565b6000813590506127e8816127c2565b92915050565b60006020828403121561280457612803612729565b5b6000612812848285016127d9565b91505092915050565b60008115159050919050565b6128308161281b565b82525050565b600060208201905061284b6000830184612827565b92915050565b61285a81612733565b82525050565b60006020820190506128756000830184612851565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128b557808201518184015260208101905061289a565b60008484015250505050565b6000601f19601f8301169050919050565b60006128dd8261287b565b6128e78185612886565b93506128f7818560208601612897565b612900816128c1565b840191505092915050565b6000602082019050818103600083015261292581846128d2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129588261292d565b9050919050565b6129688161294d565b82525050565b6000602082019050612983600083018461295f565b92915050565b6129928161294d565b811461299d57600080fd5b50565b6000813590506129af81612989565b92915050565b600080604083850312156129cc576129cb612729565b5b60006129da858286016129a0565b92505060206129eb85828601612754565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a37826128c1565b810181811067ffffffffffffffff82111715612a5657612a556129ff565b5b80604052505050565b6000612a6961271f565b9050612a758282612a2e565b919050565b600067ffffffffffffffff821115612a9557612a946129ff565b5b612a9e826128c1565b9050602081019050919050565b82818337600083830152505050565b6000612acd612ac884612a7a565b612a5f565b905082815260208101848484011115612ae957612ae86129fa565b5b612af4848285612aab565b509392505050565b600082601f830112612b1157612b106129f5565b5b8135612b21848260208601612aba565b91505092915050565b60008060408385031215612b4157612b40612729565b5b6000612b4f85828601612754565b925050602083013567ffffffffffffffff811115612b7057612b6f61272e565b5b612b7c85828601612afc565b9150509250929050565b600080600060608486031215612b9f57612b9e612729565b5b6000612bad868287016129a0565b9350506020612bbe868287016129a0565b9250506040612bcf86828701612754565b9150509250925092565b600060208284031215612bef57612bee612729565b5b6000612bfd848285016129a0565b91505092915050565b600060208284031215612c1c57612c1b612729565b5b600082013567ffffffffffffffff811115612c3a57612c3961272e565b5b612c4684828501612afc565b91505092915050565b612c588161281b565b8114612c6357600080fd5b50565b600081359050612c7581612c4f565b92915050565b60008060408385031215612c9257612c91612729565b5b6000612ca0858286016129a0565b9250506020612cb185828601612c66565b9150509250929050565b600067ffffffffffffffff821115612cd657612cd56129ff565b5b612cdf826128c1565b9050602081019050919050565b6000612cff612cfa84612cbb565b612a5f565b905082815260208101848484011115612d1b57612d1a6129fa565b5b612d26848285612aab565b509392505050565b600082601f830112612d4357612d426129f5565b5b8135612d53848260208601612cec565b91505092915050565b60008060008060808587031215612d7657612d75612729565b5b6000612d84878288016129a0565b9450506020612d95878288016129a0565b9350506040612da687828801612754565b925050606085013567ffffffffffffffff811115612dc757612dc661272e565b5b612dd387828801612d2e565b91505092959194509250565b60008060408385031215612df657612df5612729565b5b6000612e04858286016129a0565b9250506020612e15858286016129a0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e55602083612886565b9150612e6082612e1f565b602082019050919050565b60006020820190508181036000830152612e8481612e48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ed257607f821691505b602082108103612ee557612ee4612e8b565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612f47602c83612886565b9150612f5282612eeb565b604082019050919050565b60006020820190508181036000830152612f7681612f3a565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd9602183612886565b9150612fe482612f7d565b604082019050919050565b6000602082019050818103600083015261300881612fcc565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061306b603883612886565b91506130768261300f565b604082019050919050565b6000602082019050818103600083015261309a8161305e565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006130fd603183612886565b9150613108826130a1565b604082019050919050565b6000602082019050818103600083015261312c816130f0565b9050919050565b7f76616c7565206572726f72000000000000000000000000000000000000000000600082015250565b6000613169600b83612886565b915061317482613133565b602082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826131c4565b61320b86836131c4565b95508019841693508086168417925050509392505050565b6000819050919050565b600061324861324361323e84612733565b613223565b612733565b9050919050565b6000819050919050565b6132628361322d565b61327661326e8261324f565b8484546131d1565b825550505050565b600090565b61328b61327e565b613296818484613259565b505050565b5b818110156132ba576132af600082613283565b60018101905061329c565b5050565b601f8211156132ff576132d08161319f565b6132d9846131b4565b810160208510156132e8578190505b6132fc6132f4856131b4565b83018261329b565b50505b505050565b600082821c905092915050565b600061332260001984600802613304565b1980831691505092915050565b600061333b8383613311565b9150826002028217905092915050565b6133548261287b565b67ffffffffffffffff81111561336d5761336c6129ff565b5b6133778254612eba565b6133828282856132be565b600060209050601f8311600181146133b557600084156133a3578287015190505b6133ad858261332f565b865550613415565b601f1984166133c38661319f565b60005b828110156133eb578489015182556001820191506020850194506020810190506133c6565b868310156134085784890151613404601f891682613311565b8355505b6001600288020188555050505b505050505050565b7f5761697420626162790000000000000000000000000000000000000000000000600082015250565b6000613453600983612886565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c382612733565b91506134ce83612733565b92508282019050808211156134e6576134e5613489565b5b92915050565b7f6d696e742077726f6e67206e756d626572000000000000000000000000000000600082015250565b6000613522601183612886565b915061352d826134ec565b602082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f746f6f206d756368000000000000000000000000000000000000000000000000600082015250565b600061358e600883612886565b915061359982613558565b602082019050919050565b600060208201905081810360008301526135bd81613581565b9050919050565b60006135cf82612733565b91506135da83612733565b92508282026135e881612733565b915082820484148315176135ff576135fe613489565b5b5092915050565b600060408201905061361b6000830185612851565b6136286020830184612851565b9392505050565b600061363a82612733565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366c5761366b613489565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006136d3602983612886565b91506136de82613677565b604082019050919050565b60006020820190508181036000830152613702816136c6565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613765602a83612886565b915061377082613709565b604082019050919050565b6000602082019050818103600083015261379481613758565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006137d1601983612886565b91506137dc8261379b565b602082019050919050565b60006020820190508181036000830152613800816137c4565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000613863603183612886565b915061386e82613807565b604082019050919050565b6000602082019050818103600083015261389281613856565b9050919050565b600081905092915050565b60006138af8261287b565b6138b98185613899565b93506138c9818560208601612897565b80840191505092915050565b60006138e182856138a4565b91506138ed82846138a4565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613955602683612886565b9150613960826138f9565b604082019050919050565b6000602082019050818103600083015261398481613948565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006139e7602e83612886565b91506139f28261398b565b604082019050919050565b60006020820190508181036000830152613a16816139da565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613a79602c83612886565b9150613a8482613a1d565b604082019050919050565b60006020820190508181036000830152613aa881613a6c565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613b0b602983612886565b9150613b1682613aaf565b604082019050919050565b60006020820190508181036000830152613b3a81613afe565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b9d602483612886565b9150613ba882613b41565b604082019050919050565b60006020820190508181036000830152613bcc81613b90565b9050919050565b6000613bde82612733565b9150613be983612733565b9250828203905081811115613c0157613c00613489565b5b92915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613c3d602083612886565b9150613c4882613c07565b602082019050919050565b60006020820190508181036000830152613c6c81613c30565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613ca9601c83612886565b9150613cb482613c73565b602082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d3b603283612886565b9150613d4682613cdf565b604082019050919050565b60006020820190508181036000830152613d6a81613d2e565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613dcd602f83612886565b9150613dd882613d71565b604082019050919050565b60006020820190508181036000830152613dfc81613dc0565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613e2a82613e03565b613e348185613e0e565b9350613e44818560208601612897565b613e4d816128c1565b840191505092915050565b6000608082019050613e6d600083018761295f565b613e7a602083018661295f565b613e876040830185612851565b8181036060830152613e998184613e1f565b905095945050505050565b600081519050613eb3816127c2565b92915050565b600060208284031215613ecf57613ece612729565b5b6000613edd84828501613ea4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2082612733565b9150613f2b83612733565b925082613f3b57613f3a613ee6565b5b828204905092915050565b6000613f5182612733565b9150613f5c83612733565b925082613f6c57613f6b613ee6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122061bc4ab3efb4d23d61eeb0e419a2f14384aa391a4eb2da038edc559d59711b5164736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f6368697070616e6461732e78797a2f6a736f6e2f00000000
-----Decoded View---------------
Arg [0] : baseURI_ (string): https://chippandas.xyz/json/
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001c
Arg [2] : 68747470733a2f2f6368697070616e6461732e78797a2f6a736f6e2f00000000
Deployed Bytecode Sourcemap
36809:2346:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38225:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20707:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36942:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21642:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23110:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22644:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38339:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37512:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24005:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36976:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37215:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39015:137;;;;;;;;;;;;;:::i;:::-;;24383:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37840:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37736:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38484:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21335:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37027:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37187:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21064:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36219:148;;;;;;;;;;;;;:::i;:::-;;37128:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38013:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35566:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21812:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37074:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23405:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38120:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24606:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32976:682;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23773:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36523:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38225:99;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38309:7:::1;38295:11;:21;;;;38225:99:::0;:::o;20707:292::-;20809:4;20848:25;20833:40;;;:11;:40;;;;:105;;;;20905:33;20890:48;;;:11;:48;;;;20833:105;:158;;;;20955:36;20979:11;20955:23;:36::i;:::-;20833:158;20826:165;;20707:292;;;:::o;36942:27::-;;;;:::o;21642:100::-;21696:13;21729:5;21722:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21642:100;:::o;23110:222::-;23186:7;23214:16;23222:7;23214;:16::i;:::-;23206:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23300:15;:24;23316:7;23300:24;;;;;;;;;;;;;;;;;;;;;23293:31;;23110:222;;;:::o;22644:399::-;22725:13;22741:23;22756:7;22741:14;:23::i;:::-;22725:39;;22789:5;22783:11;;:2;:11;;;22775:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22870:5;22854:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;22879:37;22896:5;22903:12;:10;:12::i;:::-;22879:16;:37::i;:::-;22854:62;22846:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;23014:21;23023:2;23027:7;23014:8;:21::i;:::-;22714:329;22644:399;;:::o;38339:133::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38431:33:::1;38444:8;38454:9;38431:12;:33::i;:::-;38339:133:::0;;:::o;37512:99::-;37564:7;37591:12;;37584:19;;37512:99;:::o;24005:306::-;24166:41;24185:12;:10;:12::i;:::-;24199:7;24166:18;:41::i;:::-;24158:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24275:28;24285:4;24291:2;24295:7;24275:9;:28::i;:::-;24005:306;;;:::o;36976:32::-;;;;:::o;37215:48::-;;;;;;;;;;;;;;;;;:::o;39015:137::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39063:12:::1;39078:21;39063:36;;39118:7;:5;:7::i;:::-;39110:25;;:34;39136:7;39110:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;39052:100;39015:137::o:0;24383:151::-;24487:39;24504:4;24510:2;24514:7;24487:39;;;;;;;;;;;;:16;:39::i;:::-;24383:151;;;:::o;37840:161::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37937:5:::1;37923:11;:19;;37915:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;37982:11;37969:10;:24;;;;37840:161:::0;:::o;37736:96::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37817:7:::1;37807;:17;;;;;;:::i;:::-;;37736:96:::0;:::o;38484:514::-;37458:11;;37439:15;:30;;37431:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;38574:1:::1;38566:6;:9;:57;;;;;38615:8;;38605:6;38579:13;:25;38593:10;38579:25;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;:44;;38566:57;38558:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38689:10;;38679:6;38664:12;;:21;;;;:::i;:::-;:35;;38656:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;38753:5;;38744:6;:14;;;;:::i;:::-;38731:9;:27;;38723:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;38801:12;:10;:12::i;:::-;38790:48;;;38828:1;38815:12;;:14;;;;:::i;:::-;38831:6;38790:48;;;;;;;:::i;:::-;;;;;;;;38853:9;38849:98;38869:6;38866:1;:9;38849:98;;;38896:39;38902:12;:10;:12::i;:::-;38920;;:14;;;;;;;;;:::i;:::-;;;;;38916:1;:18;;;;:::i;:::-;38896:5;:39::i;:::-;38877:3;;;;;:::i;:::-;;;;38849:98;;;;38984:6;38957:13;:25;38971:10;38957:25;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;38484:514:::0;:::o;21335:239::-;21407:7;21427:13;21443:7;:16;21451:7;21443:16;;;;;;;;;;;;;;;;;;;;;21427:32;;21495:1;21478:19;;:5;:19;;;21470:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21561:5;21554:12;;;21335:239;;;:::o;37027:27::-;;;;:::o;37187:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21064:208::-;21136:7;21181:1;21164:19;;:5;:19;;;21156:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;21248:9;:16;21258:5;21248:16;;;;;;;;;;;;;;;;21241:23;;21064:208;;;:::o;36219:148::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36326:1:::1;36289:40;;36310:6;;;;;;;;;;;36289:40;;;;;;;;;;;;36357:1;36340:6;;:19;;;;;;;;;;;;;;;;;;36219:148::o:0;37128:39::-;;;;:::o;38013:99::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38095:9:::1;38084:8;:20;;;;38013:99:::0;:::o;35566:87::-;35612:7;35639:6;;;;;;;;;;;35632:13;;35566:87;:::o;21812:104::-;21868:13;21901:7;21894:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21812:104;:::o;37074:34::-;;;;:::o;23405:296::-;23520:12;:10;:12::i;:::-;23508:24;;:8;:24;;;23500:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23621:8;23576:18;:32;23595:12;:10;:12::i;:::-;23576:32;;;;;;;;;;;;;;;:42;23609:8;23576:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23674:8;23645:48;;23660:12;:10;:12::i;:::-;23645:48;;;23684:8;23645:48;;;;;;:::i;:::-;;;;;;;;23405:296;;:::o;38120:93::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38196:9:::1;38188:5;:17;;;;38120:93:::0;:::o;24606:285::-;24738:41;24757:12;:10;:12::i;:::-;24771:7;24738:18;:41::i;:::-;24730:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24844:39;24858:4;24864:2;24868:7;24877:5;24844:13;:39::i;:::-;24606:285;;;;:::o;32976:682::-;33049:13;33083:16;33091:7;33083;:16::i;:::-;33075:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;33167:23;33193:10;:19;33204:7;33193:19;;;;;;;;;;;33167:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33223:18;33244:10;:8;:10::i;:::-;33223:31;;33353:1;33337:4;33331:18;:23;33327:72;;33378:9;33371:16;;;;;;33327:72;33529:1;33509:9;33503:23;:27;33499:108;;;33578:4;33584:9;33561:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;33547:48;;;;;;33499:108;33627:23;33642:7;33627:14;:23::i;:::-;33620:30;;;;32976:682;;;;:::o;23773:164::-;23870:4;23894:18;:25;23913:5;23894:25;;;;;;;;;;;;;;;:35;23920:8;23894:35;;;;;;;;;;;;;;;;;;;;;;;;;23887:42;;23773:164;;;;:::o;36523:244::-;35798:12;:10;:12::i;:::-;35787:23;;:7;:5;:7::i;:::-;:23;;;35779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36632:1:::1;36612:22;;:8;:22;;::::0;36604:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36722:8;36693:38;;36714:6;;;;;;;;;;;36693:38;;;;;;;;;;;;36751:8;36742:6;;:17;;;;;;;;;;;;;;;;;;36523:244:::0;:::o;16000:98::-;16053:7;16080:10;16073:17;;16000:98;:::o;19200:157::-;19285:4;19324:25;19309:40;;;:11;:40;;;;19302:47;;19200:157;;;:::o;26360:127::-;26425:4;26477:1;26449:30;;:7;:16;26457:7;26449:16;;;;;;;;;;;;;;;;;;;;;:30;;;;26442:37;;26360:127;;;:::o;30255:174::-;30357:2;30330:15;:24;30346:7;30330:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30413:7;30409:2;30375:46;;30384:23;30399:7;30384:14;:23::i;:::-;30375:46;;;;;;;;;;;;30255:174;;:::o;33815:217::-;33915:16;33923:7;33915;:16::i;:::-;33907:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;34015:9;33993:10;:19;34004:7;33993:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;33815:217;;:::o;26655:348::-;26748:4;26773:16;26781:7;26773;:16::i;:::-;26765:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26849:13;26865:23;26880:7;26865:14;:23::i;:::-;26849:39;;26918:5;26907:16;;:7;:16;;;:51;;;;26951:7;26927:31;;:20;26939:7;26927:11;:20::i;:::-;:31;;;26907:51;:87;;;;26962:32;26979:5;26986:7;26962:16;:32::i;:::-;26907:87;26899:96;;;26655:348;;;;:::o;29588:548::-;29713:4;29686:31;;:23;29701:7;29686:14;:23::i;:::-;:31;;;29678:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;29796:1;29782:16;;:2;:16;;;29774:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;29853:39;29874:4;29880:2;29884:7;29853:20;:39::i;:::-;29958:29;29975:1;29979:7;29958:8;:29::i;:::-;30020:1;30001:9;:15;30011:4;30001:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;30049:1;30032:9;:13;30042:2;30032:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;30080:2;30061:7;:16;30069:7;30061:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;30120:7;30116:2;30101:27;;30110:4;30101:27;;;;;;;;;;;;29588:548;;;:::o;28271:385::-;28365:1;28351:16;;:2;:16;;;28343:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28424:16;28432:7;28424;:16::i;:::-;28423:17;28415:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28487:45;28516:1;28520:2;28524:7;28487:20;:45::i;:::-;28563:1;28546:9;:13;28556:2;28546:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28594:2;28575:7;:16;28583:7;28575:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28640:7;28636:2;28615:33;;28632:1;28615:33;;;;;;;;;;;;28271:385;;:::o;25774:272::-;25888:28;25898:4;25904:2;25908:7;25888:9;:28::i;:::-;25935:48;25958:4;25964:2;25968:7;25977:5;25935:22;:48::i;:::-;25927:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;25774:272;;;;:::o;37620:107::-;37680:13;37712:7;37705:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37620:107;:::o;21988:361::-;22061:13;22095:16;22103:7;22095;:16::i;:::-;22087:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22177:21;22201:10;:8;:10::i;:::-;22177:34;;22253:1;22235:7;22229:21;:25;:112;;;;;;;;;;;;;;;;;22294:7;22303:18;:7;:16;:18::i;:::-;22277:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22229:112;22222:119;;;21988:361;;;:::o;32452:93::-;;;;:::o;30995:843::-;31116:4;31142:15;:2;:13;;;:15::i;:::-;31138:693;;;31194:2;31178:36;;;31215:12;:10;:12::i;:::-;31229:4;31235:7;31244:5;31178:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31174:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31441:1;31424:6;:13;:18;31420:341;;31467:60;;;;;;;;;;:::i;:::-;;;;;;;;31420:341;31711:6;31705:13;31696:6;31692:2;31688:15;31681:38;31174:602;31311:45;;;31301:55;;;:6;:55;;;;31294:62;;;;;31138:693;31815:4;31808:11;;30995:843;;;;;;;:::o;16650:724::-;16706:13;16937:1;16928:5;:10;16924:53;;16955:10;;;;;;;;;;;;;;;;;;;;;16924:53;16987:12;17002:5;16987:20;;17018:14;17043:78;17058:1;17050:4;:9;17043:78;;17076:8;;;;;:::i;:::-;;;;17107:2;17099:10;;;;;:::i;:::-;;;17043:78;;;17131:19;17163:6;17153:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17131:39;;17181:154;17197:1;17188:5;:10;17181:154;;17225:1;17215:11;;;;;:::i;:::-;;;17292:2;17284:5;:10;;;;:::i;:::-;17271:2;:24;;;;:::i;:::-;17258:39;;17241:6;17248;17241:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;17321:2;17312:11;;;;;:::i;:::-;;;17181:154;;;17359:6;17345:21;;;;;16650:724;;;;:::o;8108:423::-;8168:4;8377:12;8488:7;8476:20;8468:28;;8522:1;8515:4;:8;8508:15;;;8108:423;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:149::-;1061:7;1101:66;1094:5;1090:78;1079:89;;1025:149;;;:::o;1180:120::-;1252:23;1269:5;1252:23;:::i;:::-;1245:5;1242:34;1232:62;;1290:1;1287;1280:12;1232:62;1180:120;:::o;1306:137::-;1351:5;1389:6;1376:20;1367:29;;1405:32;1431:5;1405:32;:::i;:::-;1306:137;;;;:::o;1449:327::-;1507:6;1556:2;1544:9;1535:7;1531:23;1527:32;1524:119;;;1562:79;;:::i;:::-;1524:119;1682:1;1707:52;1751:7;1742:6;1731:9;1727:22;1707:52;:::i;:::-;1697:62;;1653:116;1449:327;;;;:::o;1782:90::-;1816:7;1859:5;1852:13;1845:21;1834:32;;1782:90;;;:::o;1878:109::-;1959:21;1974:5;1959:21;:::i;:::-;1954:3;1947:34;1878:109;;:::o;1993:210::-;2080:4;2118:2;2107:9;2103:18;2095:26;;2131:65;2193:1;2182:9;2178:17;2169:6;2131:65;:::i;:::-;1993:210;;;;:::o;2209:118::-;2296:24;2314:5;2296:24;:::i;:::-;2291:3;2284:37;2209:118;;:::o;2333:222::-;2426:4;2464:2;2453:9;2449:18;2441:26;;2477:71;2545:1;2534:9;2530:17;2521:6;2477:71;:::i;:::-;2333:222;;;;:::o;2561:99::-;2613:6;2647:5;2641:12;2631:22;;2561:99;;;:::o;2666:169::-;2750:11;2784:6;2779:3;2772:19;2824:4;2819:3;2815:14;2800:29;;2666:169;;;;:::o;2841:246::-;2922:1;2932:113;2946:6;2943:1;2940:13;2932:113;;;3031:1;3026:3;3022:11;3016:18;3012:1;3007:3;3003:11;2996:39;2968:2;2965:1;2961:10;2956:15;;2932:113;;;3079:1;3070:6;3065:3;3061:16;3054:27;2903:184;2841:246;;;:::o;3093:102::-;3134:6;3185:2;3181:7;3176:2;3169:5;3165:14;3161:28;3151:38;;3093:102;;;:::o;3201:377::-;3289:3;3317:39;3350:5;3317:39;:::i;:::-;3372:71;3436:6;3431:3;3372:71;:::i;:::-;3365:78;;3452:65;3510:6;3505:3;3498:4;3491:5;3487:16;3452:65;:::i;:::-;3542:29;3564:6;3542:29;:::i;:::-;3537:3;3533:39;3526:46;;3293:285;3201:377;;;;:::o;3584:313::-;3697:4;3735:2;3724:9;3720:18;3712:26;;3784:9;3778:4;3774:20;3770:1;3759:9;3755:17;3748:47;3812:78;3885:4;3876:6;3812:78;:::i;:::-;3804:86;;3584:313;;;;:::o;3903:126::-;3940:7;3980:42;3973:5;3969:54;3958:65;;3903:126;;;:::o;4035:96::-;4072:7;4101:24;4119:5;4101:24;:::i;:::-;4090:35;;4035:96;;;:::o;4137:118::-;4224:24;4242:5;4224:24;:::i;:::-;4219:3;4212:37;4137:118;;:::o;4261:222::-;4354:4;4392:2;4381:9;4377:18;4369:26;;4405:71;4473:1;4462:9;4458:17;4449:6;4405:71;:::i;:::-;4261:222;;;;:::o;4489:122::-;4562:24;4580:5;4562:24;:::i;:::-;4555:5;4552:35;4542:63;;4601:1;4598;4591:12;4542:63;4489:122;:::o;4617:139::-;4663:5;4701:6;4688:20;4679:29;;4717:33;4744:5;4717:33;:::i;:::-;4617:139;;;;:::o;4762:474::-;4830:6;4838;4887:2;4875:9;4866:7;4862:23;4858:32;4855:119;;;4893:79;;:::i;:::-;4855:119;5013:1;5038:53;5083:7;5074:6;5063:9;5059:22;5038:53;:::i;:::-;5028:63;;4984:117;5140:2;5166:53;5211:7;5202:6;5191:9;5187:22;5166:53;:::i;:::-;5156:63;;5111:118;4762:474;;;;;:::o;5242:117::-;5351:1;5348;5341:12;5365:117;5474:1;5471;5464:12;5488:180;5536:77;5533:1;5526:88;5633:4;5630:1;5623:15;5657:4;5654:1;5647:15;5674:281;5757:27;5779:4;5757:27;:::i;:::-;5749:6;5745:40;5887:6;5875:10;5872:22;5851:18;5839:10;5836:34;5833:62;5830:88;;;5898:18;;:::i;:::-;5830:88;5938:10;5934:2;5927:22;5717:238;5674:281;;:::o;5961:129::-;5995:6;6022:20;;:::i;:::-;6012:30;;6051:33;6079:4;6071:6;6051:33;:::i;:::-;5961:129;;;:::o;6096:308::-;6158:4;6248:18;6240:6;6237:30;6234:56;;;6270:18;;:::i;:::-;6234:56;6308:29;6330:6;6308:29;:::i;:::-;6300:37;;6392:4;6386;6382:15;6374:23;;6096:308;;;:::o;6410:146::-;6507:6;6502:3;6497;6484:30;6548:1;6539:6;6534:3;6530:16;6523:27;6410:146;;;:::o;6562:425::-;6640:5;6665:66;6681:49;6723:6;6681:49;:::i;:::-;6665:66;:::i;:::-;6656:75;;6754:6;6747:5;6740:21;6792:4;6785:5;6781:16;6830:3;6821:6;6816:3;6812:16;6809:25;6806:112;;;6837:79;;:::i;:::-;6806:112;6927:54;6974:6;6969:3;6964;6927:54;:::i;:::-;6646:341;6562:425;;;;;:::o;7007:340::-;7063:5;7112:3;7105:4;7097:6;7093:17;7089:27;7079:122;;7120:79;;:::i;:::-;7079:122;7237:6;7224:20;7262:79;7337:3;7329:6;7322:4;7314:6;7310:17;7262:79;:::i;:::-;7253:88;;7069:278;7007:340;;;;:::o;7353:654::-;7431:6;7439;7488:2;7476:9;7467:7;7463:23;7459:32;7456:119;;;7494:79;;:::i;:::-;7456:119;7614:1;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7585:117;7769:2;7758:9;7754:18;7741:32;7800:18;7792:6;7789:30;7786:117;;;7822:79;;:::i;:::-;7786:117;7927:63;7982:7;7973:6;7962:9;7958:22;7927:63;:::i;:::-;7917:73;;7712:288;7353:654;;;;;:::o;8013:619::-;8090:6;8098;8106;8155:2;8143:9;8134:7;8130:23;8126:32;8123:119;;;8161:79;;:::i;:::-;8123:119;8281:1;8306:53;8351:7;8342:6;8331:9;8327:22;8306:53;:::i;:::-;8296:63;;8252:117;8408:2;8434:53;8479:7;8470:6;8459:9;8455:22;8434:53;:::i;:::-;8424:63;;8379:118;8536:2;8562:53;8607:7;8598:6;8587:9;8583:22;8562:53;:::i;:::-;8552:63;;8507:118;8013:619;;;;;:::o;8638:329::-;8697:6;8746:2;8734:9;8725:7;8721:23;8717:32;8714:119;;;8752:79;;:::i;:::-;8714:119;8872:1;8897:53;8942:7;8933:6;8922:9;8918:22;8897:53;:::i;:::-;8887:63;;8843:117;8638:329;;;;:::o;8973:509::-;9042:6;9091:2;9079:9;9070:7;9066:23;9062:32;9059:119;;;9097:79;;:::i;:::-;9059:119;9245:1;9234:9;9230:17;9217:31;9275:18;9267:6;9264:30;9261:117;;;9297:79;;:::i;:::-;9261:117;9402:63;9457:7;9448:6;9437:9;9433:22;9402:63;:::i;:::-;9392:73;;9188:287;8973:509;;;;:::o;9488:116::-;9558:21;9573:5;9558:21;:::i;:::-;9551:5;9548:32;9538:60;;9594:1;9591;9584:12;9538:60;9488:116;:::o;9610:133::-;9653:5;9691:6;9678:20;9669:29;;9707:30;9731:5;9707:30;:::i;:::-;9610:133;;;;:::o;9749:468::-;9814:6;9822;9871:2;9859:9;9850:7;9846:23;9842:32;9839:119;;;9877:79;;:::i;:::-;9839:119;9997:1;10022:53;10067:7;10058:6;10047:9;10043:22;10022:53;:::i;:::-;10012:63;;9968:117;10124:2;10150:50;10192:7;10183:6;10172:9;10168:22;10150:50;:::i;:::-;10140:60;;10095:115;9749:468;;;;;:::o;10223:307::-;10284:4;10374:18;10366:6;10363:30;10360:56;;;10396:18;;:::i;:::-;10360:56;10434:29;10456:6;10434:29;:::i;:::-;10426:37;;10518:4;10512;10508:15;10500:23;;10223:307;;;:::o;10536:423::-;10613:5;10638:65;10654:48;10695:6;10654:48;:::i;:::-;10638:65;:::i;:::-;10629:74;;10726:6;10719:5;10712:21;10764:4;10757:5;10753:16;10802:3;10793:6;10788:3;10784:16;10781:25;10778:112;;;10809:79;;:::i;:::-;10778:112;10899:54;10946:6;10941:3;10936;10899:54;:::i;:::-;10619:340;10536:423;;;;;:::o;10978:338::-;11033:5;11082:3;11075:4;11067:6;11063:17;11059:27;11049:122;;11090:79;;:::i;:::-;11049:122;11207:6;11194:20;11232:78;11306:3;11298:6;11291:4;11283:6;11279:17;11232:78;:::i;:::-;11223:87;;11039:277;10978:338;;;;:::o;11322:943::-;11417:6;11425;11433;11441;11490:3;11478:9;11469:7;11465:23;11461:33;11458:120;;;11497:79;;:::i;:::-;11458:120;11617:1;11642:53;11687:7;11678:6;11667:9;11663:22;11642:53;:::i;:::-;11632:63;;11588:117;11744:2;11770:53;11815:7;11806:6;11795:9;11791:22;11770:53;:::i;:::-;11760:63;;11715:118;11872:2;11898:53;11943:7;11934:6;11923:9;11919:22;11898:53;:::i;:::-;11888:63;;11843:118;12028:2;12017:9;12013:18;12000:32;12059:18;12051:6;12048:30;12045:117;;;12081:79;;:::i;:::-;12045:117;12186:62;12240:7;12231:6;12220:9;12216:22;12186:62;:::i;:::-;12176:72;;11971:287;11322:943;;;;;;;:::o;12271:474::-;12339:6;12347;12396:2;12384:9;12375:7;12371:23;12367:32;12364:119;;;12402:79;;:::i;:::-;12364:119;12522:1;12547:53;12592:7;12583:6;12572:9;12568:22;12547:53;:::i;:::-;12537:63;;12493:117;12649:2;12675:53;12720:7;12711:6;12700:9;12696:22;12675:53;:::i;:::-;12665:63;;12620:118;12271:474;;;;;:::o;12751:182::-;12891:34;12887:1;12879:6;12875:14;12868:58;12751:182;:::o;12939:366::-;13081:3;13102:67;13166:2;13161:3;13102:67;:::i;:::-;13095:74;;13178:93;13267:3;13178:93;:::i;:::-;13296:2;13291:3;13287:12;13280:19;;12939:366;;;:::o;13311:419::-;13477:4;13515:2;13504:9;13500:18;13492:26;;13564:9;13558:4;13554:20;13550:1;13539:9;13535:17;13528:47;13592:131;13718:4;13592:131;:::i;:::-;13584:139;;13311:419;;;:::o;13736:180::-;13784:77;13781:1;13774:88;13881:4;13878:1;13871:15;13905:4;13902:1;13895:15;13922:320;13966:6;14003:1;13997:4;13993:12;13983:22;;14050:1;14044:4;14040:12;14071:18;14061:81;;14127:4;14119:6;14115:17;14105:27;;14061:81;14189:2;14181:6;14178:14;14158:18;14155:38;14152:84;;14208:18;;:::i;:::-;14152:84;13973:269;13922:320;;;:::o;14248:231::-;14388:34;14384:1;14376:6;14372:14;14365:58;14457:14;14452:2;14444:6;14440:15;14433:39;14248:231;:::o;14485:366::-;14627:3;14648:67;14712:2;14707:3;14648:67;:::i;:::-;14641:74;;14724:93;14813:3;14724:93;:::i;:::-;14842:2;14837:3;14833:12;14826:19;;14485:366;;;:::o;14857:419::-;15023:4;15061:2;15050:9;15046:18;15038:26;;15110:9;15104:4;15100:20;15096:1;15085:9;15081:17;15074:47;15138:131;15264:4;15138:131;:::i;:::-;15130:139;;14857:419;;;:::o;15282:220::-;15422:34;15418:1;15410:6;15406:14;15399:58;15491:3;15486:2;15478:6;15474:15;15467:28;15282:220;:::o;15508:366::-;15650:3;15671:67;15735:2;15730:3;15671:67;:::i;:::-;15664:74;;15747:93;15836:3;15747:93;:::i;:::-;15865:2;15860:3;15856:12;15849:19;;15508:366;;;:::o;15880:419::-;16046:4;16084:2;16073:9;16069:18;16061:26;;16133:9;16127:4;16123:20;16119:1;16108:9;16104:17;16097:47;16161:131;16287:4;16161:131;:::i;:::-;16153:139;;15880:419;;;:::o;16305:243::-;16445:34;16441:1;16433:6;16429:14;16422:58;16514:26;16509:2;16501:6;16497:15;16490:51;16305:243;:::o;16554:366::-;16696:3;16717:67;16781:2;16776:3;16717:67;:::i;:::-;16710:74;;16793:93;16882:3;16793:93;:::i;:::-;16911:2;16906:3;16902:12;16895:19;;16554:366;;;:::o;16926:419::-;17092:4;17130:2;17119:9;17115:18;17107:26;;17179:9;17173:4;17169:20;17165:1;17154:9;17150:17;17143:47;17207:131;17333:4;17207:131;:::i;:::-;17199:139;;16926:419;;;:::o;17351:236::-;17491:34;17487:1;17479:6;17475:14;17468:58;17560:19;17555:2;17547:6;17543:15;17536:44;17351:236;:::o;17593:366::-;17735:3;17756:67;17820:2;17815:3;17756:67;:::i;:::-;17749:74;;17832:93;17921:3;17832:93;:::i;:::-;17950:2;17945:3;17941:12;17934:19;;17593:366;;;:::o;17965:419::-;18131:4;18169:2;18158:9;18154:18;18146:26;;18218:9;18212:4;18208:20;18204:1;18193:9;18189:17;18182:47;18246:131;18372:4;18246:131;:::i;:::-;18238:139;;17965:419;;;:::o;18390:161::-;18530:13;18526:1;18518:6;18514:14;18507:37;18390:161;:::o;18557:366::-;18699:3;18720:67;18784:2;18779:3;18720:67;:::i;:::-;18713:74;;18796:93;18885:3;18796:93;:::i;:::-;18914:2;18909:3;18905:12;18898:19;;18557:366;;;:::o;18929:419::-;19095:4;19133:2;19122:9;19118:18;19110:26;;19182:9;19176:4;19172:20;19168:1;19157:9;19153:17;19146:47;19210:131;19336:4;19210:131;:::i;:::-;19202:139;;18929:419;;;:::o;19354:141::-;19403:4;19426:3;19418:11;;19449:3;19446:1;19439:14;19483:4;19480:1;19470:18;19462:26;;19354:141;;;:::o;19501:93::-;19538:6;19585:2;19580;19573:5;19569:14;19565:23;19555:33;;19501:93;;;:::o;19600:107::-;19644:8;19694:5;19688:4;19684:16;19663:37;;19600:107;;;;:::o;19713:393::-;19782:6;19832:1;19820:10;19816:18;19855:97;19885:66;19874:9;19855:97;:::i;:::-;19973:39;20003:8;19992:9;19973:39;:::i;:::-;19961:51;;20045:4;20041:9;20034:5;20030:21;20021:30;;20094:4;20084:8;20080:19;20073:5;20070:30;20060:40;;19789:317;;19713:393;;;;;:::o;20112:60::-;20140:3;20161:5;20154:12;;20112:60;;;:::o;20178:142::-;20228:9;20261:53;20279:34;20288:24;20306:5;20288:24;:::i;:::-;20279:34;:::i;:::-;20261:53;:::i;:::-;20248:66;;20178:142;;;:::o;20326:75::-;20369:3;20390:5;20383:12;;20326:75;;;:::o;20407:269::-;20517:39;20548:7;20517:39;:::i;:::-;20578:91;20627:41;20651:16;20627:41;:::i;:::-;20619:6;20612:4;20606:11;20578:91;:::i;:::-;20572:4;20565:105;20483:193;20407:269;;;:::o;20682:73::-;20727:3;20682:73;:::o;20761:189::-;20838:32;;:::i;:::-;20879:65;20937:6;20929;20923:4;20879:65;:::i;:::-;20814:136;20761:189;;:::o;20956:186::-;21016:120;21033:3;21026:5;21023:14;21016:120;;;21087:39;21124:1;21117:5;21087:39;:::i;:::-;21060:1;21053:5;21049:13;21040:22;;21016:120;;;20956:186;;:::o;21148:543::-;21249:2;21244:3;21241:11;21238:446;;;21283:38;21315:5;21283:38;:::i;:::-;21367:29;21385:10;21367:29;:::i;:::-;21357:8;21353:44;21550:2;21538:10;21535:18;21532:49;;;21571:8;21556:23;;21532:49;21594:80;21650:22;21668:3;21650:22;:::i;:::-;21640:8;21636:37;21623:11;21594:80;:::i;:::-;21253:431;;21238:446;21148:543;;;:::o;21697:117::-;21751:8;21801:5;21795:4;21791:16;21770:37;;21697:117;;;;:::o;21820:169::-;21864:6;21897:51;21945:1;21941:6;21933:5;21930:1;21926:13;21897:51;:::i;:::-;21893:56;21978:4;21972;21968:15;21958:25;;21871:118;21820:169;;;;:::o;21994:295::-;22070:4;22216:29;22241:3;22235:4;22216:29;:::i;:::-;22208:37;;22278:3;22275:1;22271:11;22265:4;22262:21;22254:29;;21994:295;;;;:::o;22294:1395::-;22411:37;22444:3;22411:37;:::i;:::-;22513:18;22505:6;22502:30;22499:56;;;22535:18;;:::i;:::-;22499:56;22579:38;22611:4;22605:11;22579:38;:::i;:::-;22664:67;22724:6;22716;22710:4;22664:67;:::i;:::-;22758:1;22782:4;22769:17;;22814:2;22806:6;22803:14;22831:1;22826:618;;;;23488:1;23505:6;23502:77;;;23554:9;23549:3;23545:19;23539:26;23530:35;;23502:77;23605:67;23665:6;23658:5;23605:67;:::i;:::-;23599:4;23592:81;23461:222;22796:887;;22826:618;22878:4;22874:9;22866:6;22862:22;22912:37;22944:4;22912:37;:::i;:::-;22971:1;22985:208;22999:7;22996:1;22993:14;22985:208;;;23078:9;23073:3;23069:19;23063:26;23055:6;23048:42;23129:1;23121:6;23117:14;23107:24;;23176:2;23165:9;23161:18;23148:31;;23022:4;23019:1;23015:12;23010:17;;22985:208;;;23221:6;23212:7;23209:19;23206:179;;;23279:9;23274:3;23270:19;23264:26;23322:48;23364:4;23356:6;23352:17;23341:9;23322:48;:::i;:::-;23314:6;23307:64;23229:156;23206:179;23431:1;23427;23419:6;23415:14;23411:22;23405:4;23398:36;22833:611;;;22796:887;;22386:1303;;;22294:1395;;:::o;23695:159::-;23835:11;23831:1;23823:6;23819:14;23812:35;23695:159;:::o;23860:365::-;24002:3;24023:66;24087:1;24082:3;24023:66;:::i;:::-;24016:73;;24098:93;24187:3;24098:93;:::i;:::-;24216:2;24211:3;24207:12;24200:19;;23860:365;;;:::o;24231:419::-;24397:4;24435:2;24424:9;24420:18;24412:26;;24484:9;24478:4;24474:20;24470:1;24459:9;24455:17;24448:47;24512:131;24638:4;24512:131;:::i;:::-;24504:139;;24231:419;;;:::o;24656:180::-;24704:77;24701:1;24694:88;24801:4;24798:1;24791:15;24825:4;24822:1;24815:15;24842:191;24882:3;24901:20;24919:1;24901:20;:::i;:::-;24896:25;;24935:20;24953:1;24935:20;:::i;:::-;24930:25;;24978:1;24975;24971:9;24964:16;;24999:3;24996:1;24993:10;24990:36;;;25006:18;;:::i;:::-;24990:36;24842:191;;;;:::o;25039:167::-;25179:19;25175:1;25167:6;25163:14;25156:43;25039:167;:::o;25212:366::-;25354:3;25375:67;25439:2;25434:3;25375:67;:::i;:::-;25368:74;;25451:93;25540:3;25451:93;:::i;:::-;25569:2;25564:3;25560:12;25553:19;;25212:366;;;:::o;25584:419::-;25750:4;25788:2;25777:9;25773:18;25765:26;;25837:9;25831:4;25827:20;25823:1;25812:9;25808:17;25801:47;25865:131;25991:4;25865:131;:::i;:::-;25857:139;;25584:419;;;:::o;26009:158::-;26149:10;26145:1;26137:6;26133:14;26126:34;26009:158;:::o;26173:365::-;26315:3;26336:66;26400:1;26395:3;26336:66;:::i;:::-;26329:73;;26411:93;26500:3;26411:93;:::i;:::-;26529:2;26524:3;26520:12;26513:19;;26173:365;;;:::o;26544:419::-;26710:4;26748:2;26737:9;26733:18;26725:26;;26797:9;26791:4;26787:20;26783:1;26772:9;26768:17;26761:47;26825:131;26951:4;26825:131;:::i;:::-;26817:139;;26544:419;;;:::o;26969:410::-;27009:7;27032:20;27050:1;27032:20;:::i;:::-;27027:25;;27066:20;27084:1;27066:20;:::i;:::-;27061:25;;27121:1;27118;27114:9;27143:30;27161:11;27143:30;:::i;:::-;27132:41;;27322:1;27313:7;27309:15;27306:1;27303:22;27283:1;27276:9;27256:83;27233:139;;27352:18;;:::i;:::-;27233:139;27017:362;26969:410;;;;:::o;27385:332::-;27506:4;27544:2;27533:9;27529:18;27521:26;;27557:71;27625:1;27614:9;27610:17;27601:6;27557:71;:::i;:::-;27638:72;27706:2;27695:9;27691:18;27682:6;27638:72;:::i;:::-;27385:332;;;;;:::o;27723:233::-;27762:3;27785:24;27803:5;27785:24;:::i;:::-;27776:33;;27831:66;27824:5;27821:77;27818:103;;27901:18;;:::i;:::-;27818:103;27948:1;27941:5;27937:13;27930:20;;27723:233;;;:::o;27962:228::-;28102:34;28098:1;28090:6;28086:14;28079:58;28171:11;28166:2;28158:6;28154:15;28147:36;27962:228;:::o;28196:366::-;28338:3;28359:67;28423:2;28418:3;28359:67;:::i;:::-;28352:74;;28435:93;28524:3;28435:93;:::i;:::-;28553:2;28548:3;28544:12;28537:19;;28196:366;;;:::o;28568:419::-;28734:4;28772:2;28761:9;28757:18;28749:26;;28821:9;28815:4;28811:20;28807:1;28796:9;28792:17;28785:47;28849:131;28975:4;28849:131;:::i;:::-;28841:139;;28568:419;;;:::o;28993:229::-;29133:34;29129:1;29121:6;29117:14;29110:58;29202:12;29197:2;29189:6;29185:15;29178:37;28993:229;:::o;29228:366::-;29370:3;29391:67;29455:2;29450:3;29391:67;:::i;:::-;29384:74;;29467:93;29556:3;29467:93;:::i;:::-;29585:2;29580:3;29576:12;29569:19;;29228:366;;;:::o;29600:419::-;29766:4;29804:2;29793:9;29789:18;29781:26;;29853:9;29847:4;29843:20;29839:1;29828:9;29824:17;29817:47;29881:131;30007:4;29881:131;:::i;:::-;29873:139;;29600:419;;;:::o;30025:175::-;30165:27;30161:1;30153:6;30149:14;30142:51;30025:175;:::o;30206:366::-;30348:3;30369:67;30433:2;30428:3;30369:67;:::i;:::-;30362:74;;30445:93;30534:3;30445:93;:::i;:::-;30563:2;30558:3;30554:12;30547:19;;30206:366;;;:::o;30578:419::-;30744:4;30782:2;30771:9;30767:18;30759:26;;30831:9;30825:4;30821:20;30817:1;30806:9;30802:17;30795:47;30859:131;30985:4;30859:131;:::i;:::-;30851:139;;30578:419;;;:::o;31003:236::-;31143:34;31139:1;31131:6;31127:14;31120:58;31212:19;31207:2;31199:6;31195:15;31188:44;31003:236;:::o;31245:366::-;31387:3;31408:67;31472:2;31467:3;31408:67;:::i;:::-;31401:74;;31484:93;31573:3;31484:93;:::i;:::-;31602:2;31597:3;31593:12;31586:19;;31245:366;;;:::o;31617:419::-;31783:4;31821:2;31810:9;31806:18;31798:26;;31870:9;31864:4;31860:20;31856:1;31845:9;31841:17;31834:47;31898:131;32024:4;31898:131;:::i;:::-;31890:139;;31617:419;;;:::o;32042:148::-;32144:11;32181:3;32166:18;;32042:148;;;;:::o;32196:390::-;32302:3;32330:39;32363:5;32330:39;:::i;:::-;32385:89;32467:6;32462:3;32385:89;:::i;:::-;32378:96;;32483:65;32541:6;32536:3;32529:4;32522:5;32518:16;32483:65;:::i;:::-;32573:6;32568:3;32564:16;32557:23;;32306:280;32196:390;;;;:::o;32592:435::-;32772:3;32794:95;32885:3;32876:6;32794:95;:::i;:::-;32787:102;;32906:95;32997:3;32988:6;32906:95;:::i;:::-;32899:102;;33018:3;33011:10;;32592:435;;;;;:::o;33033:225::-;33173:34;33169:1;33161:6;33157:14;33150:58;33242:8;33237:2;33229:6;33225:15;33218:33;33033:225;:::o;33264:366::-;33406:3;33427:67;33491:2;33486:3;33427:67;:::i;:::-;33420:74;;33503:93;33592:3;33503:93;:::i;:::-;33621:2;33616:3;33612:12;33605:19;;33264:366;;;:::o;33636:419::-;33802:4;33840:2;33829:9;33825:18;33817:26;;33889:9;33883:4;33879:20;33875:1;33864:9;33860:17;33853:47;33917:131;34043:4;33917:131;:::i;:::-;33909:139;;33636:419;;;:::o;34061:233::-;34201:34;34197:1;34189:6;34185:14;34178:58;34270:16;34265:2;34257:6;34253:15;34246:41;34061:233;:::o;34300:366::-;34442:3;34463:67;34527:2;34522:3;34463:67;:::i;:::-;34456:74;;34539:93;34628:3;34539:93;:::i;:::-;34657:2;34652:3;34648:12;34641:19;;34300:366;;;:::o;34672:419::-;34838:4;34876:2;34865:9;34861:18;34853:26;;34925:9;34919:4;34915:20;34911:1;34900:9;34896:17;34889:47;34953:131;35079:4;34953:131;:::i;:::-;34945:139;;34672:419;;;:::o;35097:231::-;35237:34;35233:1;35225:6;35221:14;35214:58;35306:14;35301:2;35293:6;35289:15;35282:39;35097:231;:::o;35334:366::-;35476:3;35497:67;35561:2;35556:3;35497:67;:::i;:::-;35490:74;;35573:93;35662:3;35573:93;:::i;:::-;35691:2;35686:3;35682:12;35675:19;;35334:366;;;:::o;35706:419::-;35872:4;35910:2;35899:9;35895:18;35887:26;;35959:9;35953:4;35949:20;35945:1;35934:9;35930:17;35923:47;35987:131;36113:4;35987:131;:::i;:::-;35979:139;;35706:419;;;:::o;36131:228::-;36271:34;36267:1;36259:6;36255:14;36248:58;36340:11;36335:2;36327:6;36323:15;36316:36;36131:228;:::o;36365:366::-;36507:3;36528:67;36592:2;36587:3;36528:67;:::i;:::-;36521:74;;36604:93;36693:3;36604:93;:::i;:::-;36722:2;36717:3;36713:12;36706:19;;36365:366;;;:::o;36737:419::-;36903:4;36941:2;36930:9;36926:18;36918:26;;36990:9;36984:4;36980:20;36976:1;36965:9;36961:17;36954:47;37018:131;37144:4;37018:131;:::i;:::-;37010:139;;36737:419;;;:::o;37162:223::-;37302:34;37298:1;37290:6;37286:14;37279:58;37371:6;37366:2;37358:6;37354:15;37347:31;37162:223;:::o;37391:366::-;37533:3;37554:67;37618:2;37613:3;37554:67;:::i;:::-;37547:74;;37630:93;37719:3;37630:93;:::i;:::-;37748:2;37743:3;37739:12;37732:19;;37391:366;;;:::o;37763:419::-;37929:4;37967:2;37956:9;37952:18;37944:26;;38016:9;38010:4;38006:20;38002:1;37991:9;37987:17;37980:47;38044:131;38170:4;38044:131;:::i;:::-;38036:139;;37763:419;;;:::o;38188:194::-;38228:4;38248:20;38266:1;38248:20;:::i;:::-;38243:25;;38282:20;38300:1;38282:20;:::i;:::-;38277:25;;38326:1;38323;38319:9;38311:17;;38350:1;38344:4;38341:11;38338:37;;;38355:18;;:::i;:::-;38338:37;38188:194;;;;:::o;38388:182::-;38528:34;38524:1;38516:6;38512:14;38505:58;38388:182;:::o;38576:366::-;38718:3;38739:67;38803:2;38798:3;38739:67;:::i;:::-;38732:74;;38815:93;38904:3;38815:93;:::i;:::-;38933:2;38928:3;38924:12;38917:19;;38576:366;;;:::o;38948:419::-;39114:4;39152:2;39141:9;39137:18;39129:26;;39201:9;39195:4;39191:20;39187:1;39176:9;39172:17;39165:47;39229:131;39355:4;39229:131;:::i;:::-;39221:139;;38948:419;;;:::o;39373:178::-;39513:30;39509:1;39501:6;39497:14;39490:54;39373:178;:::o;39557:366::-;39699:3;39720:67;39784:2;39779:3;39720:67;:::i;:::-;39713:74;;39796:93;39885:3;39796:93;:::i;:::-;39914:2;39909:3;39905:12;39898:19;;39557:366;;;:::o;39929:419::-;40095:4;40133:2;40122:9;40118:18;40110:26;;40182:9;40176:4;40172:20;40168:1;40157:9;40153:17;40146:47;40210:131;40336:4;40210:131;:::i;:::-;40202:139;;39929:419;;;:::o;40354:237::-;40494:34;40490:1;40482:6;40478:14;40471:58;40563:20;40558:2;40550:6;40546:15;40539:45;40354:237;:::o;40597:366::-;40739:3;40760:67;40824:2;40819:3;40760:67;:::i;:::-;40753:74;;40836:93;40925:3;40836:93;:::i;:::-;40954:2;40949:3;40945:12;40938:19;;40597:366;;;:::o;40969:419::-;41135:4;41173:2;41162:9;41158:18;41150:26;;41222:9;41216:4;41212:20;41208:1;41197:9;41193:17;41186:47;41250:131;41376:4;41250:131;:::i;:::-;41242:139;;40969:419;;;:::o;41394:234::-;41534:34;41530:1;41522:6;41518:14;41511:58;41603:17;41598:2;41590:6;41586:15;41579:42;41394:234;:::o;41634:366::-;41776:3;41797:67;41861:2;41856:3;41797:67;:::i;:::-;41790:74;;41873:93;41962:3;41873:93;:::i;:::-;41991:2;41986:3;41982:12;41975:19;;41634:366;;;:::o;42006:419::-;42172:4;42210:2;42199:9;42195:18;42187:26;;42259:9;42253:4;42249:20;42245:1;42234:9;42230:17;42223:47;42287:131;42413:4;42287:131;:::i;:::-;42279:139;;42006:419;;;:::o;42431:98::-;42482:6;42516:5;42510:12;42500:22;;42431:98;;;:::o;42535:168::-;42618:11;42652:6;42647:3;42640:19;42692:4;42687:3;42683:14;42668:29;;42535:168;;;;:::o;42709:373::-;42795:3;42823:38;42855:5;42823:38;:::i;:::-;42877:70;42940:6;42935:3;42877:70;:::i;:::-;42870:77;;42956:65;43014:6;43009:3;43002:4;42995:5;42991:16;42956:65;:::i;:::-;43046:29;43068:6;43046:29;:::i;:::-;43041:3;43037:39;43030:46;;42799:283;42709:373;;;;:::o;43088:640::-;43283:4;43321:3;43310:9;43306:19;43298:27;;43335:71;43403:1;43392:9;43388:17;43379:6;43335:71;:::i;:::-;43416:72;43484:2;43473:9;43469:18;43460:6;43416:72;:::i;:::-;43498;43566:2;43555:9;43551:18;43542:6;43498:72;:::i;:::-;43617:9;43611:4;43607:20;43602:2;43591:9;43587:18;43580:48;43645:76;43716:4;43707:6;43645:76;:::i;:::-;43637:84;;43088:640;;;;;;;:::o;43734:141::-;43790:5;43821:6;43815:13;43806:22;;43837:32;43863:5;43837:32;:::i;:::-;43734:141;;;;:::o;43881:349::-;43950:6;43999:2;43987:9;43978:7;43974:23;43970:32;43967:119;;;44005:79;;:::i;:::-;43967:119;44125:1;44150:63;44205:7;44196:6;44185:9;44181:22;44150:63;:::i;:::-;44140:73;;44096:127;43881:349;;;;:::o;44236:180::-;44284:77;44281:1;44274:88;44381:4;44378:1;44371:15;44405:4;44402:1;44395:15;44422:185;44462:1;44479:20;44497:1;44479:20;:::i;:::-;44474:25;;44513:20;44531:1;44513:20;:::i;:::-;44508:25;;44552:1;44542:35;;44557:18;;:::i;:::-;44542:35;44599:1;44596;44592:9;44587:14;;44422:185;;;;:::o;44613:176::-;44645:1;44662:20;44680:1;44662:20;:::i;:::-;44657:25;;44696:20;44714:1;44696:20;:::i;:::-;44691:25;;44735:1;44725:35;;44740:18;;:::i;:::-;44725:35;44781:1;44778;44774:9;44769:14;;44613:176;;;;:::o;44795:180::-;44843:77;44840:1;44833:88;44940:4;44937:1;44930:15;44964:4;44961:1;44954:15
Swarm Source
ipfs://61bc4ab3efb4d23d61eeb0e419a2f14384aa391a4eb2da038edc559d59711b51
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.