Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Contract Name:
SFPR
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-07-14 */ // SPDX-License-Identifier: MIT // 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/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in paused state. */ constructor() { _paused = true; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/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 (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/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 (last updated v4.7.0) (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: address zero is not a valid owner"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, to, ids, amounts, data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Emits a {TransferSingle} event. * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `ids` and `amounts` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} /** * @dev Hook that is called after any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC1155/extensions/ERC1155Supply.sol) pragma solidity ^0.8.0; /** * @dev Extension of ERC1155 that adds tracking of total supply per id. * * Useful for scenarios where Fungible and Non-fungible tokens have to be * clearly identified. Note: While a totalSupply of 1 might mean the * corresponding is an NFT, there is no guarantees that no other token with the * same id are not going to be minted. */ abstract contract ERC1155Supply is ERC1155 { mapping(uint256 => uint256) private _totalSupply; /** * @dev Total amount of tokens in with a given id. */ function totalSupply(uint256 id) public view virtual returns (uint256) { return _totalSupply[id]; } /** * @dev Indicates whether any token exist with a given id, or not. */ function exists(uint256 id) public view virtual returns (bool) { return ERC1155Supply.totalSupply(id) > 0; } /** * @dev See {ERC1155-_beforeTokenTransfer}. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual override { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); if (from == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { _totalSupply[ids[i]] += amounts[i]; } } if (to == address(0)) { for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 supply = _totalSupply[id]; require(supply >= amount, "ERC1155: burn amount exceeds totalSupply"); unchecked { _totalSupply[id] = supply - amount; } } } } } // File: @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/extensions/ERC1155Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC1155} that allows token holders to destroy both their * own tokens and those that they have been approved to use. * * _Available since v3.1._ */ abstract contract ERC1155Burnable is ERC1155 { function burn( address account, uint256 id, uint256 value ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _burn(account, id, value); } function burnBatch( address account, uint256[] memory ids, uint256[] memory values ) public virtual { require( account == _msgSender() || isApprovedForAll(account, _msgSender()), "ERC1155: caller is not token owner nor approved" ); _burnBatch(account, ids, values); } } // File: contracts/Airdrop Test2.sol pragma solidity ^0.8.4; contract SFPR is ERC1155, Ownable, Pausable, ERC1155Burnable, ERC1155Supply { string public name; string public symbol; mapping(uint => string) tokenURI; constructor() ERC1155("") { name = "SNEAKERFEST Puerto Rico Digital Collectibles"; symbol = "SFPR"; } function setURI(uint _id, string memory _uri) public onlyOwner { tokenURI[_id] = _uri; emit URI(_uri, _id); } function uri(uint _id) public override view returns (string memory) { return tokenURI[_id]; } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function mint(address account, uint256 id, uint256 amount, bytes memory data) public onlyOwner { _mint(account, id, amount, data); } function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) public onlyOwner { _mintBatch(to, ids, amounts, data); } function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal whenNotPaused override(ERC1155, ERC1155Supply) { super._beforeTokenTransfer(operator, from, to, ids, amounts, data); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","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":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"_id","type":"uint256"},{"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":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051806020016040528060008152506200003381620000f560201b60201c565b5062000054620000486200011160201b60201c565b6200011960201b60201c565b6001600360146101000a81548160ff0219169083151502179055506040518060600160405280602c81526020016200449b602c913960059080519060200190620000a0929190620001df565b506040518060400160405280600481526020017f534650520000000000000000000000000000000000000000000000000000000081525060069080519060200190620000ee929190620001df565b50620002f4565b80600290805190602001906200010d929190620001df565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001ed906200028f565b90600052602060002090601f0160209004810192826200021157600085556200025d565b82601f106200022c57805160ff19168380011785556200025d565b828001600101855582156200025d579182015b828111156200025c5782518255916020019190600101906200023f565b5b5090506200026c919062000270565b5090565b5b808211156200028b57600081600090555060010162000271565b5090565b60006002820490506001821680620002a857607f821691505b60208210811415620002bf57620002be620002c5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61419780620003046000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c8063715018a6116100c3578063a22cb4651161007c578063a22cb46514610363578063bd85b0391461037f578063e985e9c5146103af578063f242432a146103df578063f2fde38b146103fb578063f5298aca146104175761014c565b8063715018a6146102db578063731133e9146102e55780638456cb5914610301578063862440e21461030b5780638da5cb5b1461032757806395d89b41146103455761014c565b80632eb2c2d6116101155780632eb2c2d61461021b5780633f4ba83a146102375780634e1273f4146102415780634f558e79146102715780635c975abb146102a15780636b20c454146102bf5761014c565b8062fdd58e1461015157806301ffc9a71461018157806306fdde03146101b15780630e89341c146101cf5780631f7fdffa146101ff575b600080fd5b61016b60048036038101906101669190612dc6565b610433565b6040516101789190613741565b60405180910390f35b61019b60048036038101906101969190612f54565b6104fc565b6040516101a891906134e4565b60405180910390f35b6101b96105de565b6040516101c691906134ff565b60405180910390f35b6101e960048036038101906101e49190612fae565b61066c565b6040516101f691906134ff565b60405180910390f35b61021960048036038101906102149190612ccb565b610711565b005b61023560048036038101906102309190612ada565b61072b565b005b61023f6107cc565b005b61025b60048036038101906102569190612edc565b6107de565b604051610268919061348b565b60405180910390f35b61028b60048036038101906102869190612fae565b6108f7565b60405161029891906134e4565b60405180910390f35b6102a961090b565b6040516102b691906134e4565b60405180910390f35b6102d960048036038101906102d49190612c40565b610922565b005b6102e36109bf565b005b6102ff60048036038101906102fa9190612e59565b6109d3565b005b6103096109ed565b005b61032560048036038101906103209190612fdb565b6109ff565b005b61032f610a6b565b60405161033c91906133ae565b60405180910390f35b61034d610a95565b60405161035a91906134ff565b60405180910390f35b61037d60048036038101906103789190612d86565b610b23565b005b61039960048036038101906103949190612fae565b610b39565b6040516103a69190613741565b60405180910390f35b6103c960048036038101906103c49190612a9a565b610b56565b6040516103d691906134e4565b60405180910390f35b6103f960048036038101906103f49190612ba9565b610bea565b005b61041560048036038101906104109190612a6d565b610c8b565b005b610431600480360381019061042c9190612e06565b610d0f565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049b906135e1565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105c757507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105d757506105d682610dac565b5b9050919050565b600580546105eb906139e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610617906139e1565b80156106645780601f1061063957610100808354040283529160200191610664565b820191906000526020600020905b81548152906001019060200180831161064757829003601f168201915b505050505081565b606060076000838152602001908152602001600020805461068c906139e1565b80601f01602080910402602001604051908101604052809291908181526020018280546106b8906139e1565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b50505050509050919050565b610719610e16565b61072584848484610e94565b50505050565b6107336110c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806107795750610778856107736110c1565b610b56565b5b6107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90613541565b60405180910390fd5b6107c585858585856110c9565b5050505050565b6107d4610e16565b6107dc6113eb565b565b60608151835114610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b906136e1565b60405180910390fd5b6000835167ffffffffffffffff81111561084157610840613b1a565b5b60405190808252806020026020018201604052801561086f5781602001602082028036833780820191505090505b50905060005b84518110156108ec576108bc85828151811061089457610893613aeb565b5b60200260200101518583815181106108af576108ae613aeb565b5b6020026020010151610433565b8282815181106108cf576108ce613aeb565b5b602002602001018181525050806108e590613a44565b9050610875565b508091505092915050565b60008061090383610b39565b119050919050565b6000600360149054906101000a900460ff16905090565b61092a6110c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610970575061096f8361096a6110c1565b610b56565b5b6109af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a690613541565b60405180910390fd5b6109ba83838361144e565b505050565b6109c7610e16565b6109d1600061171d565b565b6109db610e16565b6109e7848484846117e3565b50505050565b6109f5610e16565b6109fd611994565b565b610a07610e16565b80600760008481526020019081526020016000209080519060200190610a2e929190612745565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b82604051610a5f91906134ff565b60405180910390a25050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60068054610aa2906139e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ace906139e1565b8015610b1b5780601f10610af057610100808354040283529160200191610b1b565b820191906000526020600020905b815481529060010190602001808311610afe57829003601f168201915b505050505081565b610b35610b2e6110c1565b83836119f7565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610bf26110c1565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610c385750610c3785610c326110c1565b610b56565b5b610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e90613541565b60405180910390fd5b610c848585858585611b64565b5050505050565b610c93610e16565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa906135a1565b60405180910390fd5b610d0c8161171d565b50565b610d176110c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d5d5750610d5c83610d576110c1565b610b56565b5b610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390613541565b60405180910390fd5b610da7838383611e00565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e1e6110c1565b73ffffffffffffffffffffffffffffffffffffffff16610e3c610a6b565b73ffffffffffffffffffffffffffffffffffffffff1614610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8990613681565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90613721565b60405180910390fd5b8151835114610f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3f90613701565b60405180910390fd5b6000610f526110c1565b9050610f6381600087878787612047565b60005b845181101561101c57838181518110610f8257610f81613aeb565b5b6020026020010151600080878481518110610fa057610f9f613aeb565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461100291906138d5565b92505081905550808061101490613a44565b915050610f66565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516110949291906134ad565b60405180910390a46110ab81600087878787612065565b6110ba8160008787878761206d565b5050505050565b600033905090565b815183511461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490613701565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613621565b60405180910390fd5b60006111876110c1565b9050611197818787878787612047565b60005b84518110156113485760008582815181106111b8576111b7613aeb565b5b6020026020010151905060008583815181106111d7576111d6613aeb565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613661565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132d91906138d5565b925050819055505050508061134190613a44565b905061119a565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516113bf9291906134ad565b60405180910390a46113d5818787878787612065565b6113e381878787878761206d565b505050505050565b6113f3612254565b6000600360146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6114376110c1565b60405161144491906133ae565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590613641565b60405180910390fd5b8051825114611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990613701565b60405180910390fd5b600061150c6110c1565b905061152c81856000868660405180602001604052806000815250612047565b60005b835181101561167957600084828151811061154d5761154c613aeb565b5b60200260200101519050600084838151811061156c5761156b613aeb565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611604906135c1565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050808061167190613a44565b91505061152f565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516116f19291906134ad565b60405180910390a461171781856000868660405180602001604052806000815250612065565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184a90613721565b60405180910390fd5b600061185d6110c1565b9050600061186a8561229d565b905060006118778561229d565b905061188883600089858589612047565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e791906138d5565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161196592919061375c565b60405180910390a461197c83600089858589612065565b61198b83600089898989612317565b50505050505050565b61199c6124fe565b6001600360146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586119e06110c1565b6040516119ed91906133ae565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d906136c1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b5791906134e4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613621565b60405180910390fd5b6000611bde6110c1565b90506000611beb8561229d565b90506000611bf88561229d565b9050611c08838989858589612047565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613661565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d5491906138d5565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611dd192919061375c565b60405180910390a4611de7848a8a86868a612065565b611df5848a8a8a8a8a612317565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6790613641565b60405180910390fd5b6000611e7a6110c1565b90506000611e878461229d565b90506000611e948461229d565b9050611eb483876000858560405180602001604052806000815250612047565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f42906135c1565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161201892919061375c565b60405180910390a461203e84886000868660405180602001604052806000815250612065565b50505050505050565b61204f6124fe565b61205d868686868686612548565b505050505050565b505050505050565b61208c8473ffffffffffffffffffffffffffffffffffffffff1661271a565b1561224c578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016120d29594939291906133c9565b602060405180830381600087803b1580156120ec57600080fd5b505af192505050801561211d57506040513d601f19601f8201168201806040525081019061211a9190612f81565b60015b6121c357612129613b49565b806308c379a01415612186575061213e61406f565b806121495750612188565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d91906134ff565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613521565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461224a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224190613561565b60405180910390fd5b505b505050505050565b61225c61090b565b61229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290613581565b60405180910390fd5b565b60606000600167ffffffffffffffff8111156122bc576122bb613b1a565b5b6040519080825280602002602001820160405280156122ea5781602001602082028036833780820191505090505b509050828160008151811061230257612301613aeb565b5b60200260200101818152505080915050919050565b6123368473ffffffffffffffffffffffffffffffffffffffff1661271a565b156124f6578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161237c959493929190613431565b602060405180830381600087803b15801561239657600080fd5b505af19250505080156123c757506040513d601f19601f820116820180604052508101906123c49190612f81565b60015b61246d576123d3613b49565b806308c379a0141561243057506123e861406f565b806123f35750612432565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242791906134ff565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246490613521565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146124f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124eb90613561565b60405180910390fd5b505b505050505050565b61250661090b565b15612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d90613601565b60405180910390fd5b565b61255686868686868661273d565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156126085760005b8351811015612606578281815181106125aa576125a9613aeb565b5b6020026020010151600460008684815181106125c9576125c8613aeb565b5b6020026020010151815260200190815260200160002060008282546125ee91906138d5565b92505081905550806125ff90613a44565b905061258e565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156127125760005b835181101561271057600084828151811061265e5761265d613aeb565b5b60200260200101519050600084838151811061267d5761267c613aeb565b5b60200260200101519050600060046000848152602001908152602001600020549050818110156126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906136a1565b60405180910390fd5b81810360046000858152602001908152602001600020819055505050508061270990613a44565b9050612640565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b828054612751906139e1565b90600052602060002090601f01602090048101928261277357600085556127ba565b82601f1061278c57805160ff19168380011785556127ba565b828001600101855582156127ba579182015b828111156127b957825182559160200191906001019061279e565b5b5090506127c791906127cb565b5090565b5b808211156127e45760008160009055506001016127cc565b5090565b60006127fb6127f6846137aa565b613785565b9050808382526020820190508285602086028201111561281e5761281d613b70565b5b60005b8581101561284e5781612834888261294c565b845260208401935060208301925050600181019050612821565b5050509392505050565b600061286b612866846137d6565b613785565b9050808382526020820190508285602086028201111561288e5761288d613b70565b5b60005b858110156128be57816128a48882612a58565b845260208401935060208301925050600181019050612891565b5050509392505050565b60006128db6128d684613802565b613785565b9050828152602081018484840111156128f7576128f6613b75565b5b61290284828561399f565b509392505050565b600061291d61291884613833565b613785565b90508281526020810184848401111561293957612938613b75565b5b61294484828561399f565b509392505050565b60008135905061295b81614105565b92915050565b600082601f83011261297657612975613b6b565b5b81356129868482602086016127e8565b91505092915050565b600082601f8301126129a4576129a3613b6b565b5b81356129b4848260208601612858565b91505092915050565b6000813590506129cc8161411c565b92915050565b6000813590506129e181614133565b92915050565b6000815190506129f681614133565b92915050565b600082601f830112612a1157612a10613b6b565b5b8135612a218482602086016128c8565b91505092915050565b600082601f830112612a3f57612a3e613b6b565b5b8135612a4f84826020860161290a565b91505092915050565b600081359050612a678161414a565b92915050565b600060208284031215612a8357612a82613b7f565b5b6000612a918482850161294c565b91505092915050565b60008060408385031215612ab157612ab0613b7f565b5b6000612abf8582860161294c565b9250506020612ad08582860161294c565b9150509250929050565b600080600080600060a08688031215612af657612af5613b7f565b5b6000612b048882890161294c565b9550506020612b158882890161294c565b945050604086013567ffffffffffffffff811115612b3657612b35613b7a565b5b612b428882890161298f565b935050606086013567ffffffffffffffff811115612b6357612b62613b7a565b5b612b6f8882890161298f565b925050608086013567ffffffffffffffff811115612b9057612b8f613b7a565b5b612b9c888289016129fc565b9150509295509295909350565b600080600080600060a08688031215612bc557612bc4613b7f565b5b6000612bd38882890161294c565b9550506020612be48882890161294c565b9450506040612bf588828901612a58565b9350506060612c0688828901612a58565b925050608086013567ffffffffffffffff811115612c2757612c26613b7a565b5b612c33888289016129fc565b9150509295509295909350565b600080600060608486031215612c5957612c58613b7f565b5b6000612c678682870161294c565b935050602084013567ffffffffffffffff811115612c8857612c87613b7a565b5b612c948682870161298f565b925050604084013567ffffffffffffffff811115612cb557612cb4613b7a565b5b612cc18682870161298f565b9150509250925092565b60008060008060808587031215612ce557612ce4613b7f565b5b6000612cf38782880161294c565b945050602085013567ffffffffffffffff811115612d1457612d13613b7a565b5b612d208782880161298f565b935050604085013567ffffffffffffffff811115612d4157612d40613b7a565b5b612d4d8782880161298f565b925050606085013567ffffffffffffffff811115612d6e57612d6d613b7a565b5b612d7a878288016129fc565b91505092959194509250565b60008060408385031215612d9d57612d9c613b7f565b5b6000612dab8582860161294c565b9250506020612dbc858286016129bd565b9150509250929050565b60008060408385031215612ddd57612ddc613b7f565b5b6000612deb8582860161294c565b9250506020612dfc85828601612a58565b9150509250929050565b600080600060608486031215612e1f57612e1e613b7f565b5b6000612e2d8682870161294c565b9350506020612e3e86828701612a58565b9250506040612e4f86828701612a58565b9150509250925092565b60008060008060808587031215612e7357612e72613b7f565b5b6000612e818782880161294c565b9450506020612e9287828801612a58565b9350506040612ea387828801612a58565b925050606085013567ffffffffffffffff811115612ec457612ec3613b7a565b5b612ed0878288016129fc565b91505092959194509250565b60008060408385031215612ef357612ef2613b7f565b5b600083013567ffffffffffffffff811115612f1157612f10613b7a565b5b612f1d85828601612961565b925050602083013567ffffffffffffffff811115612f3e57612f3d613b7a565b5b612f4a8582860161298f565b9150509250929050565b600060208284031215612f6a57612f69613b7f565b5b6000612f78848285016129d2565b91505092915050565b600060208284031215612f9757612f96613b7f565b5b6000612fa5848285016129e7565b91505092915050565b600060208284031215612fc457612fc3613b7f565b5b6000612fd284828501612a58565b91505092915050565b60008060408385031215612ff257612ff1613b7f565b5b600061300085828601612a58565b925050602083013567ffffffffffffffff81111561302157613020613b7a565b5b61302d85828601612a2a565b9150509250929050565b60006130438383613390565b60208301905092915050565b6130588161392b565b82525050565b600061306982613874565b61307381856138a2565b935061307e83613864565b8060005b838110156130af5781516130968882613037565b97506130a183613895565b925050600181019050613082565b5085935050505092915050565b6130c58161393d565b82525050565b60006130d68261387f565b6130e081856138b3565b93506130f08185602086016139ae565b6130f981613b84565b840191505092915050565b600061310f8261388a565b61311981856138c4565b93506131298185602086016139ae565b61313281613b84565b840191505092915050565b600061314a6034836138c4565b915061315582613ba2565b604082019050919050565b600061316d602f836138c4565b915061317882613bf1565b604082019050919050565b60006131906028836138c4565b915061319b82613c40565b604082019050919050565b60006131b36014836138c4565b91506131be82613c8f565b602082019050919050565b60006131d66026836138c4565b91506131e182613cb8565b604082019050919050565b60006131f96024836138c4565b915061320482613d07565b604082019050919050565b600061321c602a836138c4565b915061322782613d56565b604082019050919050565b600061323f6010836138c4565b915061324a82613da5565b602082019050919050565b60006132626025836138c4565b915061326d82613dce565b604082019050919050565b60006132856023836138c4565b915061329082613e1d565b604082019050919050565b60006132a8602a836138c4565b91506132b382613e6c565b604082019050919050565b60006132cb6020836138c4565b91506132d682613ebb565b602082019050919050565b60006132ee6028836138c4565b91506132f982613ee4565b604082019050919050565b60006133116029836138c4565b915061331c82613f33565b604082019050919050565b60006133346029836138c4565b915061333f82613f82565b604082019050919050565b60006133576028836138c4565b915061336282613fd1565b604082019050919050565b600061337a6021836138c4565b915061338582614020565b604082019050919050565b61339981613995565b82525050565b6133a881613995565b82525050565b60006020820190506133c3600083018461304f565b92915050565b600060a0820190506133de600083018861304f565b6133eb602083018761304f565b81810360408301526133fd818661305e565b90508181036060830152613411818561305e565b9050818103608083015261342581846130cb565b90509695505050505050565b600060a082019050613446600083018861304f565b613453602083018761304f565b613460604083018661339f565b61346d606083018561339f565b818103608083015261347f81846130cb565b90509695505050505050565b600060208201905081810360008301526134a5818461305e565b905092915050565b600060408201905081810360008301526134c7818561305e565b905081810360208301526134db818461305e565b90509392505050565b60006020820190506134f960008301846130bc565b92915050565b600060208201905081810360008301526135198184613104565b905092915050565b6000602082019050818103600083015261353a8161313d565b9050919050565b6000602082019050818103600083015261355a81613160565b9050919050565b6000602082019050818103600083015261357a81613183565b9050919050565b6000602082019050818103600083015261359a816131a6565b9050919050565b600060208201905081810360008301526135ba816131c9565b9050919050565b600060208201905081810360008301526135da816131ec565b9050919050565b600060208201905081810360008301526135fa8161320f565b9050919050565b6000602082019050818103600083015261361a81613232565b9050919050565b6000602082019050818103600083015261363a81613255565b9050919050565b6000602082019050818103600083015261365a81613278565b9050919050565b6000602082019050818103600083015261367a8161329b565b9050919050565b6000602082019050818103600083015261369a816132be565b9050919050565b600060208201905081810360008301526136ba816132e1565b9050919050565b600060208201905081810360008301526136da81613304565b9050919050565b600060208201905081810360008301526136fa81613327565b9050919050565b6000602082019050818103600083015261371a8161334a565b9050919050565b6000602082019050818103600083015261373a8161336d565b9050919050565b6000602082019050613756600083018461339f565b92915050565b6000604082019050613771600083018561339f565b61377e602083018461339f565b9392505050565b600061378f6137a0565b905061379b8282613a13565b919050565b6000604051905090565b600067ffffffffffffffff8211156137c5576137c4613b1a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156137f1576137f0613b1a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561381d5761381c613b1a565b5b61382682613b84565b9050602081019050919050565b600067ffffffffffffffff82111561384e5761384d613b1a565b5b61385782613b84565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006138e082613995565b91506138eb83613995565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139205761391f613a8d565b5b828201905092915050565b600061393682613975565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156139cc5780820151818401526020810190506139b1565b838111156139db576000848401525b50505050565b600060028204905060018216806139f957607f821691505b60208210811415613a0d57613a0c613abc565b5b50919050565b613a1c82613b84565b810181811067ffffffffffffffff82111715613a3b57613a3a613b1a565b5b80604052505050565b6000613a4f82613995565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a8257613a81613a8d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115613b685760046000803e613b65600051613b95565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561407f57614102565b6140876137a0565b60043d036004823e80513d602482011167ffffffffffffffff821117156140af575050614102565b808201805167ffffffffffffffff8111156140cd5750505050614102565b80602083010160043d0385018111156140ea575050505050614102565b6140f982602001850186613a13565b82955050505050505b90565b61410e8161392b565b811461411957600080fd5b50565b6141258161393d565b811461413057600080fd5b50565b61413c81613949565b811461414757600080fd5b50565b61415381613995565b811461415e57600080fd5b5056fea2646970667358221220df0abd787008263b647fb481f738a185c2b3f9fb4d9ca583f55ce45dfa13d73964736f6c63430008070033534e45414b4552464553542050756572746f205269636f204469676974616c20436f6c6c65637469626c6573
Deployed ByteCode Sourcemap
45144:1390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26313:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25336:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45233:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45590:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46018:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28257:439;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45768:65;;;:::i;:::-;;26709:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42791:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2600:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44707:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5465:103;;;:::i;:::-;;45841:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45699:61;;;:::i;:::-;;45462:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4817:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45258:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27306:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42580:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27533:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27773:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5723:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44372:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26313:230;26399:7;26446:1;26427:21;;:7;:21;;;;26419:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26513:9;:13;26523:2;26513:13;;;;;;;;;;;:22;26527:7;26513:22;;;;;;;;;;;;;;;;26506:29;;26313:230;;;;:::o;25336:310::-;25438:4;25490:26;25475:41;;;:11;:41;;;;:110;;;;25548:37;25533:52;;;:11;:52;;;;25475:110;:163;;;;25602:36;25626:11;25602:23;:36::i;:::-;25475:163;25455:183;;25336:310;;;:::o;45233:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45590:101::-;45643:13;45672:8;:13;45681:3;45672:13;;;;;;;;;;;45665:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45590:101;;;:::o;46018:191::-;4703:13;:11;:13::i;:::-;46167:34:::1;46178:2;46182:3;46187:7;46196:4;46167:10;:34::i;:::-;46018:191:::0;;;;:::o;28257:439::-;28498:12;:10;:12::i;:::-;28490:20;;:4;:20;;;:60;;;;28514:36;28531:4;28537:12;:10;:12::i;:::-;28514:16;:36::i;:::-;28490:60;28468:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;28636:52;28659:4;28665:2;28669:3;28674:7;28683:4;28636:22;:52::i;:::-;28257:439;;;;;:::o;45768:65::-;4703:13;:11;:13::i;:::-;45815:10:::1;:8;:10::i;:::-;45768:65::o:0;26709:524::-;26865:16;26926:3;:10;26907:8;:15;:29;26899:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;26995:30;27042:8;:15;27028:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26995:63;;27076:9;27071:122;27095:8;:15;27091:1;:19;27071:122;;;27151:30;27161:8;27170:1;27161:11;;;;;;;;:::i;:::-;;;;;;;;27174:3;27178:1;27174:6;;;;;;;;:::i;:::-;;;;;;;;27151:9;:30::i;:::-;27132:13;27146:1;27132:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;27112:3;;;;:::i;:::-;;;27071:122;;;;27212:13;27205:20;;;26709:524;;;;:::o;42791:122::-;42848:4;42904:1;42872:29;42898:2;42872:25;:29::i;:::-;:33;42865:40;;42791:122;;;:::o;2600:86::-;2647:4;2671:7;;;;;;;;;;;2664:14;;2600:86;:::o;44707:359::-;44883:12;:10;:12::i;:::-;44872:23;;:7;:23;;;:66;;;;44899:39;44916:7;44925:12;:10;:12::i;:::-;44899:16;:39::i;:::-;44872:66;44850:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;45026:32;45037:7;45046:3;45051:6;45026:10;:32::i;:::-;44707:359;;;:::o;5465:103::-;4703:13;:11;:13::i;:::-;5530:30:::1;5557:1;5530:18;:30::i;:::-;5465:103::o:0;45841:169::-;4703:13;:11;:13::i;:::-;45970:32:::1;45976:7;45985:2;45989:6;45997:4;45970:5;:32::i;:::-;45841:169:::0;;;;:::o;45699:61::-;4703:13;:11;:13::i;:::-;45744:8:::1;:6;:8::i;:::-;45699:61::o:0;45462:122::-;4703:13;:11;:13::i;:::-;45548:4:::1;45532:8;:13;45541:3;45532:13;;;;;;;;;;;:20;;;;;;;;;;;;:::i;:::-;;45574:3;45564:14;45568:4;45564:14;;;;;;:::i;:::-;;;;;;;;45462:122:::0;;:::o;4817:87::-;4863:7;4890:6;;;;;;;;;;;4883:13;;4817:87;:::o;45258:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27306:155::-;27401:52;27420:12;:10;:12::i;:::-;27434:8;27444;27401:18;:52::i;:::-;27306:155;;:::o;42580:113::-;42642:7;42669:12;:16;42682:2;42669:16;;;;;;;;;;;;42662:23;;42580:113;;;:::o;27533:168::-;27632:4;27656:18;:27;27675:7;27656:27;;;;;;;;;;;;;;;:37;27684:8;27656:37;;;;;;;;;;;;;;;;;;;;;;;;;27649:44;;27533:168;;;;:::o;27773:407::-;27989:12;:10;:12::i;:::-;27981:20;;:4;:20;;;:60;;;;28005:36;28022:4;28028:12;:10;:12::i;:::-;28005:16;:36::i;:::-;27981:60;27959:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;28127:45;28145:4;28151:2;28155;28159:6;28167:4;28127:17;:45::i;:::-;27773:407;;;;;:::o;5723:201::-;4703:13;:11;:13::i;:::-;5832:1:::1;5812:22;;:8;:22;;;;5804:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5888:28;5907:8;5888:18;:28::i;:::-;5723:201:::0;:::o;44372:327::-;44523:12;:10;:12::i;:::-;44512:23;;:7;:23;;;:66;;;;44539:39;44556:7;44565:12;:10;:12::i;:::-;44539:16;:39::i;:::-;44512:66;44490:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;44666:25;44672:7;44681:2;44685:5;44666;:25::i;:::-;44372:327;;;:::o;16617:157::-;16702:4;16741:25;16726:40;;;:11;:40;;;;16719:47;;16617:157;;;:::o;4982:132::-;5057:12;:10;:12::i;:::-;5046:23;;:7;:5;:7::i;:::-;:23;;;5038:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4982:132::o;34088:813::-;34280:1;34266:16;;:2;:16;;;;34258:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34353:7;:14;34339:3;:10;:28;34331:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;34425:16;34444:12;:10;:12::i;:::-;34425:31;;34469:66;34490:8;34508:1;34512:2;34516:3;34521:7;34530:4;34469:20;:66::i;:::-;34553:9;34548:103;34572:3;:10;34568:1;:14;34548:103;;;34629:7;34637:1;34629:10;;;;;;;;:::i;:::-;;;;;;;;34604:9;:17;34614:3;34618:1;34614:6;;;;;;;;:::i;:::-;;;;;;;;34604:17;;;;;;;;;;;:21;34622:2;34604:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;34584:3;;;;;:::i;:::-;;;;34548:103;;;;34704:2;34668:53;;34700:1;34668:53;;34682:8;34668:53;;;34708:3;34713:7;34668:53;;;;;;;:::i;:::-;;;;;;;;34734:65;34754:8;34772:1;34776:2;34780:3;34785:7;34794:4;34734:19;:65::i;:::-;34812:81;34848:8;34866:1;34870:2;34874:3;34879:7;34888:4;34812:35;:81::i;:::-;34247:654;34088:813;;;;:::o;716:98::-;769:7;796:10;789:17;;716:98;:::o;30492:1146::-;30719:7;:14;30705:3;:10;:28;30697:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;30811:1;30797:16;;:2;:16;;;;30789:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;30868:16;30887:12;:10;:12::i;:::-;30868:31;;30912:60;30933:8;30943:4;30949:2;30953:3;30958:7;30967:4;30912:20;:60::i;:::-;30990:9;30985:421;31009:3;:10;31005:1;:14;30985:421;;;31041:10;31054:3;31058:1;31054:6;;;;;;;;:::i;:::-;;;;;;;;31041:19;;31075:14;31092:7;31100:1;31092:10;;;;;;;;:::i;:::-;;;;;;;;31075:27;;31119:19;31141:9;:13;31151:2;31141:13;;;;;;;;;;;:19;31155:4;31141:19;;;;;;;;;;;;;;;;31119:41;;31198:6;31183:11;:21;;31175:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;31331:6;31317:11;:20;31295:9;:13;31305:2;31295:13;;;;;;;;;;;:19;31309:4;31295:19;;;;;;;;;;;;;;;:42;;;;31388:6;31367:9;:13;31377:2;31367:13;;;;;;;;;;;:17;31381:2;31367:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31026:380;;;31021:3;;;;:::i;:::-;;;30985:421;;;;31453:2;31423:47;;31447:4;31423:47;;31437:8;31423:47;;;31457:3;31462:7;31423:47;;;;;;;:::i;:::-;;;;;;;;31483:59;31503:8;31513:4;31519:2;31523:3;31528:7;31537:4;31483:19;:59::i;:::-;31555:75;31591:8;31601:4;31607:2;31611:3;31616:7;31625:4;31555:35;:75::i;:::-;30686:952;30492:1146;;;;;:::o;3455:120::-;2464:16;:14;:16::i;:::-;3524:5:::1;3514:7;;:15;;;;;;;;;;;;;;;;;;3545:22;3554:12;:10;:12::i;:::-;3545:22;;;;;;:::i;:::-;;;;;;;;3455:120::o:0;36257:969::-;36425:1;36409:18;;:4;:18;;;;36401:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;36500:7;:14;36486:3;:10;:28;36478:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;36572:16;36591:12;:10;:12::i;:::-;36572:31;;36616:66;36637:8;36647:4;36661:1;36665:3;36670:7;36616:66;;;;;;;;;;;;:20;:66::i;:::-;36700:9;36695:373;36719:3;:10;36715:1;:14;36695:373;;;36751:10;36764:3;36768:1;36764:6;;;;;;;;:::i;:::-;;;;;;;;36751:19;;36785:14;36802:7;36810:1;36802:10;;;;;;;;:::i;:::-;;;;;;;;36785:27;;36829:19;36851:9;:13;36861:2;36851:13;;;;;;;;;;;:19;36865:4;36851:19;;;;;;;;;;;;;;;;36829:41;;36908:6;36893:11;:21;;36885:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;37035:6;37021:11;:20;36999:9;:13;37009:2;36999:13;;;;;;;;;;;:19;37013:4;36999:19;;;;;;;;;;;;;;;:42;;;;36736:332;;;36731:3;;;;;:::i;:::-;;;;36695:373;;;;37123:1;37085:55;;37109:4;37085:55;;37099:8;37085:55;;;37127:3;37132:7;37085:55;;;;;;;:::i;:::-;;;;;;;;37153:65;37173:8;37183:4;37197:1;37201:3;37206:7;37153:65;;;;;;;;;;;;:19;:65::i;:::-;36390:836;36257:969;;;:::o;6084:191::-;6158:16;6177:6;;;;;;;;;;;6158:25;;6203:8;6194:6;;:17;;;;;;;;;;;;;;;;;;6258:8;6227:40;;6248:8;6227:40;;;;;;;;;;;;6147:128;6084:191;:::o;32956:729::-;33123:1;33109:16;;:2;:16;;;;33101:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;33176:16;33195:12;:10;:12::i;:::-;33176:31;;33218:20;33241:21;33259:2;33241:17;:21::i;:::-;33218:44;;33273:24;33300:25;33318:6;33300:17;:25::i;:::-;33273:52;;33338:66;33359:8;33377:1;33381:2;33385:3;33390:7;33399:4;33338:20;:66::i;:::-;33438:6;33417:9;:13;33427:2;33417:13;;;;;;;;;;;:17;33431:2;33417:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;33497:2;33460:52;;33493:1;33460:52;;33475:8;33460:52;;;33501:2;33505:6;33460:52;;;;;;;:::i;:::-;;;;;;;;33525:65;33545:8;33563:1;33567:2;33571:3;33576:7;33585:4;33525:19;:65::i;:::-;33603:74;33634:8;33652:1;33656:2;33660;33664:6;33672:4;33603:30;:74::i;:::-;33090:595;;;32956:729;;;;:::o;3196:118::-;2205:19;:17;:19::i;:::-;3266:4:::1;3256:7;;:14;;;;;;;;;;;;;;;;;;3286:20;3293:12;:10;:12::i;:::-;3286:20;;;;;;:::i;:::-;;;;;;;;3196:118::o:0;37369:331::-;37524:8;37515:17;;:5;:17;;;;37507:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;37627:8;37589:18;:25;37608:5;37589:25;;;;;;;;;;;;;;;:35;37615:8;37589:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37673:8;37651:41;;37666:5;37651:41;;;37683:8;37651:41;;;;;;:::i;:::-;;;;;;;;37369:331;;;:::o;29160:974::-;29362:1;29348:16;;:2;:16;;;;29340:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29419:16;29438:12;:10;:12::i;:::-;29419:31;;29461:20;29484:21;29502:2;29484:17;:21::i;:::-;29461:44;;29516:24;29543:25;29561:6;29543:17;:25::i;:::-;29516:52;;29581:60;29602:8;29612:4;29618:2;29622:3;29627:7;29636:4;29581:20;:60::i;:::-;29654:19;29676:9;:13;29686:2;29676:13;;;;;;;;;;;:19;29690:4;29676:19;;;;;;;;;;;;;;;;29654:41;;29729:6;29714:11;:21;;29706:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;29854:6;29840:11;:20;29818:9;:13;29828:2;29818:13;;;;;;;;;;;:19;29832:4;29818:19;;;;;;;;;;;;;;;:42;;;;29903:6;29882:9;:13;29892:2;29882:13;;;;;;;;;;;:17;29896:2;29882:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29958:2;29927:46;;29952:4;29927:46;;29942:8;29927:46;;;29962:2;29966:6;29927:46;;;;;;;:::i;:::-;;;;;;;;29986:59;30006:8;30016:4;30022:2;30026:3;30031:7;30040:4;29986:19;:59::i;:::-;30058:68;30089:8;30099:4;30105:2;30109;30113:6;30121:4;30058:30;:68::i;:::-;29329:805;;;;29160:974;;;;;:::o;35199:808::-;35342:1;35326:18;;:4;:18;;;;35318:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;35397:16;35416:12;:10;:12::i;:::-;35397:31;;35439:20;35462:21;35480:2;35462:17;:21::i;:::-;35439:44;;35494:24;35521:25;35539:6;35521:17;:25::i;:::-;35494:52;;35559:66;35580:8;35590:4;35604:1;35608:3;35613:7;35559:66;;;;;;;;;;;;:20;:66::i;:::-;35638:19;35660:9;:13;35670:2;35660:13;;;;;;;;;;;:19;35674:4;35660:19;;;;;;;;;;;;;;;;35638:41;;35713:6;35698:11;:21;;35690:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;35832:6;35818:11;:20;35796:9;:13;35806:2;35796:13;;;;;;;;;;;:19;35810:4;35796:19;;;;;;;;;;;;;;;:42;;;;35906:1;35867:54;;35892:4;35867:54;;35882:8;35867:54;;;35910:2;35914:6;35867:54;;;;;;;:::i;:::-;;;;;;;;35934:65;35954:8;35964:4;35978:1;35982:3;35987:7;35934:65;;;;;;;;;;;;:19;:65::i;:::-;35307:700;;;;35199:808;;;:::o;46217:314::-;2205:19;:17;:19::i;:::-;46457:66:::1;46484:8;46494:4;46500:2;46504:3;46509:7;46518:4;46457:26;:66::i;:::-;46217:314:::0;;;;;;:::o;39834:220::-;;;;;;;:::o;40814:813::-;41054:15;:2;:13;;;:15::i;:::-;41050:570;;;41107:2;41090:43;;;41134:8;41144:4;41150:3;41155:7;41164:4;41090:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;41086:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;41482:6;41475:14;;;;;;;;;;;:::i;:::-;;;;;;;;41086:523;;;41531:62;;;;;;;;;;:::i;:::-;;;;;;;;41086:523;41263:48;;;41251:60;;;:8;:60;;;;41247:159;;41336:50;;;;;;;;;;:::i;:::-;;;;;;;;41247:159;41170:251;41050:570;40814:813;;;;;;:::o;2944:108::-;3011:8;:6;:8::i;:::-;3003:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2944:108::o;41635:198::-;41701:16;41730:22;41769:1;41755:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41730:41;;41793:7;41782:5;41788:1;41782:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;41820:5;41813:12;;;41635:198;;;:::o;40062:744::-;40277:15;:2;:13;;;:15::i;:::-;40273:526;;;40330:2;40313:38;;;40352:8;40362:4;40368:2;40372:6;40380:4;40313:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;40309:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;40661:6;40654:14;;;;;;;;;;;:::i;:::-;;;;;;;;40309:479;;;40710:62;;;;;;;;;;:::i;:::-;;;;;;;;40309:479;40447:43;;;40435:55;;;:8;:55;;;;40431:154;;40515:50;;;;;;;;;;:::i;:::-;;;;;;;;40431:154;40386:214;40273:526;40062:744;;;;;;:::o;2759:108::-;2830:8;:6;:8::i;:::-;2829:9;2821:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2759:108::o;42988:931::-;43227:66;43254:8;43264:4;43270:2;43274:3;43279:7;43288:4;43227:26;:66::i;:::-;43326:1;43310:18;;:4;:18;;;43306:160;;;43350:9;43345:110;43369:3;:10;43365:1;:14;43345:110;;;43429:7;43437:1;43429:10;;;;;;;;:::i;:::-;;;;;;;;43405:12;:20;43418:3;43422:1;43418:6;;;;;;;;:::i;:::-;;;;;;;;43405:20;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;43381:3;;;;:::i;:::-;;;43345:110;;;;43306:160;43496:1;43482:16;;:2;:16;;;43478:434;;;43520:9;43515:386;43539:3;:10;43535:1;:14;43515:386;;;43575:10;43588:3;43592:1;43588:6;;;;;;;;:::i;:::-;;;;;;;;43575:19;;43613:14;43630:7;43638:1;43630:10;;;;;;;;:::i;:::-;;;;;;;;43613:27;;43659:14;43676:12;:16;43689:2;43676:16;;;;;;;;;;;;43659:33;;43729:6;43719;:16;;43711:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;43860:6;43851;:15;43832:12;:16;43845:2;43832:16;;;;;;;;;;;:34;;;;43556:345;;;43551:3;;;;:::i;:::-;;;43515:386;;;;43478:434;42988:931;;;;;;:::o;7515:326::-;7575:4;7832:1;7810:7;:19;;;:23;7803:30;;7515:326;;;:::o;38658:221::-;;;;;;;:::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:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:120;;;5610:79;;:::i;:::-;5571:120;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:117;;;6066:79;;:::i;:::-;6030:117;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:117;;;6379:79;;:::i;:::-;6343:117;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:117;;;6693:79;;:::i;:::-;6657:117;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5368:1509;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:120;;;7075:79;;:::i;:::-;7036:120;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;6883:1089;;;;;;;;:::o;7978:1039::-;8105:6;8113;8121;8170:2;8158:9;8149:7;8145:23;8141:32;8138:119;;;8176:79;;:::i;:::-;8138:119;8296:1;8321:53;8366:7;8357:6;8346:9;8342:22;8321:53;:::i;:::-;8311:63;;8267:117;8451:2;8440:9;8436:18;8423:32;8482:18;8474:6;8471:30;8468:117;;;8504:79;;:::i;:::-;8468:117;8609:78;8679:7;8670:6;8659:9;8655:22;8609:78;:::i;:::-;8599:88;;8394:303;8764:2;8753:9;8749:18;8736:32;8795:18;8787:6;8784:30;8781:117;;;8817:79;;:::i;:::-;8781:117;8922:78;8992:7;8983:6;8972:9;8968:22;8922:78;:::i;:::-;8912:88;;8707:303;7978:1039;;;;;:::o;9023:1363::-;9168:6;9176;9184;9192;9241:3;9229:9;9220:7;9216:23;9212:33;9209:120;;;9248:79;;:::i;:::-;9209:120;9368:1;9393:53;9438:7;9429:6;9418:9;9414:22;9393:53;:::i;:::-;9383:63;;9339:117;9523:2;9512:9;9508:18;9495:32;9554:18;9546:6;9543:30;9540:117;;;9576:79;;:::i;:::-;9540:117;9681:78;9751:7;9742:6;9731:9;9727:22;9681:78;:::i;:::-;9671:88;;9466:303;9836:2;9825:9;9821:18;9808:32;9867:18;9859:6;9856:30;9853:117;;;9889:79;;:::i;:::-;9853:117;9994:78;10064:7;10055:6;10044:9;10040:22;9994:78;:::i;:::-;9984:88;;9779:303;10149:2;10138:9;10134:18;10121:32;10180:18;10172:6;10169:30;10166:117;;;10202:79;;:::i;:::-;10166:117;10307:62;10361:7;10352:6;10341:9;10337:22;10307:62;:::i;:::-;10297:72;;10092:287;9023:1363;;;;;;;:::o;10392:468::-;10457:6;10465;10514:2;10502:9;10493:7;10489:23;10485:32;10482:119;;;10520:79;;:::i;:::-;10482:119;10640:1;10665:53;10710:7;10701:6;10690:9;10686:22;10665:53;:::i;:::-;10655:63;;10611:117;10767:2;10793:50;10835:7;10826:6;10815:9;10811:22;10793:50;:::i;:::-;10783:60;;10738:115;10392:468;;;;;:::o;10866:474::-;10934:6;10942;10991:2;10979:9;10970:7;10966:23;10962:32;10959:119;;;10997:79;;:::i;:::-;10959:119;11117:1;11142:53;11187:7;11178:6;11167:9;11163:22;11142:53;:::i;:::-;11132:63;;11088:117;11244:2;11270:53;11315:7;11306:6;11295:9;11291:22;11270:53;:::i;:::-;11260:63;;11215:118;10866:474;;;;;:::o;11346:619::-;11423:6;11431;11439;11488:2;11476:9;11467:7;11463:23;11459:32;11456:119;;;11494:79;;:::i;:::-;11456:119;11614:1;11639:53;11684:7;11675:6;11664:9;11660:22;11639:53;:::i;:::-;11629:63;;11585:117;11741:2;11767:53;11812:7;11803:6;11792:9;11788:22;11767:53;:::i;:::-;11757:63;;11712:118;11869:2;11895:53;11940:7;11931:6;11920:9;11916:22;11895:53;:::i;:::-;11885:63;;11840:118;11346:619;;;;;:::o;11971:943::-;12066:6;12074;12082;12090;12139:3;12127:9;12118:7;12114:23;12110:33;12107:120;;;12146:79;;:::i;:::-;12107:120;12266:1;12291:53;12336:7;12327:6;12316:9;12312:22;12291:53;:::i;:::-;12281:63;;12237:117;12393:2;12419:53;12464:7;12455:6;12444:9;12440:22;12419:53;:::i;:::-;12409:63;;12364:118;12521:2;12547:53;12592:7;12583:6;12572:9;12568:22;12547:53;:::i;:::-;12537:63;;12492:118;12677:2;12666:9;12662:18;12649:32;12708:18;12700:6;12697:30;12694:117;;;12730:79;;:::i;:::-;12694:117;12835:62;12889:7;12880:6;12869:9;12865:22;12835:62;:::i;:::-;12825:72;;12620:287;11971:943;;;;;;;:::o;12920:894::-;13038:6;13046;13095:2;13083:9;13074:7;13070:23;13066:32;13063:119;;;13101:79;;:::i;:::-;13063:119;13249:1;13238:9;13234:17;13221:31;13279:18;13271:6;13268:30;13265:117;;;13301:79;;:::i;:::-;13265:117;13406:78;13476:7;13467:6;13456:9;13452:22;13406:78;:::i;:::-;13396:88;;13192:302;13561:2;13550:9;13546:18;13533:32;13592:18;13584:6;13581:30;13578:117;;;13614:79;;:::i;:::-;13578:117;13719:78;13789:7;13780:6;13769:9;13765:22;13719:78;:::i;:::-;13709:88;;13504:303;12920:894;;;;;:::o;13820:327::-;13878:6;13927:2;13915:9;13906:7;13902:23;13898:32;13895:119;;;13933:79;;:::i;:::-;13895:119;14053:1;14078:52;14122:7;14113:6;14102:9;14098:22;14078:52;:::i;:::-;14068:62;;14024:116;13820:327;;;;:::o;14153:349::-;14222:6;14271:2;14259:9;14250:7;14246:23;14242:32;14239:119;;;14277:79;;:::i;:::-;14239:119;14397:1;14422:63;14477:7;14468:6;14457:9;14453:22;14422:63;:::i;:::-;14412:73;;14368:127;14153:349;;;;:::o;14508:329::-;14567:6;14616:2;14604:9;14595:7;14591:23;14587:32;14584:119;;;14622:79;;:::i;:::-;14584:119;14742:1;14767:53;14812:7;14803:6;14792:9;14788:22;14767:53;:::i;:::-;14757:63;;14713:117;14508:329;;;;:::o;14843:654::-;14921:6;14929;14978:2;14966:9;14957:7;14953:23;14949:32;14946:119;;;14984:79;;:::i;:::-;14946:119;15104:1;15129:53;15174:7;15165:6;15154:9;15150:22;15129:53;:::i;:::-;15119:63;;15075:117;15259:2;15248:9;15244:18;15231:32;15290:18;15282:6;15279:30;15276:117;;;15312:79;;:::i;:::-;15276:117;15417:63;15472:7;15463:6;15452:9;15448:22;15417:63;:::i;:::-;15407:73;;15202:288;14843:654;;;;;:::o;15503:179::-;15572:10;15593:46;15635:3;15627:6;15593:46;:::i;:::-;15671:4;15666:3;15662:14;15648:28;;15503:179;;;;:::o;15688:118::-;15775:24;15793:5;15775:24;:::i;:::-;15770:3;15763:37;15688:118;;:::o;15842:732::-;15961:3;15990:54;16038:5;15990:54;:::i;:::-;16060:86;16139:6;16134:3;16060:86;:::i;:::-;16053:93;;16170:56;16220:5;16170:56;:::i;:::-;16249:7;16280:1;16265:284;16290:6;16287:1;16284:13;16265:284;;;16366:6;16360:13;16393:63;16452:3;16437:13;16393:63;:::i;:::-;16386:70;;16479:60;16532:6;16479:60;:::i;:::-;16469:70;;16325:224;16312:1;16309;16305:9;16300:14;;16265:284;;;16269:14;16565:3;16558:10;;15966:608;;;15842:732;;;;:::o;16580:109::-;16661:21;16676:5;16661:21;:::i;:::-;16656:3;16649:34;16580:109;;:::o;16695:360::-;16781:3;16809:38;16841:5;16809:38;:::i;:::-;16863:70;16926:6;16921:3;16863:70;:::i;:::-;16856:77;;16942:52;16987:6;16982:3;16975:4;16968:5;16964:16;16942:52;:::i;:::-;17019:29;17041:6;17019:29;:::i;:::-;17014:3;17010:39;17003:46;;16785:270;16695:360;;;;:::o;17061:364::-;17149:3;17177:39;17210:5;17177:39;:::i;:::-;17232:71;17296:6;17291:3;17232:71;:::i;:::-;17225:78;;17312:52;17357:6;17352:3;17345:4;17338:5;17334:16;17312:52;:::i;:::-;17389:29;17411:6;17389:29;:::i;:::-;17384:3;17380:39;17373:46;;17153:272;17061:364;;;;:::o;17431:366::-;17573:3;17594:67;17658:2;17653:3;17594:67;:::i;:::-;17587:74;;17670:93;17759:3;17670:93;:::i;:::-;17788:2;17783:3;17779:12;17772:19;;17431:366;;;:::o;17803:::-;17945:3;17966:67;18030:2;18025:3;17966:67;:::i;:::-;17959:74;;18042:93;18131:3;18042:93;:::i;:::-;18160:2;18155:3;18151:12;18144:19;;17803:366;;;:::o;18175:::-;18317:3;18338:67;18402:2;18397:3;18338:67;:::i;:::-;18331:74;;18414:93;18503:3;18414:93;:::i;:::-;18532:2;18527:3;18523:12;18516:19;;18175:366;;;:::o;18547:::-;18689:3;18710:67;18774:2;18769:3;18710:67;:::i;:::-;18703:74;;18786:93;18875:3;18786:93;:::i;:::-;18904:2;18899:3;18895:12;18888:19;;18547:366;;;:::o;18919:::-;19061:3;19082:67;19146:2;19141:3;19082:67;:::i;:::-;19075:74;;19158:93;19247:3;19158:93;:::i;:::-;19276:2;19271:3;19267:12;19260:19;;18919:366;;;:::o;19291:::-;19433:3;19454:67;19518:2;19513:3;19454:67;:::i;:::-;19447:74;;19530:93;19619:3;19530:93;:::i;:::-;19648:2;19643:3;19639:12;19632:19;;19291:366;;;:::o;19663:::-;19805:3;19826:67;19890:2;19885:3;19826:67;:::i;:::-;19819:74;;19902:93;19991:3;19902:93;:::i;:::-;20020:2;20015:3;20011:12;20004:19;;19663:366;;;:::o;20035:::-;20177:3;20198:67;20262:2;20257:3;20198:67;:::i;:::-;20191:74;;20274:93;20363:3;20274:93;:::i;:::-;20392:2;20387:3;20383:12;20376:19;;20035:366;;;:::o;20407:::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:::-;20921:3;20942:67;21006:2;21001:3;20942:67;:::i;:::-;20935:74;;21018:93;21107:3;21018:93;:::i;:::-;21136:2;21131:3;21127:12;21120:19;;20779:366;;;:::o;21151:::-;21293:3;21314:67;21378:2;21373:3;21314:67;:::i;:::-;21307:74;;21390:93;21479:3;21390:93;:::i;:::-;21508:2;21503:3;21499:12;21492:19;;21151:366;;;:::o;21523:::-;21665:3;21686:67;21750:2;21745:3;21686:67;:::i;:::-;21679:74;;21762:93;21851:3;21762:93;:::i;:::-;21880:2;21875:3;21871:12;21864:19;;21523:366;;;:::o;21895:::-;22037:3;22058:67;22122:2;22117:3;22058:67;:::i;:::-;22051:74;;22134:93;22223:3;22134:93;:::i;:::-;22252:2;22247:3;22243:12;22236:19;;21895:366;;;:::o;22267:::-;22409:3;22430:67;22494:2;22489:3;22430:67;:::i;:::-;22423:74;;22506:93;22595:3;22506:93;:::i;:::-;22624:2;22619:3;22615:12;22608:19;;22267:366;;;:::o;22639:::-;22781:3;22802:67;22866:2;22861:3;22802:67;:::i;:::-;22795:74;;22878:93;22967:3;22878:93;:::i;:::-;22996:2;22991:3;22987:12;22980:19;;22639:366;;;:::o;23011:::-;23153:3;23174:67;23238:2;23233:3;23174:67;:::i;:::-;23167:74;;23250:93;23339:3;23250:93;:::i;:::-;23368:2;23363:3;23359:12;23352:19;;23011:366;;;:::o;23383:::-;23525:3;23546:67;23610:2;23605:3;23546:67;:::i;:::-;23539:74;;23622:93;23711:3;23622:93;:::i;:::-;23740:2;23735:3;23731:12;23724:19;;23383:366;;;:::o;23755:108::-;23832:24;23850:5;23832:24;:::i;:::-;23827:3;23820:37;23755:108;;:::o;23869:118::-;23956:24;23974:5;23956:24;:::i;:::-;23951:3;23944:37;23869:118;;:::o;23993:222::-;24086:4;24124:2;24113:9;24109:18;24101:26;;24137:71;24205:1;24194:9;24190:17;24181:6;24137:71;:::i;:::-;23993:222;;;;:::o;24221:1053::-;24544:4;24582:3;24571:9;24567:19;24559:27;;24596:71;24664:1;24653:9;24649:17;24640:6;24596:71;:::i;:::-;24677:72;24745:2;24734:9;24730:18;24721:6;24677:72;:::i;:::-;24796:9;24790:4;24786:20;24781:2;24770:9;24766:18;24759:48;24824:108;24927:4;24918:6;24824:108;:::i;:::-;24816:116;;24979:9;24973:4;24969:20;24964:2;24953:9;24949:18;24942:48;25007:108;25110:4;25101:6;25007:108;:::i;:::-;24999:116;;25163:9;25157:4;25153:20;25147:3;25136:9;25132:19;25125:49;25191:76;25262:4;25253:6;25191:76;:::i;:::-;25183:84;;24221:1053;;;;;;;;:::o;25280:751::-;25503:4;25541:3;25530:9;25526:19;25518:27;;25555:71;25623:1;25612:9;25608:17;25599:6;25555:71;:::i;:::-;25636:72;25704:2;25693:9;25689:18;25680:6;25636:72;:::i;:::-;25718;25786:2;25775:9;25771:18;25762:6;25718:72;:::i;:::-;25800;25868:2;25857:9;25853:18;25844:6;25800:72;:::i;:::-;25920:9;25914:4;25910:20;25904:3;25893:9;25889:19;25882:49;25948:76;26019:4;26010:6;25948:76;:::i;:::-;25940:84;;25280:751;;;;;;;;:::o;26037:373::-;26180:4;26218:2;26207:9;26203:18;26195:26;;26267:9;26261:4;26257:20;26253:1;26242:9;26238:17;26231:47;26295:108;26398:4;26389:6;26295:108;:::i;:::-;26287:116;;26037:373;;;;:::o;26416:634::-;26637:4;26675:2;26664:9;26660:18;26652:26;;26724:9;26718:4;26714:20;26710:1;26699:9;26695:17;26688:47;26752:108;26855:4;26846:6;26752:108;:::i;:::-;26744:116;;26907:9;26901:4;26897:20;26892:2;26881:9;26877:18;26870:48;26935:108;27038:4;27029:6;26935:108;:::i;:::-;26927:116;;26416:634;;;;;:::o;27056:210::-;27143:4;27181:2;27170:9;27166:18;27158:26;;27194:65;27256:1;27245:9;27241:17;27232:6;27194:65;:::i;:::-;27056:210;;;;:::o;27272:313::-;27385:4;27423:2;27412:9;27408:18;27400:26;;27472:9;27466:4;27462:20;27458:1;27447:9;27443:17;27436:47;27500:78;27573:4;27564:6;27500:78;:::i;:::-;27492:86;;27272:313;;;;:::o;27591:419::-;27757:4;27795:2;27784:9;27780:18;27772:26;;27844:9;27838:4;27834:20;27830:1;27819:9;27815:17;27808:47;27872:131;27998:4;27872:131;:::i;:::-;27864:139;;27591:419;;;:::o;28016:::-;28182:4;28220:2;28209:9;28205:18;28197:26;;28269:9;28263:4;28259:20;28255:1;28244:9;28240:17;28233:47;28297:131;28423:4;28297:131;:::i;:::-;28289:139;;28016:419;;;:::o;28441:::-;28607:4;28645:2;28634:9;28630:18;28622:26;;28694:9;28688:4;28684:20;28680:1;28669:9;28665:17;28658:47;28722:131;28848:4;28722:131;:::i;:::-;28714:139;;28441:419;;;:::o;28866:::-;29032:4;29070:2;29059:9;29055:18;29047:26;;29119:9;29113:4;29109:20;29105:1;29094:9;29090:17;29083:47;29147:131;29273:4;29147:131;:::i;:::-;29139:139;;28866:419;;;:::o;29291:::-;29457:4;29495:2;29484:9;29480:18;29472:26;;29544:9;29538:4;29534:20;29530:1;29519:9;29515:17;29508:47;29572:131;29698:4;29572:131;:::i;:::-;29564:139;;29291:419;;;:::o;29716:::-;29882:4;29920:2;29909:9;29905:18;29897:26;;29969:9;29963:4;29959:20;29955:1;29944:9;29940:17;29933:47;29997:131;30123:4;29997:131;:::i;:::-;29989:139;;29716:419;;;:::o;30141:::-;30307:4;30345:2;30334:9;30330:18;30322:26;;30394:9;30388:4;30384:20;30380:1;30369:9;30365:17;30358:47;30422:131;30548:4;30422:131;:::i;:::-;30414:139;;30141:419;;;:::o;30566:::-;30732:4;30770:2;30759:9;30755:18;30747:26;;30819:9;30813:4;30809:20;30805:1;30794:9;30790:17;30783:47;30847:131;30973:4;30847:131;:::i;:::-;30839:139;;30566:419;;;:::o;30991:::-;31157:4;31195:2;31184:9;31180:18;31172:26;;31244:9;31238:4;31234:20;31230:1;31219:9;31215:17;31208:47;31272:131;31398:4;31272:131;:::i;:::-;31264:139;;30991:419;;;:::o;31416:::-;31582:4;31620:2;31609:9;31605:18;31597:26;;31669:9;31663:4;31659:20;31655:1;31644:9;31640:17;31633:47;31697:131;31823:4;31697:131;:::i;:::-;31689:139;;31416:419;;;:::o;31841:::-;32007:4;32045:2;32034:9;32030:18;32022:26;;32094:9;32088:4;32084:20;32080:1;32069:9;32065:17;32058:47;32122:131;32248:4;32122:131;:::i;:::-;32114:139;;31841:419;;;:::o;32266:::-;32432:4;32470:2;32459:9;32455:18;32447:26;;32519:9;32513:4;32509:20;32505:1;32494:9;32490:17;32483:47;32547:131;32673:4;32547:131;:::i;:::-;32539:139;;32266:419;;;:::o;32691:::-;32857:4;32895:2;32884:9;32880:18;32872:26;;32944:9;32938:4;32934:20;32930:1;32919:9;32915:17;32908:47;32972:131;33098:4;32972:131;:::i;:::-;32964:139;;32691:419;;;:::o;33116:::-;33282:4;33320:2;33309:9;33305:18;33297:26;;33369:9;33363:4;33359:20;33355:1;33344:9;33340:17;33333:47;33397:131;33523:4;33397:131;:::i;:::-;33389:139;;33116:419;;;:::o;33541:::-;33707:4;33745:2;33734:9;33730:18;33722:26;;33794:9;33788:4;33784:20;33780:1;33769:9;33765:17;33758:47;33822:131;33948:4;33822:131;:::i;:::-;33814:139;;33541:419;;;:::o;33966:::-;34132:4;34170:2;34159:9;34155:18;34147:26;;34219:9;34213:4;34209:20;34205:1;34194:9;34190:17;34183:47;34247:131;34373:4;34247:131;:::i;:::-;34239:139;;33966:419;;;:::o;34391:::-;34557:4;34595:2;34584:9;34580:18;34572:26;;34644:9;34638:4;34634:20;34630:1;34619:9;34615:17;34608:47;34672:131;34798:4;34672:131;:::i;:::-;34664:139;;34391:419;;;:::o;34816:222::-;34909:4;34947:2;34936:9;34932:18;34924:26;;34960:71;35028:1;35017:9;35013:17;35004:6;34960:71;:::i;:::-;34816:222;;;;:::o;35044:332::-;35165:4;35203:2;35192:9;35188:18;35180:26;;35216:71;35284:1;35273:9;35269:17;35260:6;35216:71;:::i;:::-;35297:72;35365:2;35354:9;35350:18;35341:6;35297:72;:::i;:::-;35044:332;;;;;:::o;35382:129::-;35416:6;35443:20;;:::i;:::-;35433:30;;35472:33;35500:4;35492:6;35472:33;:::i;:::-;35382:129;;;:::o;35517:75::-;35550:6;35583:2;35577:9;35567:19;;35517:75;:::o;35598:311::-;35675:4;35765:18;35757:6;35754:30;35751:56;;;35787:18;;:::i;:::-;35751:56;35837:4;35829:6;35825:17;35817:25;;35897:4;35891;35887:15;35879:23;;35598:311;;;:::o;35915:::-;35992:4;36082:18;36074:6;36071:30;36068:56;;;36104:18;;:::i;:::-;36068:56;36154:4;36146:6;36142:17;36134:25;;36214:4;36208;36204:15;36196:23;;35915:311;;;:::o;36232:307::-;36293:4;36383:18;36375:6;36372:30;36369:56;;;36405:18;;:::i;:::-;36369:56;36443:29;36465:6;36443:29;:::i;:::-;36435:37;;36527:4;36521;36517:15;36509:23;;36232:307;;;:::o;36545:308::-;36607:4;36697:18;36689:6;36686:30;36683:56;;;36719:18;;:::i;:::-;36683:56;36757:29;36779:6;36757:29;:::i;:::-;36749:37;;36841:4;36835;36831:15;36823:23;;36545:308;;;:::o;36859:132::-;36926:4;36949:3;36941:11;;36979:4;36974:3;36970:14;36962:22;;36859:132;;;:::o;36997:114::-;37064:6;37098:5;37092:12;37082:22;;36997:114;;;:::o;37117:98::-;37168:6;37202:5;37196:12;37186:22;;37117:98;;;:::o;37221:99::-;37273:6;37307:5;37301:12;37291:22;;37221:99;;;:::o;37326:113::-;37396:4;37428;37423:3;37419:14;37411:22;;37326:113;;;:::o;37445:184::-;37544:11;37578:6;37573:3;37566:19;37618:4;37613:3;37609:14;37594:29;;37445:184;;;;:::o;37635:168::-;37718:11;37752:6;37747:3;37740:19;37792:4;37787:3;37783:14;37768:29;;37635:168;;;;:::o;37809:169::-;37893:11;37927:6;37922:3;37915:19;37967:4;37962:3;37958:14;37943:29;;37809:169;;;;:::o;37984:305::-;38024:3;38043:20;38061:1;38043:20;:::i;:::-;38038:25;;38077:20;38095:1;38077:20;:::i;:::-;38072:25;;38231:1;38163:66;38159:74;38156:1;38153:81;38150:107;;;38237:18;;:::i;:::-;38150:107;38281:1;38278;38274:9;38267:16;;37984:305;;;;:::o;38295:96::-;38332:7;38361:24;38379:5;38361:24;:::i;:::-;38350:35;;38295:96;;;:::o;38397:90::-;38431:7;38474:5;38467:13;38460:21;38449:32;;38397:90;;;:::o;38493:149::-;38529:7;38569:66;38562:5;38558:78;38547:89;;38493:149;;;:::o;38648:126::-;38685:7;38725:42;38718:5;38714:54;38703:65;;38648:126;;;:::o;38780:77::-;38817:7;38846:5;38835:16;;38780:77;;;:::o;38863:154::-;38947:6;38942:3;38937;38924:30;39009:1;39000:6;38995:3;38991:16;38984:27;38863:154;;;:::o;39023:307::-;39091:1;39101:113;39115:6;39112:1;39109:13;39101:113;;;39200:1;39195:3;39191:11;39185:18;39181:1;39176:3;39172:11;39165:39;39137:2;39134:1;39130:10;39125:15;;39101:113;;;39232:6;39229:1;39226:13;39223:101;;;39312:1;39303:6;39298:3;39294:16;39287:27;39223:101;39072:258;39023:307;;;:::o;39336:320::-;39380:6;39417:1;39411:4;39407:12;39397:22;;39464:1;39458:4;39454:12;39485:18;39475:81;;39541:4;39533:6;39529:17;39519:27;;39475:81;39603:2;39595:6;39592:14;39572:18;39569:38;39566:84;;;39622:18;;:::i;:::-;39566:84;39387:269;39336:320;;;:::o;39662:281::-;39745:27;39767:4;39745:27;:::i;:::-;39737:6;39733:40;39875:6;39863:10;39860:22;39839:18;39827:10;39824:34;39821:62;39818:88;;;39886:18;;:::i;:::-;39818:88;39926:10;39922:2;39915:22;39705:238;39662:281;;:::o;39949:233::-;39988:3;40011:24;40029:5;40011:24;:::i;:::-;40002:33;;40057:66;40050:5;40047:77;40044:103;;;40127:18;;:::i;:::-;40044:103;40174:1;40167:5;40163:13;40156:20;;39949:233;;;:::o;40188:180::-;40236:77;40233:1;40226:88;40333:4;40330:1;40323:15;40357:4;40354:1;40347:15;40374:180;40422:77;40419:1;40412:88;40519:4;40516:1;40509:15;40543:4;40540:1;40533:15;40560:180;40608:77;40605:1;40598:88;40705:4;40702:1;40695:15;40729:4;40726:1;40719:15;40746:180;40794:77;40791:1;40784:88;40891:4;40888:1;40881:15;40915:4;40912:1;40905:15;40932:183;40967:3;41005:1;40987:16;40984:23;40981:128;;;41043:1;41040;41037;41022:23;41065:34;41096:1;41090:8;41065:34;:::i;:::-;41058:41;;40981:128;40932:183;:::o;41121:117::-;41230:1;41227;41220:12;41244:117;41353:1;41350;41343:12;41367:117;41476:1;41473;41466:12;41490:117;41599:1;41596;41589:12;41613:117;41722:1;41719;41712:12;41736:102;41777:6;41828:2;41824:7;41819:2;41812:5;41808:14;41804:28;41794:38;;41736:102;;;:::o;41844:106::-;41888:8;41937:5;41932:3;41928:15;41907:36;;41844:106;;;:::o;41956:239::-;42096:34;42092:1;42084:6;42080:14;42073:58;42165:22;42160:2;42152:6;42148:15;42141:47;41956:239;:::o;42201:234::-;42341:34;42337:1;42329:6;42325:14;42318:58;42410:17;42405:2;42397:6;42393:15;42386:42;42201:234;:::o;42441:227::-;42581:34;42577:1;42569:6;42565:14;42558:58;42650:10;42645:2;42637:6;42633:15;42626:35;42441:227;:::o;42674:170::-;42814:22;42810:1;42802:6;42798:14;42791:46;42674:170;:::o;42850:225::-;42990:34;42986:1;42978:6;42974:14;42967:58;43059:8;43054:2;43046:6;43042:15;43035:33;42850:225;:::o;43081:223::-;43221:34;43217:1;43209:6;43205:14;43198:58;43290:6;43285:2;43277:6;43273:15;43266:31;43081:223;:::o;43310:229::-;43450:34;43446:1;43438:6;43434:14;43427:58;43519:12;43514:2;43506:6;43502:15;43495:37;43310:229;:::o;43545:166::-;43685:18;43681:1;43673:6;43669:14;43662:42;43545:166;:::o;43717:224::-;43857:34;43853:1;43845:6;43841:14;43834:58;43926:7;43921:2;43913:6;43909:15;43902:32;43717:224;:::o;43947:222::-;44087:34;44083:1;44075:6;44071:14;44064:58;44156:5;44151:2;44143:6;44139:15;44132:30;43947:222;:::o;44175:229::-;44315:34;44311:1;44303:6;44299:14;44292:58;44384:12;44379:2;44371:6;44367:15;44360:37;44175:229;:::o;44410:182::-;44550:34;44546:1;44538:6;44534:14;44527:58;44410:182;:::o;44598:227::-;44738:34;44734:1;44726:6;44722:14;44715:58;44807:10;44802:2;44794:6;44790:15;44783:35;44598:227;:::o;44831:228::-;44971:34;44967:1;44959:6;44955:14;44948:58;45040:11;45035:2;45027:6;45023:15;45016:36;44831:228;:::o;45065:::-;45205:34;45201:1;45193:6;45189:14;45182:58;45274:11;45269:2;45261:6;45257:15;45250:36;45065:228;:::o;45299:227::-;45439:34;45435:1;45427:6;45423:14;45416:58;45508:10;45503:2;45495:6;45491:15;45484:35;45299:227;:::o;45532:220::-;45672:34;45668:1;45660:6;45656:14;45649:58;45741:3;45736:2;45728:6;45724:15;45717:28;45532:220;:::o;45758:711::-;45797:3;45835:4;45817:16;45814:26;45811:39;;;45843:5;;45811:39;45872:20;;:::i;:::-;45947:1;45929:16;45925:24;45922:1;45916:4;45901:49;45980:4;45974:11;46079:16;46072:4;46064:6;46060:17;46057:39;46024:18;46016:6;46013:30;45997:113;45994:146;;;46125:5;;;;45994:146;46171:6;46165:4;46161:17;46207:3;46201:10;46234:18;46226:6;46223:30;46220:43;;;46256:5;;;;;;46220:43;46304:6;46297:4;46292:3;46288:14;46284:27;46363:1;46345:16;46341:24;46335:4;46331:35;46326:3;46323:44;46320:57;;;46370:5;;;;;;;46320:57;46387;46435:6;46429:4;46425:17;46417:6;46413:30;46407:4;46387:57;:::i;:::-;46460:3;46453:10;;45801:668;;;;;45758:711;;:::o;46475:122::-;46548:24;46566:5;46548:24;:::i;:::-;46541:5;46538:35;46528:63;;46587:1;46584;46577:12;46528:63;46475:122;:::o;46603:116::-;46673:21;46688:5;46673:21;:::i;:::-;46666:5;46663:32;46653:60;;46709:1;46706;46699:12;46653:60;46603:116;:::o;46725:120::-;46797:23;46814:5;46797:23;:::i;:::-;46790:5;46787:34;46777:62;;46835:1;46832;46825:12;46777:62;46725:120;:::o;46851:122::-;46924:24;46942:5;46924:24;:::i;:::-;46917:5;46914:35;46904:63;;46963:1;46960;46953:12;46904:63;46851:122;:::o
Swarm Source
ipfs://df0abd787008263b647fb481f738a185c2b3f9fb4d9ca583f55ce45dfa13d739
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.