Feature Tip: Add private address tag to any address under My Name Tag !
ERC-1155
Overview
Max Total Supply
200
Holders
9
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
VoidRecognitionST1
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-16 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } // File: @openzeppelin/[email protected]/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/[email protected]/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/[email protected]/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/[email protected]/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/[email protected]/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/[email protected]/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/[email protected]/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/[email protected]/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: address zero is not a valid owner"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, to, ids, amounts, data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Emits a {TransferSingle} event. * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `ids` and `amounts` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} /** * @dev Hook that is called after any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: @openzeppelin/[email protected]/token/ERC1155/extensions/ERC1155Burnable.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/extensions/ERC1155Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC1155} that allows token holders to destroy both their * own tokens and those that they have been approved to use. * * _Available since v3.1._ */ abstract contract ERC1155Burnable is ERC1155 { function burn( address account, uint256 id, uint256 value ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _burn(account, id, value); } function burnBatch( address account, uint256[] memory ids, uint256[] memory values ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _burnBatch(account, ids, values); } } // File: VoidRecognitionST1.sol pragma solidity ^0.8.4; contract VoidRecognitionST1 is ERC1155, ERC1155Burnable { uint256 public constant REC_D0 = 0; uint256 public constant REC_D3 = 1; uint256 public constant REC_D10 = 2; uint256 public constant REC_T1 = 3; uint256 public constant REC_S1 = 4; uint256 public constant REC_V1 = 5; uint256 public constant REC_L1 = 6; uint256 public constant REC_I1 = 7; uint256 public constant REC_R1 = 8; address private _recipient = 0x46272b64B8D3b49B87344D71842bD4Cd612cc30c; //mainnet recipient constructor() ERC1155("ipfs://bafybeic4n444xdrdfghwx22s42s6lmwobx4bxcdrlppflfsfuxvw2rabim/{id}.json") { _mint(_recipient, REC_D0, 40, ""); _mint(_recipient, REC_D3, 10, ""); _mint(_recipient, REC_D10, 5, ""); _mint(_recipient, REC_T1, 20, ""); _mint(_recipient, REC_S1, 20, ""); _mint(_recipient, REC_V1, 20, ""); _mint(_recipient, REC_L1, 20, ""); _mint(_recipient, REC_I1, 40, ""); _mint(_recipient, REC_R1, 25, ""); } function uri(uint256 _tokenId) override public view returns (string memory) { return string( abi.encodePacked( "ipfs://bafybeic4n444xdrdfghwx22s42s6lmwobx4bxcdrlppflfsfuxvw2rabim/", Strings.toString(_tokenId), ".json" ) ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"REC_D0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_D10","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_D3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_I1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_L1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_R1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_S1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_T1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REC_V1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040527346272b64b8d3b49b87344d71842bd4cd612cc30c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040518060800160405280604c8152602001620041e0604c913962000092816200031860201b60201c565b50620000da600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006028604051806020016040528060008152506200033460201b60201c565b62000121600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001600a604051806020016040528060008152506200033460201b60201c565b62000168600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660026005604051806020016040528060008152506200033460201b60201c565b620001af600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660036014604051806020016040528060008152506200033460201b60201c565b620001f6600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660046014604051806020016040528060008152506200033460201b60201c565b6200023d600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056014604051806020016040528060008152506200033460201b60201c565b62000284600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066014604051806020016040528060008152506200033460201b60201c565b620002cb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660076028604051806020016040528060008152506200033460201b60201c565b62000312600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660086019604051806020016040528060008152506200033460201b60201c565b62000f67565b806002908051906020019062000330929190620007e2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620003a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200039e9062000ac0565b60405180910390fd5b6000620003b96200051c60201b60201c565b90506000620003ce856200052460201b60201c565b90506000620003e3856200052460201b60201c565b9050620003fc83600089858589620005a560201b60201c565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200045d919062000b51565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051620004dd92919062000ae2565b60405180910390a4620004fc83600089858589620005ad60201b60201c565b6200051383600089898989620005b560201b60201c565b50505050505050565b600033905090565b60606000600167ffffffffffffffff81111562000546576200054562000d47565b5b604051908082528060200260200182016040528015620005755781602001602082028036833780820191505090505b509050828160008151811062000590576200058f62000d18565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b620005e18473ffffffffffffffffffffffffffffffffffffffff16620007bf60201b620009f71760201c565b15620007b7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016200062a959493929190620009f4565b602060405180830381600087803b1580156200064557600080fd5b505af19250505080156200067957506040513d601f19601f82011682018060405250810190620006769190620008a9565b60015b6200072b576200068862000d76565b806308c379a01415620006ec5750620006a062000eab565b80620006ad5750620006ee565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e3919062000a58565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007229062000a7c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620007b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ac9062000a9e565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054620007f09062000c4e565b90600052602060002090601f01602090048101928262000814576000855562000860565b82601f106200082f57805160ff191683800117855562000860565b8280016001018555821562000860579182015b828111156200085f57825182559160200191906001019062000842565b5b5090506200086f919062000873565b5090565b5b808211156200088e57600081600090555060010162000874565b5090565b600081519050620008a38162000f4d565b92915050565b600060208284031215620008c257620008c162000d9b565b5b6000620008d28482850162000892565b91505092915050565b620008e68162000bae565b82525050565b6000620008f98262000b19565b62000905818562000b2f565b93506200091781856020860162000c18565b620009228162000da0565b840191505092915050565b60006200093a8262000b24565b62000946818562000b40565b93506200095881856020860162000c18565b620009638162000da0565b840191505092915050565b60006200097d60348362000b40565b91506200098a8262000dbe565b604082019050919050565b6000620009a460288362000b40565b9150620009b18262000e0d565b604082019050919050565b6000620009cb60218362000b40565b9150620009d88262000e5c565b604082019050919050565b620009ee8162000c0e565b82525050565b600060a08201905062000a0b6000830188620008db565b62000a1a6020830187620008db565b62000a296040830186620009e3565b62000a386060830185620009e3565b818103608083015262000a4c8184620008ec565b90509695505050505050565b6000602082019050818103600083015262000a7481846200092d565b905092915050565b6000602082019050818103600083015262000a97816200096e565b9050919050565b6000602082019050818103600083015262000ab98162000995565b9050919050565b6000602082019050818103600083015262000adb81620009bc565b9050919050565b600060408201905062000af96000830185620009e3565b62000b086020830184620009e3565b9392505050565b6000604051905090565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000b5e8262000c0e565b915062000b6b8362000c0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ba35762000ba262000cba565b5b828201905092915050565b600062000bbb8262000bee565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c3857808201518184015260208101905062000c1b565b8381111562000c48576000848401525b50505050565b6000600282049050600182168062000c6757607f821691505b6020821081141562000c7e5762000c7d62000ce9565b5b50919050565b62000c8f8262000da0565b810181811067ffffffffffffffff8211171562000cb15762000cb062000d47565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111562000d985760046000803e62000d9560005162000db1565b90505b90565b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101562000ebd5762000f4a565b62000ec762000b0f565b60043d036004823e80513d602482011167ffffffffffffffff8211171562000ef157505062000f4a565b808201805167ffffffffffffffff81111562000f11575050505062000f4a565b80602083010160043d03850181111562000f3057505050505062000f4a565b62000f418260200185018662000c84565b82955050505050505b90565b62000f588162000bc2565b811462000f6457600080fd5b50565b6132698062000f776000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c806383515d52116100ad578063e985e9c511610071578063e985e9c51461030b578063ef5697231461033b578063f242432a14610359578063f5298aca14610375578063fc5c93f51461039157610120565b806383515d52146102775780639d53206d14610295578063a22cb465146102b3578063a9025566146102cf578063b6ec2de9146102ed57610120565b80630e89341c116100f45780630e89341c146101c157806325c3bc90146101f15780632eb2c2d61461020f5780634e1273f41461022b5780636b20c4541461025b57610120565b8062fdd58e1461012557806301ffc9a71461015557806305c1ac021461018557806306d2dc9f146101a3575b600080fd5b61013f600480360381019061013a919061210c565b6103af565b60405161014c919061289f565b60405180910390f35b61016f600480360381019061016a9190612217565b610478565b60405161017c9190612702565b60405180910390f35b61018d61055a565b60405161019a919061289f565b60405180910390f35b6101ab61055f565b6040516101b8919061289f565b60405180910390f35b6101db60048036038101906101d69190612271565b610564565b6040516101e8919061271d565b60405180910390f35b6101f9610595565b604051610206919061289f565b60405180910390f35b61022960048036038101906102249190611edb565b61059a565b005b6102456004803603810190610240919061219f565b61063b565b60405161025291906126a9565b60405180910390f35b61027560048036038101906102709190612041565b610754565b005b61027f6107f1565b60405161028c919061289f565b60405180910390f35b61029d6107f6565b6040516102aa919061289f565b60405180910390f35b6102cd60048036038101906102c891906120cc565b6107fb565b005b6102d7610811565b6040516102e4919061289f565b60405180910390f35b6102f5610816565b604051610302919061289f565b60405180910390f35b61032560048036038101906103209190611e9b565b61081b565b6040516103329190612702565b60405180910390f35b6103436108af565b604051610350919061289f565b60405180910390f35b610373600480360381019061036e9190611faa565b6108b4565b005b61038f600480360381019061038a919061214c565b610955565b005b6103996109f2565b6040516103a6919061289f565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610417906127bf565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061054357507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610553575061055282610a1a565b5b9050919050565b600081565b600281565b606061056f82610a84565b60405160200161057f91906125ba565b6040516020818303038152906040529050919050565b600881565b6105a2610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e857506105e7856105e2610be5565b61081b565b5b610627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061e9061275f565b60405180910390fd5b6106348585858585610bed565b5050505050565b60608151835114610681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106789061285f565b60405180910390fd5b6000835167ffffffffffffffff81111561069e5761069d612cb6565b5b6040519080825280602002602001820160405280156106cc5781602001602082028036833780820191505090505b50905060005b8451811015610749576107198582815181106106f1576106f0612c87565b5b602002602001015185838151811061070c5761070b612c87565b5b60200260200101516103af565b82828151811061072c5761072b612c87565b5b6020026020010181815250508061074290612baf565b90506106d2565b508091505092915050565b61075c610be5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806107a257506107a18361079c610be5565b61081b565b5b6107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061275f565b60405180910390fd5b6107ec838383610f0f565b505050565b600181565b600581565b61080d610806610be5565b83836111de565b5050565b600381565b600681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600481565b6108bc610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109025750610901856108fc610be5565b61081b565b5b610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109389061275f565b60405180910390fd5b61094e858585858561134b565b5050505050565b61095d610be5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109a357506109a28361099d610be5565b61081b565b5b6109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d99061275f565b60405180910390fd5b6109ed8383836115e7565b505050565b600781565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415610acc576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610be0565b600082905060005b60008214610afe578080610ae790612baf565b915050600a82610af79190612a63565b9150610ad4565b60008167ffffffffffffffff811115610b1a57610b19612cb6565b5b6040519080825280601f01601f191660200182016040528015610b4c5781602001600182028036833780820191505090505b5090505b60008514610bd957600182610b659190612a94565b9150600a85610b749190612bf8565b6030610b809190612a0d565b60f81b818381518110610b9657610b95612c87565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610bd29190612a63565b9450610b50565b8093505050505b919050565b600033905090565b8151835114610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c289061287f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c98906127df565b60405180910390fd5b6000610cab610be5565b9050610cbb81878787878761182e565b60005b8451811015610e6c576000858281518110610cdc57610cdb612c87565b5b602002602001015190506000858381518110610cfb57610cfa612c87565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d939061281f565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e519190612a0d565b9250508190555050505080610e6590612baf565b9050610cbe565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ee39291906126cb565b60405180910390a4610ef9818787878787611836565b610f0781878787878761183e565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906127ff565b60405180910390fd5b8051825114610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061287f565b60405180910390fd5b6000610fcd610be5565b9050610fed8185600086866040518060200160405280600081525061182e565b60005b835181101561113a57600084828151811061100e5761100d612c87565b5b60200260200101519050600084838151811061102d5761102c612c87565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c59061279f565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061113290612baf565b915050610ff0565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516111b29291906126cb565b60405180910390a46111d881856000868660405180602001604052806000815250611836565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561124d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112449061283f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161133e9190612702565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906127df565b60405180910390fd5b60006113c5610be5565b905060006113d285611a25565b905060006113df85611a25565b90506113ef83898985858961182e565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d9061281f565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153b9190612a0d565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a6040516115b89291906128ba565b60405180910390a46115ce848a8a86868a611836565b6115dc848a8a8a8a8a611a9f565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e906127ff565b60405180910390fd5b6000611661610be5565b9050600061166e84611a25565b9050600061167b84611a25565b905061169b8387600085856040518060200160405280600081525061182e565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117299061279f565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516117ff9291906128ba565b60405180910390a461182584886000868660405180602001604052806000815250611836565b50505050505050565b505050505050565b505050505050565b61185d8473ffffffffffffffffffffffffffffffffffffffff166109f7565b15611a1d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016118a39594939291906125e7565b602060405180830381600087803b1580156118bd57600080fd5b505af19250505080156118ee57506040513d601f19601f820116820180604052508101906118eb9190612244565b60015b611994576118fa612ce5565b806308c379a01415611957575061190f613141565b8061191a5750611959565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e919061271d565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061273f565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a129061277f565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611a4457611a43612cb6565b5b604051908082528060200260200182016040528015611a725781602001602082028036833780820191505090505b5090508281600081518110611a8a57611a89612c87565b5b60200260200101818152505080915050919050565b611abe8473ffffffffffffffffffffffffffffffffffffffff166109f7565b15611c7e578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611b0495949392919061264f565b602060405180830381600087803b158015611b1e57600080fd5b505af1925050508015611b4f57506040513d601f19601f82011682018060405250810190611b4c9190612244565b60015b611bf557611b5b612ce5565b806308c379a01415611bb85750611b70613141565b80611b7b5750611bba565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf919061271d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec9061273f565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c739061277f565b60405180910390fd5b505b505050505050565b6000611c99611c9484612908565b6128e3565b90508083825260208201905082856020860282011115611cbc57611cbb612d0c565b5b60005b85811015611cec5781611cd28882611da8565b845260208401935060208301925050600181019050611cbf565b5050509392505050565b6000611d09611d0484612934565b6128e3565b90508083825260208201905082856020860282011115611d2c57611d2b612d0c565b5b60005b85811015611d5c5781611d428882611e86565b845260208401935060208301925050600181019050611d2f565b5050509392505050565b6000611d79611d7484612960565b6128e3565b905082815260208101848484011115611d9557611d94612d11565b5b611da0848285612b3c565b509392505050565b600081359050611db7816131d7565b92915050565b600082601f830112611dd257611dd1612d07565b5b8135611de2848260208601611c86565b91505092915050565b600082601f830112611e0057611dff612d07565b5b8135611e10848260208601611cf6565b91505092915050565b600081359050611e28816131ee565b92915050565b600081359050611e3d81613205565b92915050565b600081519050611e5281613205565b92915050565b600082601f830112611e6d57611e6c612d07565b5b8135611e7d848260208601611d66565b91505092915050565b600081359050611e958161321c565b92915050565b60008060408385031215611eb257611eb1612d1b565b5b6000611ec085828601611da8565b9250506020611ed185828601611da8565b9150509250929050565b600080600080600060a08688031215611ef757611ef6612d1b565b5b6000611f0588828901611da8565b9550506020611f1688828901611da8565b945050604086013567ffffffffffffffff811115611f3757611f36612d16565b5b611f4388828901611deb565b935050606086013567ffffffffffffffff811115611f6457611f63612d16565b5b611f7088828901611deb565b925050608086013567ffffffffffffffff811115611f9157611f90612d16565b5b611f9d88828901611e58565b9150509295509295909350565b600080600080600060a08688031215611fc657611fc5612d1b565b5b6000611fd488828901611da8565b9550506020611fe588828901611da8565b9450506040611ff688828901611e86565b935050606061200788828901611e86565b925050608086013567ffffffffffffffff81111561202857612027612d16565b5b61203488828901611e58565b9150509295509295909350565b60008060006060848603121561205a57612059612d1b565b5b600061206886828701611da8565b935050602084013567ffffffffffffffff81111561208957612088612d16565b5b61209586828701611deb565b925050604084013567ffffffffffffffff8111156120b6576120b5612d16565b5b6120c286828701611deb565b9150509250925092565b600080604083850312156120e3576120e2612d1b565b5b60006120f185828601611da8565b925050602061210285828601611e19565b9150509250929050565b6000806040838503121561212357612122612d1b565b5b600061213185828601611da8565b925050602061214285828601611e86565b9150509250929050565b60008060006060848603121561216557612164612d1b565b5b600061217386828701611da8565b935050602061218486828701611e86565b925050604061219586828701611e86565b9150509250925092565b600080604083850312156121b6576121b5612d1b565b5b600083013567ffffffffffffffff8111156121d4576121d3612d16565b5b6121e085828601611dbd565b925050602083013567ffffffffffffffff81111561220157612200612d16565b5b61220d85828601611deb565b9150509250929050565b60006020828403121561222d5761222c612d1b565b5b600061223b84828501611e2e565b91505092915050565b60006020828403121561225a57612259612d1b565b5b600061226884828501611e43565b91505092915050565b60006020828403121561228757612286612d1b565b5b600061229584828501611e86565b91505092915050565b60006122aa838361259c565b60208301905092915050565b6122bf81612ac8565b82525050565b60006122d0826129a1565b6122da81856129cf565b93506122e583612991565b8060005b838110156123165781516122fd888261229e565b9750612308836129c2565b9250506001810190506122e9565b5085935050505092915050565b61232c81612ada565b82525050565b600061233d826129ac565b61234781856129e0565b9350612357818560208601612b4b565b61236081612d20565b840191505092915050565b6000612376826129b7565b61238081856129f1565b9350612390818560208601612b4b565b61239981612d20565b840191505092915050565b60006123af826129b7565b6123b98185612a02565b93506123c9818560208601612b4b565b80840191505092915050565b60006123e26034836129f1565b91506123ed82612d3e565b604082019050919050565b6000612405602f836129f1565b915061241082612d8d565b604082019050919050565b60006124286028836129f1565b915061243382612ddc565b604082019050919050565b600061244b6024836129f1565b915061245682612e2b565b604082019050919050565b600061246e602a836129f1565b915061247982612e7a565b604082019050919050565b6000612491604383612a02565b915061249c82612ec9565b604382019050919050565b60006124b46025836129f1565b91506124bf82612f3e565b604082019050919050565b60006124d76023836129f1565b91506124e282612f8d565b604082019050919050565b60006124fa602a836129f1565b915061250582612fdc565b604082019050919050565b600061251d600583612a02565b91506125288261302b565b600582019050919050565b60006125406029836129f1565b915061254b82613054565b604082019050919050565b60006125636029836129f1565b915061256e826130a3565b604082019050919050565b60006125866028836129f1565b9150612591826130f2565b604082019050919050565b6125a581612b32565b82525050565b6125b481612b32565b82525050565b60006125c582612484565b91506125d182846123a4565b91506125dc82612510565b915081905092915050565b600060a0820190506125fc60008301886122b6565b61260960208301876122b6565b818103604083015261261b81866122c5565b9050818103606083015261262f81856122c5565b905081810360808301526126438184612332565b90509695505050505050565b600060a08201905061266460008301886122b6565b61267160208301876122b6565b61267e60408301866125ab565b61268b60608301856125ab565b818103608083015261269d8184612332565b90509695505050505050565b600060208201905081810360008301526126c381846122c5565b905092915050565b600060408201905081810360008301526126e581856122c5565b905081810360208301526126f981846122c5565b90509392505050565b60006020820190506127176000830184612323565b92915050565b60006020820190508181036000830152612737818461236b565b905092915050565b60006020820190508181036000830152612758816123d5565b9050919050565b60006020820190508181036000830152612778816123f8565b9050919050565b600060208201905081810360008301526127988161241b565b9050919050565b600060208201905081810360008301526127b88161243e565b9050919050565b600060208201905081810360008301526127d881612461565b9050919050565b600060208201905081810360008301526127f8816124a7565b9050919050565b60006020820190508181036000830152612818816124ca565b9050919050565b60006020820190508181036000830152612838816124ed565b9050919050565b6000602082019050818103600083015261285881612533565b9050919050565b6000602082019050818103600083015261287881612556565b9050919050565b6000602082019050818103600083015261289881612579565b9050919050565b60006020820190506128b460008301846125ab565b92915050565b60006040820190506128cf60008301856125ab565b6128dc60208301846125ab565b9392505050565b60006128ed6128fe565b90506128f98282612b7e565b919050565b6000604051905090565b600067ffffffffffffffff82111561292357612922612cb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561294f5761294e612cb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561297b5761297a612cb6565b5b61298482612d20565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612a1882612b32565b9150612a2383612b32565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a5857612a57612c29565b5b828201905092915050565b6000612a6e82612b32565b9150612a7983612b32565b925082612a8957612a88612c58565b5b828204905092915050565b6000612a9f82612b32565b9150612aaa83612b32565b925082821015612abd57612abc612c29565b5b828203905092915050565b6000612ad382612b12565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612b69578082015181840152602081019050612b4e565b83811115612b78576000848401525b50505050565b612b8782612d20565b810181811067ffffffffffffffff82111715612ba657612ba5612cb6565b5b80604052505050565b6000612bba82612b32565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bed57612bec612c29565b5b600182019050919050565b6000612c0382612b32565b9150612c0e83612b32565b925082612c1e57612c1d612c58565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612d045760046000803e612d01600051612d31565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f697066733a2f2f6261667962656963346e34343478647264666768777832327360008201527f343273366c6d776f62783462786364726c7070666c667366757876773272616260208201527f696d2f0000000000000000000000000000000000000000000000000000000000604082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613151576131d4565b6131596128fe565b60043d036004823e80513d602482011167ffffffffffffffff821117156131815750506131d4565b808201805167ffffffffffffffff81111561319f57505050506131d4565b80602083010160043d0385018111156131bc5750505050506131d4565b6131cb82602001850186612b7e565b82955050505050505b90565b6131e081612ac8565b81146131eb57600080fd5b50565b6131f781612ada565b811461320257600080fd5b50565b61320e81612ae6565b811461321957600080fd5b50565b61322581612b32565b811461323057600080fd5b5056fea2646970667358221220ddc8ca4f7e94fd0143afb1cfce37b999399074b80073ce8427ff069b1b2abc7664736f6c63430008070033697066733a2f2f6261667962656963346e343434786472646667687778323273343273366c6d776f62783462786364726c7070666c6673667578767732726162696d2f7b69647d2e6a736f6e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101205760003560e01c806383515d52116100ad578063e985e9c511610071578063e985e9c51461030b578063ef5697231461033b578063f242432a14610359578063f5298aca14610375578063fc5c93f51461039157610120565b806383515d52146102775780639d53206d14610295578063a22cb465146102b3578063a9025566146102cf578063b6ec2de9146102ed57610120565b80630e89341c116100f45780630e89341c146101c157806325c3bc90146101f15780632eb2c2d61461020f5780634e1273f41461022b5780636b20c4541461025b57610120565b8062fdd58e1461012557806301ffc9a71461015557806305c1ac021461018557806306d2dc9f146101a3575b600080fd5b61013f600480360381019061013a919061210c565b6103af565b60405161014c919061289f565b60405180910390f35b61016f600480360381019061016a9190612217565b610478565b60405161017c9190612702565b60405180910390f35b61018d61055a565b60405161019a919061289f565b60405180910390f35b6101ab61055f565b6040516101b8919061289f565b60405180910390f35b6101db60048036038101906101d69190612271565b610564565b6040516101e8919061271d565b60405180910390f35b6101f9610595565b604051610206919061289f565b60405180910390f35b61022960048036038101906102249190611edb565b61059a565b005b6102456004803603810190610240919061219f565b61063b565b60405161025291906126a9565b60405180910390f35b61027560048036038101906102709190612041565b610754565b005b61027f6107f1565b60405161028c919061289f565b60405180910390f35b61029d6107f6565b6040516102aa919061289f565b60405180910390f35b6102cd60048036038101906102c891906120cc565b6107fb565b005b6102d7610811565b6040516102e4919061289f565b60405180910390f35b6102f5610816565b604051610302919061289f565b60405180910390f35b61032560048036038101906103209190611e9b565b61081b565b6040516103329190612702565b60405180910390f35b6103436108af565b604051610350919061289f565b60405180910390f35b610373600480360381019061036e9190611faa565b6108b4565b005b61038f600480360381019061038a919061214c565b610955565b005b6103996109f2565b6040516103a6919061289f565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610417906127bf565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061054357507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610553575061055282610a1a565b5b9050919050565b600081565b600281565b606061056f82610a84565b60405160200161057f91906125ba565b6040516020818303038152906040529050919050565b600881565b6105a2610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105e857506105e7856105e2610be5565b61081b565b5b610627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061e9061275f565b60405180910390fd5b6106348585858585610bed565b5050505050565b60608151835114610681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106789061285f565b60405180910390fd5b6000835167ffffffffffffffff81111561069e5761069d612cb6565b5b6040519080825280602002602001820160405280156106cc5781602001602082028036833780820191505090505b50905060005b8451811015610749576107198582815181106106f1576106f0612c87565b5b602002602001015185838151811061070c5761070b612c87565b5b60200260200101516103af565b82828151811061072c5761072b612c87565b5b6020026020010181815250508061074290612baf565b90506106d2565b508091505092915050565b61075c610be5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806107a257506107a18361079c610be5565b61081b565b5b6107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061275f565b60405180910390fd5b6107ec838383610f0f565b505050565b600181565b600581565b61080d610806610be5565b83836111de565b5050565b600381565b600681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600481565b6108bc610be5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109025750610901856108fc610be5565b61081b565b5b610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109389061275f565b60405180910390fd5b61094e858585858561134b565b5050505050565b61095d610be5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109a357506109a28361099d610be5565b61081b565b5b6109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d99061275f565b60405180910390fd5b6109ed8383836115e7565b505050565b600781565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415610acc576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050610be0565b600082905060005b60008214610afe578080610ae790612baf565b915050600a82610af79190612a63565b9150610ad4565b60008167ffffffffffffffff811115610b1a57610b19612cb6565b5b6040519080825280601f01601f191660200182016040528015610b4c5781602001600182028036833780820191505090505b5090505b60008514610bd957600182610b659190612a94565b9150600a85610b749190612bf8565b6030610b809190612a0d565b60f81b818381518110610b9657610b95612c87565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85610bd29190612a63565b9450610b50565b8093505050505b919050565b600033905090565b8151835114610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c289061287f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c98906127df565b60405180910390fd5b6000610cab610be5565b9050610cbb81878787878761182e565b60005b8451811015610e6c576000858281518110610cdc57610cdb612c87565b5b602002602001015190506000858381518110610cfb57610cfa612c87565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d939061281f565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e519190612a0d565b9250508190555050505080610e6590612baf565b9050610cbe565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ee39291906126cb565b60405180910390a4610ef9818787878787611836565b610f0781878787878761183e565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f76906127ff565b60405180910390fd5b8051825114610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba9061287f565b60405180910390fd5b6000610fcd610be5565b9050610fed8185600086866040518060200160405280600081525061182e565b60005b835181101561113a57600084828151811061100e5761100d612c87565b5b60200260200101519050600084838151811061102d5761102c612c87565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c59061279f565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061113290612baf565b915050610ff0565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516111b29291906126cb565b60405180910390a46111d881856000868660405180602001604052806000815250611836565b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561124d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112449061283f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161133e9190612702565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906127df565b60405180910390fd5b60006113c5610be5565b905060006113d285611a25565b905060006113df85611a25565b90506113ef83898985858961182e565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d9061281f565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153b9190612a0d565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a6040516115b89291906128ba565b60405180910390a46115ce848a8a86868a611836565b6115dc848a8a8a8a8a611a9f565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e906127ff565b60405180910390fd5b6000611661610be5565b9050600061166e84611a25565b9050600061167b84611a25565b905061169b8387600085856040518060200160405280600081525061182e565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117299061279f565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516117ff9291906128ba565b60405180910390a461182584886000868660405180602001604052806000815250611836565b50505050505050565b505050505050565b505050505050565b61185d8473ffffffffffffffffffffffffffffffffffffffff166109f7565b15611a1d578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016118a39594939291906125e7565b602060405180830381600087803b1580156118bd57600080fd5b505af19250505080156118ee57506040513d601f19601f820116820180604052508101906118eb9190612244565b60015b611994576118fa612ce5565b806308c379a01415611957575061190f613141565b8061191a5750611959565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e919061271d565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061273f565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a129061277f565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611a4457611a43612cb6565b5b604051908082528060200260200182016040528015611a725781602001602082028036833780820191505090505b5090508281600081518110611a8a57611a89612c87565b5b60200260200101818152505080915050919050565b611abe8473ffffffffffffffffffffffffffffffffffffffff166109f7565b15611c7e578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611b0495949392919061264f565b602060405180830381600087803b158015611b1e57600080fd5b505af1925050508015611b4f57506040513d601f19601f82011682018060405250810190611b4c9190612244565b60015b611bf557611b5b612ce5565b806308c379a01415611bb85750611b70613141565b80611b7b5750611bba565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf919061271d565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bec9061273f565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c739061277f565b60405180910390fd5b505b505050505050565b6000611c99611c9484612908565b6128e3565b90508083825260208201905082856020860282011115611cbc57611cbb612d0c565b5b60005b85811015611cec5781611cd28882611da8565b845260208401935060208301925050600181019050611cbf565b5050509392505050565b6000611d09611d0484612934565b6128e3565b90508083825260208201905082856020860282011115611d2c57611d2b612d0c565b5b60005b85811015611d5c5781611d428882611e86565b845260208401935060208301925050600181019050611d2f565b5050509392505050565b6000611d79611d7484612960565b6128e3565b905082815260208101848484011115611d9557611d94612d11565b5b611da0848285612b3c565b509392505050565b600081359050611db7816131d7565b92915050565b600082601f830112611dd257611dd1612d07565b5b8135611de2848260208601611c86565b91505092915050565b600082601f830112611e0057611dff612d07565b5b8135611e10848260208601611cf6565b91505092915050565b600081359050611e28816131ee565b92915050565b600081359050611e3d81613205565b92915050565b600081519050611e5281613205565b92915050565b600082601f830112611e6d57611e6c612d07565b5b8135611e7d848260208601611d66565b91505092915050565b600081359050611e958161321c565b92915050565b60008060408385031215611eb257611eb1612d1b565b5b6000611ec085828601611da8565b9250506020611ed185828601611da8565b9150509250929050565b600080600080600060a08688031215611ef757611ef6612d1b565b5b6000611f0588828901611da8565b9550506020611f1688828901611da8565b945050604086013567ffffffffffffffff811115611f3757611f36612d16565b5b611f4388828901611deb565b935050606086013567ffffffffffffffff811115611f6457611f63612d16565b5b611f7088828901611deb565b925050608086013567ffffffffffffffff811115611f9157611f90612d16565b5b611f9d88828901611e58565b9150509295509295909350565b600080600080600060a08688031215611fc657611fc5612d1b565b5b6000611fd488828901611da8565b9550506020611fe588828901611da8565b9450506040611ff688828901611e86565b935050606061200788828901611e86565b925050608086013567ffffffffffffffff81111561202857612027612d16565b5b61203488828901611e58565b9150509295509295909350565b60008060006060848603121561205a57612059612d1b565b5b600061206886828701611da8565b935050602084013567ffffffffffffffff81111561208957612088612d16565b5b61209586828701611deb565b925050604084013567ffffffffffffffff8111156120b6576120b5612d16565b5b6120c286828701611deb565b9150509250925092565b600080604083850312156120e3576120e2612d1b565b5b60006120f185828601611da8565b925050602061210285828601611e19565b9150509250929050565b6000806040838503121561212357612122612d1b565b5b600061213185828601611da8565b925050602061214285828601611e86565b9150509250929050565b60008060006060848603121561216557612164612d1b565b5b600061217386828701611da8565b935050602061218486828701611e86565b925050604061219586828701611e86565b9150509250925092565b600080604083850312156121b6576121b5612d1b565b5b600083013567ffffffffffffffff8111156121d4576121d3612d16565b5b6121e085828601611dbd565b925050602083013567ffffffffffffffff81111561220157612200612d16565b5b61220d85828601611deb565b9150509250929050565b60006020828403121561222d5761222c612d1b565b5b600061223b84828501611e2e565b91505092915050565b60006020828403121561225a57612259612d1b565b5b600061226884828501611e43565b91505092915050565b60006020828403121561228757612286612d1b565b5b600061229584828501611e86565b91505092915050565b60006122aa838361259c565b60208301905092915050565b6122bf81612ac8565b82525050565b60006122d0826129a1565b6122da81856129cf565b93506122e583612991565b8060005b838110156123165781516122fd888261229e565b9750612308836129c2565b9250506001810190506122e9565b5085935050505092915050565b61232c81612ada565b82525050565b600061233d826129ac565b61234781856129e0565b9350612357818560208601612b4b565b61236081612d20565b840191505092915050565b6000612376826129b7565b61238081856129f1565b9350612390818560208601612b4b565b61239981612d20565b840191505092915050565b60006123af826129b7565b6123b98185612a02565b93506123c9818560208601612b4b565b80840191505092915050565b60006123e26034836129f1565b91506123ed82612d3e565b604082019050919050565b6000612405602f836129f1565b915061241082612d8d565b604082019050919050565b60006124286028836129f1565b915061243382612ddc565b604082019050919050565b600061244b6024836129f1565b915061245682612e2b565b604082019050919050565b600061246e602a836129f1565b915061247982612e7a565b604082019050919050565b6000612491604383612a02565b915061249c82612ec9565b604382019050919050565b60006124b46025836129f1565b91506124bf82612f3e565b604082019050919050565b60006124d76023836129f1565b91506124e282612f8d565b604082019050919050565b60006124fa602a836129f1565b915061250582612fdc565b604082019050919050565b600061251d600583612a02565b91506125288261302b565b600582019050919050565b60006125406029836129f1565b915061254b82613054565b604082019050919050565b60006125636029836129f1565b915061256e826130a3565b604082019050919050565b60006125866028836129f1565b9150612591826130f2565b604082019050919050565b6125a581612b32565b82525050565b6125b481612b32565b82525050565b60006125c582612484565b91506125d182846123a4565b91506125dc82612510565b915081905092915050565b600060a0820190506125fc60008301886122b6565b61260960208301876122b6565b818103604083015261261b81866122c5565b9050818103606083015261262f81856122c5565b905081810360808301526126438184612332565b90509695505050505050565b600060a08201905061266460008301886122b6565b61267160208301876122b6565b61267e60408301866125ab565b61268b60608301856125ab565b818103608083015261269d8184612332565b90509695505050505050565b600060208201905081810360008301526126c381846122c5565b905092915050565b600060408201905081810360008301526126e581856122c5565b905081810360208301526126f981846122c5565b90509392505050565b60006020820190506127176000830184612323565b92915050565b60006020820190508181036000830152612737818461236b565b905092915050565b60006020820190508181036000830152612758816123d5565b9050919050565b60006020820190508181036000830152612778816123f8565b9050919050565b600060208201905081810360008301526127988161241b565b9050919050565b600060208201905081810360008301526127b88161243e565b9050919050565b600060208201905081810360008301526127d881612461565b9050919050565b600060208201905081810360008301526127f8816124a7565b9050919050565b60006020820190508181036000830152612818816124ca565b9050919050565b60006020820190508181036000830152612838816124ed565b9050919050565b6000602082019050818103600083015261285881612533565b9050919050565b6000602082019050818103600083015261287881612556565b9050919050565b6000602082019050818103600083015261289881612579565b9050919050565b60006020820190506128b460008301846125ab565b92915050565b60006040820190506128cf60008301856125ab565b6128dc60208301846125ab565b9392505050565b60006128ed6128fe565b90506128f98282612b7e565b919050565b6000604051905090565b600067ffffffffffffffff82111561292357612922612cb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561294f5761294e612cb6565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561297b5761297a612cb6565b5b61298482612d20565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612a1882612b32565b9150612a2383612b32565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a5857612a57612c29565b5b828201905092915050565b6000612a6e82612b32565b9150612a7983612b32565b925082612a8957612a88612c58565b5b828204905092915050565b6000612a9f82612b32565b9150612aaa83612b32565b925082821015612abd57612abc612c29565b5b828203905092915050565b6000612ad382612b12565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612b69578082015181840152602081019050612b4e565b83811115612b78576000848401525b50505050565b612b8782612d20565b810181811067ffffffffffffffff82111715612ba657612ba5612cb6565b5b80604052505050565b6000612bba82612b32565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bed57612bec612c29565b5b600182019050919050565b6000612c0382612b32565b9150612c0e83612b32565b925082612c1e57612c1d612c58565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115612d045760046000803e612d01600051612d31565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f697066733a2f2f6261667962656963346e34343478647264666768777832327360008201527f343273366c6d776f62783462786364726c7070666c667366757876773272616260208201527f696d2f0000000000000000000000000000000000000000000000000000000000604082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b600060443d1015613151576131d4565b6131596128fe565b60043d036004823e80513d602482011167ffffffffffffffff821117156131815750506131d4565b808201805167ffffffffffffffff81111561319f57505050506131d4565b80602083010160043d0385018111156131bc5750505050506131d4565b6131cb82602001850186612b7e565b82955050505050505b90565b6131e081612ac8565b81146131eb57600080fd5b50565b6131f781612ada565b811461320257600080fd5b50565b61320e81612ae6565b811461321957600080fd5b50565b61322581612b32565b811461323057600080fd5b5056fea2646970667358221220ddc8ca4f7e94fd0143afb1cfce37b999399074b80073ce8427ff069b1b2abc7664736f6c63430008070033
Deployed Bytecode Sourcemap
40219:1392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23469:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22492:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40282:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40366;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41284:324;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40618:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25413:439;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23865:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39783:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40324:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40492;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24462:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40408:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40534;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24689:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40450:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24929:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39448:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40576:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23469:230;23555:7;23602:1;23583:21;;:7;:21;;;;23575:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;23669:9;:13;23679:2;23669:13;;;;;;;;;;;:22;23683:7;23669:22;;;;;;;;;;;;;;;;23662:29;;23469:230;;;;:::o;22492:310::-;22594:4;22646:26;22631:41;;;:11;:41;;;;:110;;;;22704:37;22689:52;;;:11;:52;;;;22631:110;:163;;;;22758:36;22782:11;22758:23;:36::i;:::-;22631:163;22611:183;;22492:310;;;:::o;40282:35::-;40316:1;40282:35;:::o;40366:::-;40400:1;40366:35;:::o;41284:324::-;41345:13;41522:26;41539:8;41522:16;:26::i;:::-;41399:190;;;;;;;;:::i;:::-;;;;;;;;;;;;;41371:229;;41284:324;;;:::o;40618:35::-;40652:1;40618:35;:::o;25413:439::-;25654:12;:10;:12::i;:::-;25646:20;;:4;:20;;;:60;;;;25670:36;25687:4;25693:12;:10;:12::i;:::-;25670:16;:36::i;:::-;25646:60;25624:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;25792:52;25815:4;25821:2;25825:3;25830:7;25839:4;25792:22;:52::i;:::-;25413:439;;;;;:::o;23865:524::-;24021:16;24082:3;:10;24063:8;:15;:29;24055:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24151:30;24198:8;:15;24184:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24151:63;;24232:9;24227:122;24251:8;:15;24247:1;:19;24227:122;;;24307:30;24317:8;24326:1;24317:11;;;;;;;;:::i;:::-;;;;;;;;24330:3;24334:1;24330:6;;;;;;;;:::i;:::-;;;;;;;;24307:9;:30::i;:::-;24288:13;24302:1;24288:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;24268:3;;;;:::i;:::-;;;24227:122;;;;24368:13;24361:20;;;23865:524;;;;:::o;39783:359::-;39959:12;:10;:12::i;:::-;39948:23;;:7;:23;;;:66;;;;39975:39;39992:7;40001:12;:10;:12::i;:::-;39975:16;:39::i;:::-;39948:66;39926:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;40102:32;40113:7;40122:3;40127:6;40102:10;:32::i;:::-;39783:359;;;:::o;40324:35::-;40358:1;40324:35;:::o;40492:::-;40526:1;40492:35;:::o;24462:155::-;24557:52;24576:12;:10;:12::i;:::-;24590:8;24600;24557:18;:52::i;:::-;24462:155;;:::o;40408:35::-;40442:1;40408:35;:::o;40534:::-;40568:1;40534:35;:::o;24689:168::-;24788:4;24812:18;:27;24831:7;24812:27;;;;;;;;;;;;;;;:37;24840:8;24812:37;;;;;;;;;;;;;;;;;;;;;;;;;24805:44;;24689:168;;;;:::o;40450:35::-;40484:1;40450:35;:::o;24929:407::-;25145:12;:10;:12::i;:::-;25137:20;;:4;:20;;;:60;;;;25161:36;25178:4;25184:12;:10;:12::i;:::-;25161:16;:36::i;:::-;25137:60;25115:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;25283:45;25301:4;25307:2;25311;25315:6;25323:4;25283:17;:45::i;:::-;24929:407;;;;;:::o;39448:327::-;39599:12;:10;:12::i;:::-;39588:23;;:7;:23;;;:66;;;;39615:39;39632:7;39641:12;:10;:12::i;:::-;39615:16;:39::i;:::-;39588:66;39566:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;39742:25;39748:7;39757:2;39761:5;39742;:25::i;:::-;39448:327;;;:::o;40576:35::-;40610:1;40576:35;:::o;4635:326::-;4695:4;4952:1;4930:7;:19;;;:23;4923:30;;4635:326;;;:::o;13749:157::-;13834:4;13873:25;13858:40;;;:11;:40;;;;13851:47;;13749:157;;;:::o;430:723::-;486:13;716:1;707:5;:10;703:53;;;734:10;;;;;;;;;;;;;;;;;;;;;703:53;766:12;781:5;766:20;;797:14;822:78;837:1;829:4;:9;822:78;;855:8;;;;;:::i;:::-;;;;886:2;878:10;;;;;:::i;:::-;;;822:78;;;910:19;942:6;932:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;910:39;;960:154;976:1;967:5;:10;960:154;;1004:1;994:11;;;;;:::i;:::-;;;1071:2;1063:5;:10;;;;:::i;:::-;1050:2;:24;;;;:::i;:::-;1037:39;;1020:6;1027;1020:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1100:2;1091:11;;;;;:::i;:::-;;;960:154;;;1138:6;1124:21;;;;;430:723;;;;:::o;3182:98::-;3235:7;3262:10;3255:17;;3182:98;:::o;27648:1146::-;27875:7;:14;27861:3;:10;:28;27853:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27967:1;27953:16;;:2;:16;;;;27945:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28024:16;28043:12;:10;:12::i;:::-;28024:31;;28068:60;28089:8;28099:4;28105:2;28109:3;28114:7;28123:4;28068:20;:60::i;:::-;28146:9;28141:421;28165:3;:10;28161:1;:14;28141:421;;;28197:10;28210:3;28214:1;28210:6;;;;;;;;:::i;:::-;;;;;;;;28197:19;;28231:14;28248:7;28256:1;28248:10;;;;;;;;:::i;:::-;;;;;;;;28231:27;;28275:19;28297:9;:13;28307:2;28297:13;;;;;;;;;;;:19;28311:4;28297:19;;;;;;;;;;;;;;;;28275:41;;28354:6;28339:11;:21;;28331:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;28487:6;28473:11;:20;28451:9;:13;28461:2;28451:13;;;;;;;;;;;:19;28465:4;28451:19;;;;;;;;;;;;;;;:42;;;;28544:6;28523:9;:13;28533:2;28523:13;;;;;;;;;;;:17;28537:2;28523:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28182:380;;;28177:3;;;;:::i;:::-;;;28141:421;;;;28609:2;28579:47;;28603:4;28579:47;;28593:8;28579:47;;;28613:3;28618:7;28579:47;;;;;;;:::i;:::-;;;;;;;;28639:59;28659:8;28669:4;28675:2;28679:3;28684:7;28693:4;28639:19;:59::i;:::-;28711:75;28747:8;28757:4;28763:2;28767:3;28772:7;28781:4;28711:35;:75::i;:::-;27842:952;27648:1146;;;;;:::o;33413:969::-;33581:1;33565:18;;:4;:18;;;;33557:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;33656:7;:14;33642:3;:10;:28;33634:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;33728:16;33747:12;:10;:12::i;:::-;33728:31;;33772:66;33793:8;33803:4;33817:1;33821:3;33826:7;33772:66;;;;;;;;;;;;:20;:66::i;:::-;33856:9;33851:373;33875:3;:10;33871:1;:14;33851:373;;;33907:10;33920:3;33924:1;33920:6;;;;;;;;:::i;:::-;;;;;;;;33907:19;;33941:14;33958:7;33966:1;33958:10;;;;;;;;:::i;:::-;;;;;;;;33941:27;;33985:19;34007:9;:13;34017:2;34007:13;;;;;;;;;;;:19;34021:4;34007:19;;;;;;;;;;;;;;;;33985:41;;34064:6;34049:11;:21;;34041:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;34191:6;34177:11;:20;34155:9;:13;34165:2;34155:13;;;;;;;;;;;:19;34169:4;34155:19;;;;;;;;;;;;;;;:42;;;;33892:332;;;33887:3;;;;;:::i;:::-;;;;33851:373;;;;34279:1;34241:55;;34265:4;34241:55;;34255:8;34241:55;;;34283:3;34288:7;34241:55;;;;;;;:::i;:::-;;;;;;;;34309:65;34329:8;34339:4;34353:1;34357:3;34362:7;34309:65;;;;;;;;;;;;:19;:65::i;:::-;33546:836;33413:969;;;:::o;34525:331::-;34680:8;34671:17;;:5;:17;;;;34663:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;34783:8;34745:18;:25;34764:5;34745:25;;;;;;;;;;;;;;;:35;34771:8;34745:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34829:8;34807:41;;34822:5;34807:41;;;34839:8;34807:41;;;;;;:::i;:::-;;;;;;;;34525:331;;;:::o;26316:974::-;26518:1;26504:16;;:2;:16;;;;26496:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26575:16;26594:12;:10;:12::i;:::-;26575:31;;26617:20;26640:21;26658:2;26640:17;:21::i;:::-;26617:44;;26672:24;26699:25;26717:6;26699:17;:25::i;:::-;26672:52;;26737:60;26758:8;26768:4;26774:2;26778:3;26783:7;26792:4;26737:20;:60::i;:::-;26810:19;26832:9;:13;26842:2;26832:13;;;;;;;;;;;:19;26846:4;26832:19;;;;;;;;;;;;;;;;26810:41;;26885:6;26870:11;:21;;26862:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27010:6;26996:11;:20;26974:9;:13;26984:2;26974:13;;;;;;;;;;;:19;26988:4;26974:19;;;;;;;;;;;;;;;:42;;;;27059:6;27038:9;:13;27048:2;27038:13;;;;;;;;;;;:17;27052:2;27038:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27114:2;27083:46;;27108:4;27083:46;;27098:8;27083:46;;;27118:2;27122:6;27083:46;;;;;;;:::i;:::-;;;;;;;;27142:59;27162:8;27172:4;27178:2;27182:3;27187:7;27196:4;27142:19;:59::i;:::-;27214:68;27245:8;27255:4;27261:2;27265;27269:6;27277:4;27214:30;:68::i;:::-;26485:805;;;;26316:974;;;;;:::o;32355:808::-;32498:1;32482:18;;:4;:18;;;;32474:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;32553:16;32572:12;:10;:12::i;:::-;32553:31;;32595:20;32618:21;32636:2;32618:17;:21::i;:::-;32595:44;;32650:24;32677:25;32695:6;32677:17;:25::i;:::-;32650:52;;32715:66;32736:8;32746:4;32760:1;32764:3;32769:7;32715:66;;;;;;;;;;;;:20;:66::i;:::-;32794:19;32816:9;:13;32826:2;32816:13;;;;;;;;;;;:19;32830:4;32816:19;;;;;;;;;;;;;;;;32794:41;;32869:6;32854:11;:21;;32846:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;32988:6;32974:11;:20;32952:9;:13;32962:2;32952:13;;;;;;;;;;;:19;32966:4;32952:19;;;;;;;;;;;;;;;:42;;;;33062:1;33023:54;;33048:4;33023:54;;33038:8;33023:54;;;33066:2;33070:6;33023:54;;;;;;;:::i;:::-;;;;;;;;33090:65;33110:8;33120:4;33134:1;33138:3;33143:7;33090:65;;;;;;;;;;;;:19;:65::i;:::-;32463:700;;;;32355:808;;;:::o;35814:221::-;;;;;;;:::o;36990:220::-;;;;;;;:::o;37970:813::-;38210:15;:2;:13;;;:15::i;:::-;38206:570;;;38263:2;38246:43;;;38290:8;38300:4;38306:3;38311:7;38320:4;38246:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;38242:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;38638:6;38631:14;;;;;;;;;;;:::i;:::-;;;;;;;;38242:523;;;38687:62;;;;;;;;;;:::i;:::-;;;;;;;;38242:523;38419:48;;;38407:60;;;:8;:60;;;;38403:159;;38492:50;;;;;;;;;;:::i;:::-;;;;;;;;38403:159;38326:251;38206:570;37970:813;;;;;;:::o;38791:198::-;38857:16;38886:22;38925:1;38911:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38886:41;;38949:7;38938:5;38944:1;38938:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;38976:5;38969:12;;;38791:198;;;:::o;37218:744::-;37433:15;:2;:13;;;:15::i;:::-;37429:526;;;37486:2;37469:38;;;37508:8;37518:4;37524:2;37528:6;37536:4;37469:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37465:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37817:6;37810:14;;;;;;;;;;;:::i;:::-;;;;;;;;37465:479;;;37866:62;;;;;;;;;;:::i;:::-;;;;;;;;37465:479;37603:43;;;37591:55;;;:8;:55;;;;37587:154;;37671:50;;;;;;;;;;:::i;:::-;;;;;;;;37587:154;37542:214;37429:526;37218:744;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1913:139;;;;:::o;2075:370::-;2146:5;2195:3;2188:4;2180:6;2176:17;2172:27;2162:122;;2203:79;;:::i;:::-;2162:122;2320:6;2307:20;2345:94;2435:3;2427:6;2420:4;2412:6;2408:17;2345:94;:::i;:::-;2336:103;;2152:293;2075:370;;;;:::o;2468:::-;2539:5;2588:3;2581:4;2573:6;2569:17;2565:27;2555:122;;2596:79;;:::i;:::-;2555:122;2713:6;2700:20;2738:94;2828:3;2820:6;2813:4;2805:6;2801:17;2738:94;:::i;:::-;2729:103;;2545:293;2468:370;;;;:::o;2844:133::-;2887:5;2925:6;2912:20;2903:29;;2941:30;2965:5;2941:30;:::i;:::-;2844:133;;;;:::o;2983:137::-;3028:5;3066:6;3053:20;3044:29;;3082:32;3108:5;3082:32;:::i;:::-;2983:137;;;;:::o;3126:141::-;3182:5;3213:6;3207:13;3198:22;;3229:32;3255:5;3229:32;:::i;:::-;3126:141;;;;:::o;3286:338::-;3341:5;3390:3;3383:4;3375:6;3371:17;3367:27;3357:122;;3398:79;;:::i;:::-;3357:122;3515:6;3502:20;3540:78;3614:3;3606:6;3599:4;3591:6;3587:17;3540:78;:::i;:::-;3531:87;;3347:277;3286:338;;;;:::o;3630:139::-;3676:5;3714:6;3701:20;3692:29;;3730:33;3757:5;3730:33;:::i;:::-;3630:139;;;;:::o;3775:474::-;3843:6;3851;3900:2;3888:9;3879:7;3875:23;3871:32;3868:119;;;3906:79;;:::i;:::-;3868:119;4026:1;4051:53;4096:7;4087:6;4076:9;4072:22;4051:53;:::i;:::-;4041:63;;3997:117;4153:2;4179:53;4224:7;4215:6;4204:9;4200:22;4179:53;:::i;:::-;4169:63;;4124:118;3775:474;;;;;:::o;4255:1509::-;4409:6;4417;4425;4433;4441;4490:3;4478:9;4469:7;4465:23;4461:33;4458:120;;;4497:79;;:::i;:::-;4458:120;4617:1;4642:53;4687:7;4678:6;4667:9;4663:22;4642:53;:::i;:::-;4632:63;;4588:117;4744:2;4770:53;4815:7;4806:6;4795:9;4791:22;4770:53;:::i;:::-;4760:63;;4715:118;4900:2;4889:9;4885:18;4872:32;4931:18;4923:6;4920:30;4917:117;;;4953:79;;:::i;:::-;4917:117;5058:78;5128:7;5119:6;5108:9;5104:22;5058:78;:::i;:::-;5048:88;;4843:303;5213:2;5202:9;5198:18;5185:32;5244:18;5236:6;5233:30;5230:117;;;5266:79;;:::i;:::-;5230:117;5371:78;5441:7;5432:6;5421:9;5417:22;5371:78;:::i;:::-;5361:88;;5156:303;5526:3;5515:9;5511:19;5498:33;5558:18;5550:6;5547:30;5544:117;;;5580:79;;:::i;:::-;5544:117;5685:62;5739:7;5730:6;5719:9;5715:22;5685:62;:::i;:::-;5675:72;;5469:288;4255:1509;;;;;;;;:::o;5770:1089::-;5874:6;5882;5890;5898;5906;5955:3;5943:9;5934:7;5930:23;5926:33;5923:120;;;5962:79;;:::i;:::-;5923:120;6082:1;6107:53;6152:7;6143:6;6132:9;6128:22;6107:53;:::i;:::-;6097:63;;6053:117;6209:2;6235:53;6280:7;6271:6;6260:9;6256:22;6235:53;:::i;:::-;6225:63;;6180:118;6337:2;6363:53;6408:7;6399:6;6388:9;6384:22;6363:53;:::i;:::-;6353:63;;6308:118;6465:2;6491:53;6536:7;6527:6;6516:9;6512:22;6491:53;:::i;:::-;6481:63;;6436:118;6621:3;6610:9;6606:19;6593:33;6653:18;6645:6;6642:30;6639:117;;;6675:79;;:::i;:::-;6639:117;6780:62;6834:7;6825:6;6814:9;6810:22;6780:62;:::i;:::-;6770:72;;6564:288;5770:1089;;;;;;;;:::o;6865:1039::-;6992:6;7000;7008;7057:2;7045:9;7036:7;7032:23;7028:32;7025:119;;;7063:79;;:::i;:::-;7025:119;7183:1;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7154:117;7338:2;7327:9;7323:18;7310:32;7369:18;7361:6;7358:30;7355:117;;;7391:79;;:::i;:::-;7355:117;7496:78;7566:7;7557:6;7546:9;7542:22;7496:78;:::i;:::-;7486:88;;7281:303;7651:2;7640:9;7636:18;7623:32;7682:18;7674:6;7671:30;7668:117;;;7704:79;;:::i;:::-;7668:117;7809:78;7879:7;7870:6;7859:9;7855:22;7809:78;:::i;:::-;7799:88;;7594:303;6865:1039;;;;;:::o;7910:468::-;7975:6;7983;8032:2;8020:9;8011:7;8007:23;8003:32;8000:119;;;8038:79;;:::i;:::-;8000:119;8158:1;8183:53;8228:7;8219:6;8208:9;8204:22;8183:53;:::i;:::-;8173:63;;8129:117;8285:2;8311:50;8353:7;8344:6;8333:9;8329:22;8311:50;:::i;:::-;8301:60;;8256:115;7910:468;;;;;:::o;8384:474::-;8452:6;8460;8509:2;8497:9;8488:7;8484:23;8480:32;8477:119;;;8515:79;;:::i;:::-;8477:119;8635:1;8660:53;8705:7;8696:6;8685:9;8681:22;8660:53;:::i;:::-;8650:63;;8606:117;8762:2;8788:53;8833:7;8824:6;8813:9;8809:22;8788:53;:::i;:::-;8778:63;;8733:118;8384:474;;;;;:::o;8864:619::-;8941:6;8949;8957;9006:2;8994:9;8985:7;8981:23;8977:32;8974:119;;;9012:79;;:::i;:::-;8974:119;9132:1;9157:53;9202:7;9193:6;9182:9;9178:22;9157:53;:::i;:::-;9147:63;;9103:117;9259:2;9285:53;9330:7;9321:6;9310:9;9306:22;9285:53;:::i;:::-;9275:63;;9230:118;9387:2;9413:53;9458:7;9449:6;9438:9;9434:22;9413:53;:::i;:::-;9403:63;;9358:118;8864:619;;;;;:::o;9489:894::-;9607:6;9615;9664:2;9652:9;9643:7;9639:23;9635:32;9632:119;;;9670:79;;:::i;:::-;9632:119;9818:1;9807:9;9803:17;9790:31;9848:18;9840:6;9837:30;9834:117;;;9870:79;;:::i;:::-;9834:117;9975:78;10045:7;10036:6;10025:9;10021:22;9975:78;:::i;:::-;9965:88;;9761:302;10130:2;10119:9;10115:18;10102:32;10161:18;10153:6;10150:30;10147:117;;;10183:79;;:::i;:::-;10147:117;10288:78;10358:7;10349:6;10338:9;10334:22;10288:78;:::i;:::-;10278:88;;10073:303;9489:894;;;;;:::o;10389:327::-;10447:6;10496:2;10484:9;10475:7;10471:23;10467:32;10464:119;;;10502:79;;:::i;:::-;10464:119;10622:1;10647:52;10691:7;10682:6;10671:9;10667:22;10647:52;:::i;:::-;10637:62;;10593:116;10389:327;;;;:::o;10722:349::-;10791:6;10840:2;10828:9;10819:7;10815:23;10811:32;10808:119;;;10846:79;;:::i;:::-;10808:119;10966:1;10991:63;11046:7;11037:6;11026:9;11022:22;10991:63;:::i;:::-;10981:73;;10937:127;10722:349;;;;:::o;11077:329::-;11136:6;11185:2;11173:9;11164:7;11160:23;11156:32;11153:119;;;11191:79;;:::i;:::-;11153:119;11311:1;11336:53;11381:7;11372:6;11361:9;11357:22;11336:53;:::i;:::-;11326:63;;11282:117;11077:329;;;;:::o;11412:179::-;11481:10;11502:46;11544:3;11536:6;11502:46;:::i;:::-;11580:4;11575:3;11571:14;11557:28;;11412:179;;;;:::o;11597:118::-;11684:24;11702:5;11684:24;:::i;:::-;11679:3;11672:37;11597:118;;:::o;11751:732::-;11870:3;11899:54;11947:5;11899:54;:::i;:::-;11969:86;12048:6;12043:3;11969:86;:::i;:::-;11962:93;;12079:56;12129:5;12079:56;:::i;:::-;12158:7;12189:1;12174:284;12199:6;12196:1;12193:13;12174:284;;;12275:6;12269:13;12302:63;12361:3;12346:13;12302:63;:::i;:::-;12295:70;;12388:60;12441:6;12388:60;:::i;:::-;12378:70;;12234:224;12221:1;12218;12214:9;12209:14;;12174:284;;;12178:14;12474:3;12467:10;;11875:608;;;11751:732;;;;:::o;12489:109::-;12570:21;12585:5;12570:21;:::i;:::-;12565:3;12558:34;12489:109;;:::o;12604:360::-;12690:3;12718:38;12750:5;12718:38;:::i;:::-;12772:70;12835:6;12830:3;12772:70;:::i;:::-;12765:77;;12851:52;12896:6;12891:3;12884:4;12877:5;12873:16;12851:52;:::i;:::-;12928:29;12950:6;12928:29;:::i;:::-;12923:3;12919:39;12912:46;;12694:270;12604:360;;;;:::o;12970:364::-;13058:3;13086:39;13119:5;13086:39;:::i;:::-;13141:71;13205:6;13200:3;13141:71;:::i;:::-;13134:78;;13221:52;13266:6;13261:3;13254:4;13247:5;13243:16;13221:52;:::i;:::-;13298:29;13320:6;13298:29;:::i;:::-;13293:3;13289:39;13282:46;;13062:272;12970:364;;;;:::o;13340:377::-;13446:3;13474:39;13507:5;13474:39;:::i;:::-;13529:89;13611:6;13606:3;13529:89;:::i;:::-;13522:96;;13627:52;13672:6;13667:3;13660:4;13653:5;13649:16;13627:52;:::i;:::-;13704:6;13699:3;13695:16;13688:23;;13450:267;13340:377;;;;:::o;13723:366::-;13865:3;13886:67;13950:2;13945:3;13886:67;:::i;:::-;13879:74;;13962:93;14051:3;13962:93;:::i;:::-;14080:2;14075:3;14071:12;14064:19;;13723:366;;;:::o;14095:::-;14237:3;14258:67;14322:2;14317:3;14258:67;:::i;:::-;14251:74;;14334:93;14423:3;14334:93;:::i;:::-;14452:2;14447:3;14443:12;14436:19;;14095:366;;;:::o;14467:::-;14609:3;14630:67;14694:2;14689:3;14630:67;:::i;:::-;14623:74;;14706:93;14795:3;14706:93;:::i;:::-;14824:2;14819:3;14815:12;14808:19;;14467:366;;;:::o;14839:::-;14981:3;15002:67;15066:2;15061:3;15002:67;:::i;:::-;14995:74;;15078:93;15167:3;15078:93;:::i;:::-;15196:2;15191:3;15187:12;15180:19;;14839:366;;;:::o;15211:::-;15353:3;15374:67;15438:2;15433:3;15374:67;:::i;:::-;15367:74;;15450:93;15539:3;15450:93;:::i;:::-;15568:2;15563:3;15559:12;15552:19;;15211:366;;;:::o;15583:402::-;15743:3;15764:85;15846:2;15841:3;15764:85;:::i;:::-;15757:92;;15858:93;15947:3;15858:93;:::i;:::-;15976:2;15971:3;15967:12;15960:19;;15583:402;;;:::o;15991:366::-;16133:3;16154:67;16218:2;16213:3;16154:67;:::i;:::-;16147:74;;16230:93;16319:3;16230:93;:::i;:::-;16348:2;16343:3;16339:12;16332:19;;15991:366;;;:::o;16363:::-;16505:3;16526:67;16590:2;16585:3;16526:67;:::i;:::-;16519:74;;16602:93;16691:3;16602:93;:::i;:::-;16720:2;16715:3;16711:12;16704:19;;16363:366;;;:::o;16735:::-;16877:3;16898:67;16962:2;16957:3;16898:67;:::i;:::-;16891:74;;16974:93;17063:3;16974:93;:::i;:::-;17092:2;17087:3;17083:12;17076:19;;16735:366;;;:::o;17107:400::-;17267:3;17288:84;17370:1;17365:3;17288:84;:::i;:::-;17281:91;;17381:93;17470:3;17381:93;:::i;:::-;17499:1;17494:3;17490:11;17483:18;;17107:400;;;:::o;17513:366::-;17655:3;17676:67;17740:2;17735:3;17676:67;:::i;:::-;17669:74;;17752:93;17841:3;17752:93;:::i;:::-;17870:2;17865:3;17861:12;17854:19;;17513:366;;;:::o;17885:::-;18027:3;18048:67;18112:2;18107:3;18048:67;:::i;:::-;18041:74;;18124:93;18213:3;18124:93;:::i;:::-;18242:2;18237:3;18233:12;18226:19;;17885:366;;;:::o;18257:::-;18399:3;18420:67;18484:2;18479:3;18420:67;:::i;:::-;18413:74;;18496:93;18585:3;18496:93;:::i;:::-;18614:2;18609:3;18605:12;18598:19;;18257:366;;;:::o;18629:108::-;18706:24;18724:5;18706:24;:::i;:::-;18701:3;18694:37;18629:108;;:::o;18743:118::-;18830:24;18848:5;18830:24;:::i;:::-;18825:3;18818:37;18743:118;;:::o;18867:807::-;19201:3;19223:148;19367:3;19223:148;:::i;:::-;19216:155;;19388:95;19479:3;19470:6;19388:95;:::i;:::-;19381:102;;19500:148;19644:3;19500:148;:::i;:::-;19493:155;;19665:3;19658:10;;18867:807;;;;:::o;19680:1053::-;20003:4;20041:3;20030:9;20026:19;20018:27;;20055:71;20123:1;20112:9;20108:17;20099:6;20055:71;:::i;:::-;20136:72;20204:2;20193:9;20189:18;20180:6;20136:72;:::i;:::-;20255:9;20249:4;20245:20;20240:2;20229:9;20225:18;20218:48;20283:108;20386:4;20377:6;20283:108;:::i;:::-;20275:116;;20438:9;20432:4;20428:20;20423:2;20412:9;20408:18;20401:48;20466:108;20569:4;20560:6;20466:108;:::i;:::-;20458:116;;20622:9;20616:4;20612:20;20606:3;20595:9;20591:19;20584:49;20650:76;20721:4;20712:6;20650:76;:::i;:::-;20642:84;;19680:1053;;;;;;;;:::o;20739:751::-;20962:4;21000:3;20989:9;20985:19;20977:27;;21014:71;21082:1;21071:9;21067:17;21058:6;21014:71;:::i;:::-;21095:72;21163:2;21152:9;21148:18;21139:6;21095:72;:::i;:::-;21177;21245:2;21234:9;21230:18;21221:6;21177:72;:::i;:::-;21259;21327:2;21316:9;21312:18;21303:6;21259:72;:::i;:::-;21379:9;21373:4;21369:20;21363:3;21352:9;21348:19;21341:49;21407:76;21478:4;21469:6;21407:76;:::i;:::-;21399:84;;20739:751;;;;;;;;:::o;21496:373::-;21639:4;21677:2;21666:9;21662:18;21654:26;;21726:9;21720:4;21716:20;21712:1;21701:9;21697:17;21690:47;21754:108;21857:4;21848:6;21754:108;:::i;:::-;21746:116;;21496:373;;;;:::o;21875:634::-;22096:4;22134:2;22123:9;22119:18;22111:26;;22183:9;22177:4;22173:20;22169:1;22158:9;22154:17;22147:47;22211:108;22314:4;22305:6;22211:108;:::i;:::-;22203:116;;22366:9;22360:4;22356:20;22351:2;22340:9;22336:18;22329:48;22394:108;22497:4;22488:6;22394:108;:::i;:::-;22386:116;;21875:634;;;;;:::o;22515:210::-;22602:4;22640:2;22629:9;22625:18;22617:26;;22653:65;22715:1;22704:9;22700:17;22691:6;22653:65;:::i;:::-;22515:210;;;;:::o;22731:313::-;22844:4;22882:2;22871:9;22867:18;22859:26;;22931:9;22925:4;22921:20;22917:1;22906:9;22902:17;22895:47;22959:78;23032:4;23023:6;22959:78;:::i;:::-;22951:86;;22731:313;;;;:::o;23050:419::-;23216:4;23254:2;23243:9;23239:18;23231:26;;23303:9;23297:4;23293:20;23289:1;23278:9;23274:17;23267:47;23331:131;23457:4;23331:131;:::i;:::-;23323:139;;23050:419;;;:::o;23475:::-;23641:4;23679:2;23668:9;23664:18;23656:26;;23728:9;23722:4;23718:20;23714:1;23703:9;23699:17;23692:47;23756:131;23882:4;23756:131;:::i;:::-;23748:139;;23475:419;;;:::o;23900:::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;23900:419;;;:::o;24325:::-;24491:4;24529:2;24518:9;24514:18;24506:26;;24578:9;24572:4;24568:20;24564:1;24553:9;24549:17;24542:47;24606:131;24732:4;24606:131;:::i;:::-;24598:139;;24325:419;;;:::o;24750:::-;24916:4;24954:2;24943:9;24939:18;24931:26;;25003:9;24997:4;24993:20;24989:1;24978:9;24974:17;24967:47;25031:131;25157:4;25031:131;:::i;:::-;25023:139;;24750:419;;;:::o;25175:::-;25341:4;25379:2;25368:9;25364:18;25356:26;;25428:9;25422:4;25418:20;25414:1;25403:9;25399:17;25392:47;25456:131;25582:4;25456:131;:::i;:::-;25448:139;;25175:419;;;:::o;25600:::-;25766:4;25804:2;25793:9;25789:18;25781:26;;25853:9;25847:4;25843:20;25839:1;25828:9;25824:17;25817:47;25881:131;26007:4;25881:131;:::i;:::-;25873:139;;25600:419;;;:::o;26025:::-;26191:4;26229:2;26218:9;26214:18;26206:26;;26278:9;26272:4;26268:20;26264:1;26253:9;26249:17;26242:47;26306:131;26432:4;26306:131;:::i;:::-;26298:139;;26025:419;;;:::o;26450:::-;26616:4;26654:2;26643:9;26639:18;26631:26;;26703:9;26697:4;26693:20;26689:1;26678:9;26674:17;26667:47;26731:131;26857:4;26731:131;:::i;:::-;26723:139;;26450:419;;;:::o;26875:::-;27041:4;27079:2;27068:9;27064:18;27056:26;;27128:9;27122:4;27118:20;27114:1;27103:9;27099:17;27092:47;27156:131;27282:4;27156:131;:::i;:::-;27148:139;;26875:419;;;:::o;27300:::-;27466:4;27504:2;27493:9;27489:18;27481:26;;27553:9;27547:4;27543:20;27539:1;27528:9;27524:17;27517:47;27581:131;27707:4;27581:131;:::i;:::-;27573:139;;27300:419;;;:::o;27725:222::-;27818:4;27856:2;27845:9;27841:18;27833:26;;27869:71;27937:1;27926:9;27922:17;27913:6;27869:71;:::i;:::-;27725:222;;;;:::o;27953:332::-;28074:4;28112:2;28101:9;28097:18;28089:26;;28125:71;28193:1;28182:9;28178:17;28169:6;28125:71;:::i;:::-;28206:72;28274:2;28263:9;28259:18;28250:6;28206:72;:::i;:::-;27953:332;;;;;:::o;28291:129::-;28325:6;28352:20;;:::i;:::-;28342:30;;28381:33;28409:4;28401:6;28381:33;:::i;:::-;28291:129;;;:::o;28426:75::-;28459:6;28492:2;28486:9;28476:19;;28426:75;:::o;28507:311::-;28584:4;28674:18;28666:6;28663:30;28660:56;;;28696:18;;:::i;:::-;28660:56;28746:4;28738:6;28734:17;28726:25;;28806:4;28800;28796:15;28788:23;;28507:311;;;:::o;28824:::-;28901:4;28991:18;28983:6;28980:30;28977:56;;;29013:18;;:::i;:::-;28977:56;29063:4;29055:6;29051:17;29043:25;;29123:4;29117;29113:15;29105:23;;28824:311;;;:::o;29141:307::-;29202:4;29292:18;29284:6;29281:30;29278:56;;;29314:18;;:::i;:::-;29278:56;29352:29;29374:6;29352:29;:::i;:::-;29344:37;;29436:4;29430;29426:15;29418:23;;29141:307;;;:::o;29454:132::-;29521:4;29544:3;29536:11;;29574:4;29569:3;29565:14;29557:22;;29454:132;;;:::o;29592:114::-;29659:6;29693:5;29687:12;29677:22;;29592:114;;;:::o;29712:98::-;29763:6;29797:5;29791:12;29781:22;;29712:98;;;:::o;29816:99::-;29868:6;29902:5;29896:12;29886:22;;29816:99;;;:::o;29921:113::-;29991:4;30023;30018:3;30014:14;30006:22;;29921:113;;;:::o;30040:184::-;30139:11;30173:6;30168:3;30161:19;30213:4;30208:3;30204:14;30189:29;;30040:184;;;;:::o;30230:168::-;30313:11;30347:6;30342:3;30335:19;30387:4;30382:3;30378:14;30363:29;;30230:168;;;;:::o;30404:169::-;30488:11;30522:6;30517:3;30510:19;30562:4;30557:3;30553:14;30538:29;;30404:169;;;;:::o;30579:148::-;30681:11;30718:3;30703:18;;30579:148;;;;:::o;30733:305::-;30773:3;30792:20;30810:1;30792:20;:::i;:::-;30787:25;;30826:20;30844:1;30826:20;:::i;:::-;30821:25;;30980:1;30912:66;30908:74;30905:1;30902:81;30899:107;;;30986:18;;:::i;:::-;30899:107;31030:1;31027;31023:9;31016:16;;30733:305;;;;:::o;31044:185::-;31084:1;31101:20;31119:1;31101:20;:::i;:::-;31096:25;;31135:20;31153:1;31135:20;:::i;:::-;31130:25;;31174:1;31164:35;;31179:18;;:::i;:::-;31164:35;31221:1;31218;31214:9;31209:14;;31044:185;;;;:::o;31235:191::-;31275:4;31295:20;31313:1;31295:20;:::i;:::-;31290:25;;31329:20;31347:1;31329:20;:::i;:::-;31324:25;;31368:1;31365;31362:8;31359:34;;;31373:18;;:::i;:::-;31359:34;31418:1;31415;31411:9;31403:17;;31235:191;;;;:::o;31432:96::-;31469:7;31498:24;31516:5;31498:24;:::i;:::-;31487:35;;31432:96;;;:::o;31534:90::-;31568:7;31611:5;31604:13;31597:21;31586:32;;31534:90;;;:::o;31630:149::-;31666:7;31706:66;31699:5;31695:78;31684:89;;31630:149;;;:::o;31785:126::-;31822:7;31862:42;31855:5;31851:54;31840:65;;31785:126;;;:::o;31917:77::-;31954:7;31983:5;31972:16;;31917:77;;;:::o;32000:154::-;32084:6;32079:3;32074;32061:30;32146:1;32137:6;32132:3;32128:16;32121:27;32000:154;;;:::o;32160:307::-;32228:1;32238:113;32252:6;32249:1;32246:13;32238:113;;;32337:1;32332:3;32328:11;32322:18;32318:1;32313:3;32309:11;32302:39;32274:2;32271:1;32267:10;32262:15;;32238:113;;;32369:6;32366:1;32363:13;32360:101;;;32449:1;32440:6;32435:3;32431:16;32424:27;32360:101;32209:258;32160:307;;;:::o;32473:281::-;32556:27;32578:4;32556:27;:::i;:::-;32548:6;32544:40;32686:6;32674:10;32671:22;32650:18;32638:10;32635:34;32632:62;32629:88;;;32697:18;;:::i;:::-;32629:88;32737:10;32733:2;32726:22;32516:238;32473:281;;:::o;32760:233::-;32799:3;32822:24;32840:5;32822:24;:::i;:::-;32813:33;;32868:66;32861:5;32858:77;32855:103;;;32938:18;;:::i;:::-;32855:103;32985:1;32978:5;32974:13;32967:20;;32760:233;;;:::o;32999:176::-;33031:1;33048:20;33066:1;33048:20;:::i;:::-;33043:25;;33082:20;33100:1;33082:20;:::i;:::-;33077:25;;33121:1;33111:35;;33126:18;;:::i;:::-;33111:35;33167:1;33164;33160:9;33155:14;;32999:176;;;;:::o;33181:180::-;33229:77;33226:1;33219:88;33326:4;33323:1;33316:15;33350:4;33347:1;33340:15;33367:180;33415:77;33412:1;33405:88;33512:4;33509:1;33502:15;33536:4;33533:1;33526:15;33553:180;33601:77;33598:1;33591:88;33698:4;33695:1;33688:15;33722:4;33719:1;33712:15;33739:180;33787:77;33784:1;33777:88;33884:4;33881:1;33874:15;33908:4;33905:1;33898:15;33925:183;33960:3;33998:1;33980:16;33977:23;33974:128;;;34036:1;34033;34030;34015:23;34058:34;34089:1;34083:8;34058:34;:::i;:::-;34051:41;;33974:128;33925:183;:::o;34114:117::-;34223:1;34220;34213:12;34237:117;34346:1;34343;34336:12;34360:117;34469:1;34466;34459:12;34483:117;34592:1;34589;34582:12;34606:117;34715:1;34712;34705:12;34729:102;34770:6;34821:2;34817:7;34812:2;34805:5;34801:14;34797:28;34787:38;;34729:102;;;:::o;34837:106::-;34881:8;34930:5;34925:3;34921:15;34900:36;;34837:106;;;:::o;34949:239::-;35089:34;35085:1;35077:6;35073:14;35066:58;35158:22;35153:2;35145:6;35141:15;35134:47;34949:239;:::o;35194:234::-;35334:34;35330:1;35322:6;35318:14;35311:58;35403:17;35398:2;35390:6;35386:15;35379:42;35194:234;:::o;35434:227::-;35574:34;35570:1;35562:6;35558:14;35551:58;35643:10;35638:2;35630:6;35626:15;35619:35;35434:227;:::o;35667:223::-;35807:34;35803:1;35795:6;35791:14;35784:58;35876:6;35871:2;35863:6;35859:15;35852:31;35667:223;:::o;35896:229::-;36036:34;36032:1;36024:6;36020:14;36013:58;36105:12;36100:2;36092:6;36088:15;36081:37;35896:229;:::o;36131:303::-;36271:34;36267:1;36259:6;36255:14;36248:58;36344:34;36339:2;36331:6;36327:15;36320:59;36417:5;36412:2;36404:6;36400:15;36393:30;36131:303;:::o;36444:236::-;36588:34;36584:1;36576:6;36572:14;36565:58;36661:7;36656:2;36648:6;36644:15;36637:32;36444:236;:::o;36690:234::-;36834:34;36830:1;36822:6;36818:14;36811:58;36907:5;36902:2;36894:6;36890:15;36883:30;36690:234;:::o;36934:241::-;37078:34;37074:1;37066:6;37062:14;37055:58;37151:12;37146:2;37138:6;37134:15;37127:37;36934:241;:::o;37185:163::-;37329:7;37325:1;37317:6;37313:14;37306:31;37185:163;:::o;37358:240::-;37502:34;37498:1;37490:6;37486:14;37479:58;37575:11;37570:2;37562:6;37558:15;37551:36;37358:240;:::o;37608:::-;37752:34;37748:1;37740:6;37736:14;37729:58;37825:11;37820:2;37812:6;37808:15;37801:36;37608:240;:::o;37858:239::-;38002:34;37998:1;37990:6;37986:14;37979:58;38075:10;38070:2;38062:6;38058:15;38051:35;37858:239;:::o;38107:783::-;38146:3;38188:4;38170:16;38167:26;38164:39;;;38196:5;;38164:39;38229:20;;:::i;:::-;38308:1;38290:16;38286:24;38283:1;38277:4;38262:49;38345:4;38339:11;38456:16;38449:4;38441:6;38437:17;38434:39;38397:18;38389:6;38386:30;38366:125;38363:166;;;38510:5;;;;38363:166;38564:6;38558:4;38554:17;38604:3;38598:10;38635:18;38627:6;38624:30;38621:43;;;38657:5;;;;;;38621:43;38709:6;38702:4;38697:3;38693:14;38689:27;38772:1;38754:16;38750:24;38744:4;38740:35;38735:3;38732:44;38729:57;;;38779:5;;;;;;;38729:57;38800;38848:6;38842:4;38838:17;38830:6;38826:30;38820:4;38800:57;:::i;:::-;38877:3;38870:10;;38150:740;;;;;38107:783;;:::o;38900:130::-;38977:24;38995:5;38977:24;:::i;:::-;38970:5;38967:35;38957:63;;39016:1;39013;39006:12;38957:63;38900:130;:::o;39040:124::-;39114:21;39129:5;39114:21;:::i;:::-;39107:5;39104:32;39094:60;;39150:1;39147;39140:12;39094:60;39040:124;:::o;39174:128::-;39250:23;39267:5;39250:23;:::i;:::-;39243:5;39240:34;39230:62;;39288:1;39285;39278:12;39230:62;39174:128;:::o;39312:130::-;39389:24;39407:5;39389:24;:::i;:::-;39382:5;39379:35;39369:63;;39428:1;39425;39418:12;39369:63;39312:130;:::o
Swarm Source
ipfs://ddc8ca4f7e94fd0143afb1cfce37b999399074b80073ce8427ff069b1b2abc76
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.