ERC-1155
Overview
Max Total Supply
442 SOCIETY
Holders
231
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:
AbandonedSociety
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-09 */ // File: @openzeppelin/contracts/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/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/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/contracts/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/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts v4.4.1 (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. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value ); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll( address indexed account, address indexed operator, bool approved ); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/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/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (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: balance query for the zero address" ); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require( accounts.length == ids.length, "ERC1155: accounts and ids length mismatch" ); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer( operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data ); uint256 fromBalance = _balances[id][from]; require( fromBalance >= amount, "ERC1155: insufficient balance for transfer" ); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require( ids.length == amounts.length, "ERC1155: ids and amounts length mismatch" ); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require( fromBalance >= amount, "ERC1155: insufficient balance for transfer" ); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck( operator, from, to, ids, amounts, data ); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer( operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data ); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck( operator, address(0), to, id, amount, data ); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require( ids.length == amounts.length, "ERC1155: ids and amounts length mismatch" ); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck( operator, address(0), to, ids, amounts, data ); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer( operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "" ); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require( ids.length == amounts.length, "ERC1155: ids and amounts length mismatch" ); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require( fromBalance >= amount, "ERC1155: burn amount exceeds balance" ); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received( operator, from, id, amount, data ) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived( operator, from, ids, amounts, data ) returns (bytes4 response) { if ( response != IERC1155Receiver.onERC1155BatchReceived.selector ) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: contracts/AbandonedSociety.sol pragma solidity ^0.8.0; contract AbandonedSociety is ERC1155, Ownable { string public constant name = "Abandoned Society"; string public constant symbol = "SOCIETY"; uint32 public totalSupply = 0; uint32 public constant maxSupply = 5500; uint32 public preSaleStart = 1641758400; uint32 public constant preSaleMaxPerWallet = 10; uint256 public constant preSaleUnitPrice = 0.08 ether; uint32 public publicSaleStart = 1641762000; uint32 public constant publicSaleMaxPerWallet = 24; uint256 public constant publicSaleUnitPrice = 0.09 ether; mapping(address => uint32) public minted; constructor(string memory uri) ERC1155(uri) {} function setURI(string memory uri) public onlyOwner { _setURI(uri); } function setPreSaleStart(uint32 timestamp) public onlyOwner { preSaleStart = timestamp; } function setPublicSaleStart(uint32 timestamp) public onlyOwner { publicSaleStart = timestamp; } function preSaleIsActive() public view returns (bool) { return preSaleStart <= block.timestamp && publicSaleStart >= block.timestamp; } function publicSaleIsActive() public view returns (bool) { return publicSaleStart <= block.timestamp; } function internalMint(address to, uint32 count) internal { if (count > 1) { uint256[] memory ids = new uint256[](uint256(count)); uint256[] memory amounts = new uint256[](uint256(count)); for (uint32 i = 0; i < count; i++) { ids[i] = totalSupply + i; amounts[i] = 1; } _mintBatch(to, ids, amounts, ""); } else { _mint(to, totalSupply, 1, ""); } totalSupply += count; } function mint(uint32 count) external payable { uint32 maxPerWallet; uint256 unitPrice; if (preSaleIsActive()) { maxPerWallet = preSaleMaxPerWallet; unitPrice = preSaleUnitPrice; } else if (publicSaleIsActive()) { maxPerWallet = publicSaleMaxPerWallet; unitPrice = publicSaleUnitPrice; } else { revert("Sale is not active."); } require(count > 0, "Count must be greater than 0."); require( totalSupply + count <= maxSupply, "Count exceeds the maximum allowed supply." ); require(msg.value >= unitPrice * count, "Not enough ether."); require( minted[msg.sender] + count <= maxPerWallet, "Count exceeds the maximum allowed per wallet." ); internalMint(msg.sender, count); minted[msg.sender] += count; } function batchMint(address[] memory addresses) external onlyOwner { require( totalSupply + addresses.length <= maxSupply, "Count exceeds the maximum allowed supply." ); for (uint256 i = 0; i < addresses.length; i++) { internalMint(addresses[i], 1); } } function withdraw() external onlyOwner { address[3] memory addresses = [ 0xA81CfedA5Fb92FDDa1c2bb5bBd47B149a11Bd927, 0x680E33424c0AE6CD70Cee7E87AD72d4fCC0694dF, 0xEfDD4689E0a9D9Aaa4D2536f5cb942e7780a5179 ]; uint32[3] memory shares = [uint32(500), uint32(6500), uint32(3000)]; uint256 balance = address(this).balance; for (uint32 i = 0; i < addresses.length; i++) { uint256 amount = i == addresses.length - 1 ? address(this).balance : (balance * shares[i]) / 10000; payable(addresses[i]).transfer(amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"batchMint","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":[],"name":"maxSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxPerWallet","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleUnitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"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":"uint32","name":"timestamp","type":"uint32"}],"name":"setPreSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"timestamp","type":"uint32"}],"name":"setPublicSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600360146101000a81548163ffffffff021916908363ffffffff1602179055506361db3ec0600360186101000a81548163ffffffff021916908363ffffffff1602179055506361db4cd06003601c6101000a81548163ffffffff021916908363ffffffff1602179055503480156200007d57600080fd5b506040516200499c3803806200499c8339818101604052810190620000a39190620002f5565b80620000b581620000dd60201b60201c565b50620000d6620000ca620000f960201b60201c565b6200010160201b60201c565b50620004ca565b8060029080519060200190620000f5929190620001c7565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d590620003db565b90600052602060002090601f016020900481019282620001f9576000855562000245565b82601f106200021457805160ff191683800117855562000245565b8280016001018555821562000245579182015b828111156200024457825182559160200191906001019062000227565b5b50905062000254919062000258565b5090565b5b808211156200027357600081600090555060010162000259565b5090565b60006200028e62000288846200036f565b62000346565b905082815260208101848484011115620002ad57620002ac620004aa565b5b620002ba848285620003a5565b509392505050565b600082601f830112620002da57620002d9620004a5565b5b8151620002ec84826020860162000277565b91505092915050565b6000602082840312156200030e576200030d620004b4565b5b600082015167ffffffffffffffff8111156200032f576200032e620004af565b5b6200033d84828501620002c2565b91505092915050565b60006200035262000365565b905062000360828262000411565b919050565b6000604051905090565b600067ffffffffffffffff8211156200038d576200038c62000476565b5b6200039882620004b9565b9050602081019050919050565b60005b83811015620003c5578082015181840152602081019050620003a8565b83811115620003d5576000848401525b50505050565b60006002820490506001821680620003f457607f821691505b602082108114156200040b576200040a62000447565b5b50919050565b6200041c82620004b9565b810181811067ffffffffffffffff821117156200043e576200043d62000476565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6144c280620004da6000396000f3fe6080604052600436106101cc5760003560e01c80634e1273f4116100f7578063a71bbebe11610095578063d67b06c111610064578063d67b06c114610648578063e985e9c514610671578063f242432a146106ae578063f2fde38b146106d7576101cc565b8063a71bbebe146105ab578063b172e133146105c7578063c7667a4b146105f2578063d5abeb011461061d576101cc565b80638da5cb5b116100d15780638da5cb5b146105035780639039903c1461052e57806395d89b4114610557578063a22cb46514610582576101cc565b80634e1273f414610484578063715018a6146104c1578063745e1b3f146104d8576101cc565b806318160ddd1161016f5780633360caa01161013e5780633360caa0146103ee5780633ccfd60b1461041957806340fa89d914610430578063472d3b1b14610459576101cc565b806318160ddd146103325780631e7269c51461035d5780631f0234d81461039a5780632eb2c2d6146103c5576101cc565b806306fdde03116101ab57806306fdde03146102745780630d5624b31461029f5780630e89341c146102ca5780630fcf2e7514610307576101cc565b8062fdd58e146101d157806301ffc9a71461020e57806302fe53051461024b575b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612f52565b610700565b60405161020591906138ac565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613053565b6107c9565b604051610242919061362f565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d91906130ad565b6108ab565b005b34801561028057600080fd5b50610289610933565b604051610296919061364a565b60405180910390f35b3480156102ab57600080fd5b506102b461096c565b6040516102c191906138f0565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906130f6565b610982565b6040516102fe919061364a565b60405180910390f35b34801561031357600080fd5b5061031c610a16565b604051610329919061362f565b60405180910390f35b34801561033e57600080fd5b50610347610a39565b60405161035491906138f0565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612d3f565b610a4f565b60405161039191906138f0565b60405180910390f35b3480156103a657600080fd5b506103af610a72565b6040516103bc919061362f565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612dac565b610ab9565b005b3480156103fa57600080fd5b50610403610b5a565b60405161041091906138f0565b60405180910390f35b34801561042557600080fd5b5061042e610b70565b005b34801561043c57600080fd5b5061045760048036038101906104529190613123565b610e0a565b005b34801561046557600080fd5b5061046e610eaa565b60405161047b91906138f0565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fdb565b610eaf565b6040516104b891906135d6565b60405180910390f35b3480156104cd57600080fd5b506104d6610fc8565b005b3480156104e457600080fd5b506104ed611050565b6040516104fa91906138f0565b60405180910390f35b34801561050f57600080fd5b50610518611055565b60405161052591906134f9565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613123565b61107f565b005b34801561056357600080fd5b5061056c61111f565b604051610579919061364a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190612f12565b611158565b005b6105c560048036038101906105c09190613123565b61116e565b005b3480156105d357600080fd5b506105dc61142e565b6040516105e991906138ac565b60405180910390f35b3480156105fe57600080fd5b5061060761143a565b60405161061491906138ac565b60405180910390f35b34801561062957600080fd5b50610632611446565b60405161063f91906138f0565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612f92565b61144c565b005b34801561067d57600080fd5b5061069860048036038101906106939190612d6c565b61157f565b6040516106a5919061362f565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612e7b565b611613565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190612d3f565b6116b4565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610768906136ac565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a457506108a3826117ac565b5b9050919050565b6108b3611816565b73ffffffffffffffffffffffffffffffffffffffff166108d1611055565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e906137ec565b60405180910390fd5b6109308161181e565b50565b6040518060400160405280601181526020017f4162616e646f6e656420536f636965747900000000000000000000000000000081525081565b600360189054906101000a900463ffffffff1681565b60606002805461099190613c70565b80601f01602080910402602001604051908101604052809291908181526020018280546109bd90613c70565b8015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b50505050509050919050565b6000426003601c9054906101000a900463ffffffff1663ffffffff161115905090565b600360149054906101000a900463ffffffff1681565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b600042600360189054906101000a900463ffffffff1663ffffffff1611158015610ab45750426003601c9054906101000a900463ffffffff1663ffffffff1610155b905090565b610ac1611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b075750610b0685610b01611816565b61157f565b5b610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061376c565b60405180910390fd5b610b538585858585611838565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610b78611816565b73ffffffffffffffffffffffffffffffffffffffff16610b96611055565b73ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be3906137ec565b60405180910390fd5b6000604051806060016040528073a81cfeda5fb92fdda1c2bb5bbd47b149a11bd92773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173680e33424c0ae6cd70cee7e87ad72d4fcc0694df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173efdd4689e0a9d9aaa4d2536f5cb942e7780a517973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152509050600060405180606001604052806101f463ffffffff1663ffffffff16815260200161196463ffffffff1663ffffffff168152602001610bb863ffffffff1663ffffffff168152509050600047905060005b60038163ffffffff161015610e0457600060016003610d3b9190613b76565b8263ffffffff1614610d8857612710848363ffffffff1660038110610d6357610d62613dd6565b5b602002015163ffffffff1684610d799190613b1c565b610d839190613aeb565b610d8a565b475b9050848263ffffffff1660038110610da557610da4613dd6565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610def573d6000803e3d6000fd5b50508080610dfc90613d1c565b915050610d1c565b50505050565b610e12611816565b73ffffffffffffffffffffffffffffffffffffffff16610e30611055565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906137ec565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b601881565b60608151835114610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec9061384c565b60405180910390fd5b6000835167ffffffffffffffff811115610f1257610f11613e05565b5b604051908082528060200260200182016040528015610f405781602001602082028036833780820191505090505b50905060005b8451811015610fbd57610f8d858281518110610f6557610f64613dd6565b5b6020026020010151858381518110610f8057610f7f613dd6565b5b6020026020010151610700565b828281518110610fa057610f9f613dd6565b5b60200260200101818152505080610fb690613cd3565b9050610f46565b508091505092915050565b610fd0611816565b73ffffffffffffffffffffffffffffffffffffffff16610fee611055565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906137ec565b60405180910390fd5b61104e6000611b4c565b565b600a81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611087611816565b73ffffffffffffffffffffffffffffffffffffffff166110a5611055565b73ffffffffffffffffffffffffffffffffffffffff16146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f2906137ec565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f534f43494554590000000000000000000000000000000000000000000000000081525081565b61116a611163611816565b8383611c12565b5050565b600080611179610a72565b1561119257600a915067011c37937e08000090506111ef565b61119a610a16565b156111b3576018915067013fbe85edc9000090506111ee565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061380c565b60405180910390fd5b5b60008363ffffffff1611611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f9061370c565b60405180910390fd5b61157c63ffffffff1683600360149054906101000a900463ffffffff1661125f9190613ab1565b63ffffffff1611156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906137cc565b60405180910390fd5b8263ffffffff16816112b89190613b1c565b3410156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061372c565b60405180910390fd5b8163ffffffff1683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1661135c9190613ab1565b63ffffffff1611156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a906137ac565b60405180910390fd5b6113ad3384611d7f565b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661140b9190613ab1565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050565b67013fbe85edc9000081565b67011c37937e08000081565b61157c81565b611454611816565b73ffffffffffffffffffffffffffffffffffffffff16611472611055565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906137ec565b60405180910390fd5b61157c63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff166114f69190613a5b565b1115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906137cc565b60405180910390fd5b60005b815181101561157b5761156882828151811061155957611558613dd6565b5b60200260200101516001611d7f565b808061157390613cd3565b91505061153a565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61161b611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061166157506116608561165b611816565b61157f565b5b6116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906136ec565b60405180910390fd5b6116ad8585858585611f69565b5050505050565b6116bc611816565b73ffffffffffffffffffffffffffffffffffffffff166116da611055565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906137ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906136cc565b60405180910390fd5b6117a981611b4c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611834929190612a02565b5050565b815183511461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061386c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e39061374c565b60405180910390fd5b60006118f6611816565b90506119068187878787876121eb565b60005b8451811015611ab757600085828151811061192757611926613dd6565b5b60200260200101519050600085838151811061194657611945613dd6565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061378c565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a9c9190613a5b565b9250508190555050505080611ab090613cd3565b9050611909565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611b2e9291906135f8565b60405180910390a4611b448187878787876121f3565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061382c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d72919061362f565b60405180910390a3505050565b60018163ffffffff161115611ef15760008163ffffffff1667ffffffffffffffff811115611db057611daf613e05565b5b604051908082528060200260200182016040528015611dde5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611e0357611e02613e05565b5b604051908082528060200260200182016040528015611e315781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff161015611ece5780600360149054906101000a900463ffffffff16611e699190613ab1565b63ffffffff16838263ffffffff1681518110611e8857611e87613dd6565b5b6020026020010181815250506001828263ffffffff1681518110611eaf57611eae613dd6565b5b6020026020010181815250508080611ec690613d1c565b915050611e37565b50611eea848383604051806020016040528060008152506123da565b5050611f26565b611f2582600360149054906101000a900463ffffffff1663ffffffff166001604051806020016040528060008152506125f8565b5b80600360148282829054906101000a900463ffffffff16611f479190613ab1565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd09061374c565b60405180910390fd5b6000611fe3611816565b9050612003818787611ff48861278e565b611ffd8861278e565b876121eb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561209a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120919061378c565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214f9190613a5b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516121cc9291906138c7565b60405180910390a46121e2828888888888612808565b50505050505050565b505050505050565b6122128473ffffffffffffffffffffffffffffffffffffffff166129ef565b156123d2578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612258959493929190613514565b602060405180830381600087803b15801561227257600080fd5b505af19250505080156122a357506040513d601f19601f820116820180604052508101906122a09190613080565b60015b612349576122af613e34565b806308c379a0141561230c57506122c4614383565b806122cf575061230e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123409061366c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061368c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124419061388c565b60405180910390fd5b815183511461248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124859061386c565b60405180910390fd5b6000612498611816565b90506124a9816000878787876121eb565b60005b8451811015612562578381815181106124c8576124c7613dd6565b5b60200260200101516000808784815181106124e6576124e5613dd6565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125489190613a5b565b92505081905550808061255a90613cd3565b9150506124ac565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125da9291906135f8565b60405180910390a46125f1816000878787876121f3565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061388c565b60405180910390fd5b6000612672611816565b9050612693816000876126848861278e565b61268d8861278e565b876121eb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126f29190613a5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127709291906138c7565b60405180910390a461278781600087878787612808565b5050505050565b60606000600167ffffffffffffffff8111156127ad576127ac613e05565b5b6040519080825280602002602001820160405280156127db5781602001602082028036833780820191505090505b50905082816000815181106127f3576127f2613dd6565b5b60200260200101818152505080915050919050565b6128278473ffffffffffffffffffffffffffffffffffffffff166129ef565b156129e7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161286d95949392919061357c565b602060405180830381600087803b15801561288757600080fd5b505af19250505080156128b857506040513d601f19601f820116820180604052508101906128b59190613080565b60015b61295e576128c4613e34565b806308c379a0141561292157506128d9614383565b806128e45750612923565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612918919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129559061366c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061368c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612a0e90613c70565b90600052602060002090601f016020900481019282612a305760008555612a77565b82601f10612a4957805160ff1916838001178555612a77565b82800160010185558215612a77579182015b82811115612a76578251825591602001919060010190612a5b565b5b509050612a849190612a88565b5090565b5b80821115612aa1576000816000905550600101612a89565b5090565b6000612ab8612ab384613930565b61390b565b90508083825260208201905082856020860282011115612adb57612ada613e5b565b5b60005b85811015612b0b5781612af18882612c09565b845260208401935060208301925050600181019050612ade565b5050509392505050565b6000612b28612b238461395c565b61390b565b90508083825260208201905082856020860282011115612b4b57612b4a613e5b565b5b60005b85811015612b7b5781612b618882612d15565b845260208401935060208301925050600181019050612b4e565b5050509392505050565b6000612b98612b9384613988565b61390b565b905082815260208101848484011115612bb457612bb3613e60565b5b612bbf848285613c2e565b509392505050565b6000612bda612bd5846139b9565b61390b565b905082815260208101848484011115612bf657612bf5613e60565b5b612c01848285613c2e565b509392505050565b600081359050612c1881614419565b92915050565b600082601f830112612c3357612c32613e56565b5b8135612c43848260208601612aa5565b91505092915050565b600082601f830112612c6157612c60613e56565b5b8135612c71848260208601612b15565b91505092915050565b600081359050612c8981614430565b92915050565b600081359050612c9e81614447565b92915050565b600081519050612cb381614447565b92915050565b600082601f830112612cce57612ccd613e56565b5b8135612cde848260208601612b85565b91505092915050565b600082601f830112612cfc57612cfb613e56565b5b8135612d0c848260208601612bc7565b91505092915050565b600081359050612d248161445e565b92915050565b600081359050612d3981614475565b92915050565b600060208284031215612d5557612d54613e6a565b5b6000612d6384828501612c09565b91505092915050565b60008060408385031215612d8357612d82613e6a565b5b6000612d9185828601612c09565b9250506020612da285828601612c09565b9150509250929050565b600080600080600060a08688031215612dc857612dc7613e6a565b5b6000612dd688828901612c09565b9550506020612de788828901612c09565b945050604086013567ffffffffffffffff811115612e0857612e07613e65565b5b612e1488828901612c4c565b935050606086013567ffffffffffffffff811115612e3557612e34613e65565b5b612e4188828901612c4c565b925050608086013567ffffffffffffffff811115612e6257612e61613e65565b5b612e6e88828901612cb9565b9150509295509295909350565b600080600080600060a08688031215612e9757612e96613e6a565b5b6000612ea588828901612c09565b9550506020612eb688828901612c09565b9450506040612ec788828901612d15565b9350506060612ed888828901612d15565b925050608086013567ffffffffffffffff811115612ef957612ef8613e65565b5b612f0588828901612cb9565b9150509295509295909350565b60008060408385031215612f2957612f28613e6a565b5b6000612f3785828601612c09565b9250506020612f4885828601612c7a565b9150509250929050565b60008060408385031215612f6957612f68613e6a565b5b6000612f7785828601612c09565b9250506020612f8885828601612d15565b9150509250929050565b600060208284031215612fa857612fa7613e6a565b5b600082013567ffffffffffffffff811115612fc657612fc5613e65565b5b612fd284828501612c1e565b91505092915050565b60008060408385031215612ff257612ff1613e6a565b5b600083013567ffffffffffffffff8111156130105761300f613e65565b5b61301c85828601612c1e565b925050602083013567ffffffffffffffff81111561303d5761303c613e65565b5b61304985828601612c4c565b9150509250929050565b60006020828403121561306957613068613e6a565b5b600061307784828501612c8f565b91505092915050565b60006020828403121561309657613095613e6a565b5b60006130a484828501612ca4565b91505092915050565b6000602082840312156130c3576130c2613e6a565b5b600082013567ffffffffffffffff8111156130e1576130e0613e65565b5b6130ed84828501612ce7565b91505092915050565b60006020828403121561310c5761310b613e6a565b5b600061311a84828501612d15565b91505092915050565b60006020828403121561313957613138613e6a565b5b600061314784828501612d2a565b91505092915050565b600061315c83836134cc565b60208301905092915050565b61317181613baa565b82525050565b6000613182826139fa565b61318c8185613a28565b9350613197836139ea565b8060005b838110156131c85781516131af8882613150565b97506131ba83613a1b565b92505060018101905061319b565b5085935050505092915050565b6131de81613bbc565b82525050565b60006131ef82613a05565b6131f98185613a39565b9350613209818560208601613c3d565b61321281613e6f565b840191505092915050565b600061322882613a10565b6132328185613a4a565b9350613242818560208601613c3d565b61324b81613e6f565b840191505092915050565b6000613263603483613a4a565b915061326e82613e8d565b604082019050919050565b6000613286602883613a4a565b915061329182613edc565b604082019050919050565b60006132a9602b83613a4a565b91506132b482613f2b565b604082019050919050565b60006132cc602683613a4a565b91506132d782613f7a565b604082019050919050565b60006132ef602983613a4a565b91506132fa82613fc9565b604082019050919050565b6000613312601d83613a4a565b915061331d82614018565b602082019050919050565b6000613335601183613a4a565b915061334082614041565b602082019050919050565b6000613358602583613a4a565b91506133638261406a565b604082019050919050565b600061337b603283613a4a565b9150613386826140b9565b604082019050919050565b600061339e602a83613a4a565b91506133a982614108565b604082019050919050565b60006133c1602d83613a4a565b91506133cc82614157565b604082019050919050565b60006133e4602983613a4a565b91506133ef826141a6565b604082019050919050565b6000613407602083613a4a565b9150613412826141f5565b602082019050919050565b600061342a601383613a4a565b91506134358261421e565b602082019050919050565b600061344d602983613a4a565b915061345882614247565b604082019050919050565b6000613470602983613a4a565b915061347b82614296565b604082019050919050565b6000613493602883613a4a565b915061349e826142e5565b604082019050919050565b60006134b6602183613a4a565b91506134c182614334565b604082019050919050565b6134d581613c14565b82525050565b6134e481613c14565b82525050565b6134f381613c1e565b82525050565b600060208201905061350e6000830184613168565b92915050565b600060a0820190506135296000830188613168565b6135366020830187613168565b81810360408301526135488186613177565b9050818103606083015261355c8185613177565b9050818103608083015261357081846131e4565b90509695505050505050565b600060a0820190506135916000830188613168565b61359e6020830187613168565b6135ab60408301866134db565b6135b860608301856134db565b81810360808301526135ca81846131e4565b90509695505050505050565b600060208201905081810360008301526135f08184613177565b905092915050565b600060408201905081810360008301526136128185613177565b905081810360208301526136268184613177565b90509392505050565b600060208201905061364460008301846131d5565b92915050565b60006020820190508181036000830152613664818461321d565b905092915050565b6000602082019050818103600083015261368581613256565b9050919050565b600060208201905081810360008301526136a581613279565b9050919050565b600060208201905081810360008301526136c58161329c565b9050919050565b600060208201905081810360008301526136e5816132bf565b9050919050565b60006020820190508181036000830152613705816132e2565b9050919050565b6000602082019050818103600083015261372581613305565b9050919050565b6000602082019050818103600083015261374581613328565b9050919050565b600060208201905081810360008301526137658161334b565b9050919050565b600060208201905081810360008301526137858161336e565b9050919050565b600060208201905081810360008301526137a581613391565b9050919050565b600060208201905081810360008301526137c5816133b4565b9050919050565b600060208201905081810360008301526137e5816133d7565b9050919050565b60006020820190508181036000830152613805816133fa565b9050919050565b600060208201905081810360008301526138258161341d565b9050919050565b6000602082019050818103600083015261384581613440565b9050919050565b6000602082019050818103600083015261386581613463565b9050919050565b6000602082019050818103600083015261388581613486565b9050919050565b600060208201905081810360008301526138a5816134a9565b9050919050565b60006020820190506138c160008301846134db565b92915050565b60006040820190506138dc60008301856134db565b6138e960208301846134db565b9392505050565b600060208201905061390560008301846134ea565b92915050565b6000613915613926565b90506139218282613ca2565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561397757613976613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139a3576139a2613e05565b5b6139ac82613e6f565b9050602081019050919050565b600067ffffffffffffffff8211156139d4576139d3613e05565b5b6139dd82613e6f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a6682613c14565b9150613a7183613c14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa657613aa5613d49565b5b828201905092915050565b6000613abc82613c1e565b9150613ac783613c1e565b92508263ffffffff03821115613ae057613adf613d49565b5b828201905092915050565b6000613af682613c14565b9150613b0183613c14565b925082613b1157613b10613d78565b5b828204905092915050565b6000613b2782613c14565b9150613b3283613c14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6b57613b6a613d49565b5b828202905092915050565b6000613b8182613c14565b9150613b8c83613c14565b925082821015613b9f57613b9e613d49565b5b828203905092915050565b6000613bb582613bf4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015613c5b578082015181840152602081019050613c40565b83811115613c6a576000848401525b50505050565b60006002820490506001821680613c8857607f821691505b60208210811415613c9c57613c9b613da7565b5b50919050565b613cab82613e6f565b810181811067ffffffffffffffff82111715613cca57613cc9613e05565b5b80604052505050565b6000613cde82613c14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1157613d10613d49565b5b600182019050919050565b6000613d2782613c1e565b915063ffffffff821415613d3e57613d3d613d49565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613e535760046000803e613e50600051613e80565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561439357614416565b61439b613926565b60043d036004823e80513d602482011167ffffffffffffffff821117156143c3575050614416565b808201805167ffffffffffffffff8111156143e15750505050614416565b80602083010160043d0385018111156143fe575050505050614416565b61440d82602001850186613ca2565b82955050505050505b90565b61442281613baa565b811461442d57600080fd5b50565b61443981613bbc565b811461444457600080fd5b50565b61445081613bc8565b811461445b57600080fd5b50565b61446781613c14565b811461447257600080fd5b50565b61447e81613c1e565b811461448957600080fd5b5056fea264697066735822122002991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f164736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f697066732f516d4e75366b4142516e706e57456362517375626b7132713155786264344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000
Deployed Bytecode
0x6080604052600436106101cc5760003560e01c80634e1273f4116100f7578063a71bbebe11610095578063d67b06c111610064578063d67b06c114610648578063e985e9c514610671578063f242432a146106ae578063f2fde38b146106d7576101cc565b8063a71bbebe146105ab578063b172e133146105c7578063c7667a4b146105f2578063d5abeb011461061d576101cc565b80638da5cb5b116100d15780638da5cb5b146105035780639039903c1461052e57806395d89b4114610557578063a22cb46514610582576101cc565b80634e1273f414610484578063715018a6146104c1578063745e1b3f146104d8576101cc565b806318160ddd1161016f5780633360caa01161013e5780633360caa0146103ee5780633ccfd60b1461041957806340fa89d914610430578063472d3b1b14610459576101cc565b806318160ddd146103325780631e7269c51461035d5780631f0234d81461039a5780632eb2c2d6146103c5576101cc565b806306fdde03116101ab57806306fdde03146102745780630d5624b31461029f5780630e89341c146102ca5780630fcf2e7514610307576101cc565b8062fdd58e146101d157806301ffc9a71461020e57806302fe53051461024b575b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612f52565b610700565b60405161020591906138ac565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190613053565b6107c9565b604051610242919061362f565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d91906130ad565b6108ab565b005b34801561028057600080fd5b50610289610933565b604051610296919061364a565b60405180910390f35b3480156102ab57600080fd5b506102b461096c565b6040516102c191906138f0565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec91906130f6565b610982565b6040516102fe919061364a565b60405180910390f35b34801561031357600080fd5b5061031c610a16565b604051610329919061362f565b60405180910390f35b34801561033e57600080fd5b50610347610a39565b60405161035491906138f0565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190612d3f565b610a4f565b60405161039191906138f0565b60405180910390f35b3480156103a657600080fd5b506103af610a72565b6040516103bc919061362f565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612dac565b610ab9565b005b3480156103fa57600080fd5b50610403610b5a565b60405161041091906138f0565b60405180910390f35b34801561042557600080fd5b5061042e610b70565b005b34801561043c57600080fd5b5061045760048036038101906104529190613123565b610e0a565b005b34801561046557600080fd5b5061046e610eaa565b60405161047b91906138f0565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fdb565b610eaf565b6040516104b891906135d6565b60405180910390f35b3480156104cd57600080fd5b506104d6610fc8565b005b3480156104e457600080fd5b506104ed611050565b6040516104fa91906138f0565b60405180910390f35b34801561050f57600080fd5b50610518611055565b60405161052591906134f9565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613123565b61107f565b005b34801561056357600080fd5b5061056c61111f565b604051610579919061364a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a49190612f12565b611158565b005b6105c560048036038101906105c09190613123565b61116e565b005b3480156105d357600080fd5b506105dc61142e565b6040516105e991906138ac565b60405180910390f35b3480156105fe57600080fd5b5061060761143a565b60405161061491906138ac565b60405180910390f35b34801561062957600080fd5b50610632611446565b60405161063f91906138f0565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190612f92565b61144c565b005b34801561067d57600080fd5b5061069860048036038101906106939190612d6c565b61157f565b6040516106a5919061362f565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190612e7b565b611613565b005b3480156106e357600080fd5b506106fe60048036038101906106f99190612d3f565b6116b4565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610768906136ac565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a457506108a3826117ac565b5b9050919050565b6108b3611816565b73ffffffffffffffffffffffffffffffffffffffff166108d1611055565b73ffffffffffffffffffffffffffffffffffffffff1614610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e906137ec565b60405180910390fd5b6109308161181e565b50565b6040518060400160405280601181526020017f4162616e646f6e656420536f636965747900000000000000000000000000000081525081565b600360189054906101000a900463ffffffff1681565b60606002805461099190613c70565b80601f01602080910402602001604051908101604052809291908181526020018280546109bd90613c70565b8015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b50505050509050919050565b6000426003601c9054906101000a900463ffffffff1663ffffffff161115905090565b600360149054906101000a900463ffffffff1681565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b600042600360189054906101000a900463ffffffff1663ffffffff1611158015610ab45750426003601c9054906101000a900463ffffffff1663ffffffff1610155b905090565b610ac1611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b075750610b0685610b01611816565b61157f565b5b610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d9061376c565b60405180910390fd5b610b538585858585611838565b5050505050565b6003601c9054906101000a900463ffffffff1681565b610b78611816565b73ffffffffffffffffffffffffffffffffffffffff16610b96611055565b73ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be3906137ec565b60405180910390fd5b6000604051806060016040528073a81cfeda5fb92fdda1c2bb5bbd47b149a11bd92773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173680e33424c0ae6cd70cee7e87ad72d4fcc0694df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173efdd4689e0a9d9aaa4d2536f5cb942e7780a517973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152509050600060405180606001604052806101f463ffffffff1663ffffffff16815260200161196463ffffffff1663ffffffff168152602001610bb863ffffffff1663ffffffff168152509050600047905060005b60038163ffffffff161015610e0457600060016003610d3b9190613b76565b8263ffffffff1614610d8857612710848363ffffffff1660038110610d6357610d62613dd6565b5b602002015163ffffffff1684610d799190613b1c565b610d839190613aeb565b610d8a565b475b9050848263ffffffff1660038110610da557610da4613dd6565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610def573d6000803e3d6000fd5b50508080610dfc90613d1c565b915050610d1c565b50505050565b610e12611816565b73ffffffffffffffffffffffffffffffffffffffff16610e30611055565b73ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d906137ec565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b601881565b60608151835114610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec9061384c565b60405180910390fd5b6000835167ffffffffffffffff811115610f1257610f11613e05565b5b604051908082528060200260200182016040528015610f405781602001602082028036833780820191505090505b50905060005b8451811015610fbd57610f8d858281518110610f6557610f64613dd6565b5b6020026020010151858381518110610f8057610f7f613dd6565b5b6020026020010151610700565b828281518110610fa057610f9f613dd6565b5b60200260200101818152505080610fb690613cd3565b9050610f46565b508091505092915050565b610fd0611816565b73ffffffffffffffffffffffffffffffffffffffff16610fee611055565b73ffffffffffffffffffffffffffffffffffffffff1614611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906137ec565b60405180910390fd5b61104e6000611b4c565b565b600a81565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611087611816565b73ffffffffffffffffffffffffffffffffffffffff166110a5611055565b73ffffffffffffffffffffffffffffffffffffffff16146110fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f2906137ec565b60405180910390fd5b806003601c6101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600781526020017f534f43494554590000000000000000000000000000000000000000000000000081525081565b61116a611163611816565b8383611c12565b5050565b600080611179610a72565b1561119257600a915067011c37937e08000090506111ef565b61119a610a16565b156111b3576018915067013fbe85edc9000090506111ee565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e59061380c565b60405180910390fd5b5b60008363ffffffff1611611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f9061370c565b60405180910390fd5b61157c63ffffffff1683600360149054906101000a900463ffffffff1661125f9190613ab1565b63ffffffff1611156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d906137cc565b60405180910390fd5b8263ffffffff16816112b89190613b1c565b3410156112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f19061372c565b60405180910390fd5b8163ffffffff1683600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1661135c9190613ab1565b63ffffffff1611156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a906137ac565b60405180910390fd5b6113ad3384611d7f565b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff1661140b9190613ab1565b92506101000a81548163ffffffff021916908363ffffffff160217905550505050565b67013fbe85edc9000081565b67011c37937e08000081565b61157c81565b611454611816565b73ffffffffffffffffffffffffffffffffffffffff16611472611055565b73ffffffffffffffffffffffffffffffffffffffff16146114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf906137ec565b60405180910390fd5b61157c63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff166114f69190613a5b565b1115611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e906137cc565b60405180910390fd5b60005b815181101561157b5761156882828151811061155957611558613dd6565b5b60200260200101516001611d7f565b808061157390613cd3565b91505061153a565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61161b611816565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061166157506116608561165b611816565b61157f565b5b6116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906136ec565b60405180910390fd5b6116ad8585858585611f69565b5050505050565b6116bc611816565b73ffffffffffffffffffffffffffffffffffffffff166116da611055565b73ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906137ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611797906136cc565b60405180910390fd5b6117a981611b4c565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611834929190612a02565b5050565b815183511461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061386c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e39061374c565b60405180910390fd5b60006118f6611816565b90506119068187878787876121eb565b60005b8451811015611ab757600085828151811061192757611926613dd6565b5b60200260200101519050600085838151811061194657611945613dd6565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061378c565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a9c9190613a5b565b9250508190555050505080611ab090613cd3565b9050611909565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611b2e9291906135f8565b60405180910390a4611b448187878787876121f3565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c789061382c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d72919061362f565b60405180910390a3505050565b60018163ffffffff161115611ef15760008163ffffffff1667ffffffffffffffff811115611db057611daf613e05565b5b604051908082528060200260200182016040528015611dde5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff811115611e0357611e02613e05565b5b604051908082528060200260200182016040528015611e315781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff161015611ece5780600360149054906101000a900463ffffffff16611e699190613ab1565b63ffffffff16838263ffffffff1681518110611e8857611e87613dd6565b5b6020026020010181815250506001828263ffffffff1681518110611eaf57611eae613dd6565b5b6020026020010181815250508080611ec690613d1c565b915050611e37565b50611eea848383604051806020016040528060008152506123da565b5050611f26565b611f2582600360149054906101000a900463ffffffff1663ffffffff166001604051806020016040528060008152506125f8565b5b80600360148282829054906101000a900463ffffffff16611f479190613ab1565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd09061374c565b60405180910390fd5b6000611fe3611816565b9050612003818787611ff48861278e565b611ffd8861278e565b876121eb565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561209a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120919061378c565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461214f9190613a5b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516121cc9291906138c7565b60405180910390a46121e2828888888888612808565b50505050505050565b505050505050565b6122128473ffffffffffffffffffffffffffffffffffffffff166129ef565b156123d2578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612258959493929190613514565b602060405180830381600087803b15801561227257600080fd5b505af19250505080156122a357506040513d601f19601f820116820180604052508101906122a09190613080565b60015b612349576122af613e34565b806308c379a0141561230c57506122c4614383565b806122cf575061230e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123409061366c565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146123d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c79061368c565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561244a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124419061388c565b60405180910390fd5b815183511461248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124859061386c565b60405180910390fd5b6000612498611816565b90506124a9816000878787876121eb565b60005b8451811015612562578381815181106124c8576124c7613dd6565b5b60200260200101516000808784815181106124e6576124e5613dd6565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125489190613a5b565b92505081905550808061255a90613cd3565b9150506124ac565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125da9291906135f8565b60405180910390a46125f1816000878787876121f3565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061388c565b60405180910390fd5b6000612672611816565b9050612693816000876126848861278e565b61268d8861278e565b876121eb565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126f29190613a5b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516127709291906138c7565b60405180910390a461278781600087878787612808565b5050505050565b60606000600167ffffffffffffffff8111156127ad576127ac613e05565b5b6040519080825280602002602001820160405280156127db5781602001602082028036833780820191505090505b50905082816000815181106127f3576127f2613dd6565b5b60200260200101818152505080915050919050565b6128278473ffffffffffffffffffffffffffffffffffffffff166129ef565b156129e7578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161286d95949392919061357c565b602060405180830381600087803b15801561288757600080fd5b505af19250505080156128b857506040513d601f19601f820116820180604052508101906128b59190613080565b60015b61295e576128c4613e34565b806308c379a0141561292157506128d9614383565b806128e45750612923565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612918919061364a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129559061366c565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc9061368c565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054612a0e90613c70565b90600052602060002090601f016020900481019282612a305760008555612a77565b82601f10612a4957805160ff1916838001178555612a77565b82800160010185558215612a77579182015b82811115612a76578251825591602001919060010190612a5b565b5b509050612a849190612a88565b5090565b5b80821115612aa1576000816000905550600101612a89565b5090565b6000612ab8612ab384613930565b61390b565b90508083825260208201905082856020860282011115612adb57612ada613e5b565b5b60005b85811015612b0b5781612af18882612c09565b845260208401935060208301925050600181019050612ade565b5050509392505050565b6000612b28612b238461395c565b61390b565b90508083825260208201905082856020860282011115612b4b57612b4a613e5b565b5b60005b85811015612b7b5781612b618882612d15565b845260208401935060208301925050600181019050612b4e565b5050509392505050565b6000612b98612b9384613988565b61390b565b905082815260208101848484011115612bb457612bb3613e60565b5b612bbf848285613c2e565b509392505050565b6000612bda612bd5846139b9565b61390b565b905082815260208101848484011115612bf657612bf5613e60565b5b612c01848285613c2e565b509392505050565b600081359050612c1881614419565b92915050565b600082601f830112612c3357612c32613e56565b5b8135612c43848260208601612aa5565b91505092915050565b600082601f830112612c6157612c60613e56565b5b8135612c71848260208601612b15565b91505092915050565b600081359050612c8981614430565b92915050565b600081359050612c9e81614447565b92915050565b600081519050612cb381614447565b92915050565b600082601f830112612cce57612ccd613e56565b5b8135612cde848260208601612b85565b91505092915050565b600082601f830112612cfc57612cfb613e56565b5b8135612d0c848260208601612bc7565b91505092915050565b600081359050612d248161445e565b92915050565b600081359050612d3981614475565b92915050565b600060208284031215612d5557612d54613e6a565b5b6000612d6384828501612c09565b91505092915050565b60008060408385031215612d8357612d82613e6a565b5b6000612d9185828601612c09565b9250506020612da285828601612c09565b9150509250929050565b600080600080600060a08688031215612dc857612dc7613e6a565b5b6000612dd688828901612c09565b9550506020612de788828901612c09565b945050604086013567ffffffffffffffff811115612e0857612e07613e65565b5b612e1488828901612c4c565b935050606086013567ffffffffffffffff811115612e3557612e34613e65565b5b612e4188828901612c4c565b925050608086013567ffffffffffffffff811115612e6257612e61613e65565b5b612e6e88828901612cb9565b9150509295509295909350565b600080600080600060a08688031215612e9757612e96613e6a565b5b6000612ea588828901612c09565b9550506020612eb688828901612c09565b9450506040612ec788828901612d15565b9350506060612ed888828901612d15565b925050608086013567ffffffffffffffff811115612ef957612ef8613e65565b5b612f0588828901612cb9565b9150509295509295909350565b60008060408385031215612f2957612f28613e6a565b5b6000612f3785828601612c09565b9250506020612f4885828601612c7a565b9150509250929050565b60008060408385031215612f6957612f68613e6a565b5b6000612f7785828601612c09565b9250506020612f8885828601612d15565b9150509250929050565b600060208284031215612fa857612fa7613e6a565b5b600082013567ffffffffffffffff811115612fc657612fc5613e65565b5b612fd284828501612c1e565b91505092915050565b60008060408385031215612ff257612ff1613e6a565b5b600083013567ffffffffffffffff8111156130105761300f613e65565b5b61301c85828601612c1e565b925050602083013567ffffffffffffffff81111561303d5761303c613e65565b5b61304985828601612c4c565b9150509250929050565b60006020828403121561306957613068613e6a565b5b600061307784828501612c8f565b91505092915050565b60006020828403121561309657613095613e6a565b5b60006130a484828501612ca4565b91505092915050565b6000602082840312156130c3576130c2613e6a565b5b600082013567ffffffffffffffff8111156130e1576130e0613e65565b5b6130ed84828501612ce7565b91505092915050565b60006020828403121561310c5761310b613e6a565b5b600061311a84828501612d15565b91505092915050565b60006020828403121561313957613138613e6a565b5b600061314784828501612d2a565b91505092915050565b600061315c83836134cc565b60208301905092915050565b61317181613baa565b82525050565b6000613182826139fa565b61318c8185613a28565b9350613197836139ea565b8060005b838110156131c85781516131af8882613150565b97506131ba83613a1b565b92505060018101905061319b565b5085935050505092915050565b6131de81613bbc565b82525050565b60006131ef82613a05565b6131f98185613a39565b9350613209818560208601613c3d565b61321281613e6f565b840191505092915050565b600061322882613a10565b6132328185613a4a565b9350613242818560208601613c3d565b61324b81613e6f565b840191505092915050565b6000613263603483613a4a565b915061326e82613e8d565b604082019050919050565b6000613286602883613a4a565b915061329182613edc565b604082019050919050565b60006132a9602b83613a4a565b91506132b482613f2b565b604082019050919050565b60006132cc602683613a4a565b91506132d782613f7a565b604082019050919050565b60006132ef602983613a4a565b91506132fa82613fc9565b604082019050919050565b6000613312601d83613a4a565b915061331d82614018565b602082019050919050565b6000613335601183613a4a565b915061334082614041565b602082019050919050565b6000613358602583613a4a565b91506133638261406a565b604082019050919050565b600061337b603283613a4a565b9150613386826140b9565b604082019050919050565b600061339e602a83613a4a565b91506133a982614108565b604082019050919050565b60006133c1602d83613a4a565b91506133cc82614157565b604082019050919050565b60006133e4602983613a4a565b91506133ef826141a6565b604082019050919050565b6000613407602083613a4a565b9150613412826141f5565b602082019050919050565b600061342a601383613a4a565b91506134358261421e565b602082019050919050565b600061344d602983613a4a565b915061345882614247565b604082019050919050565b6000613470602983613a4a565b915061347b82614296565b604082019050919050565b6000613493602883613a4a565b915061349e826142e5565b604082019050919050565b60006134b6602183613a4a565b91506134c182614334565b604082019050919050565b6134d581613c14565b82525050565b6134e481613c14565b82525050565b6134f381613c1e565b82525050565b600060208201905061350e6000830184613168565b92915050565b600060a0820190506135296000830188613168565b6135366020830187613168565b81810360408301526135488186613177565b9050818103606083015261355c8185613177565b9050818103608083015261357081846131e4565b90509695505050505050565b600060a0820190506135916000830188613168565b61359e6020830187613168565b6135ab60408301866134db565b6135b860608301856134db565b81810360808301526135ca81846131e4565b90509695505050505050565b600060208201905081810360008301526135f08184613177565b905092915050565b600060408201905081810360008301526136128185613177565b905081810360208301526136268184613177565b90509392505050565b600060208201905061364460008301846131d5565b92915050565b60006020820190508181036000830152613664818461321d565b905092915050565b6000602082019050818103600083015261368581613256565b9050919050565b600060208201905081810360008301526136a581613279565b9050919050565b600060208201905081810360008301526136c58161329c565b9050919050565b600060208201905081810360008301526136e5816132bf565b9050919050565b60006020820190508181036000830152613705816132e2565b9050919050565b6000602082019050818103600083015261372581613305565b9050919050565b6000602082019050818103600083015261374581613328565b9050919050565b600060208201905081810360008301526137658161334b565b9050919050565b600060208201905081810360008301526137858161336e565b9050919050565b600060208201905081810360008301526137a581613391565b9050919050565b600060208201905081810360008301526137c5816133b4565b9050919050565b600060208201905081810360008301526137e5816133d7565b9050919050565b60006020820190508181036000830152613805816133fa565b9050919050565b600060208201905081810360008301526138258161341d565b9050919050565b6000602082019050818103600083015261384581613440565b9050919050565b6000602082019050818103600083015261386581613463565b9050919050565b6000602082019050818103600083015261388581613486565b9050919050565b600060208201905081810360008301526138a5816134a9565b9050919050565b60006020820190506138c160008301846134db565b92915050565b60006040820190506138dc60008301856134db565b6138e960208301846134db565b9392505050565b600060208201905061390560008301846134ea565b92915050565b6000613915613926565b90506139218282613ca2565b919050565b6000604051905090565b600067ffffffffffffffff82111561394b5761394a613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561397757613976613e05565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156139a3576139a2613e05565b5b6139ac82613e6f565b9050602081019050919050565b600067ffffffffffffffff8211156139d4576139d3613e05565b5b6139dd82613e6f565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613a6682613c14565b9150613a7183613c14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa657613aa5613d49565b5b828201905092915050565b6000613abc82613c1e565b9150613ac783613c1e565b92508263ffffffff03821115613ae057613adf613d49565b5b828201905092915050565b6000613af682613c14565b9150613b0183613c14565b925082613b1157613b10613d78565b5b828204905092915050565b6000613b2782613c14565b9150613b3283613c14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b6b57613b6a613d49565b5b828202905092915050565b6000613b8182613c14565b9150613b8c83613c14565b925082821015613b9f57613b9e613d49565b5b828203905092915050565b6000613bb582613bf4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015613c5b578082015181840152602081019050613c40565b83811115613c6a576000848401525b50505050565b60006002820490506001821680613c8857607f821691505b60208210811415613c9c57613c9b613da7565b5b50919050565b613cab82613e6f565b810181811067ffffffffffffffff82111715613cca57613cc9613e05565b5b80604052505050565b6000613cde82613c14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d1157613d10613d49565b5b600182019050919050565b6000613d2782613c1e565b915063ffffffff821415613d3e57613d3d613d49565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613e535760046000803e613e50600051613e80565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f64207065722077616c6c65742e00000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561439357614416565b61439b613926565b60043d036004823e80513d602482011167ffffffffffffffff821117156143c3575050614416565b808201805167ffffffffffffffff8111156143e15750505050614416565b80602083010160043d0385018111156143fe575050505050614416565b61440d82602001850186613ca2565b82955050505050505b90565b61442281613baa565b811461442d57600080fd5b50565b61443981613bbc565b811461444457600080fd5b50565b61445081613bc8565b811461445b57600080fd5b50565b61446781613c14565b811461447257600080fd5b50565b61447e81613c1e565b811461448957600080fd5b5056fea264697066735822122002991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f164736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f697066732f516d4e75366b4142516e706e57456362517375626b7132713155786264344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000
-----Decoded View---------------
Arg [0] : uri (string): https://stryker.mypinata.cloud/ipfs/QmNu6kABQnpnWEcbQsubkq2q1Uxbd4M82X4Cgk1YudnCBo/{id].json
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [2] : 68747470733a2f2f737472796b65722e6d7970696e6174612e636c6f75642f69
Arg [3] : 7066732f516d4e75366b4142516e706e57456362517375626b71327131557862
Arg [4] : 64344d3832583443676b315975646e43426f2f7b69645d2e6a736f6e00000000
Deployed Bytecode Sourcemap
38614:3819:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23707:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22680:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39293:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38667:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38857:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23451:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39795:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38773:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39190:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39612:175;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25852:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39019:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41758:672;;;;;;;;;;;;;:::i;:::-;;39384:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39068:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24191:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2625:103;;;;;;;;;;;;;:::i;:::-;;38903:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1974:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39495:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38723:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24825:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40455:953;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39125:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38957:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38809:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41416:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25084:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25374:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2883:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23707:318;23838:7;23904:1;23885:21;;:7;:21;;;;23863:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;23995:9;:13;24005:2;23995:13;;;;;;;;;;;:22;24009:7;23995:22;;;;;;;;;;;;;;;;23988:29;;23707:318;;;;:::o;22680:360::-;22827:4;22884:26;22869:41;;;:11;:41;;;;:110;;;;22942:37;22927:52;;;:11;:52;;;;22869:110;:163;;;;22996:36;23020:11;22996:23;:36::i;:::-;22869:163;22849:183;;22680:360;;;:::o;39293:83::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39356:12:::1;39364:3;39356:7;:12::i;:::-;39293:83:::0;:::o;38667:49::-;;;;;;;;;;;;;;;;;;;:::o;38857:39::-;;;;;;;;;;;;;:::o;23451:105::-;23511:13;23544:4;23537:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23451:105;;;:::o;39795:117::-;39846:4;39889:15;39870;;;;;;;;;;;:34;;;;39863:41;;39795:117;:::o;38773:29::-;;;;;;;;;;;;;:::o;39190:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;39612:175::-;39660:4;39713:15;39697:12;;;;;;;;;;;:31;;;;:82;;;;;39764:15;39745;;;;;;;;;;;:34;;;;39697:82;39677:102;;39612:175;:::o;25852:442::-;26093:12;:10;:12::i;:::-;26085:20;;:4;:20;;;:60;;;;26109:36;26126:4;26132:12;:10;:12::i;:::-;26109:16;:36::i;:::-;26085:60;26063:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;26234:52;26257:4;26263:2;26267:3;26272:7;26281:4;26234:22;:52::i;:::-;25852:442;;;;;:::o;39019:42::-;;;;;;;;;;;;;:::o;41758:672::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41808:27:::1;:212;;;;;;;;41853:42;41808:212;;;;;;;;41910:42;41808:212;;;;;;;;41967:42;41808:212;;;;;;::::0;::::1;;42033:23;:67;;;;;;;;42067:3;42033:67;;;;;;;;42080:4;42033:67;;;;;;;;42094:4;42033:67;;;;;;::::0;::::1;;42113:15;42131:21;42113:39;;42170:8;42165:258;42188:16;42184:1;:20;;;42165:258;;;42226:14;42267:1;42248:16;:20;;;;:::i;:::-;42243:1;:25;;;:115;;42353:5;42340:6;42347:1;42340:9;;;;;;;;;:::i;:::-;;;;;;42330:19;;:7;:19;;;;:::i;:::-;42329:29;;;;:::i;:::-;42243:115;;;42288:21;42243:115;42226:132;;42381:9;42391:1;42381:12;;;;;;;;;:::i;:::-;;;;;;42373:30;;:38;42404:6;42373:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;42211:212;42206:3;;;;;:::i;:::-;;;;42165:258;;;;41797:633;;;41758:672::o:0;39384:103::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39470:9:::1;39455:12;;:24;;;;;;;;;;;;;;;;;;39384:103:::0;:::o;39068:50::-;39116:2;39068:50;:::o;24191:561::-;24347:16;24422:3;:10;24403:8;:15;:29;24381:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;24514:30;24561:8;:15;24547:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24514:63;;24595:9;24590:122;24614:8;:15;24610:1;:19;24590:122;;;24670:30;24680:8;24689:1;24680:11;;;;;;;;:::i;:::-;;;;;;;;24693:3;24697:1;24693:6;;;;;;;;:::i;:::-;;;;;;;;24670:9;:30::i;:::-;24651:13;24665:1;24651:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;24631:3;;;;:::i;:::-;;;24590:122;;;;24731:13;24724:20;;;24191:561;;;;:::o;2625:103::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2690:30:::1;2717:1;2690:18;:30::i;:::-;2625:103::o:0;38903:47::-;38948:2;38903:47;:::o;1974:87::-;2020:7;2047:6;;;;;;;;;;;2040:13;;1974:87;:::o;39495:109::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39587:9:::1;39569:15;;:27;;;;;;;;;;;;;;;;;;39495:109:::0;:::o;38723:41::-;;;;;;;;;;;;;;;;;;;:::o;24825:187::-;24952:52;24971:12;:10;:12::i;:::-;24985:8;24995;24952:18;:52::i;:::-;24825:187;;:::o;40455:953::-;40511:19;40541:17;40575;:15;:17::i;:::-;40571:331;;;38948:2;40609:34;;39000:10;40658:28;;40571:331;;;40708:20;:18;:20::i;:::-;40704:198;;;39116:2;40745:37;;39171:10;40797:31;;40704:198;;;40861:29;;;;;;;;;;:::i;:::-;;;;;;;;40704:198;40571:331;40930:1;40922:5;:9;;;40914:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;38844:4;40998:32;;41012:5;40998:11;;;;;;;;;;;:19;;;;:::i;:::-;:32;;;;40976:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;41143:5;41131:17;;:9;:17;;;;:::i;:::-;41118:9;:30;;41110:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;41233:12;41203:42;;41224:5;41203:6;:18;41210:10;41203:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:42;;;;41181:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;41331:31;41344:10;41356:5;41331:12;:31::i;:::-;41395:5;41373:6;:18;41380:10;41373:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40500:908;;40455:953;:::o;39125:56::-;39171:10;39125:56;:::o;38957:53::-;39000:10;38957:53;:::o;38809:39::-;38844:4;38809:39;:::o;41416:334::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38844:4:::1;41515:43;;41529:9;:16;41515:11;;;;;;;;;;;:30;;;;;;:::i;:::-;:43;;41493:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;41645:9;41640:103;41664:9;:16;41660:1;:20;41640:103;;;41702:29;41715:9;41725:1;41715:12;;;;;;;;:::i;:::-;;;;;;;;41729:1;41702:12;:29::i;:::-;41682:3;;;;;:::i;:::-;;;;41640:103;;;;41416:334:::0;:::o;25084:218::-;25228:4;25257:18;:27;25276:7;25257:27;;;;;;;;;;;;;;;:37;25285:8;25257:37;;;;;;;;;;;;;;;;;;;;;;;;;25250:44;;25084:218;;;;:::o;25374:401::-;25590:12;:10;:12::i;:::-;25582:20;;:4;:20;;;:60;;;;25606:36;25623:4;25629:12;:10;:12::i;:::-;25606:16;:36::i;:::-;25582:60;25560:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;25722:45;25740:4;25746:2;25750;25754:6;25762:4;25722:17;:45::i;:::-;25374:401;;;;;:::o;2883:238::-;2205:12;:10;:12::i;:::-;2194:23;;:7;:5;:7::i;:::-;:23;;;2186:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3006:1:::1;2986:22;;:8;:22;;;;2964:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:28;3104:8;3085:18;:28::i;:::-;2883:238:::0;:::o;13871:207::-;14001:4;14045:25;14030:40;;;:11;:40;;;;14023:47;;13871:207;;;:::o;677:98::-;730:7;757:10;750:17;;677:98;:::o;30155:88::-;30229:6;30222:4;:13;;;;;;;;;;;;:::i;:::-;;30155:88;:::o;28062:1249::-;28303:7;:14;28289:3;:10;:28;28267:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;28418:1;28404:16;;:2;:16;;;;28396:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28475:16;28494:12;:10;:12::i;:::-;28475:31;;28519:60;28540:8;28550:4;28556:2;28560:3;28565:7;28574:4;28519:20;:60::i;:::-;28597:9;28592:470;28616:3;:10;28612:1;:14;28592:470;;;28648:10;28661:3;28665:1;28661:6;;;;;;;;:::i;:::-;;;;;;;;28648:19;;28682:14;28699:7;28707:1;28699:10;;;;;;;;:::i;:::-;;;;;;;;28682:27;;28726:19;28748:9;:13;28758:2;28748:13;;;;;;;;;;;:19;28762:4;28748:19;;;;;;;;;;;;;;;;28726:41;;28823:6;28808:11;:21;;28782:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;28987:6;28973:11;:20;28951:9;:13;28961:2;28951:13;;;;;;;;;;;:19;28965:4;28951:19;;;;;;;;;;;;;;;:42;;;;29044:6;29023:9;:13;29033:2;29023:13;;;;;;;;;;;:17;29037:2;29023:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28633:429;;;28628:3;;;;:::i;:::-;;;28592:470;;;;29109:2;29079:47;;29103:4;29079:47;;29093:8;29079:47;;;29113:3;29118:7;29079:47;;;;;;;:::i;:::-;;;;;;;;29139:164;29189:8;29212:4;29231:2;29248:3;29266:7;29288:4;29139:35;:164::i;:::-;28256:1055;28062:1249;;;;;:::o;3281:191::-;3355:16;3374:6;;;;;;;;;;;3355:25;;3400:8;3391:6;;:17;;;;;;;;;;;;;;;;;;3455:8;3424:40;;3445:8;3424:40;;;;;;;;;;;;3344:128;3281:191;:::o;34902:331::-;35057:8;35048:17;;:5;:17;;;;35040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;35160:8;35122:18;:25;35141:5;35122:25;;;;;;;;;;;;;;;:35;35148:8;35122:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35206:8;35184:41;;35199:5;35184:41;;;35216:8;35184:41;;;;;;:::i;:::-;;;;;;;;34902:331;;;:::o;39920:527::-;40000:1;39992:5;:9;;;39988:419;;;40018:20;40063:5;40055:14;;40041:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40018:52;;40085:24;40134:5;40126:14;;40112:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40085:56;;40163:8;40158:127;40181:5;40177:9;;:1;:9;;;40158:127;;;40235:1;40221:11;;;;;;;;;;;:15;;;;:::i;:::-;40212:24;;:3;40216:1;40212:6;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;;40268:1;40255:7;40263:1;40255:10;;;;;;;;;;:::i;:::-;;;;;;;:14;;;;;40188:3;;;;;:::i;:::-;;;;40158:127;;;;40301:32;40312:2;40316:3;40321:7;40301:32;;;;;;;;;;;;:10;:32::i;:::-;40003:342;;39988:419;;;40366:29;40372:2;40376:11;;;;;;;;;;;40366:29;;40389:1;40366:29;;;;;;;;;;;;:5;:29::i;:::-;39988:419;40434:5;40419:11;;:20;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39920:527;;:::o;26758:946::-;26960:1;26946:16;;:2;:16;;;;26938:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27017:16;27036:12;:10;:12::i;:::-;27017:31;;27061:185;27096:8;27119:4;27138:2;27155:21;27173:2;27155:17;:21::i;:::-;27191:25;27209:6;27191:17;:25::i;:::-;27231:4;27061:20;:185::i;:::-;27259:19;27281:9;:13;27291:2;27281:13;;;;;;;;;;;:19;27295:4;27281:19;;;;;;;;;;;;;;;;27259:41;;27348:6;27333:11;:21;;27311:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;27496:6;27482:11;:20;27460:9;:13;27470:2;27460:13;;;;;;;;;;;:19;27474:4;27460:19;;;;;;;;;;;;;;;:42;;;;27545:6;27524:9;:13;27534:2;27524:13;;;;;;;;;;;:17;27538:2;27524:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27600:2;27569:46;;27594:4;27569:46;;27584:8;27569:46;;;27604:2;27608:6;27569:46;;;;;;;:::i;:::-;;;;;;;;27628:68;27659:8;27669:4;27675:2;27679;27683:6;27691:4;27628:30;:68::i;:::-;26927:777;;26758:946;;;;;:::o;36189:221::-;;;;;;;:::o;37324:975::-;37564:15;:2;:13;;;:15::i;:::-;37560:732;;;37634:2;37617:43;;;37683:8;37714:4;37741:3;37767:7;37797:4;37617:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37596:685;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;38154:6;38147:14;;;;;;;;;;;:::i;:::-;;;;;;;;37596:685;;;38203:62;;;;;;;;;;:::i;:::-;;;;;;;;37596:685;37917:48;;;37905:60;;;:8;:60;;;;37879:199;;38008:50;;;;;;;;;;:::i;:::-;;;;;;;;37879:199;37834:259;37560:732;37324:975;;;;;;:::o;31732:861::-;31924:1;31910:16;;:2;:16;;;;31902:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32011:7;:14;31997:3;:10;:28;31975:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;32106:16;32125:12;:10;:12::i;:::-;32106:31;;32150:66;32171:8;32189:1;32193:2;32197:3;32202:7;32211:4;32150:20;:66::i;:::-;32234:9;32229:103;32253:3;:10;32249:1;:14;32229:103;;;32310:7;32318:1;32310:10;;;;;;;;:::i;:::-;;;;;;;;32285:9;:17;32295:3;32299:1;32295:6;;;;;;;;:::i;:::-;;;;;;;;32285:17;;;;;;;;;;;:21;32303:2;32285:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;32265:3;;;;;:::i;:::-;;;;32229:103;;;;32385:2;32349:53;;32381:1;32349:53;;32363:8;32349:53;;;32389:3;32394:7;32349:53;;;;;;;:::i;:::-;;;;;;;;32415:170;32465:8;32496:1;32513:2;32530:3;32548:7;32570:4;32415:35;:170::i;:::-;31891:702;31732:861;;;;:::o;30629:747::-;30796:1;30782:16;;:2;:16;;;;30774:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30849:16;30868:12;:10;:12::i;:::-;30849:31;;30893:191;30928:8;30959:1;30976:2;30993:21;31011:2;30993:17;:21::i;:::-;31029:25;31047:6;31029:17;:25::i;:::-;31069:4;30893:20;:191::i;:::-;31118:6;31097:9;:13;31107:2;31097:13;;;;;;;;;;;:17;31111:2;31097:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31177:2;31140:52;;31173:1;31140:52;;31155:8;31140:52;;;31181:2;31185:6;31140:52;;;;;;;:::i;:::-;;;;;;;;31205:163;31250:8;31281:1;31298:2;31315;31332:6;31353:4;31205:30;:163::i;:::-;30763:613;30629:747;;;;:::o;38307:230::-;38400:16;38434:22;38473:1;38459:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38434:41;;38497:7;38486:5;38492:1;38486:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;38524:5;38517:12;;;38307:230;;;:::o;36418:898::-;36633:15;:2;:13;;;:15::i;:::-;36629:680;;;36703:2;36686:38;;;36747:8;36778:4;36805:2;36830:6;36859:4;36686:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36665:633;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37171:6;37164:14;;;;;;;;;;;:::i;:::-;;;;;;;;36665:633;;;37220:62;;;;;;;;;;:::i;:::-;;;;;;;;36665:633;36957:43;;;36945:55;;;:8;:55;;;;36941:154;;37025:50;;;;;;;;;;:::i;:::-;;;;;;;;36941:154;36896:214;36629:680;36418:898;;;;;;:::o;4297:387::-;4357:4;4565:12;4632:7;4620:20;4612:28;;4675:1;4668:4;:8;4661:15;;;4297:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::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:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:137::-;4598:5;4636:6;4623:20;4614:29;;4652:32;4678:5;4652:32;:::i;:::-;4553:137;;;;:::o;4696:329::-;4755:6;4804:2;4792:9;4783:7;4779:23;4775:32;4772:119;;;4810:79;;:::i;:::-;4772:119;4930:1;4955:53;5000:7;4991:6;4980:9;4976:22;4955:53;:::i;:::-;4945:63;;4901:117;4696:329;;;;:::o;5031:474::-;5099:6;5107;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5409:2;5435:53;5480:7;5471:6;5460:9;5456:22;5435:53;:::i;:::-;5425:63;;5380:118;5031:474;;;;;:::o;5511:1509::-;5665:6;5673;5681;5689;5697;5746:3;5734:9;5725:7;5721:23;5717:33;5714:120;;;5753:79;;:::i;:::-;5714:120;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;6156:2;6145:9;6141:18;6128:32;6187:18;6179:6;6176:30;6173:117;;;6209:79;;:::i;:::-;6173:117;6314:78;6384:7;6375:6;6364:9;6360:22;6314:78;:::i;:::-;6304:88;;6099:303;6469:2;6458:9;6454:18;6441:32;6500:18;6492:6;6489:30;6486:117;;;6522:79;;:::i;:::-;6486:117;6627:78;6697:7;6688:6;6677:9;6673:22;6627:78;:::i;:::-;6617:88;;6412:303;6782:3;6771:9;6767:19;6754:33;6814:18;6806:6;6803:30;6800:117;;;6836:79;;:::i;:::-;6800:117;6941:62;6995:7;6986:6;6975:9;6971:22;6941:62;:::i;:::-;6931:72;;6725:288;5511:1509;;;;;;;;:::o;7026:1089::-;7130:6;7138;7146;7154;7162;7211:3;7199:9;7190:7;7186:23;7182:33;7179:120;;;7218:79;;:::i;:::-;7179:120;7338:1;7363:53;7408:7;7399:6;7388:9;7384:22;7363:53;:::i;:::-;7353:63;;7309:117;7465:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;:::i;:::-;7481:63;;7436:118;7593:2;7619:53;7664:7;7655:6;7644:9;7640:22;7619:53;:::i;:::-;7609:63;;7564:118;7721:2;7747:53;7792:7;7783:6;7772:9;7768:22;7747:53;:::i;:::-;7737:63;;7692:118;7877:3;7866:9;7862:19;7849:33;7909:18;7901:6;7898:30;7895:117;;;7931:79;;:::i;:::-;7895:117;8036:62;8090:7;8081:6;8070:9;8066:22;8036:62;:::i;:::-;8026:72;;7820:288;7026:1089;;;;;;;;:::o;8121:468::-;8186:6;8194;8243:2;8231:9;8222:7;8218:23;8214:32;8211:119;;;8249:79;;:::i;:::-;8211:119;8369:1;8394:53;8439:7;8430:6;8419:9;8415:22;8394:53;:::i;:::-;8384:63;;8340:117;8496:2;8522:50;8564:7;8555:6;8544:9;8540:22;8522:50;:::i;:::-;8512:60;;8467:115;8121:468;;;;;:::o;8595:474::-;8663:6;8671;8720:2;8708:9;8699:7;8695:23;8691:32;8688:119;;;8726:79;;:::i;:::-;8688:119;8846:1;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8817:117;8973:2;8999:53;9044:7;9035:6;9024:9;9020:22;8999:53;:::i;:::-;8989:63;;8944:118;8595:474;;;;;:::o;9075:539::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9362:1;9351:9;9347:17;9334:31;9392:18;9384:6;9381:30;9378:117;;;9414:79;;:::i;:::-;9378:117;9519:78;9589:7;9580:6;9569:9;9565:22;9519:78;:::i;:::-;9509:88;;9305:302;9075:539;;;;:::o;9620:894::-;9738:6;9746;9795:2;9783:9;9774:7;9770:23;9766:32;9763:119;;;9801:79;;:::i;:::-;9763:119;9949:1;9938:9;9934:17;9921:31;9979:18;9971:6;9968:30;9965:117;;;10001:79;;:::i;:::-;9965:117;10106:78;10176:7;10167:6;10156:9;10152:22;10106:78;:::i;:::-;10096:88;;9892:302;10261:2;10250:9;10246:18;10233:32;10292:18;10284:6;10281:30;10278:117;;;10314:79;;:::i;:::-;10278:117;10419:78;10489:7;10480:6;10469:9;10465:22;10419:78;:::i;:::-;10409:88;;10204:303;9620:894;;;;;:::o;10520:327::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:52;10822:7;10813:6;10802:9;10798:22;10778:52;:::i;:::-;10768:62;;10724:116;10520:327;;;;:::o;10853:349::-;10922:6;10971:2;10959:9;10950:7;10946:23;10942:32;10939:119;;;10977:79;;:::i;:::-;10939:119;11097:1;11122:63;11177:7;11168:6;11157:9;11153:22;11122:63;:::i;:::-;11112:73;;11068:127;10853:349;;;;:::o;11208:509::-;11277:6;11326:2;11314:9;11305:7;11301:23;11297:32;11294:119;;;11332:79;;:::i;:::-;11294:119;11480:1;11469:9;11465:17;11452:31;11510:18;11502:6;11499:30;11496:117;;;11532:79;;:::i;:::-;11496:117;11637:63;11692:7;11683:6;11672:9;11668:22;11637:63;:::i;:::-;11627:73;;11423:287;11208:509;;;;:::o;11723:329::-;11782:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:119;;;11837:79;;:::i;:::-;11799:119;11957:1;11982:53;12027:7;12018:6;12007:9;12003:22;11982:53;:::i;:::-;11972:63;;11928:117;11723:329;;;;:::o;12058:327::-;12116:6;12165:2;12153:9;12144:7;12140:23;12136:32;12133:119;;;12171:79;;:::i;:::-;12133:119;12291:1;12316:52;12360:7;12351:6;12340:9;12336:22;12316:52;:::i;:::-;12306:62;;12262:116;12058:327;;;;:::o;12391:179::-;12460:10;12481:46;12523:3;12515:6;12481:46;:::i;:::-;12559:4;12554:3;12550:14;12536:28;;12391:179;;;;:::o;12576:118::-;12663:24;12681:5;12663:24;:::i;:::-;12658:3;12651:37;12576:118;;:::o;12730:732::-;12849:3;12878:54;12926:5;12878:54;:::i;:::-;12948:86;13027:6;13022:3;12948:86;:::i;:::-;12941:93;;13058:56;13108:5;13058:56;:::i;:::-;13137:7;13168:1;13153:284;13178:6;13175:1;13172:13;13153:284;;;13254:6;13248:13;13281:63;13340:3;13325:13;13281:63;:::i;:::-;13274:70;;13367:60;13420:6;13367:60;:::i;:::-;13357:70;;13213:224;13200:1;13197;13193:9;13188:14;;13153:284;;;13157:14;13453:3;13446:10;;12854:608;;;12730:732;;;;:::o;13468:109::-;13549:21;13564:5;13549:21;:::i;:::-;13544:3;13537:34;13468:109;;:::o;13583:360::-;13669:3;13697:38;13729:5;13697:38;:::i;:::-;13751:70;13814:6;13809:3;13751:70;:::i;:::-;13744:77;;13830:52;13875:6;13870:3;13863:4;13856:5;13852:16;13830:52;:::i;:::-;13907:29;13929:6;13907:29;:::i;:::-;13902:3;13898:39;13891:46;;13673:270;13583:360;;;;:::o;13949:364::-;14037:3;14065:39;14098:5;14065:39;:::i;:::-;14120:71;14184:6;14179:3;14120:71;:::i;:::-;14113:78;;14200:52;14245:6;14240:3;14233:4;14226:5;14222:16;14200:52;:::i;:::-;14277:29;14299:6;14277:29;:::i;:::-;14272:3;14268:39;14261:46;;14041:272;13949:364;;;;:::o;14319:366::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:::-;14833:3;14854:67;14918:2;14913:3;14854:67;:::i;:::-;14847:74;;14930:93;15019:3;14930:93;:::i;:::-;15048:2;15043:3;15039:12;15032:19;;14691:366;;;:::o;15063:::-;15205:3;15226:67;15290:2;15285:3;15226:67;:::i;:::-;15219:74;;15302:93;15391:3;15302:93;:::i;:::-;15420:2;15415:3;15411:12;15404:19;;15063:366;;;:::o;15435:::-;15577:3;15598:67;15662:2;15657:3;15598:67;:::i;:::-;15591:74;;15674:93;15763:3;15674:93;:::i;:::-;15792:2;15787:3;15783:12;15776:19;;15435:366;;;:::o;15807:::-;15949:3;15970:67;16034:2;16029:3;15970:67;:::i;:::-;15963:74;;16046:93;16135:3;16046:93;:::i;:::-;16164:2;16159:3;16155:12;16148:19;;15807:366;;;:::o;16179:::-;16321:3;16342:67;16406:2;16401:3;16342:67;:::i;:::-;16335:74;;16418:93;16507:3;16418:93;:::i;:::-;16536:2;16531:3;16527:12;16520:19;;16179:366;;;:::o;16551:::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:::-;17065:3;17086:67;17150:2;17145:3;17086:67;:::i;:::-;17079:74;;17162:93;17251:3;17162:93;:::i;:::-;17280:2;17275:3;17271:12;17264:19;;16923:366;;;:::o;17295:::-;17437:3;17458:67;17522:2;17517:3;17458:67;:::i;:::-;17451:74;;17534:93;17623:3;17534:93;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17295:366;;;:::o;17667:::-;17809:3;17830:67;17894:2;17889:3;17830:67;:::i;:::-;17823:74;;17906:93;17995:3;17906:93;:::i;:::-;18024:2;18019:3;18015:12;18008:19;;17667:366;;;:::o;18039:::-;18181:3;18202:67;18266:2;18261:3;18202:67;:::i;:::-;18195:74;;18278:93;18367:3;18278:93;:::i;:::-;18396:2;18391:3;18387:12;18380:19;;18039:366;;;:::o;18411:::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:::-;19297:3;19318:67;19382:2;19377:3;19318:67;:::i;:::-;19311:74;;19394:93;19483:3;19394:93;:::i;:::-;19512:2;19507:3;19503:12;19496:19;;19155:366;;;:::o;19527:::-;19669:3;19690:67;19754:2;19749:3;19690:67;:::i;:::-;19683:74;;19766:93;19855:3;19766:93;:::i;:::-;19884:2;19879:3;19875:12;19868:19;;19527:366;;;:::o;19899:::-;20041:3;20062:67;20126:2;20121:3;20062:67;:::i;:::-;20055:74;;20138:93;20227:3;20138:93;:::i;:::-;20256:2;20251:3;20247:12;20240:19;;19899:366;;;:::o;20271:::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:::-;20785:3;20806:67;20870:2;20865:3;20806:67;:::i;:::-;20799:74;;20882:93;20971:3;20882:93;:::i;:::-;21000:2;20995:3;20991:12;20984:19;;20643:366;;;:::o;21015:108::-;21092:24;21110:5;21092:24;:::i;:::-;21087:3;21080:37;21015:108;;:::o;21129:118::-;21216:24;21234:5;21216:24;:::i;:::-;21211:3;21204:37;21129:118;;:::o;21253:115::-;21338:23;21355:5;21338:23;:::i;:::-;21333:3;21326:36;21253:115;;:::o;21374:222::-;21467:4;21505:2;21494:9;21490:18;21482:26;;21518:71;21586:1;21575:9;21571:17;21562:6;21518:71;:::i;:::-;21374:222;;;;:::o;21602:1053::-;21925:4;21963:3;21952:9;21948:19;21940:27;;21977:71;22045:1;22034:9;22030:17;22021:6;21977:71;:::i;:::-;22058:72;22126:2;22115:9;22111:18;22102:6;22058:72;:::i;:::-;22177:9;22171:4;22167:20;22162:2;22151:9;22147:18;22140:48;22205:108;22308:4;22299:6;22205:108;:::i;:::-;22197:116;;22360:9;22354:4;22350:20;22345:2;22334:9;22330:18;22323:48;22388:108;22491:4;22482:6;22388:108;:::i;:::-;22380:116;;22544:9;22538:4;22534:20;22528:3;22517:9;22513:19;22506:49;22572:76;22643:4;22634:6;22572:76;:::i;:::-;22564:84;;21602:1053;;;;;;;;:::o;22661:751::-;22884:4;22922:3;22911:9;22907:19;22899:27;;22936:71;23004:1;22993:9;22989:17;22980:6;22936:71;:::i;:::-;23017:72;23085:2;23074:9;23070:18;23061:6;23017:72;:::i;:::-;23099;23167:2;23156:9;23152:18;23143:6;23099:72;:::i;:::-;23181;23249:2;23238:9;23234:18;23225:6;23181:72;:::i;:::-;23301:9;23295:4;23291:20;23285:3;23274:9;23270:19;23263:49;23329:76;23400:4;23391:6;23329:76;:::i;:::-;23321:84;;22661:751;;;;;;;;:::o;23418:373::-;23561:4;23599:2;23588:9;23584:18;23576:26;;23648:9;23642:4;23638:20;23634:1;23623:9;23619:17;23612:47;23676:108;23779:4;23770:6;23676:108;:::i;:::-;23668:116;;23418:373;;;;:::o;23797:634::-;24018:4;24056:2;24045:9;24041:18;24033:26;;24105:9;24099:4;24095:20;24091:1;24080:9;24076:17;24069:47;24133:108;24236:4;24227:6;24133:108;:::i;:::-;24125:116;;24288:9;24282:4;24278:20;24273:2;24262:9;24258:18;24251:48;24316:108;24419:4;24410:6;24316:108;:::i;:::-;24308:116;;23797:634;;;;;:::o;24437:210::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24575:65;24637:1;24626:9;24622:17;24613:6;24575:65;:::i;:::-;24437:210;;;;:::o;24653:313::-;24766:4;24804:2;24793:9;24789:18;24781:26;;24853:9;24847:4;24843:20;24839:1;24828:9;24824:17;24817:47;24881:78;24954:4;24945:6;24881:78;:::i;:::-;24873:86;;24653:313;;;;:::o;24972:419::-;25138:4;25176:2;25165:9;25161:18;25153:26;;25225:9;25219:4;25215:20;25211:1;25200:9;25196:17;25189:47;25253:131;25379:4;25253:131;:::i;:::-;25245:139;;24972:419;;;:::o;25397:::-;25563:4;25601:2;25590:9;25586:18;25578:26;;25650:9;25644:4;25640:20;25636:1;25625:9;25621:17;25614:47;25678:131;25804:4;25678:131;:::i;:::-;25670:139;;25397:419;;;:::o;25822:::-;25988:4;26026:2;26015:9;26011:18;26003:26;;26075:9;26069:4;26065:20;26061:1;26050:9;26046:17;26039:47;26103:131;26229:4;26103:131;:::i;:::-;26095:139;;25822:419;;;:::o;26247:::-;26413:4;26451:2;26440:9;26436:18;26428:26;;26500:9;26494:4;26490:20;26486:1;26475:9;26471:17;26464:47;26528:131;26654:4;26528:131;:::i;:::-;26520:139;;26247:419;;;:::o;26672:::-;26838:4;26876:2;26865:9;26861:18;26853:26;;26925:9;26919:4;26915:20;26911:1;26900:9;26896:17;26889:47;26953:131;27079:4;26953:131;:::i;:::-;26945:139;;26672:419;;;:::o;27097:::-;27263:4;27301:2;27290:9;27286:18;27278:26;;27350:9;27344:4;27340:20;27336:1;27325:9;27321:17;27314:47;27378:131;27504:4;27378:131;:::i;:::-;27370:139;;27097:419;;;:::o;27522:::-;27688:4;27726:2;27715:9;27711:18;27703:26;;27775:9;27769:4;27765:20;27761:1;27750:9;27746:17;27739:47;27803:131;27929:4;27803:131;:::i;:::-;27795:139;;27522:419;;;:::o;27947:::-;28113:4;28151:2;28140:9;28136:18;28128:26;;28200:9;28194:4;28190:20;28186:1;28175:9;28171:17;28164:47;28228:131;28354:4;28228:131;:::i;:::-;28220:139;;27947:419;;;:::o;28372:::-;28538:4;28576:2;28565:9;28561:18;28553:26;;28625:9;28619:4;28615:20;28611:1;28600:9;28596:17;28589:47;28653:131;28779:4;28653:131;:::i;:::-;28645:139;;28372:419;;;:::o;28797:::-;28963:4;29001:2;28990:9;28986:18;28978:26;;29050:9;29044:4;29040:20;29036:1;29025:9;29021:17;29014:47;29078:131;29204:4;29078:131;:::i;:::-;29070:139;;28797:419;;;:::o;29222:::-;29388:4;29426:2;29415:9;29411:18;29403:26;;29475:9;29469:4;29465:20;29461:1;29450:9;29446:17;29439:47;29503:131;29629:4;29503:131;:::i;:::-;29495:139;;29222:419;;;:::o;29647:::-;29813:4;29851:2;29840:9;29836:18;29828:26;;29900:9;29894:4;29890:20;29886:1;29875:9;29871:17;29864:47;29928:131;30054:4;29928:131;:::i;:::-;29920:139;;29647:419;;;:::o;30072:::-;30238:4;30276:2;30265:9;30261:18;30253:26;;30325:9;30319:4;30315:20;30311:1;30300:9;30296:17;30289:47;30353:131;30479:4;30353:131;:::i;:::-;30345:139;;30072:419;;;:::o;30497:::-;30663:4;30701:2;30690:9;30686:18;30678:26;;30750:9;30744:4;30740:20;30736:1;30725:9;30721:17;30714:47;30778:131;30904:4;30778:131;:::i;:::-;30770:139;;30497:419;;;:::o;30922:::-;31088:4;31126:2;31115:9;31111:18;31103:26;;31175:9;31169:4;31165:20;31161:1;31150:9;31146:17;31139:47;31203:131;31329:4;31203:131;:::i;:::-;31195:139;;30922:419;;;:::o;31347:::-;31513:4;31551:2;31540:9;31536:18;31528:26;;31600:9;31594:4;31590:20;31586:1;31575:9;31571:17;31564:47;31628:131;31754:4;31628:131;:::i;:::-;31620:139;;31347:419;;;:::o;31772:::-;31938:4;31976:2;31965:9;31961:18;31953:26;;32025:9;32019:4;32015:20;32011:1;32000:9;31996:17;31989:47;32053:131;32179:4;32053:131;:::i;:::-;32045:139;;31772:419;;;:::o;32197:::-;32363:4;32401:2;32390:9;32386:18;32378:26;;32450:9;32444:4;32440:20;32436:1;32425:9;32421:17;32414:47;32478:131;32604:4;32478:131;:::i;:::-;32470:139;;32197:419;;;:::o;32622:222::-;32715:4;32753:2;32742:9;32738:18;32730:26;;32766:71;32834:1;32823:9;32819:17;32810:6;32766:71;:::i;:::-;32622:222;;;;:::o;32850:332::-;32971:4;33009:2;32998:9;32994:18;32986:26;;33022:71;33090:1;33079:9;33075:17;33066:6;33022:71;:::i;:::-;33103:72;33171:2;33160:9;33156:18;33147:6;33103:72;:::i;:::-;32850:332;;;;;:::o;33188:218::-;33279:4;33317:2;33306:9;33302:18;33294:26;;33330:69;33396:1;33385:9;33381:17;33372:6;33330:69;:::i;:::-;33188:218;;;;:::o;33412:129::-;33446:6;33473:20;;:::i;:::-;33463:30;;33502:33;33530:4;33522:6;33502:33;:::i;:::-;33412:129;;;:::o;33547:75::-;33580:6;33613:2;33607:9;33597:19;;33547:75;:::o;33628:311::-;33705:4;33795:18;33787:6;33784:30;33781:56;;;33817:18;;:::i;:::-;33781:56;33867:4;33859:6;33855:17;33847:25;;33927:4;33921;33917:15;33909:23;;33628:311;;;:::o;33945:::-;34022:4;34112:18;34104:6;34101:30;34098:56;;;34134:18;;:::i;:::-;34098:56;34184:4;34176:6;34172:17;34164:25;;34244:4;34238;34234:15;34226:23;;33945:311;;;:::o;34262:307::-;34323:4;34413:18;34405:6;34402:30;34399:56;;;34435:18;;:::i;:::-;34399:56;34473:29;34495:6;34473:29;:::i;:::-;34465:37;;34557:4;34551;34547:15;34539:23;;34262:307;;;:::o;34575:308::-;34637:4;34727:18;34719:6;34716:30;34713:56;;;34749:18;;:::i;:::-;34713:56;34787:29;34809:6;34787:29;:::i;:::-;34779:37;;34871:4;34865;34861:15;34853:23;;34575:308;;;:::o;34889:132::-;34956:4;34979:3;34971:11;;35009:4;35004:3;35000:14;34992:22;;34889:132;;;:::o;35027:114::-;35094:6;35128:5;35122:12;35112:22;;35027:114;;;:::o;35147:98::-;35198:6;35232:5;35226:12;35216:22;;35147:98;;;:::o;35251:99::-;35303:6;35337:5;35331:12;35321:22;;35251:99;;;:::o;35356:113::-;35426:4;35458;35453:3;35449:14;35441:22;;35356:113;;;:::o;35475:184::-;35574:11;35608:6;35603:3;35596:19;35648:4;35643:3;35639:14;35624:29;;35475:184;;;;:::o;35665:168::-;35748:11;35782:6;35777:3;35770:19;35822:4;35817:3;35813:14;35798:29;;35665:168;;;;:::o;35839:169::-;35923:11;35957:6;35952:3;35945:19;35997:4;35992:3;35988:14;35973:29;;35839:169;;;;:::o;36014:305::-;36054:3;36073:20;36091:1;36073:20;:::i;:::-;36068:25;;36107:20;36125:1;36107:20;:::i;:::-;36102:25;;36261:1;36193:66;36189:74;36186:1;36183:81;36180:107;;;36267:18;;:::i;:::-;36180:107;36311:1;36308;36304:9;36297:16;;36014:305;;;;:::o;36325:246::-;36364:3;36383:19;36400:1;36383:19;:::i;:::-;36378:24;;36416:19;36433:1;36416:19;:::i;:::-;36411:24;;36513:1;36501:10;36497:18;36494:1;36491:25;36488:51;;;36519:18;;:::i;:::-;36488:51;36563:1;36560;36556:9;36549:16;;36325:246;;;;:::o;36577:185::-;36617:1;36634:20;36652:1;36634:20;:::i;:::-;36629:25;;36668:20;36686:1;36668:20;:::i;:::-;36663:25;;36707:1;36697:35;;36712:18;;:::i;:::-;36697:35;36754:1;36751;36747:9;36742:14;;36577:185;;;;:::o;36768:348::-;36808:7;36831:20;36849:1;36831:20;:::i;:::-;36826:25;;36865:20;36883:1;36865:20;:::i;:::-;36860:25;;37053:1;36985:66;36981:74;36978:1;36975:81;36970:1;36963:9;36956:17;36952:105;36949:131;;;37060:18;;:::i;:::-;36949:131;37108:1;37105;37101:9;37090:20;;36768:348;;;;:::o;37122:191::-;37162:4;37182:20;37200:1;37182:20;:::i;:::-;37177:25;;37216:20;37234:1;37216:20;:::i;:::-;37211:25;;37255:1;37252;37249:8;37246:34;;;37260:18;;:::i;:::-;37246:34;37305:1;37302;37298:9;37290:17;;37122:191;;;;:::o;37319:96::-;37356:7;37385:24;37403:5;37385:24;:::i;:::-;37374:35;;37319:96;;;:::o;37421:90::-;37455:7;37498:5;37491:13;37484:21;37473:32;;37421:90;;;:::o;37517:149::-;37553:7;37593:66;37586:5;37582:78;37571:89;;37517:149;;;:::o;37672:126::-;37709:7;37749:42;37742:5;37738:54;37727:65;;37672:126;;;:::o;37804:77::-;37841:7;37870:5;37859:16;;37804:77;;;:::o;37887:93::-;37923:7;37963:10;37956:5;37952:22;37941:33;;37887:93;;;:::o;37986:154::-;38070:6;38065:3;38060;38047:30;38132:1;38123:6;38118:3;38114:16;38107:27;37986:154;;;:::o;38146:307::-;38214:1;38224:113;38238:6;38235:1;38232:13;38224:113;;;38323:1;38318:3;38314:11;38308:18;38304:1;38299:3;38295:11;38288:39;38260:2;38257:1;38253:10;38248:15;;38224:113;;;38355:6;38352:1;38349:13;38346:101;;;38435:1;38426:6;38421:3;38417:16;38410:27;38346:101;38195:258;38146:307;;;:::o;38459:320::-;38503:6;38540:1;38534:4;38530:12;38520:22;;38587:1;38581:4;38577:12;38608:18;38598:81;;38664:4;38656:6;38652:17;38642:27;;38598:81;38726:2;38718:6;38715:14;38695:18;38692:38;38689:84;;;38745:18;;:::i;:::-;38689:84;38510:269;38459:320;;;:::o;38785:281::-;38868:27;38890:4;38868:27;:::i;:::-;38860:6;38856:40;38998:6;38986:10;38983:22;38962:18;38950:10;38947:34;38944:62;38941:88;;;39009:18;;:::i;:::-;38941:88;39049:10;39045:2;39038:22;38828:238;38785:281;;:::o;39072:233::-;39111:3;39134:24;39152:5;39134:24;:::i;:::-;39125:33;;39180:66;39173:5;39170:77;39167:103;;;39250:18;;:::i;:::-;39167:103;39297:1;39290:5;39286:13;39279:20;;39072:233;;;:::o;39311:175::-;39349:3;39372:23;39389:5;39372:23;:::i;:::-;39363:32;;39417:10;39410:5;39407:21;39404:47;;;39431:18;;:::i;:::-;39404:47;39478:1;39471:5;39467:13;39460:20;;39311:175;;;:::o;39492:180::-;39540:77;39537:1;39530:88;39637:4;39634:1;39627:15;39661:4;39658:1;39651:15;39678:180;39726:77;39723:1;39716:88;39823:4;39820:1;39813:15;39847:4;39844:1;39837:15;39864:180;39912:77;39909:1;39902:88;40009:4;40006:1;39999:15;40033:4;40030:1;40023:15;40050:180;40098:77;40095:1;40088:88;40195:4;40192:1;40185:15;40219:4;40216:1;40209:15;40236:180;40284:77;40281:1;40274:88;40381:4;40378:1;40371:15;40405:4;40402:1;40395:15;40422:183;40457:3;40495:1;40477:16;40474:23;40471:128;;;40533:1;40530;40527;40512:23;40555:34;40586:1;40580:8;40555:34;:::i;:::-;40548:41;;40471:128;40422:183;:::o;40611:117::-;40720:1;40717;40710:12;40734:117;40843:1;40840;40833:12;40857:117;40966:1;40963;40956:12;40980:117;41089:1;41086;41079:12;41103:117;41212:1;41209;41202:12;41226:102;41267:6;41318:2;41314:7;41309:2;41302:5;41298:14;41294:28;41284:38;;41226:102;;;:::o;41334:106::-;41378:8;41427:5;41422:3;41418:15;41397:36;;41334:106;;;:::o;41446:239::-;41586:34;41582:1;41574:6;41570:14;41563:58;41655:22;41650:2;41642:6;41638:15;41631:47;41446:239;:::o;41691:227::-;41831:34;41827:1;41819:6;41815:14;41808:58;41900:10;41895:2;41887:6;41883:15;41876:35;41691:227;:::o;41924:230::-;42064:34;42060:1;42052:6;42048:14;42041:58;42133:13;42128:2;42120:6;42116:15;42109:38;41924:230;:::o;42160:225::-;42300:34;42296:1;42288:6;42284:14;42277:58;42369:8;42364:2;42356:6;42352:15;42345:33;42160:225;:::o;42391:228::-;42531:34;42527:1;42519:6;42515:14;42508:58;42600:11;42595:2;42587:6;42583:15;42576:36;42391:228;:::o;42625:179::-;42765:31;42761:1;42753:6;42749:14;42742:55;42625:179;:::o;42810:167::-;42950:19;42946:1;42938:6;42934:14;42927:43;42810:167;:::o;42983:224::-;43123:34;43119:1;43111:6;43107:14;43100:58;43192:7;43187:2;43179:6;43175:15;43168:32;42983:224;:::o;43213:237::-;43353:34;43349:1;43341:6;43337:14;43330:58;43422:20;43417:2;43409:6;43405:15;43398:45;43213:237;:::o;43456:229::-;43596:34;43592:1;43584:6;43580:14;43573:58;43665:12;43660:2;43652:6;43648:15;43641:37;43456:229;:::o;43691:232::-;43831:34;43827:1;43819:6;43815:14;43808:58;43900:15;43895:2;43887:6;43883:15;43876:40;43691:232;:::o;43929:228::-;44069:34;44065:1;44057:6;44053:14;44046:58;44138:11;44133:2;44125:6;44121:15;44114:36;43929:228;:::o;44163:182::-;44303:34;44299:1;44291:6;44287:14;44280:58;44163:182;:::o;44351:169::-;44491:21;44487:1;44479:6;44475:14;44468:45;44351:169;:::o;44526:228::-;44666:34;44662:1;44654:6;44650:14;44643:58;44735:11;44730:2;44722:6;44718:15;44711:36;44526:228;:::o;44760:::-;44900:34;44896:1;44888:6;44884:14;44877:58;44969:11;44964:2;44956:6;44952:15;44945:36;44760:228;:::o;44994:227::-;45134:34;45130:1;45122:6;45118:14;45111:58;45203:10;45198:2;45190:6;45186:15;45179:35;44994:227;:::o;45227:220::-;45367:34;45363:1;45355:6;45351:14;45344:58;45436:3;45431:2;45423:6;45419:15;45412:28;45227:220;:::o;45453:711::-;45492:3;45530:4;45512:16;45509:26;45506:39;;;45538:5;;45506:39;45567:20;;:::i;:::-;45642:1;45624:16;45620:24;45617:1;45611:4;45596:49;45675:4;45669:11;45774:16;45767:4;45759:6;45755:17;45752:39;45719:18;45711:6;45708:30;45692:113;45689:146;;;45820:5;;;;45689:146;45866:6;45860:4;45856:17;45902:3;45896:10;45929:18;45921:6;45918:30;45915:43;;;45951:5;;;;;;45915:43;45999:6;45992:4;45987:3;45983:14;45979:27;46058:1;46040:16;46036:24;46030:4;46026:35;46021:3;46018:44;46015:57;;;46065:5;;;;;;;46015:57;46082;46130:6;46124:4;46120:17;46112:6;46108:30;46102:4;46082:57;:::i;:::-;46155:3;46148:10;;45496:668;;;;;45453:711;;:::o;46170:122::-;46243:24;46261:5;46243:24;:::i;:::-;46236:5;46233:35;46223:63;;46282:1;46279;46272:12;46223:63;46170:122;:::o;46298:116::-;46368:21;46383:5;46368:21;:::i;:::-;46361:5;46358:32;46348:60;;46404:1;46401;46394:12;46348:60;46298:116;:::o;46420:120::-;46492:23;46509:5;46492:23;:::i;:::-;46485:5;46482:34;46472:62;;46530:1;46527;46520:12;46472:62;46420:120;:::o;46546:122::-;46619:24;46637:5;46619:24;:::i;:::-;46612:5;46609:35;46599:63;;46658:1;46655;46648:12;46599:63;46546:122;:::o;46674:120::-;46746:23;46763:5;46746:23;:::i;:::-;46739:5;46736:34;46726:62;;46784:1;46781;46774:12;46726:62;46674:120;:::o
Swarm Source
ipfs://02991e57cc0609012e8fd6ee82977fe185a600166a186bac51648dae7ad602f1
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.