Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Latest 11 internal transactions
[ Download CSV Export ]
Contract Name:
AnarchyOnChainPolygon
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at PolygonScan.com on 2023-05-11 */ // SPDX-License-Identifier: MIT // solhint-disable-next-line // File: @openzeppelin/contracts/utils/Base64.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Base64.sol) pragma solidity ^0.8.0; /** * @dev Provides a set of functions to operate with Base64 strings. * * _Available since v4.5._ */ library Base64 { /** * @dev Base64 Encoding/Decoding Table */ string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); /// @solidity memory-safe-assembly assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } } // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // 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/interfaces/IERC2981.sol // OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol) pragma solidity ^0.8.0; /** * @dev Interface for the NFT Royalty Standard. * * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal * support for royalty payments across all NFT marketplaces and ecosystem participants. * * _Available since v4.5._ */ interface IERC2981 is IERC165 { /** * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of * exchange. The royalty amount is denominated and should be paid in that same unit of exchange. */ function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount); } // 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/common/ERC2981.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/common/ERC2981.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the * fee is specified in basis points by default. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC2981 is IERC2981, ERC165 { struct RoyaltyInfo { address receiver; uint96 royaltyFraction; } RoyaltyInfo private _defaultRoyaltyInfo; mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC165) returns (bool) { return interfaceId == type(IERC2981).interfaceId || super.supportsInterface(interfaceId); } /** * @inheritdoc IERC2981 */ function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) { RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId]; if (royalty.receiver == address(0)) { royalty = _defaultRoyaltyInfo; } uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator(); return (royalty.receiver, royaltyAmount); } /** * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an * override. */ function _feeDenominator() internal pure virtual returns (uint96) { return 10000; } /** * @dev Sets the royalty information that all ids in this contract will default to. * * Requirements: * * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: invalid receiver"); _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Removes default royalty information. */ function _deleteDefaultRoyalty() internal virtual { delete _defaultRoyaltyInfo; } /** * @dev Sets the royalty information for a specific token id, overriding the global default. * * Requirements: * * - `tokenId` must be already minted. * - `receiver` cannot be the zero address. * - `feeNumerator` cannot be greater than the fee denominator. */ function _setTokenRoyalty( uint256 tokenId, address receiver, uint96 feeNumerator ) internal virtual { require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice"); require(receiver != address(0), "ERC2981: Invalid parameters"); _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator); } /** * @dev Resets royalty information for the token id back to the global default. */ function _resetTokenRoyalty(uint256 tokenId) internal virtual { delete _tokenRoyaltyInfo[tokenId]; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Royalty.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/ERC721Royalty.sol) pragma solidity ^0.8.0; /** * @dev Extension of ERC721 with the ERC2981 NFT Royalty Standard, a standardized way to retrieve royalty payment * information. * * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first. * * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported. * * _Available since v4.5._ */ abstract contract ERC721Royalty is ERC2981, ERC721 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC2981) returns (bool) { return super.supportsInterface(interfaceId); } /** * @dev See {ERC721-_burn}. This override additionally clears the royalty information for the token. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); _resetTokenRoyalty(tokenId); } } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Burnable.sol) pragma solidity ^0.8.0; /** * @title ERC721 Burnable Token * @dev ERC721 Token that can be irreversibly burned (destroyed). */ abstract contract ERC721Burnable is Context, ERC721 { /** * @dev Burns `tokenId`. See {ERC721-_burn}. * * Requirements: * * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) public virtual { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721Burnable: caller is not owner nor approved"); _burn(tokenId); } } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721URIStorage.sol) pragma solidity ^0.8.0; /** * @dev ERC721 token with storage based token URI management. */ abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; // Optional mapping for token URIs mapping(uint256 => string) private _tokenURIs; /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } /** * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } // File: contracts/weAreAnarchyPolygon.sol // solhint-disable-next-line pragma solidity ^0.8.19; // @author: Bård Ionson // @website: bardIonson.com // // We Are Anarchy On Chain Polygon // A unique NFT contract that mints two NFTs on demand. One goes to the minter and the other goes to the previous minter. They have the same shape but different backgrounds. // The minter gets "We Are The Noise of Anarchy" // The previous minter gets a twin called "We Are The Shape of Anarchy" // Warning if too many mints happen at once it may send the NFT to the wrong wallet because of the eventual consistancy of a distributed network. // Inspired by Robness We Are Noise contract AnarchyOnChainPolygon is ERC721, ERC721URIStorage, ERC721Burnable, ERC721Royalty, Ownable{ using Counters for Counters.Counter; uint256 public mintPrice; uint8 public randomsUsed; uint8 public randomsLoaded; address public bard_address; uint16 public maxSupply = 256; mapping(uint256 => address) private mintedAddress; struct RandomArt { string[3] matrix; string noise; string path; } struct NumberParts { string[16] parts; uint[16] numParts; } mapping(uint256 => RandomArt) internal randomArts; Counters.Counter private _tokenIdCounter; constructor() ERC721("We Are Anarchy On Chain Polygon", "AOCP") { _setDefaultRoyalty(0x01cB023186CAB05220554EE75b4D69921DD051f1,1000); mintPrice = 100000000000000000; setBard(msg.sender); mintedAddress[0]=msg.sender; } function setBard(address _new_bard_address) public { if(msg.sender == bard_address || msg.sender == owner()) bard_address = _new_bard_address; } function setMintPrice(uint256 _newPrice) public onlyOwner { mintPrice = _newPrice; } function createRandomPub(uint[] memory _randomSeed) public { if (msg.sender == bard_address || msg.sender == owner()) createRandom(_randomSeed); } function createRandom(uint[] memory _randomSeed) internal onlyOwner { NumberParts memory division; uint seed; for (uint256 i = 0; i < _randomSeed.length; ++i) { seed = uint(keccak256(abi.encodePacked(_randomSeed[i], block.timestamp,block.prevrandao, msg.sender))); division = divide(seed); randomArts[randomsLoaded].noise = concatenate(division.parts); randomArts[randomsLoaded].matrix[0] = matrix(division.numParts[0]); randomArts[randomsLoaded].matrix[1] = matrix(division.numParts[1]); randomArts[randomsLoaded].matrix[2] = matrix(division.numParts[2]); randomArts[randomsLoaded].path = calcPath(seed); randomsLoaded++; } } function svgToImageURI(string memory svg) internal pure returns (string memory) { string memory baseURL = "data:image/svg+xml;base64,"; string memory svgBase64Encoded = Base64.encode(bytes(svg)); return string(abi.encodePacked(baseURL, svgBase64Encoded)); } function formatTokenURI(string memory imageURI, string memory artist, string memory artType) internal pure returns (string memory) { return string( abi.encodePacked( "data:application/json;base64,", Base64.encode( bytes( abi.encodePacked( unicode'{"name": "We Are Anarchy On Chain Polygon", "created_by" : "Bård Ionson", "description": "',artType, ' by Bard Ionson" , "image":"', imageURI, '","attributes": [{"trait_type": "Artist","value":"',artist,'"},{"trait_type": "Type","value":"',artType,'"}]}' ) ) ) ) ); } function appendString(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e, string memory _f, string memory _g, string memory _h, string memory _i, string memory _j, string memory _k) internal pure returns (string memory) { return string(abi.encodePacked(_a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k)); } // Fallback function is called when msg.data is not empty receive() external payable { require(msg.value >= mintPrice, "Not enough Matic sent; check price!"); mint(msg.sender); } fallback() external payable { require(msg.value >= mintPrice, "Not enough Matic sent; check price!"); mint(msg.sender); } function mint(address _to) public payable { require(_tokenIdCounter.current() < maxSupply, "The noise is finished here."); require(msg.value >= mintPrice, "Not enough Matic sent; check price!"); require(randomsUsed < randomsLoaded, "Mint is closed, Sorry."); RandomArt memory oneArt = randomArts[randomsUsed]; randomsUsed++; string memory theObj = appendString(unicode"<svg viewBox='0 0 4e3 2250' xmlns='http://www.w3.org/2000/svg'><filter id='static'><feTurbulence type='turbulence' baseFrequency='0.99' numOctaves='10' result='turbulence'><animate id='sd' attributeName='seed' dur='2s' values='", oneArt.noise,"' repeatCount='indefinite'/></feTurbulence><feColorMatrix type='saturate' values='1' result='saturate'/><feComponentTransfer><feFuncR id='r' type='discrete' tableValues='",oneArt.matrix[0],"'/><feFuncG id='g' type='discrete' tableValues='", oneArt.matrix[1],"'/><feFuncB id='b' type='discrete' tableValues='",oneArt.matrix[2],"'/><feFuncA type='discrete' tableValues='1 1'/></feComponentTransfer></filter><rect width='100%' height='100%' filter='url(#static)'/><path id='MP' fill='red' stroke='red' stroke-width='10' d='", oneArt.path ,"'><animate id='MP' attributeName='stroke' dur='20s' values='red;red;red;red;green;gold;blue;black;white;green' repeatCount='indefinite'/></path></svg>"); string memory imageURI = svgToImageURI(theObj); string memory uri = formatTokenURI(imageURI, "Bard Ionson", "Noise of Anarchy Polygon"); uint256 tokenId = _tokenIdCounter.current(); _tokenIdCounter.increment(); _safeMint(_to, tokenId); _setTokenURI(tokenId, uri); mintedAddress[randomsUsed] = _to; theObj = string(abi.encodePacked(unicode"<svg viewBox='0 0 4e3 2250' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' fill='black'/><path id='MP' fill='red' stroke='red' stroke-width='10' d='", oneArt.path ,"'><animate id='MP' attributeName='stroke' dur='20s' values='red;red;red;red;green;gold;blue;black;white;green' repeatCount='indefinite'/></path></svg>")); imageURI = svgToImageURI(theObj); uri = formatTokenURI(imageURI, "Bard Ionson", "Shape of Anarchy Polygon"); address _share_to = mintedAddress[randomsUsed-1]; _tokenIdCounter.increment(); _safeMint(_share_to,tokenId+1); _setTokenURI(tokenId+1, uri); payable(bard_address).transfer(msg.value); } function calcPath(uint256 endpoint) internal pure returns (string memory) { // Split the number into groups of 4 digits uint256[] memory groups = new uint256[](20); uint256 counter = 0; uint256 num = endpoint; while (num > 0) { groups[counter] = num % 10000; num = num / 10000; counter++; } // Scale down the coordinates to fit within an SVG viewport and round to the nearest integer uint256 scaleX = 4000; uint256 scaleY = 2250; uint256[] memory x = new uint256[](10); uint256[] memory y = new uint256[](10); for (uint256 i = 0; i < 10; i++) { x[i] = (groups[i] * scaleX) / 10000; y[i] = (groups[i+10] * scaleY) / 10000; } // Create an SVG path string that draws a line through the defined points string memory svgPath = string(abi.encodePacked("M", Strings.toString(x[0]), ",", Strings.toString(y[0]))); for (uint256 i = 1; i < 10; i++) { svgPath = string(abi.encodePacked(svgPath, " L", Strings.toString(x[i]), ",", Strings.toString(y[i]))); } return svgPath; } function divide(uint256 number) internal pure returns (NumberParts memory) { NumberParts memory division; for (uint i = 0; i < 16; i++) { uint theNum = number % 100000; division.parts[i] = Strings.toString(theNum); division.numParts[i] = theNum; number = number / 100000; } return division; } function concatenate(string[16] memory arr) internal pure returns (string memory) { string memory result = ""; for (uint i = 0; i < arr.length-3; i++) { if (i==0) { result = arr[i]; } else { result = string.concat(result, ";", arr[i]); } } return result; } function matrix(uint initial) internal pure returns (string memory) { string memory matrixVar; string memory a = Strings.toString((initial % 10)%2); string memory b = Strings.toString((initial % 100 / 10)%2); string memory c = Strings.toString((initial % 1000 / 100)%2); string memory d = Strings.toString((initial % 10000 / 1000)%2); string memory e = Strings.toString((initial % 100000 / 10000)%2); matrixVar = string(abi.encodePacked(a," ",b," ",c," ",d," ",e)); return matrixVar; } // The following functions are overrides required by Solidity. function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage, ERC721Royalty) { super._burn(tokenId); } function totalSupply() public view virtual returns (uint256) { return _tokenIdCounter.current(); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC721Royalty) returns(bool) { return super.supportsInterface(interfaceId); } function tokenURI(uint256 tokenId) public view override(ERC721, ERC721URIStorage) returns (string memory) { return super.tokenURI(tokenId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bard_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_randomSeed","type":"uint256[]"}],"name":"createRandomPub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"randomsLoaded","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"randomsUsed","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new_bard_address","type":"address"}],"name":"setBard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052610100600b60166101000a81548161ffff021916908361ffff1602179055503480156200003057600080fd5b506040518060400160405280601f81526020017f57652041726520416e6172636879204f6e20436861696e20506f6c79676f6e008152506040518060400160405280600481526020017f414f4350000000000000000000000000000000000000000000000000000000008152508160029081620000ae919062000783565b508060039081620000c0919062000783565b505050620000e3620000d76200018360201b60201c565b6200018b60201b60201c565b6200010b7301cb023186cab05220554ee75b4d69921dd051f16103e86200025160201b60201c565b67016345785d8a0000600a819055506200012b33620003f360201b60201c565b33600c600080815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000985565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000261620004d560201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620002c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b990620008f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000334576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032b9062000963565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806200048a57506200045b620004df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15620004d25780600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000612710905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200058b57607f821691505b602082108103620005a157620005a062000543565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200060b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005cc565b620006178683620005cc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006646200065e62000658846200062f565b62000639565b6200062f565b9050919050565b6000819050919050565b620006808362000643565b620006986200068f826200066b565b848454620005d9565b825550505050565b600090565b620006af620006a0565b620006bc81848462000675565b505050565b5b81811015620006e457620006d8600082620006a5565b600181019050620006c2565b5050565b601f8211156200073357620006fd81620005a7565b6200070884620005bc565b8101602085101562000718578190505b620007306200072785620005bc565b830182620006c1565b50505b505050565b600082821c905092915050565b6000620007586000198460080262000738565b1980831691505092915050565b600062000773838362000745565b9150826002028217905092915050565b6200078e8262000509565b67ffffffffffffffff811115620007aa57620007a962000514565b5b620007b6825462000572565b620007c3828285620006e8565b600060209050601f831160018114620007fb5760008415620007e6578287015190505b620007f2858262000765565b86555062000862565b601f1984166200080b86620005a7565b60005b8281101562000835578489015182556001820191506020850194506020810190506200080e565b8683101562000855578489015162000851601f89168262000745565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000620008d9602a836200086a565b9150620008e6826200087b565b604082019050919050565b600060208201905081810360008301526200090c81620008ca565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006200094b6019836200086a565b9150620009588262000913565b602082019050919050565b600060208201905081810360008301526200097e816200093c565b9050919050565b615fd580620009956000396000f3fe6080604052600436106101bb5760003560e01c806370a08231116100ec578063d5abeb011161008a578063e8e0fffd11610064578063e8e0fffd146106a4578063e985e9c5146106cd578063f2fde38b1461070a578063f4a0a5281461073357610210565b8063d5abeb0114610625578063d6e005ae14610650578063da2f1a7e1461067b57610210565b806395d89b41116100c657806395d89b411461056b578063a22cb46514610596578063b88d4fde146105bf578063c87b56dd146105e857610210565b806370a08231146104ec578063715018a6146105295780638da5cb5b1461054057610210565b80632fd682da116101595780635860f9ec116101335780635860f9ec1461043d5780636352211e146104685780636817c76c146104a55780636a627842146104d057610210565b80632fd682da146103c057806342842e0e146103eb57806342966c681461041457610210565b8063095ea7b311610195578063095ea7b31461030557806318160ddd1461032e57806323b872dd146103595780632a55205a1461038257610210565b806301ffc9a71461026057806306fdde031461029d578063081812fc146102c857610210565b3661021057600a54341015610205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fc90613a10565b60405180910390fd5b61020e3361075c565b005b600a54341015610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024c90613a10565b60405180910390fd5b61025e3361075c565b005b34801561026c57600080fd5b5061028760048036038101906102829190613a9c565b610e7e565b6040516102949190613ae4565b60405180910390f35b3480156102a957600080fd5b506102b2610e90565b6040516102bf9190613b7e565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190613bd6565b610f22565b6040516102fc9190613c44565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190613c8b565b610fa7565b005b34801561033a57600080fd5b506103436110be565b6040516103509190613cda565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190613cf5565b6110cf565b005b34801561038e57600080fd5b506103a960048036038101906103a49190613d48565b61112f565b6040516103b7929190613d88565b60405180910390f35b3480156103cc57600080fd5b506103d5611319565b6040516103e29190613c44565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190613cf5565b61133f565b005b34801561042057600080fd5b5061043b60048036038101906104369190613bd6565b61135f565b005b34801561044957600080fd5b506104526113bb565b60405161045f9190613dcd565b60405180910390f35b34801561047457600080fd5b5061048f600480360381019061048a9190613bd6565b6113ce565b60405161049c9190613c44565b60405180910390f35b3480156104b157600080fd5b506104ba61147f565b6040516104c79190613cda565b60405180910390f35b6104ea60048036038101906104e59190613de8565b61075c565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613de8565b611485565b6040516105209190613cda565b60405180910390f35b34801561053557600080fd5b5061053e61153c565b005b34801561054c57600080fd5b506105556115c4565b6040516105629190613c44565b60405180910390f35b34801561057757600080fd5b506105806115ee565b60405161058d9190613b7e565b60405180910390f35b3480156105a257600080fd5b506105bd60048036038101906105b89190613e41565b611680565b005b3480156105cb57600080fd5b506105e660048036038101906105e19190613fb6565b611696565b005b3480156105f457600080fd5b5061060f600480360381019061060a9190613bd6565b6116f8565b60405161061c9190613b7e565b60405180910390f35b34801561063157600080fd5b5061063a61170a565b6040516106479190614056565b60405180910390f35b34801561065c57600080fd5b5061066561171e565b6040516106729190613dcd565b60405180910390f35b34801561068757600080fd5b506106a2600480360381019061069d9190614139565b611731565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613de8565b6117d1565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190614182565b6118a9565b6040516107019190613ae4565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190613de8565b61193d565b005b34801561073f57600080fd5b5061075a60048036038101906107559190613bd6565b611a34565b005b600b60169054906101000a900461ffff1661ffff1661077b600e611aba565b106107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b29061420e565b60405180910390fd5b600a54341015610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f790613a10565b60405180910390fd5b600b60019054906101000a900460ff1660ff16600b60009054906101000a900460ff1660ff1610610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d9061427a565b60405180910390fd5b6000600d6000600b60009054906101000a900460ff1660ff16815260200190815260200160002060405180606001604052908160008201600380602002604051908101604052809291906000905b828210156109575783820180546108ca906142c9565b80601f01602080910402602001604051908101604052809291908181526020018280546108f6906142c9565b80156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b5050505050815260200190600101906108b4565b50505050815260200160038201805461096f906142c9565b80601f016020809104026020016040519081016040528092919081815260200182805461099b906142c9565b80156109e85780601f106109bd576101008083540402835291602001916109e8565b820191906000526020600020905b8154815290600101906020018083116109cb57829003601f168201915b50505050508152602001600482018054610a01906142c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d906142c9565b8015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b820191906000526020600020905b815481529060010190602001808311610a5d57829003601f168201915b5050505050815250509050600b600081819054906101000a900460ff1680929190610aa490614329565b91906101000a81548160ff021916908360ff160217905550506000610bc060405180610120016040528060e38152602001615e2760e3913983602001516040518060e0016040528060aa8152602001615c4c60aa91398560000151600060038110610b1257610b11614352565b5b6020020151604051806060016040528060308152602001615c1c603091398760000151600160038110610b4857610b47614352565b5b6020020151604051806060016040528060308152602001615cf6603091398960000151600260038110610b7e57610b7d614352565b5b602002015160405180610100016040528060c18152602001615d6660c191398b604001516040518060c0016040528060968152602001615f0a60969139611ac8565b90506000610bcd82611b0f565b90506000610c46826040518060400160405280600b81526020017f4261726420496f6e736f6e0000000000000000000000000000000000000000008152506040518060400160405280601881526020017f4e6f697365206f6620416e617263687920506f6c79676f6e0000000000000000815250611b83565b90506000610c54600e611aba565b9050610c60600e611bdb565b610c6a8682611bf1565b610c748183611c0f565b85600c6000600b60009054906101000a900460ff1660ff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460400151604051602001610ced91906145ab565b6040516020818303038152906040529350610d0784611b0f565b9250610d7e836040518060400160405280600b81526020017f4261726420496f6e736f6e0000000000000000000000000000000000000000008152506040518060400160405280601881526020017f5368617065206f6620416e617263687920506f6c79676f6e0000000000000000815250611b83565b91506000600c60006001600b60009054906101000a900460ff16610da291906145d8565b60ff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610de0600e611bdb565b610df681600184610df1919061460d565b611bf1565b610e0c600183610e06919061460d565b84611c0f565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610e74573d6000803e3d6000fd5b5050505050505050565b6000610e8982611c7c565b9050919050565b606060028054610e9f906142c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb906142c9565b8015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b5050505050905090565b6000610f2d82611c8e565b610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906146b3565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610fb2826113ce565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990614745565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611041611cfa565b73ffffffffffffffffffffffffffffffffffffffff161480611070575061106f8161106a611cfa565b6118a9565b5b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906147d7565b60405180910390fd5b6110b98383611d02565b505050565b60006110ca600e611aba565b905090565b6110e06110da611cfa565b82611dbb565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614869565b60405180910390fd5b61112a838383611e99565b505050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036112c45760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b60006112ce6120ff565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff16866112fa9190614889565b61130491906148fa565b90508160000151819350935050509250929050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61135a83838360405180602001604052806000815250611696565b505050565b61137061136a611cfa565b82611dbb565b6113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a69061499d565b60405180910390fd5b6113b881612109565b50565b600b60009054906101000a900460ff1681565b6000806004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90614a2f565b60405180910390fd5b80915050919050565b600a5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90614ac1565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611544611cfa565b73ffffffffffffffffffffffffffffffffffffffff166115626115c4565b73ffffffffffffffffffffffffffffffffffffffff16146115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af90614b2d565b60405180910390fd5b6115c26000612115565b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546115fd906142c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611629906142c9565b80156116765780601f1061164b57610100808354040283529160200191611676565b820191906000526020600020905b81548152906001019060200180831161165957829003601f168201915b5050505050905090565b61169261168b611cfa565b83836121db565b5050565b6116a76116a1611cfa565b83611dbb565b6116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90614869565b60405180910390fd5b6116f284848484612347565b50505050565b6060611703826123a3565b9050919050565b600b60169054906101000a900461ffff1681565b600b60019054906101000a900460ff1681565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117bf57506117906115c4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156117ce576117cd816124f4565b5b50565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061185f57506118306115c4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156118a65780600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611945611cfa565b73ffffffffffffffffffffffffffffffffffffffff166119636115c4565b73ffffffffffffffffffffffffffffffffffffffff16146119b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b090614b2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f90614bbf565b60405180910390fd5b611a3181612115565b50565b611a3c611cfa565b73ffffffffffffffffffffffffffffffffffffffff16611a5a6115c4565b73ffffffffffffffffffffffffffffffffffffffff1614611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790614b2d565b60405180910390fd5b80600a8190555050565b600081600001549050919050565b60608b8b8b8b8b8b8b8b8b8b8b604051602001611aef9b9a99989796959493929190614bdf565b60405160208183030381529060405290509b9a5050505050505050505050565b606060006040518060400160405280601a81526020017f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000081525090506000611b56846127f9565b90508181604051602001611b6b929190614c78565b60405160208183030381529060405292505050919050565b6060611bb382858585604051602001611b9f9493929190614eb0565b6040516020818303038152906040526127f9565b604051602001611bc39190614f71565b60405160208183030381529060405290509392505050565b6001816000016000828254019250508190555050565b611c0b82826040518060200160405280600081525061295c565b5050565b611c1882611c8e565b611c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4e90615005565b60405180910390fd5b80600860008481526020019081526020016000209081611c7791906151d1565b505050565b6000611c87826129b7565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816006600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d75836113ce565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611dc682611c8e565b611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90615315565b60405180910390fd5b6000611e10836113ce565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e525750611e5181856118a9565b5b80611e9057508373ffffffffffffffffffffffffffffffffffffffff16611e7884610f22565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611eb9826113ce565b73ffffffffffffffffffffffffffffffffffffffff1614611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f06906153a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590615439565b60405180910390fd5b611f89838383612a99565b611f94600082611d02565b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fe49190615459565b925050819055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461203b919061460d565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120fa838383612a9e565b505050565b6000612710905090565b61211281612aa3565b50565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906154d9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161233a9190613ae4565b60405180910390a3505050565b612352848484611e99565b61235e84848484612ab8565b61239d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123949061556b565b60405180910390fd5b50505050565b60606123ae82611c8e565b6123ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e4906155fd565b60405180910390fd5b600060086000848152602001908152602001600020805461240d906142c9565b80601f0160208091040260200160405190810160405280929190818152602001828054612439906142c9565b80156124865780601f1061245b57610100808354040283529160200191612486565b820191906000526020600020905b81548152906001019060200180831161246957829003601f168201915b505050505090506000612497612c3f565b905060008151036124ac5781925050506124ef565b6000825111156124e15780826040516020016124c9929190614c78565b604051602081830303815290604052925050506124ef565b6124ea84612c56565b925050505b919050565b6124fc611cfa565b73ffffffffffffffffffffffffffffffffffffffff1661251a6115c4565b73ffffffffffffffffffffffffffffffffffffffff1614612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790614b2d565b60405180910390fd5b6125786138bf565b600080600090505b83518110156127f35783818151811061259c5761259b614352565b5b60200260200101514244336040516020016125ba9493929190615686565b6040516020818303038152906040528051906020012060001c91506125de82612cfd565b92506125ed8360000151612da4565b600d6000600b60019054906101000a900460ff1660ff168152602001908152602001600020600301908161262191906151d1565b50612647836020015160006010811061263d5761263c614352565b5b6020020151612e52565b600d6000600b60019054906101000a900460ff1660ff16815260200190815260200160002060000160006003811061268257612681614352565b5b01908161268f91906151d1565b506126b583602001516001601081106126ab576126aa614352565b5b6020020151612e52565b600d6000600b60019054906101000a900460ff1660ff1681526020019081526020016000206000016001600381106126f0576126ef614352565b5b0190816126fd91906151d1565b50612723836020015160026010811061271957612718614352565b5b6020020151612e52565b600d6000600b60019054906101000a900460ff1660ff16815260200190815260200160002060000160026003811061275e5761275d614352565b5b01908161276b91906151d1565b5061277582612f7c565b600d6000600b60019054906101000a900460ff1660ff16815260200190815260200160002060040190816127a991906151d1565b50600b600181819054906101000a900460ff16809291906127c990614329565b91906101000a81548160ff021916908360ff16021790555050806127ec906156d4565b9050612580565b50505050565b6060600082510361281b57604051806020016040528060008152509050612957565b6000604051806060016040528060408152602001615d26604091399050600060036002855161284a919061460d565b61285491906148fa565b60046128609190614889565b67ffffffffffffffff81111561287957612878613e8b565b5b6040519080825280601f01601f1916602001820160405280156128ab5781602001600182028036833780820191505090505b509050600182016020820185865187015b80821015612917576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453600184019350506128bc565b505060038651066001811461293357600281146129465761294e565b603d6001830353603d600283035361294e565b603d60018303535b50505080925050505b919050565b61296683836132b0565b6129736000848484612ab8565b6129b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99061556b565b60405180910390fd5b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612a8257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612a925750612a9182613489565b5b9050919050565b505050565b505050565b612aac81613503565b612ab581613556565b50565b6000612ad98473ffffffffffffffffffffffffffffffffffffffff166135b5565b15612c32578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b02611cfa565b8786866040518563ffffffff1660e01b8152600401612b249493929190615771565b6020604051808303816000875af1925050508015612b6057506040513d601f19601f82011682018060405250810190612b5d91906157d2565b60015b612be2573d8060008114612b90576040519150601f19603f3d011682016040523d82523d6000602084013e612b95565b606091505b506000815103612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd19061556b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c37565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060612c6182611c8e565b612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790615871565b60405180910390fd5b6000612caa612c3f565b90506000815111612cca5760405180602001604052806000815250612cf5565b80612cd4846135d8565b604051602001612ce5929190614c78565b6040516020818303038152906040525b915050919050565b612d056138bf565b612d0d6138bf565b60005b6010811015612d9a576000620186a085612d2a9190615891565b9050612d35816135d8565b83600001518360108110612d4c57612d4b614352565b5b60200201819052508083602001518360108110612d6c57612d6b614352565b5b602002018181525050620186a085612d8491906148fa565b9450508080612d92906156d4565b915050612d10565b5080915050919050565b6060600060405180602001604052806000815250905060005b60036010612dcb9190615459565b811015612e485760008103612df957838160108110612ded57612dec614352565b5b60200201519150612e35565b81848260108110612e0d57612e0c614352565b5b6020020151604051602001612e239291906158e8565b60405160208183030381529060405291505b8080612e40906156d4565b915050612dbd565b5080915050919050565b6060806000612e786002600a86612e699190615891565b612e739190615891565b6135d8565b90506000612ea96002600a606488612e909190615891565b612e9a91906148fa565b612ea49190615891565b6135d8565b90506000612edb600260646103e889612ec29190615891565b612ecc91906148fa565b612ed69190615891565b6135d8565b90506000612f0e60026103e86127108a612ef59190615891565b612eff91906148fa565b612f099190615891565b6135d8565b90506000612f426002612710620186a08b612f299190615891565b612f3391906148fa565b612f3d9190615891565b6135d8565b90508484848484604051602001612f5d959493929190615967565b6040516020818303038152906040529550859650505050505050919050565b60606000601467ffffffffffffffff811115612f9b57612f9a613e8b565b5b604051908082528060200260200182016040528015612fc95781602001602082028036833780820191505090505b5090506000808490505b600081111561302c5761271081612fea9190615891565b838381518110612ffd57612ffc614352565b5b6020026020010181815250506127108161301791906148fa565b90508180613024906156d4565b925050612fd3565b6000610fa0905060006108ca90506000600a67ffffffffffffffff81111561305757613056613e8b565b5b6040519080825280602002602001820160405280156130855781602001602082028036833780820191505090505b5090506000600a67ffffffffffffffff8111156130a5576130a4613e8b565b5b6040519080825280602002602001820160405280156130d35781602001602082028036833780820191505090505b50905060005b600a8110156131a557612710858983815181106130f9576130f8614352565b5b602002602001015161310b9190614889565b61311591906148fa565b83828151811061312857613127614352565b5b6020026020010181815250506127108489600a84613146919061460d565b8151811061315757613156614352565b5b60200260200101516131699190614889565b61317391906148fa565b82828151811061318657613185614352565b5b602002602001018181525050808061319d906156d4565b9150506130d9565b5060006131cc836000815181106131bf576131be614352565b5b60200260200101516135d8565b6131f0836000815181106131e3576131e2614352565b5b60200260200101516135d8565b604051602001613201929190615a76565b60405160208183030381529060405290506000600190505b600a81101561329f578161324685838151811061323957613238614352565b5b60200260200101516135d8565b61326985848151811061325c5761325b614352565b5b60200260200101516135d8565b60405160200161327b93929190615afc565b60405160208183030381529060405291508080613297906156d4565b915050613219565b508098505050505050505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361331f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331690615b8f565b60405180910390fd5b61332881611c8e565b15613368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335f90615bfb565b60405180910390fd5b61337460008383612a99565b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133c4919061460d565b92505081905550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461348560008383612a9e565b5050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806134fc57506134fb82613738565b5b9050919050565b61350c816137a2565b600060086000838152602001908152602001600020805461352c906142c9565b9050146135535760086000828152602001908152602001600020600061355291906138e5565b5b50565b60016000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000820361361f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613733565b600082905060005b6000821461365157808061363a906156d4565b915050600a8261364a91906148fa565b9150613627565b60008167ffffffffffffffff81111561366d5761366c613e8b565b5b6040519080825280601f01601f19166020018201604052801561369f5781602001600182028036833780820191505090505b5090505b6000851461372c576001826136b89190615459565b9150600a856136c79190615891565b60306136d3919061460d565b60f81b8183815181106136e9576136e8614352565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561372591906148fa565b94506136a3565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006137ad826113ce565b90506137bb81600084612a99565b6137c6600083611d02565b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138169190615459565b925050819055506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46138bb81600084612a9e565b5050565b60405180604001604052806138d2613925565b81526020016138df61394d565b81525090565b5080546138f1906142c9565b6000825580601f106139035750613922565b601f0160209004906000526020600020908101906139219190613970565b5b50565b6040518061020001604052806010905b60608152602001906001900390816139355790505090565b604051806102000160405280601090602082028036833780820191505090505090565b5b80821115613989576000816000905550600101613971565b5090565b600082825260208201905092915050565b7f4e6f7420656e6f756768204d617469632073656e743b20636865636b2070726960008201527f6365210000000000000000000000000000000000000000000000000000000000602082015250565b60006139fa60238361398d565b9150613a058261399e565b604082019050919050565b60006020820190508181036000830152613a29816139ed565b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a7981613a44565b8114613a8457600080fd5b50565b600081359050613a9681613a70565b92915050565b600060208284031215613ab257613ab1613a3a565b5b6000613ac084828501613a87565b91505092915050565b60008115159050919050565b613ade81613ac9565b82525050565b6000602082019050613af96000830184613ad5565b92915050565b600081519050919050565b60005b83811015613b28578082015181840152602081019050613b0d565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b5082613aff565b613b5a818561398d565b9350613b6a818560208601613b0a565b613b7381613b34565b840191505092915050565b60006020820190508181036000830152613b988184613b45565b905092915050565b6000819050919050565b613bb381613ba0565b8114613bbe57600080fd5b50565b600081359050613bd081613baa565b92915050565b600060208284031215613bec57613beb613a3a565b5b6000613bfa84828501613bc1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c2e82613c03565b9050919050565b613c3e81613c23565b82525050565b6000602082019050613c596000830184613c35565b92915050565b613c6881613c23565b8114613c7357600080fd5b50565b600081359050613c8581613c5f565b92915050565b60008060408385031215613ca257613ca1613a3a565b5b6000613cb085828601613c76565b9250506020613cc185828601613bc1565b9150509250929050565b613cd481613ba0565b82525050565b6000602082019050613cef6000830184613ccb565b92915050565b600080600060608486031215613d0e57613d0d613a3a565b5b6000613d1c86828701613c76565b9350506020613d2d86828701613c76565b9250506040613d3e86828701613bc1565b9150509250925092565b60008060408385031215613d5f57613d5e613a3a565b5b6000613d6d85828601613bc1565b9250506020613d7e85828601613bc1565b9150509250929050565b6000604082019050613d9d6000830185613c35565b613daa6020830184613ccb565b9392505050565b600060ff82169050919050565b613dc781613db1565b82525050565b6000602082019050613de26000830184613dbe565b92915050565b600060208284031215613dfe57613dfd613a3a565b5b6000613e0c84828501613c76565b91505092915050565b613e1e81613ac9565b8114613e2957600080fd5b50565b600081359050613e3b81613e15565b92915050565b60008060408385031215613e5857613e57613a3a565b5b6000613e6685828601613c76565b9250506020613e7785828601613e2c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ec382613b34565b810181811067ffffffffffffffff82111715613ee257613ee1613e8b565b5b80604052505050565b6000613ef5613a30565b9050613f018282613eba565b919050565b600067ffffffffffffffff821115613f2157613f20613e8b565b5b613f2a82613b34565b9050602081019050919050565b82818337600083830152505050565b6000613f59613f5484613f06565b613eeb565b905082815260208101848484011115613f7557613f74613e86565b5b613f80848285613f37565b509392505050565b600082601f830112613f9d57613f9c613e81565b5b8135613fad848260208601613f46565b91505092915050565b60008060008060808587031215613fd057613fcf613a3a565b5b6000613fde87828801613c76565b9450506020613fef87828801613c76565b935050604061400087828801613bc1565b925050606085013567ffffffffffffffff81111561402157614020613a3f565b5b61402d87828801613f88565b91505092959194509250565b600061ffff82169050919050565b61405081614039565b82525050565b600060208201905061406b6000830184614047565b92915050565b600067ffffffffffffffff82111561408c5761408b613e8b565b5b602082029050602081019050919050565b600080fd5b60006140b56140b084614071565b613eeb565b905080838252602082019050602084028301858111156140d8576140d761409d565b5b835b8181101561410157806140ed8882613bc1565b8452602084019350506020810190506140da565b5050509392505050565b600082601f8301126141205761411f613e81565b5b81356141308482602086016140a2565b91505092915050565b60006020828403121561414f5761414e613a3a565b5b600082013567ffffffffffffffff81111561416d5761416c613a3f565b5b6141798482850161410b565b91505092915050565b6000806040838503121561419957614198613a3a565b5b60006141a785828601613c76565b92505060206141b885828601613c76565b9150509250929050565b7f546865206e6f6973652069732066696e697368656420686572652e0000000000600082015250565b60006141f8601b8361398d565b9150614203826141c2565b602082019050919050565b60006020820190508181036000830152614227816141eb565b9050919050565b7f4d696e7420697320636c6f7365642c20536f7272792e00000000000000000000600082015250565b600061426460168361398d565b915061426f8261422e565b602082019050919050565b6000602082019050818103600083015261429381614257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806142e157607f821691505b6020821081036142f4576142f361429a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061433482613db1565b915060ff8203614347576143466142fa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b7f3c7376672076696577426f783d273020302034653320323235302720786d6c6e60008201527f733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c60208201527f726563742077696474683d273130302527206865696768743d2731303025272060408201527f66696c6c3d27626c61636b272f3e3c706174682069643d274d50272066696c6c60608201527f3d2772656427207374726f6b653d2772656427207374726f6b652d776964746860808201527f3d2731302720643d27000000000000000000000000000000000000000000000060a082015250565b600061448060a983614381565b915061448b8261438c565b60a982019050919050565b60006144a182613aff565b6144ab8185614381565b93506144bb818560208601613b0a565b80840191505092915050565b7f273e3c616e696d6174652069643d274d5027206174747269627574654e616d6560008201527f3d277374726f6b6527206475723d27323073272076616c7565733d277265643b60208201527f7265643b7265643b7265643b677265656e3b676f6c643b626c75653b626c616360408201527f6b3b77686974653b677265656e2720726570656174436f756e743d27696e646560608201527f66696e697465272f3e3c2f706174683e3c2f7376673e00000000000000000000608082015250565b6000614595609683614381565b91506145a0826144c7565b609682019050919050565b60006145b682614473565b91506145c28284614496565b91506145cd82614588565b915081905092915050565b60006145e382613db1565b91506145ee83613db1565b9250828203905060ff811115614607576146066142fa565b5b92915050565b600061461882613ba0565b915061462383613ba0565b925082820190508082111561463b5761463a6142fa565b5b92915050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061469d602c8361398d565b91506146a882614641565b604082019050919050565b600060208201905081810360008301526146cc81614690565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061472f60218361398d565b915061473a826146d3565b604082019050919050565b6000602082019050818103600083015261475e81614722565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006147c160388361398d565b91506147cc82614765565b604082019050919050565b600060208201905081810360008301526147f0816147b4565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061485360318361398d565b915061485e826147f7565b604082019050919050565b6000602082019050818103600083015261488281614846565b9050919050565b600061489482613ba0565b915061489f83613ba0565b92508282026148ad81613ba0565b915082820484148315176148c4576148c36142fa565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061490582613ba0565b915061491083613ba0565b9250826149205761491f6148cb565b5b828204905092915050565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b600061498760308361398d565b91506149928261492b565b604082019050919050565b600060208201905081810360008301526149b68161497a565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614a1960298361398d565b9150614a24826149bd565b604082019050919050565b60006020820190508181036000830152614a4881614a0c565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614aab602a8361398d565b9150614ab682614a4f565b604082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b1760208361398d565b9150614b2282614ae1565b602082019050919050565b60006020820190508181036000830152614b4681614b0a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ba960268361398d565b9150614bb482614b4d565b604082019050919050565b60006020820190508181036000830152614bd881614b9c565b9050919050565b6000614beb828e614496565b9150614bf7828d614496565b9150614c03828c614496565b9150614c0f828b614496565b9150614c1b828a614496565b9150614c278289614496565b9150614c338288614496565b9150614c3f8287614496565b9150614c4b8286614496565b9150614c578285614496565b9150614c638284614496565b91508190509c9b505050505050505050505050565b6000614c848285614496565b9150614c908284614496565b91508190509392505050565b7f7b226e616d65223a202257652041726520416e6172636879204f6e204368616960008201527f6e20506f6c79676f6e222c2022637265617465645f627922203a202242c3a57260208201527f6420496f6e736f6e222c20226465736372697074696f6e223a20220000000000604082015250565b6000614d1e605b83614381565b9150614d2982614c9c565b605b82019050919050565b7f206279204261726420496f6e736f6e22202c2022696d616765223a2200000000600082015250565b6000614d6a601c83614381565b9150614d7582614d34565b601c82019050919050565b7f222c2261747472696275746573223a205b7b2274726169745f74797065223a2060008201527f22417274697374222c2276616c7565223a220000000000000000000000000000602082015250565b6000614ddc603283614381565b9150614de782614d80565b603282019050919050565b7f227d2c7b2274726169745f74797065223a202254797065222c2276616c75652260008201527f3a22000000000000000000000000000000000000000000000000000000000000602082015250565b6000614e4e602283614381565b9150614e5982614df2565b602282019050919050565b7f227d5d7d00000000000000000000000000000000000000000000000000000000600082015250565b6000614e9a600483614381565b9150614ea582614e64565b600482019050919050565b6000614ebb82614d11565b9150614ec78287614496565b9150614ed282614d5d565b9150614ede8286614496565b9150614ee982614dcf565b9150614ef58285614496565b9150614f0082614e41565b9150614f0c8284614496565b9150614f1782614e8d565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614f5b601d83614381565b9150614f6682614f25565b601d82019050919050565b6000614f7c82614f4e565b9150614f888284614496565b915081905092915050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000614fef602e8361398d565b9150614ffa82614f93565b604082019050919050565b6000602082019050818103600083015261501e81614fe2565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026150877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261504a565b615091868361504a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006150ce6150c96150c484613ba0565b6150a9565b613ba0565b9050919050565b6000819050919050565b6150e8836150b3565b6150fc6150f4826150d5565b848454615057565b825550505050565b600090565b615111615104565b61511c8184846150df565b505050565b5b8181101561514057615135600082615109565b600181019050615122565b5050565b601f8211156151855761515681615025565b61515f8461503a565b8101602085101561516e578190505b61518261517a8561503a565b830182615121565b50505b505050565b600082821c905092915050565b60006151a86000198460080261518a565b1980831691505092915050565b60006151c18383615197565b9150826002028217905092915050565b6151da82613aff565b67ffffffffffffffff8111156151f3576151f2613e8b565b5b6151fd82546142c9565b615208828285615144565b600060209050601f83116001811461523b5760008415615229578287015190505b61523385826151b5565b86555061529b565b601f19841661524986615025565b60005b828110156152715784890151825560018201915060208501945060208101905061524c565b8683101561528e578489015161528a601f891682615197565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006152ff602c8361398d565b915061530a826152a3565b604082019050919050565b6000602082019050818103600083015261532e816152f2565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061539160258361398d565b915061539c82615335565b604082019050919050565b600060208201905081810360008301526153c081615384565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061542360248361398d565b915061542e826153c7565b604082019050919050565b6000602082019050818103600083015261545281615416565b9050919050565b600061546482613ba0565b915061546f83613ba0565b9250828203905081811115615487576154866142fa565b5b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006154c360198361398d565b91506154ce8261548d565b602082019050919050565b600060208201905081810360008301526154f2816154b6565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061555560328361398d565b9150615560826154f9565b604082019050919050565b6000602082019050818103600083015261558481615548565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b60006155e760318361398d565b91506155f28261558b565b604082019050919050565b60006020820190508181036000830152615616816155da565b9050919050565b6000819050919050565b61563861563382613ba0565b61561d565b82525050565b60008160601b9050919050565b60006156568261563e565b9050919050565b60006156688261564b565b9050919050565b61568061567b82613c23565b61565d565b82525050565b60006156928287615627565b6020820191506156a28286615627565b6020820191506156b28285615627565b6020820191506156c2828461566f565b60148201915081905095945050505050565b60006156df82613ba0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615711576157106142fa565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b60006157438261571c565b61574d8185615727565b935061575d818560208601613b0a565b61576681613b34565b840191505092915050565b60006080820190506157866000830187613c35565b6157936020830186613c35565b6157a06040830185613ccb565b81810360608301526157b28184615738565b905095945050505050565b6000815190506157cc81613a70565b92915050565b6000602082840312156157e8576157e7613a3a565b5b60006157f6848285016157bd565b91505092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061585b602f8361398d565b9150615866826157ff565b604082019050919050565b6000602082019050818103600083015261588a8161584e565b9050919050565b600061589c82613ba0565b91506158a783613ba0565b9250826158b7576158b66148cb565b5b828206905092915050565b7f3b00000000000000000000000000000000000000000000000000000000000000815250565b60006158f48285614496565b91506158ff826158c2565b60018201915061590f8284614496565b91508190509392505050565b7f2000000000000000000000000000000000000000000000000000000000000000600082015250565b6000615951600183614381565b915061595c8261591b565b600182019050919050565b60006159738288614496565b915061597e82615944565b915061598a8287614496565b915061599582615944565b91506159a18286614496565b91506159ac82615944565b91506159b88285614496565b91506159c382615944565b91506159cf8284614496565b91508190509695505050505050565b7f4d00000000000000000000000000000000000000000000000000000000000000600082015250565b6000615a14600183614381565b9150615a1f826159de565b600182019050919050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b6000615a60600183614381565b9150615a6b82615a2a565b600182019050919050565b6000615a8182615a07565b9150615a8d8285614496565b9150615a9882615a53565b9150615aa48284614496565b91508190509392505050565b7f204c000000000000000000000000000000000000000000000000000000000000600082015250565b6000615ae6600283614381565b9150615af182615ab0565b600282019050919050565b6000615b088286614496565b9150615b1382615ad9565b9150615b1f8285614496565b9150615b2a82615a53565b9150615b368284614496565b9150819050949350505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615b7960208361398d565b9150615b8482615b43565b602082019050919050565b60006020820190508181036000830152615ba881615b6c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615be5601c8361398d565b9150615bf082615baf565b602082019050919050565b60006020820190508181036000830152615c1481615bd8565b905091905056fe272f3e3c666546756e63472069643d27672720747970653d27646973637265746527207461626c6556616c7565733d272720726570656174436f756e743d27696e646566696e697465272f3e3c2f666554757262756c656e63653e3c6665436f6c6f724d617472697820747970653d277361747572617465272076616c7565733d27312720726573756c743d277361747572617465272f3e3c6665436f6d706f6e656e745472616e736665723e3c666546756e63522069643d27722720747970653d27646973637265746527207461626c6556616c7565733d27272f3e3c666546756e63422069643d27622720747970653d27646973637265746527207461626c6556616c7565733d274142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f272f3e3c666546756e634120747970653d27646973637265746527207461626c6556616c7565733d27312031272f3e3c2f6665436f6d706f6e656e745472616e736665723e3c2f66696c7465723e3c726563742077696474683d273130302527206865696768743d2731303025272066696c7465723d2775726c282373746174696329272f3e3c706174682069643d274d50272066696c6c3d2772656427207374726f6b653d2772656427207374726f6b652d77696474683d2731302720643d273c7376672076696577426f783d273020302034653320323235302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c66696c7465722069643d27737461746963273e3c666554757262756c656e636520747970653d2774757262756c656e63652720626173654672657175656e63793d27302e393927206e756d4f6374617665733d2731302720726573756c743d2774757262756c656e6365273e3c616e696d6174652069643d27736427206174747269627574654e616d653d277365656427206475723d273273272076616c7565733d27273e3c616e696d6174652069643d274d5027206174747269627574654e616d653d277374726f6b6527206475723d27323073272076616c7565733d277265643b7265643b7265643b7265643b677265656e3b676f6c643b626c75653b626c61636b3b77686974653b677265656e2720726570656174436f756e743d27696e646566696e697465272f3e3c2f706174683e3c2f7376673ea26469706673582212209c0a0d298d09ceb7c605a1c6b0852522c2fb97a45e9858125bdd676aa26d457464736f6c63430008130033
Deployed ByteCode Sourcemap
52536:10008:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56449:9;;56436;:22;;56428:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;56509:16;56514:10;56509:4;:16::i;:::-;52536:10008;;56601:9;;56588;:22;;56580:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;56661:16;56666:10;56661:4;:16::i;:::-;52536:10008;62096:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35365:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36925:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36448:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;61972:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37675:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24782:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;52778:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38085:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49579:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52714:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35059:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52683:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;56693:2490;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34789:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9908:103;;;;;;;;;;;;;:::i;:::-;;9257:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35534:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37218:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38341:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;62345:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52812:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52745:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53762:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53474:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37444:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10166:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53654:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;56693:2490;56782:9;;;;;;;;;;;56754:37;;:25;:15;:23;:25::i;:::-;:37;56746:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;56855:9;;56842;:22;;56834:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;56937:13;;;;;;;;;;;56923:27;;:11;;;;;;;;;;;:27;;;56915:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;56988:23;57014:10;:23;57025:11;;;;;;;;;;;57014:23;;;;;;;;;;;;;56988:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57048:11;;:13;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;57082:20;57105:954;;;;;;;;;;;;;;;;;;57356:6;:12;;;57105:954;;;;;;;;;;;;;;;;;57542:6;:13;;;57556:1;57542:16;;;;;;;:::i;:::-;;;;;;57105:954;;;;;;;;;;;;;;;;;57611:6;:13;;;57625:1;57611:16;;;;;;;:::i;:::-;;;;;;57105:954;;;;;;;;;;;;;;;;;57679:6;:13;;;57693:1;57679:16;;;;;;;:::i;:::-;;;;;;57105:954;;;;;;;;;;;;;;;;;57893:6;:11;;;57105:954;;;;;;;;;;;;;;;;;:12;:954::i;:::-;57082:977;;58070:22;58095:21;58109:6;58095:13;:21::i;:::-;58070:46;;58127:17;58147:67;58162:8;58147:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:67::i;:::-;58127:87;;58227:15;58245:25;:15;:23;:25::i;:::-;58227:43;;58281:27;:15;:25;:27::i;:::-;58319:23;58329:3;58334:7;58319:9;:23::i;:::-;58353:26;58366:7;58375:3;58353:12;:26::i;:::-;58421:3;58392:13;:26;58406:11;;;;;;;;;;;58392:26;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;58648:6;:11;;;58451:363;;;;;;;;:::i;:::-;;;;;;;;;;;;;58435:380;;58837:21;58851:6;58837:13;:21::i;:::-;58826:32;;58875:67;58890:8;58875:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:67::i;:::-;58869:73;;58953:17;58973:13;:28;58999:1;58987:11;;;;;;;;;;;:13;;;;:::i;:::-;58973:28;;;;;;;;;;;;;;;;;;;;;;;58953:48;;59014:27;:15;:25;:27::i;:::-;59052:30;59062:9;59080:1;59072:7;:9;;;;:::i;:::-;59052;:30::i;:::-;59093:28;59114:1;59106:7;:9;;;;:::i;:::-;59117:3;59093:12;:28::i;:::-;59142:12;;;;;;;;;;;59134:30;;:41;59165:9;59134:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56735:2448;;;;;;56693:2490;:::o;62096:243::-;62253:4;62291:36;62315:11;62291:23;:36::i;:::-;62284:43;;62096:243;;;:::o;35365:100::-;35419:13;35452:5;35445:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35365:100;:::o;36925:221::-;37001:7;37029:16;37037:7;37029;:16::i;:::-;37021:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37114:15;:24;37130:7;37114:24;;;;;;;;;;;;;;;;;;;;;37107:31;;36925:221;;;:::o;36448:411::-;36529:13;36545:23;36560:7;36545:14;:23::i;:::-;36529:39;;36593:5;36587:11;;:2;:11;;;36579:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;36687:5;36671:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;36696:37;36713:5;36720:12;:10;:12::i;:::-;36696:16;:37::i;:::-;36671:62;36649:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;36830:21;36839:2;36843:7;36830:8;:21::i;:::-;36518:341;36448:411;;:::o;61972:112::-;62024:7;62051:25;:15;:23;:25::i;:::-;62044:32;;61972:112;:::o;37675:339::-;37870:41;37889:12;:10;:12::i;:::-;37903:7;37870:18;:41::i;:::-;37862:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;37978:28;37988:4;37994:2;37998:7;37978:9;:28::i;:::-;37675:339;;;:::o;24782:442::-;24879:7;24888;24908:26;24937:17;:27;24955:8;24937:27;;;;;;;;;;;24908:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25009:1;24981:30;;:7;:16;;;:30;;;24977:92;;25038:19;25028:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24977:92;25081:21;25146:17;:15;:17::i;:::-;25105:58;;25119:7;:23;;;25106:36;;:10;:36;;;;:::i;:::-;25105:58;;;;:::i;:::-;25081:82;;25184:7;:16;;;25202:13;25176:40;;;;;;24782:442;;;;;:::o;52778:27::-;;;;;;;;;;;;;:::o;38085:185::-;38223:39;38240:4;38246:2;38250:7;38223:39;;;;;;;;;;;;:16;:39::i;:::-;38085:185;;;:::o;49579:245::-;49697:41;49716:12;:10;:12::i;:::-;49730:7;49697:18;:41::i;:::-;49689:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;49802:14;49808:7;49802:5;:14::i;:::-;49579:245;:::o;52714:24::-;;;;;;;;;;;;;:::o;35059:239::-;35131:7;35151:13;35167:7;:16;35175:7;35167:16;;;;;;;;;;;;;;;;;;;;;35151:32;;35219:1;35202:19;;:5;:19;;;35194:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;35285:5;35278:12;;;35059:239;;;:::o;52683:24::-;;;;:::o;34789:208::-;34861:7;34906:1;34889:19;;:5;:19;;;34881:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;34973:9;:16;34983:5;34973:16;;;;;;;;;;;;;;;;34966:23;;34789:208;;;:::o;9908:103::-;9488:12;:10;:12::i;:::-;9477:23;;:7;:5;:7::i;:::-;:23;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9973:30:::1;10000:1;9973:18;:30::i;:::-;9908:103::o:0;9257:87::-;9303:7;9330:6;;;;;;;;;;;9323:13;;9257:87;:::o;35534:104::-;35590:13;35623:7;35616:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35534:104;:::o;37218:155::-;37313:52;37332:12;:10;:12::i;:::-;37346:8;37356;37313:18;:52::i;:::-;37218:155;;:::o;38341:328::-;38516:41;38535:12;:10;:12::i;:::-;38549:7;38516:18;:41::i;:::-;38508:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;38622:39;38636:4;38642:2;38646:7;38655:5;38622:13;:39::i;:::-;38341:328;;;;:::o;62345:196::-;62472:13;62510:23;62525:7;62510:14;:23::i;:::-;62503:30;;62345:196;;;:::o;52812:29::-;;;;;;;;;;;;;:::o;52745:26::-;;;;;;;;;;;;;:::o;53762:190::-;53863:12;;;;;;;;;;;53849:26;;:10;:26;;;:51;;;;53893:7;:5;:7::i;:::-;53879:21;;:10;:21;;;53849:51;53845:99;;;53919:25;53932:11;53919:12;:25::i;:::-;53845:99;53762:190;:::o;53474:172::-;53554:12;;;;;;;;;;;53540:26;;:10;:26;;;:51;;;;53584:7;:5;:7::i;:::-;53570:21;;:10;:21;;;53540:51;53537:101;;;53621:17;53606:12;;:32;;;;;;;;;;;;;;;;;;53537:101;53474:172;:::o;37444:164::-;37541:4;37565:18;:25;37584:5;37565:25;;;;;;;;;;;;;;;:35;37591:8;37565:35;;;;;;;;;;;;;;;;;;;;;;;;;37558:42;;37444:164;;;;:::o;10166:201::-;9488:12;:10;:12::i;:::-;9477:23;;:7;:5;:7::i;:::-;:23;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10275:1:::1;10255:22;;:8;:22;;::::0;10247:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10331:28;10350:8;10331:18;:28::i;:::-;10166:201:::0;:::o;53654:98::-;9488:12;:10;:12::i;:::-;9477:23;;:7;:5;:7::i;:::-;:23;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53735:9:::1;53723;:21;;;;53654:98:::0;:::o;4585:114::-;4650:7;4677;:14;;;4670:21;;4585:114;;;:::o;55963:353::-;56206:13;56264:2;56268;56272;56276;56280;56284;56288;56292;56296;56300;56304;56247:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;56233:75;;55963:353;;;;;;;;;;;;;:::o;54740:321::-;54832:13;54863:21;:52;;;;;;;;;;;;;;;;;;;54926:30;54959:25;54979:3;54959:13;:25::i;:::-;54926:58;;55026:7;55035:16;55009:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;54995:58;;;;54740:321;;;:::o;55069:882::-;55203:13;55372:537;55600:7;55674:8;55770:6;55814:7;55448:411;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;55372:13;:537::i;:::-;55279:649;;;;;;;;:::i;:::-;;;;;;;;;;;;;55234:709;;55069:882;;;;;:::o;4707:127::-;4814:1;4796:7;:14;;;:19;;;;;;;;;;;4707:127;:::o;41163:110::-;41239:26;41249:2;41253:7;41239:26;;;;;;;;;;;;:9;:26::i;:::-;41163:110;;:::o;51177:217::-;51277:16;51285:7;51277;:16::i;:::-;51269:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;51377:9;51355:10;:19;51366:7;51355:19;;;;;;;;;;;:31;;;;;;:::i;:::-;;51177:217;;:::o;48599:170::-;48701:4;48725:36;48749:11;48725:23;:36::i;:::-;48718:43;;48599:170;;;:::o;40179:127::-;40244:4;40296:1;40268:30;;:7;:16;40276:7;40268:16;;;;;;;;;;;;;;;;;;;;;:30;;;;40261:37;;40179:127;;;:::o;7981:98::-;8034:7;8061:10;8054:17;;7981:98;:::o;44325:174::-;44427:2;44400:15;:24;44416:7;44400:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;44483:7;44479:2;44445:46;;44454:23;44469:7;44454:14;:23::i;:::-;44445:46;;;;;;;;;;;;44325:174;;:::o;40473:348::-;40566:4;40591:16;40599:7;40591;:16::i;:::-;40583:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;40667:13;40683:23;40698:7;40683:14;:23::i;:::-;40667:39;;40736:5;40725:16;;:7;:16;;;:52;;;;40745:32;40762:5;40769:7;40745:16;:32::i;:::-;40725:52;:87;;;;40805:7;40781:31;;:20;40793:7;40781:11;:20::i;:::-;:31;;;40725:87;40717:96;;;40473:348;;;;:::o;43582:625::-;43741:4;43714:31;;:23;43729:7;43714:14;:23::i;:::-;:31;;;43706:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;43820:1;43806:16;;:2;:16;;;43798:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;43876:39;43897:4;43903:2;43907:7;43876:20;:39::i;:::-;43980:29;43997:1;44001:7;43980:8;:29::i;:::-;44041:1;44022:9;:15;44032:4;44022:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;44070:1;44053:9;:13;44063:2;44053:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;44101:2;44082:7;:16;44090:7;44082:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;44140:7;44136:2;44121:27;;44130:4;44121:27;;;;;;;;;;;;44161:38;44181:4;44187:2;44191:7;44161:19;:38::i;:::-;43582:625;;;:::o;25506:97::-;25564:6;25590:5;25583:12;;25506:97;:::o;61834:130::-;61936:20;61948:7;61936:11;:20::i;:::-;61834:130;:::o;10527:191::-;10601:16;10620:6;;;;;;;;;;;10601:25;;10646:8;10637:6;;:17;;;;;;;;;;;;;;;;;;10701:8;10670:40;;10691:8;10670:40;;;;;;;;;;;;10590:128;10527:191;:::o;44641:315::-;44796:8;44787:17;;:5;:17;;;44779:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;44883:8;44845:18;:25;44864:5;44845:25;;;;;;;;;;;;;;;:35;44871:8;44845:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;44929:8;44907:41;;44922:5;44907:41;;;44939:8;44907:41;;;;;;:::i;:::-;;;;;;;;44641:315;;;:::o;39551:::-;39708:28;39718:4;39724:2;39728:7;39708:9;:28::i;:::-;39755:48;39778:4;39784:2;39788:7;39797:5;39755:22;:48::i;:::-;39747:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;39551:315;;;;:::o;50342:679::-;50415:13;50449:16;50457:7;50449;:16::i;:::-;50441:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;50532:23;50558:10;:19;50569:7;50558:19;;;;;;;;;;;50532:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50588:18;50609:10;:8;:10::i;:::-;50588:31;;50717:1;50701:4;50695:18;:23;50691:72;;50742:9;50735:16;;;;;;50691:72;50893:1;50873:9;50867:23;:27;50863:108;;;50942:4;50948:9;50925:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;50911:48;;;;;;50863:108;50990:23;51005:7;50990:14;:23::i;:::-;50983:30;;;;50342:679;;;;:::o;53960:772::-;9488:12;:10;:12::i;:::-;9477:23;;:7;:5;:7::i;:::-;:23;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;54040:27:::1;;:::i;:::-;54078:9;54103::::0;54115:1:::1;54103:13;;54098:627;54122:11;:18;54118:1;:22;54098:627;;;54201:11;54213:1;54201:14;;;;;;;;:::i;:::-;;;;;;;;54217:15;54233:16;54251:10;54184:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;54174:89;;;;;;54169:95;;54162:102;;54290:12;54297:4;54290:6;:12::i;:::-;54279:23;;54351:27;54363:8;:14;;;54351:11;:27::i;:::-;54317:10;:25;54328:13;;;;;;;;;;;54317:25;;;;;;;;;;;;;:31;;:61;;;;;;:::i;:::-;;54431:28;54438:8;:17;;;54456:1;54438:20;;;;;;;:::i;:::-;;;;;;54431:6;:28::i;:::-;54393:10;:25;54404:13;;;;;;;;;;;54393:25;;;;;;;;;;;;;:32;;54426:1;54393:35;;;;;;;:::i;:::-;;;:66;;;;;;:::i;:::-;;54512:28;54519:8;:17;;;54537:1;54519:20;;;;;;;:::i;:::-;;;;;;54512:6;:28::i;:::-;54474:10;:25;54485:13;;;;;;;;;;;54474:25;;;;;;;;;;;;;:32;;54507:1;54474:35;;;;;;;:::i;:::-;;;:66;;;;;;:::i;:::-;;54593:28;54600:8;:17;;;54618:1;54600:20;;;;;;;:::i;:::-;;;;;;54593:6;:28::i;:::-;54555:10;:25;54566:13;;;;;;;;;;;54555:25;;;;;;;;;;;;;:32;;54588:1;54555:35;;;;;;;:::i;:::-;;;:66;;;;;;:::i;:::-;;54669:14;54678:4;54669:8;:14::i;:::-;54636:10;:25;54647:13;;;;;;;;;;;54636:25;;;;;;;;;;;;;:30;;:47;;;;;;:::i;:::-;;54698:13;;:15;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;54142:3;;;;:::i;:::-;;;54098:627;;;;54029:703;;53960:772:::0;:::o;609:3097::-;667:13;919:1;904:4;:11;:16;900:31;;922:9;;;;;;;;;;;;;;;;900:31;984:19;1006:6;;;;;;;;;;;;;;;;;984:28;;1423:20;1482:1;1477;1463:4;:11;:15;;;;:::i;:::-;1462:21;;;;:::i;:::-;1457:1;:27;;;;:::i;:::-;1446:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1423:62;;1665:1;1658:5;1654:13;1769:2;1761:6;1757:15;1880:4;1932;1926:11;1920:4;1916:22;1842:1432;1966:6;1957:7;1954:19;1842:1432;;;2072:1;2063:7;2059:15;2048:26;;2111:7;2105:14;2764:4;2756:5;2752:2;2748:14;2744:25;2734:8;2730:40;2724:47;2713:9;2705:67;2818:1;2807:9;2803:17;2790:30;;2910:4;2902:5;2898:2;2894:14;2890:25;2880:8;2876:40;2870:47;2859:9;2851:67;2964:1;2953:9;2949:17;2936:30;;3055:4;3047:5;3044:1;3040:13;3036:24;3026:8;3022:39;3016:46;3005:9;2997:66;3109:1;3098:9;3094:17;3081:30;;3192:4;3185:5;3181:16;3171:8;3167:31;3161:38;3150:9;3142:58;3246:1;3235:9;3231:17;3218:30;;1993:1281;1842:1432;;;1846:107;;3436:1;3429:4;3423:11;3419:19;3457:1;3452:123;;;;3594:1;3589:73;;;;3412:250;;3452:123;3505:4;3501:1;3490:9;3486:17;3478:32;3555:4;3551:1;3540:9;3536:17;3528:32;3452:123;;3589:73;3642:4;3638:1;3627:9;3623:17;3615:32;3412:250;;1551:2122;;3692:6;3685:13;;;;609:3097;;;;:::o;41500:321::-;41630:18;41636:2;41640:7;41630:5;:18::i;:::-;41681:54;41712:1;41716:2;41720:7;41729:5;41681:22;:54::i;:::-;41659:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;41500:321;;;:::o;34420:305::-;34522:4;34574:25;34559:40;;;:11;:40;;;;:105;;;;34631:33;34616:48;;;:11;:48;;;;34559:105;:158;;;;34681:36;34705:11;34681:23;:36::i;:::-;34559:158;34539:178;;34420:305;;;:::o;46892:126::-;;;;:::o;47403:125::-;;;;:::o;48901:135::-;48970:20;48982:7;48970:11;:20::i;:::-;49001:27;49020:7;49001:18;:27::i;:::-;48901:135;:::o;45521:799::-;45676:4;45697:15;:2;:13;;;:15::i;:::-;45693:620;;;45749:2;45733:36;;;45770:12;:10;:12::i;:::-;45784:4;45790:7;45799:5;45733:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;45729:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45992:1;45975:6;:13;:18;45971:272;;46018:60;;;;;;;;;;:::i;:::-;;;;;;;;45971:272;46193:6;46187:13;46178:6;46174:2;46170:15;46163:38;45729:529;45866:41;;;45856:51;;;:6;:51;;;;45849:58;;;;;45693:620;46297:4;46290:11;;45521:799;;;;;;;:::o;36292:94::-;36343:13;36369:9;;;;;;;;;;;;;;36292:94;:::o;35709:334::-;35782:13;35816:16;35824:7;35816;:16::i;:::-;35808:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;35897:21;35921:10;:8;:10::i;:::-;35897:34;;35973:1;35955:7;35949:21;:25;:86;;;;;;;;;;;;;;;;;36001:7;36010:18;:7;:16;:18::i;:::-;35984:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35949:86;35942:93;;;35709:334;;;:::o;60423:385::-;60478:18;;:::i;:::-;60509:27;;:::i;:::-;60552:6;60547:228;60568:2;60564:1;:6;60547:228;;;60592:11;60615:6;60606;:15;;;;:::i;:::-;60592:29;;60656:24;60673:6;60656:16;:24::i;:::-;60636:8;:14;;;60651:1;60636:17;;;;;;;:::i;:::-;;;;;:44;;;;60718:6;60695:8;:17;;;60713:1;60695:20;;;;;;;:::i;:::-;;;;;:29;;;;;60757:6;60748;:15;;;;:::i;:::-;60739:24;;60577:198;60572:3;;;;;:::i;:::-;;;;60547:228;;;;60792:8;60785:15;;;60423:385;;;:::o;60816:370::-;60883:13;60909:20;:25;;;;;;;;;;;;;;60950:6;60945:210;60977:1;60966:10;:12;;;;:::i;:::-;60962:1;:16;60945:210;;;61007:1;61004;:4;61000:144;;61038:3;61042:1;61038:6;;;;;;;:::i;:::-;;;;;;61029:15;;61000:144;;;61108:6;61121:3;61125:1;61121:6;;;;;;;:::i;:::-;;;;;;61094:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;61085:43;;61000:144;60980:3;;;;;:::i;:::-;;;;60945:210;;;;61172:6;61165:13;;;60816:370;;;:::o;61196:562::-;61249:13;61275:23;61309:15;61327:34;61359:1;61355:2;61345:7;:12;;;;:::i;:::-;61344:16;;;;:::i;:::-;61327;:34::i;:::-;61309:52;;61372:15;61390:40;61428:1;61424:2;61418:3;61408:7;:13;;;;:::i;:::-;:18;;;;:::i;:::-;61407:22;;;;:::i;:::-;61390:16;:40::i;:::-;61372:58;;61441:15;61459:42;61499:1;61494:3;61487:4;61477:7;:14;;;;:::i;:::-;:20;;;;:::i;:::-;61476:24;;;;:::i;:::-;61459:16;:42::i;:::-;61441:60;;61512:15;61530:44;61572:1;61566:4;61558:5;61548:7;:15;;;;:::i;:::-;:22;;;;:::i;:::-;61547:26;;;;:::i;:::-;61530:16;:44::i;:::-;61512:62;;61585:15;61603:46;61647:1;61640:5;61631:6;61621:7;:16;;;;:::i;:::-;:24;;;;:::i;:::-;61620:28;;;;:::i;:::-;61603:16;:46::i;:::-;61585:64;;61696:1;61702;61708;61714;61720;61679:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;61660:63;;61741:9;61734:16;;;;;;;;61196:562;;;:::o;59191:1221::-;59250:13;59329:23;59369:2;59355:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59329:43;;59383:15;59413:11;59427:8;59413:22;;59446:128;59459:1;59453:3;:7;59446:128;;;59501:5;59495:3;:11;;;;:::i;:::-;59477:6;59484:7;59477:15;;;;;;;;:::i;:::-;;;;;;;:29;;;;;59533:5;59527:3;:11;;;;:::i;:::-;59521:17;;59553:9;;;;;:::i;:::-;;;;59446:128;;;59696:14;59713:4;59696:21;;59728:14;59745:4;59728:21;;59760:18;59795:2;59781:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59760:38;;59809:18;59844:2;59830:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59809:38;;59863:9;59858:148;59882:2;59878:1;:6;59858:148;;;59936:5;59926:6;59914;59921:1;59914:9;;;;;;;;:::i;:::-;;;;;;;;:18;;;;:::i;:::-;59913:28;;;;:::i;:::-;59906:1;59908;59906:4;;;;;;;;:::i;:::-;;;;;;;:35;;;;;59989:5;59979:6;59964;59973:2;59971:1;:4;;;;:::i;:::-;59964:12;;;;;;;;:::i;:::-;;;;;;;;:21;;;;:::i;:::-;59963:31;;;;:::i;:::-;59956:1;59958;59956:4;;;;;;;;:::i;:::-;;;;;;;:38;;;;;59886:3;;;;;:::i;:::-;;;;59858:148;;;;60101:21;60154:22;60171:1;60173;60171:4;;;;;;;;:::i;:::-;;;;;;;;60154:16;:22::i;:::-;60183;60200:1;60202;60200:4;;;;;;;;:::i;:::-;;;;;;;;60183:16;:22::i;:::-;60132:74;;;;;;;;;:::i;:::-;;;;;;;;;;;;;60101:106;;60223:9;60235:1;60223:13;;60218:162;60242:2;60238:1;:6;60218:162;;;60300:7;60315:22;60332:1;60334;60332:4;;;;;;;;:::i;:::-;;;;;;;;60315:16;:22::i;:::-;60344;60361:1;60363;60361:4;;;;;;;;:::i;:::-;;;;;;;;60344:16;:22::i;:::-;60283:84;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;60266:102;;60246:3;;;;;:::i;:::-;;;;60218:162;;;;60397:7;60390:14;;;;;;;;;;59191:1221;;;:::o;42157:439::-;42251:1;42237:16;;:2;:16;;;42229:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;42310:16;42318:7;42310;:16::i;:::-;42309:17;42301:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;42372:45;42401:1;42405:2;42409:7;42372:20;:45::i;:::-;42447:1;42430:9;:13;42440:2;42430:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;42478:2;42459:7;:16;42467:7;42459:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;42523:7;42519:2;42498:33;;42515:1;42498:33;;;;;;;;;;;;42544:44;42572:1;42576:2;42580:7;42544:19;:44::i;:::-;42157:439;;:::o;24512:215::-;24614:4;24653:26;24638:41;;;:11;:41;;;;:81;;;;24683:36;24707:11;24683:23;:36::i;:::-;24638:81;24631:88;;24512:215;;;:::o;51623:206::-;51692:20;51704:7;51692:11;:20::i;:::-;51766:1;51735:10;:19;51746:7;51735:19;;;;;;;;;;;51729:33;;;;;:::i;:::-;;;:38;51725:97;;51791:10;:19;51802:7;51791:19;;;;;;;;;;;;51784:26;;;;:::i;:::-;51725:97;51623:206;:::o;27202:114::-;27282:17;:26;27300:7;27282:26;;;;;;;;;;;;27275:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27202:114;:::o;11958:326::-;12018:4;12275:1;12253:7;:19;;;:23;12246:30;;11958:326;;;:::o;5543:723::-;5599:13;5829:1;5820:5;:10;5816:53;;5847:10;;;;;;;;;;;;;;;;;;;;;5816:53;5879:12;5894:5;5879:20;;5910:14;5935:78;5950:1;5942:4;:9;5935:78;;5968:8;;;;;:::i;:::-;;;;5999:2;5991:10;;;;;:::i;:::-;;;5935:78;;;6023:19;6055:6;6045:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6023:39;;6073:154;6089:1;6080:5;:10;6073:154;;6117:1;6107:11;;;;;:::i;:::-;;;6184:2;6176:5;:10;;;;:::i;:::-;6163:2;:24;;;;:::i;:::-;6150:39;;6133:6;6140;6133:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;6213:2;6204:11;;;;;:::i;:::-;;;6073:154;;;6251:6;6237:21;;;;;5543:723;;;;:::o;22962:157::-;23047:4;23086:25;23071:40;;;:11;:40;;;;23064:47;;22962:157;;;:::o;42825:420::-;42885:13;42901:23;42916:7;42901:14;:23::i;:::-;42885:39;;42937:48;42958:5;42973:1;42977:7;42937:20;:48::i;:::-;43026:29;43043:1;43047:7;43026:8;:29::i;:::-;43088:1;43068:9;:16;43078:5;43068:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;43107:7;:16;43115:7;43107:16;;;;;;;;;;;;43100:23;;;;;;;;;;;43169:7;43165:1;43141:36;;43150:5;43141:36;;;;;;;;;;;;43190:47;43210:5;43225:1;43229:7;43190:19;:47::i;:::-;42874:371;42825:420;:::o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:169:1:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:222::-;322:34;318:1;310:6;306:14;299:58;391:5;386:2;378:6;374:15;367:30;182:222;:::o;410:366::-;552:3;573:67;637:2;632:3;573:67;:::i;:::-;566:74;;649:93;738:3;649:93;:::i;:::-;767:2;762:3;758:12;751:19;;410:366;;;:::o;782:419::-;948:4;986:2;975:9;971:18;963:26;;1035:9;1029:4;1025:20;1021:1;1010:9;1006:17;999:47;1063:131;1189:4;1063:131;:::i;:::-;1055:139;;782:419;;;:::o;1207:75::-;1240:6;1273:2;1267:9;1257:19;;1207:75;:::o;1288:117::-;1397:1;1394;1387:12;1411:117;1520:1;1517;1510:12;1534:149;1570:7;1610:66;1603:5;1599:78;1588:89;;1534:149;;;:::o;1689:120::-;1761:23;1778:5;1761:23;:::i;:::-;1754:5;1751:34;1741:62;;1799:1;1796;1789:12;1741:62;1689:120;:::o;1815:137::-;1860:5;1898:6;1885:20;1876:29;;1914:32;1940:5;1914:32;:::i;:::-;1815:137;;;;:::o;1958:327::-;2016:6;2065:2;2053:9;2044:7;2040:23;2036:32;2033:119;;;2071:79;;:::i;:::-;2033:119;2191:1;2216:52;2260:7;2251:6;2240:9;2236:22;2216:52;:::i;:::-;2206:62;;2162:116;1958:327;;;;:::o;2291:90::-;2325:7;2368:5;2361:13;2354:21;2343:32;;2291:90;;;:::o;2387:109::-;2468:21;2483:5;2468:21;:::i;:::-;2463:3;2456:34;2387:109;;:::o;2502:210::-;2589:4;2627:2;2616:9;2612:18;2604:26;;2640:65;2702:1;2691:9;2687:17;2678:6;2640:65;:::i;:::-;2502:210;;;;:::o;2718:99::-;2770:6;2804:5;2798:12;2788:22;;2718:99;;;:::o;2823:246::-;2904:1;2914:113;2928:6;2925:1;2922:13;2914:113;;;3013:1;3008:3;3004:11;2998:18;2994:1;2989:3;2985:11;2978:39;2950:2;2947:1;2943:10;2938:15;;2914:113;;;3061:1;3052:6;3047:3;3043:16;3036:27;2885:184;2823:246;;;:::o;3075:102::-;3116:6;3167:2;3163:7;3158:2;3151:5;3147:14;3143:28;3133:38;;3075:102;;;:::o;3183:377::-;3271:3;3299:39;3332:5;3299:39;:::i;:::-;3354:71;3418:6;3413:3;3354:71;:::i;:::-;3347:78;;3434:65;3492:6;3487:3;3480:4;3473:5;3469:16;3434:65;:::i;:::-;3524:29;3546:6;3524:29;:::i;:::-;3519:3;3515:39;3508:46;;3275:285;3183:377;;;;:::o;3566:313::-;3679:4;3717:2;3706:9;3702:18;3694:26;;3766:9;3760:4;3756:20;3752:1;3741:9;3737:17;3730:47;3794:78;3867:4;3858:6;3794:78;:::i;:::-;3786:86;;3566:313;;;;:::o;3885:77::-;3922:7;3951:5;3940:16;;3885:77;;;:::o;3968:122::-;4041:24;4059:5;4041:24;:::i;:::-;4034:5;4031:35;4021:63;;4080:1;4077;4070:12;4021:63;3968:122;:::o;4096:139::-;4142:5;4180:6;4167:20;4158:29;;4196:33;4223:5;4196:33;:::i;:::-;4096:139;;;;:::o;4241:329::-;4300:6;4349:2;4337:9;4328:7;4324:23;4320:32;4317:119;;;4355:79;;:::i;:::-;4317:119;4475:1;4500:53;4545:7;4536:6;4525:9;4521:22;4500:53;:::i;:::-;4490:63;;4446:117;4241:329;;;;:::o;4576:126::-;4613:7;4653:42;4646:5;4642:54;4631:65;;4576:126;;;:::o;4708:96::-;4745:7;4774:24;4792:5;4774:24;:::i;:::-;4763:35;;4708:96;;;:::o;4810:118::-;4897:24;4915:5;4897:24;:::i;:::-;4892:3;4885:37;4810:118;;:::o;4934:222::-;5027:4;5065:2;5054:9;5050:18;5042:26;;5078:71;5146:1;5135:9;5131:17;5122:6;5078:71;:::i;:::-;4934:222;;;;:::o;5162:122::-;5235:24;5253:5;5235:24;:::i;:::-;5228:5;5225:35;5215:63;;5274:1;5271;5264:12;5215:63;5162:122;:::o;5290:139::-;5336:5;5374:6;5361:20;5352:29;;5390:33;5417:5;5390:33;:::i;:::-;5290:139;;;;:::o;5435:474::-;5503:6;5511;5560:2;5548:9;5539:7;5535:23;5531:32;5528:119;;;5566:79;;:::i;:::-;5528:119;5686:1;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5657:117;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5435:474;;;;;:::o;5915:118::-;6002:24;6020:5;6002:24;:::i;:::-;5997:3;5990:37;5915:118;;:::o;6039:222::-;6132:4;6170:2;6159:9;6155:18;6147:26;;6183:71;6251:1;6240:9;6236:17;6227:6;6183:71;:::i;:::-;6039:222;;;;:::o;6267:619::-;6344:6;6352;6360;6409:2;6397:9;6388:7;6384:23;6380:32;6377:119;;;6415:79;;:::i;:::-;6377:119;6535:1;6560:53;6605:7;6596:6;6585:9;6581:22;6560:53;:::i;:::-;6550:63;;6506:117;6662:2;6688:53;6733:7;6724:6;6713:9;6709:22;6688:53;:::i;:::-;6678:63;;6633:118;6790:2;6816:53;6861:7;6852:6;6841:9;6837:22;6816:53;:::i;:::-;6806:63;;6761:118;6267:619;;;;;:::o;6892:474::-;6960:6;6968;7017:2;7005:9;6996:7;6992:23;6988:32;6985:119;;;7023:79;;:::i;:::-;6985:119;7143:1;7168:53;7213:7;7204:6;7193:9;7189:22;7168:53;:::i;:::-;7158:63;;7114:117;7270:2;7296:53;7341:7;7332:6;7321:9;7317:22;7296:53;:::i;:::-;7286:63;;7241:118;6892:474;;;;;:::o;7372:332::-;7493:4;7531:2;7520:9;7516:18;7508:26;;7544:71;7612:1;7601:9;7597:17;7588:6;7544:71;:::i;:::-;7625:72;7693:2;7682:9;7678:18;7669:6;7625:72;:::i;:::-;7372:332;;;;;:::o;7710:86::-;7745:7;7785:4;7778:5;7774:16;7763:27;;7710:86;;;:::o;7802:112::-;7885:22;7901:5;7885:22;:::i;:::-;7880:3;7873:35;7802:112;;:::o;7920:214::-;8009:4;8047:2;8036:9;8032:18;8024:26;;8060:67;8124:1;8113:9;8109:17;8100:6;8060:67;:::i;:::-;7920:214;;;;:::o;8140:329::-;8199:6;8248:2;8236:9;8227:7;8223:23;8219:32;8216:119;;;8254:79;;:::i;:::-;8216:119;8374:1;8399:53;8444:7;8435:6;8424:9;8420:22;8399:53;:::i;:::-;8389:63;;8345:117;8140:329;;;;:::o;8475:116::-;8545:21;8560:5;8545:21;:::i;:::-;8538:5;8535:32;8525:60;;8581:1;8578;8571:12;8525:60;8475:116;:::o;8597:133::-;8640:5;8678:6;8665:20;8656:29;;8694:30;8718:5;8694:30;:::i;:::-;8597:133;;;;:::o;8736:468::-;8801:6;8809;8858:2;8846:9;8837:7;8833:23;8829:32;8826:119;;;8864:79;;:::i;:::-;8826:119;8984:1;9009:53;9054:7;9045:6;9034:9;9030:22;9009:53;:::i;:::-;8999:63;;8955:117;9111:2;9137:50;9179:7;9170:6;9159:9;9155:22;9137:50;:::i;:::-;9127:60;;9082:115;8736:468;;;;;:::o;9210:117::-;9319:1;9316;9309:12;9333:117;9442:1;9439;9432:12;9456:180;9504:77;9501:1;9494:88;9601:4;9598:1;9591:15;9625:4;9622:1;9615:15;9642:281;9725:27;9747:4;9725:27;:::i;:::-;9717:6;9713:40;9855:6;9843:10;9840:22;9819:18;9807:10;9804:34;9801:62;9798:88;;;9866:18;;:::i;:::-;9798:88;9906:10;9902:2;9895:22;9685:238;9642:281;;:::o;9929:129::-;9963:6;9990:20;;:::i;:::-;9980:30;;10019:33;10047:4;10039:6;10019:33;:::i;:::-;9929:129;;;:::o;10064:307::-;10125:4;10215:18;10207:6;10204:30;10201:56;;;10237:18;;:::i;:::-;10201:56;10275:29;10297:6;10275:29;:::i;:::-;10267:37;;10359:4;10353;10349:15;10341:23;;10064:307;;;:::o;10377:146::-;10474:6;10469:3;10464;10451:30;10515:1;10506:6;10501:3;10497:16;10490:27;10377:146;;;:::o;10529:423::-;10606:5;10631:65;10647:48;10688:6;10647:48;:::i;:::-;10631:65;:::i;:::-;10622:74;;10719:6;10712:5;10705:21;10757:4;10750:5;10746:16;10795:3;10786:6;10781:3;10777:16;10774:25;10771:112;;;10802:79;;:::i;:::-;10771:112;10892:54;10939:6;10934:3;10929;10892:54;:::i;:::-;10612:340;10529:423;;;;;:::o;10971:338::-;11026:5;11075:3;11068:4;11060:6;11056:17;11052:27;11042:122;;11083:79;;:::i;:::-;11042:122;11200:6;11187:20;11225:78;11299:3;11291:6;11284:4;11276:6;11272:17;11225:78;:::i;:::-;11216:87;;11032:277;10971:338;;;;:::o;11315:943::-;11410:6;11418;11426;11434;11483:3;11471:9;11462:7;11458:23;11454:33;11451:120;;;11490:79;;:::i;:::-;11451:120;11610:1;11635:53;11680:7;11671:6;11660:9;11656:22;11635:53;:::i;:::-;11625:63;;11581:117;11737:2;11763:53;11808:7;11799:6;11788:9;11784:22;11763:53;:::i;:::-;11753:63;;11708:118;11865:2;11891:53;11936:7;11927:6;11916:9;11912:22;11891:53;:::i;:::-;11881:63;;11836:118;12021:2;12010:9;12006:18;11993:32;12052:18;12044:6;12041:30;12038:117;;;12074:79;;:::i;:::-;12038:117;12179:62;12233:7;12224:6;12213:9;12209:22;12179:62;:::i;:::-;12169:72;;11964:287;11315:943;;;;;;;:::o;12264:89::-;12300:7;12340:6;12333:5;12329:18;12318:29;;12264:89;;;:::o;12359:115::-;12444:23;12461:5;12444:23;:::i;:::-;12439:3;12432:36;12359:115;;:::o;12480:218::-;12571:4;12609:2;12598:9;12594:18;12586:26;;12622:69;12688:1;12677:9;12673:17;12664:6;12622:69;:::i;:::-;12480:218;;;;:::o;12704:311::-;12781:4;12871:18;12863:6;12860:30;12857:56;;;12893:18;;:::i;:::-;12857:56;12943:4;12935:6;12931:17;12923:25;;13003:4;12997;12993:15;12985:23;;12704:311;;;:::o;13021:117::-;13130:1;13127;13120:12;13161:710;13257:5;13282:81;13298:64;13355:6;13298:64;:::i;:::-;13282:81;:::i;:::-;13273:90;;13383:5;13412:6;13405:5;13398:21;13446:4;13439:5;13435:16;13428:23;;13499:4;13491:6;13487:17;13479:6;13475:30;13528:3;13520:6;13517:15;13514:122;;;13547:79;;:::i;:::-;13514:122;13662:6;13645:220;13679:6;13674:3;13671:15;13645:220;;;13754:3;13783:37;13816:3;13804:10;13783:37;:::i;:::-;13778:3;13771:50;13850:4;13845:3;13841:14;13834:21;;13721:144;13705:4;13700:3;13696:14;13689:21;;13645:220;;;13649:21;13263:608;;13161:710;;;;;:::o;13894:370::-;13965:5;14014:3;14007:4;13999:6;13995:17;13991:27;13981:122;;14022:79;;:::i;:::-;13981:122;14139:6;14126:20;14164:94;14254:3;14246:6;14239:4;14231:6;14227:17;14164:94;:::i;:::-;14155:103;;13971:293;13894:370;;;;:::o;14270:539::-;14354:6;14403:2;14391:9;14382:7;14378:23;14374:32;14371:119;;;14409:79;;:::i;:::-;14371:119;14557:1;14546:9;14542:17;14529:31;14587:18;14579:6;14576:30;14573:117;;;14609:79;;:::i;:::-;14573:117;14714:78;14784:7;14775:6;14764:9;14760:22;14714:78;:::i;:::-;14704:88;;14500:302;14270:539;;;;:::o;14815:474::-;14883:6;14891;14940:2;14928:9;14919:7;14915:23;14911:32;14908:119;;;14946:79;;:::i;:::-;14908:119;15066:1;15091:53;15136:7;15127:6;15116:9;15112:22;15091:53;:::i;:::-;15081:63;;15037:117;15193:2;15219:53;15264:7;15255:6;15244:9;15240:22;15219:53;:::i;:::-;15209:63;;15164:118;14815:474;;;;;:::o;15295:177::-;15435:29;15431:1;15423:6;15419:14;15412:53;15295:177;:::o;15478:366::-;15620:3;15641:67;15705:2;15700:3;15641:67;:::i;:::-;15634:74;;15717:93;15806:3;15717:93;:::i;:::-;15835:2;15830:3;15826:12;15819:19;;15478:366;;;:::o;15850:419::-;16016:4;16054:2;16043:9;16039:18;16031:26;;16103:9;16097:4;16093:20;16089:1;16078:9;16074:17;16067:47;16131:131;16257:4;16131:131;:::i;:::-;16123:139;;15850:419;;;:::o;16275:172::-;16415:24;16411:1;16403:6;16399:14;16392:48;16275:172;:::o;16453:366::-;16595:3;16616:67;16680:2;16675:3;16616:67;:::i;:::-;16609:74;;16692:93;16781:3;16692:93;:::i;:::-;16810:2;16805:3;16801:12;16794:19;;16453:366;;;:::o;16825:419::-;16991:4;17029:2;17018:9;17014:18;17006:26;;17078:9;17072:4;17068:20;17064:1;17053:9;17049:17;17042:47;17106:131;17232:4;17106:131;:::i;:::-;17098:139;;16825:419;;;:::o;17250:180::-;17298:77;17295:1;17288:88;17395:4;17392:1;17385:15;17419:4;17416:1;17409:15;17436:320;17480:6;17517:1;17511:4;17507:12;17497:22;;17564:1;17558:4;17554:12;17585:18;17575:81;;17641:4;17633:6;17629:17;17619:27;;17575:81;17703:2;17695:6;17692:14;17672:18;17669:38;17666:84;;17722:18;;:::i;:::-;17666:84;17487:269;17436:320;;;:::o;17762:180::-;17810:77;17807:1;17800:88;17907:4;17904:1;17897:15;17931:4;17928:1;17921:15;17948:167;17985:3;18008:22;18024:5;18008:22;:::i;:::-;17999:31;;18052:4;18045:5;18042:15;18039:41;;18060:18;;:::i;:::-;18039:41;18107:1;18100:5;18096:13;18089:20;;17948:167;;;:::o;18121:180::-;18169:77;18166:1;18159:88;18266:4;18263:1;18256:15;18290:4;18287:1;18280:15;18307:148;18409:11;18446:3;18431:18;;18307:148;;;;:::o;18461:526::-;18601:34;18597:1;18589:6;18585:14;18578:58;18670:34;18665:2;18657:6;18653:15;18646:59;18743:34;18738:2;18730:6;18726:15;18719:59;18816:34;18811:2;18803:6;18799:15;18792:59;18890:34;18884:3;18876:6;18872:16;18865:60;18964:11;18958:3;18950:6;18946:16;18939:37;18461:526;:::o;18997:420::-;19157:3;19182:86;19264:3;19259;19182:86;:::i;:::-;19175:93;;19281;19370:3;19281:93;:::i;:::-;19403:3;19398;19394:13;19387:20;;18997:420;;;:::o;19427:410::-;19533:3;19565:39;19598:5;19565:39;:::i;:::-;19624:89;19706:6;19701:3;19624:89;:::i;:::-;19617:96;;19726:65;19784:6;19779:3;19772:4;19765:5;19761:16;19726:65;:::i;:::-;19820:6;19815:3;19811:16;19804:23;;19537:300;19427:410;;;;:::o;19847:473::-;19991:34;19987:1;19979:6;19975:14;19968:58;20064:34;20059:2;20051:6;20047:15;20040:59;20137:34;20132:2;20124:6;20120:15;20113:59;20210:34;20205:2;20197:6;20193:15;20186:59;20284:24;20278:3;20270:6;20266:16;20259:50;19847:473;:::o;20330:420::-;20490:3;20515:86;20597:3;20592;20515:86;:::i;:::-;20508:93;;20614;20703:3;20614:93;:::i;:::-;20736:3;20731;20727:13;20720:20;;20330:420;;;:::o;20760:827::-;21094:3;21120:148;21264:3;21120:148;:::i;:::-;21113:155;;21289:95;21380:3;21371:6;21289:95;:::i;:::-;21282:102;;21405:148;21549:3;21405:148;:::i;:::-;21398:155;;21574:3;21567:10;;20760:827;;;;:::o;21597:211::-;21635:4;21659:18;21675:1;21659:18;:::i;:::-;21654:23;;21695:18;21711:1;21695:18;:::i;:::-;21690:23;;21741:1;21738;21734:9;21726:17;;21769:4;21763;21760:14;21757:40;;;21777:18;;:::i;:::-;21757:40;21597:211;;;;:::o;21818:::-;21858:3;21881:20;21899:1;21881:20;:::i;:::-;21876:25;;21919:20;21937:1;21919:20;:::i;:::-;21914:25;;21966:1;21963;21959:9;21952:16;;21991:3;21988:1;21985:10;21982:36;;;21998:18;;:::i;:::-;21982:36;21818:211;;;;:::o;22039:243::-;22183:34;22179:1;22171:6;22167:14;22160:58;22256:14;22251:2;22243:6;22239:15;22232:39;22039:243;:::o;22292:382::-;22434:3;22459:67;22523:2;22518:3;22459:67;:::i;:::-;22452:74;;22539:93;22628:3;22539:93;:::i;:::-;22661:2;22656:3;22652:12;22645:19;;22292:382;;;:::o;22684:435::-;22850:4;22892:2;22881:9;22877:18;22869:26;;22945:9;22939:4;22935:20;22931:1;22920:9;22916:17;22909:47;22977:131;23103:4;22977:131;:::i;:::-;22969:139;;22684:435;;;:::o;23129:232::-;23273:34;23269:1;23261:6;23257:14;23250:58;23346:3;23341:2;23333:6;23329:15;23322:28;23129:232;:::o;23371:382::-;23513:3;23538:67;23602:2;23597:3;23538:67;:::i;:::-;23531:74;;23618:93;23707:3;23618:93;:::i;:::-;23740:2;23735:3;23731:12;23724:19;;23371:382;;;:::o;23763:435::-;23929:4;23971:2;23960:9;23956:18;23948:26;;24024:9;24018:4;24014:20;24010:1;23999:9;23995:17;23988:47;24056:131;24182:4;24056:131;:::i;:::-;24048:139;;23763:435;;;:::o;24208:255::-;24352:34;24348:1;24340:6;24336:14;24329:58;24425:26;24420:2;24412:6;24408:15;24401:51;24208:255;:::o;24473:382::-;24615:3;24640:67;24704:2;24699:3;24640:67;:::i;:::-;24633:74;;24720:93;24809:3;24720:93;:::i;:::-;24842:2;24837:3;24833:12;24826:19;;24473:382;;;:::o;24865:435::-;25031:4;25073:2;25062:9;25058:18;25050:26;;25126:9;25120:4;25116:20;25112:1;25101:9;25097:17;25090:47;25158:131;25284:4;25158:131;:::i;:::-;25150:139;;24865:435;;;:::o;25310:248::-;25454:34;25450:1;25442:6;25438:14;25431:58;25527:19;25522:2;25514:6;25510:15;25503:44;25310:248;:::o;25568:382::-;25710:3;25735:67;25799:2;25794:3;25735:67;:::i;:::-;25728:74;;25815:93;25904:3;25815:93;:::i;:::-;25937:2;25932:3;25928:12;25921:19;;25568:382;;;:::o;25960:435::-;26126:4;26168:2;26157:9;26153:18;26145:26;;26221:9;26215:4;26211:20;26207:1;26196:9;26192:17;26185:47;26253:131;26379:4;26253:131;:::i;:::-;26245:139;;25960:435;;;:::o;26405:458::-;26445:7;26472:20;26490:1;26472:20;:::i;:::-;26467:25;;26510:20;26528:1;26510:20;:::i;:::-;26505:25;;26569:1;26566;26562:9;26595:30;26613:11;26595:30;:::i;:::-;26584:41;;26794:1;26785:7;26781:15;26778:1;26775:22;26751:1;26744:9;26720:95;26693:159;;26832:18;;:::i;:::-;26693:159;26453:410;26405:458;;;;:::o;26873:196::-;26925:77;26922:1;26915:88;27026:4;27023:1;27016:15;27054:4;27051:1;27044:15;27079:205;27119:1;27140:20;27158:1;27140:20;:::i;:::-;27135:25;;27178:20;27196:1;27178:20;:::i;:::-;27173:25;;27221:1;27211:35;;27226:18;;:::i;:::-;27211:35;27272:1;27269;27265:9;27260:14;;27079:205;;;;:::o;27294:247::-;27438:34;27434:1;27426:6;27422:14;27415:58;27511:18;27506:2;27498:6;27494:15;27487:43;27294:247;:::o;27551:382::-;27693:3;27718:67;27782:2;27777:3;27718:67;:::i;:::-;27711:74;;27798:93;27887:3;27798:93;:::i;:::-;27920:2;27915:3;27911:12;27904:19;;27551:382;;;:::o;27943:435::-;28109:4;28151:2;28140:9;28136:18;28128:26;;28204:9;28198:4;28194:20;28190:1;28179:9;28175:17;28168:47;28236:131;28362:4;28236:131;:::i;:::-;28228:139;;27943:435;;;:::o;28388:240::-;28532:34;28528:1;28520:6;28516:14;28509:58;28605:11;28600:2;28592:6;28588:15;28581:36;28388:240;:::o;28638:382::-;28780:3;28805:67;28869:2;28864:3;28805:67;:::i;:::-;28798:74;;28885:93;28974:3;28885:93;:::i;:::-;29007:2;29002:3;28998:12;28991:19;;28638:382;;;:::o;29030:435::-;29196:4;29238:2;29227:9;29223:18;29215:26;;29291:9;29285:4;29281:20;29277:1;29266:9;29262:17;29255:47;29323:131;29449:4;29323:131;:::i;:::-;29315:139;;29030:435;;;:::o;29475:241::-;29619:34;29615:1;29607:6;29603:14;29596:58;29692:12;29687:2;29679:6;29675:15;29668:37;29475:241;:::o;29726:382::-;29868:3;29893:67;29957:2;29952:3;29893:67;:::i;:::-;29886:74;;29973:93;30062:3;29973:93;:::i;:::-;30095:2;30090:3;30086:12;30079:19;;29726:382;;;:::o;30118:435::-;30284:4;30326:2;30315:9;30311:18;30303:26;;30379:9;30373:4;30369:20;30365:1;30354:9;30350:17;30343:47;30411:131;30537:4;30411:131;:::i;:::-;30403:139;;30118:435;;;:::o;30563:190::-;30707:34;30703:1;30695:6;30691:14;30684:58;30563:190;:::o;30763:382::-;30905:3;30930:67;30994:2;30989:3;30930:67;:::i;:::-;30923:74;;31010:93;31099:3;31010:93;:::i;:::-;31132:2;31127:3;31123:12;31116:19;;30763:382;;;:::o;31155:435::-;31321:4;31363:2;31352:9;31348:18;31340:26;;31416:9;31410:4;31406:20;31402:1;31391:9;31387:17;31380:47;31448:131;31574:4;31448:131;:::i;:::-;31440:139;;31155:435;;;:::o;31600:237::-;31744:34;31740:1;31732:6;31728:14;31721:58;31817:8;31812:2;31804:6;31800:15;31793:33;31600:237;:::o;31847:382::-;31989:3;32014:67;32078:2;32073:3;32014:67;:::i;:::-;32007:74;;32094:93;32183:3;32094:93;:::i;:::-;32216:2;32211:3;32207:12;32200:19;;31847:382;;;:::o;32239:435::-;32405:4;32447:2;32436:9;32432:18;32424:26;;32500:9;32494:4;32490:20;32486:1;32475:9;32471:17;32464:47;32532:131;32658:4;32532:131;:::i;:::-;32524:139;;32239:435;;;:::o;32684:1929::-;33297:3;33323:95;33414:3;33405:6;33323:95;:::i;:::-;33316:102;;33439:95;33530:3;33521:6;33439:95;:::i;:::-;33432:102;;33555:95;33646:3;33637:6;33555:95;:::i;:::-;33548:102;;33671:95;33762:3;33753:6;33671:95;:::i;:::-;33664:102;;33787:95;33878:3;33869:6;33787:95;:::i;:::-;33780:102;;33903:95;33994:3;33985:6;33903:95;:::i;:::-;33896:102;;34019:95;34110:3;34101:6;34019:95;:::i;:::-;34012:102;;34135:95;34226:3;34217:6;34135:95;:::i;:::-;34128:102;;34251:95;34342:3;34333:6;34251:95;:::i;:::-;34244:102;;34367:95;34458:3;34449:6;34367:95;:::i;:::-;34360:102;;34483:96;34575:3;34565:7;34483:96;:::i;:::-;34476:103;;34600:3;34593:10;;32684:1929;;;;;;;;;;;;;;:::o;34623:451::-;34803:3;34829:95;34920:3;34911:6;34829:95;:::i;:::-;34822:102;;34945:95;35036:3;35027:6;34945:95;:::i;:::-;34938:102;;35061:3;35054:10;;34623:451;;;;;:::o;35084:432::-;35228:66;35224:1;35216:6;35212:14;35205:90;35333:66;35328:2;35320:6;35316:15;35309:91;35438:66;35433:2;35425:6;35421:15;35414:91;35084:432;:::o;35526:418::-;35686:3;35711:85;35793:2;35788:3;35711:85;:::i;:::-;35704:92;;35809:93;35898:3;35809:93;:::i;:::-;35931:2;35926:3;35922:12;35915:19;;35526:418;;;:::o;35954:222::-;36098:66;36094:1;36086:6;36082:14;36075:90;35954:222;:::o;36186:418::-;36346:3;36371:85;36453:2;36448:3;36371:85;:::i;:::-;36364:92;;36469:93;36558:3;36469:93;:::i;:::-;36591:2;36586:3;36582:12;36575:19;;36186:418;;;:::o;36614:327::-;36758:66;36754:1;36746:6;36742:14;36735:90;36863:66;36858:2;36850:6;36846:15;36839:91;36614:327;:::o;36951:418::-;37111:3;37136:85;37218:2;37213:3;37136:85;:::i;:::-;37129:92;;37234:93;37323:3;37234:93;:::i;:::-;37356:2;37351:3;37347:12;37340:19;;36951:418;;;:::o;37379:327::-;37523:66;37519:1;37511:6;37507:14;37500:90;37628:66;37623:2;37615:6;37611:15;37604:91;37379:327;:::o;37716:418::-;37876:3;37901:85;37983:2;37978:3;37901:85;:::i;:::-;37894:92;;37999:93;38088:3;37999:93;:::i;:::-;38121:2;38116:3;38112:12;38105:19;;37716:418;;;:::o;38144:222::-;38288:66;38284:1;38276:6;38272:14;38265:90;38144:222;:::o;38376:416::-;38536:3;38561:84;38643:1;38638:3;38561:84;:::i;:::-;38554:91;;38658:93;38747:3;38658:93;:::i;:::-;38780:1;38775:3;38771:11;38764:18;;38376:416;;;:::o;38802:2129::-;39583:3;39609:148;39753:3;39609:148;:::i;:::-;39602:155;;39778:95;39869:3;39860:6;39778:95;:::i;:::-;39771:102;;39894:148;40038:3;39894:148;:::i;:::-;39887:155;;40063:95;40154:3;40145:6;40063:95;:::i;:::-;40056:102;;40179:148;40323:3;40179:148;:::i;:::-;40172:155;;40348:95;40439:3;40430:6;40348:95;:::i;:::-;40341:102;;40464:148;40608:3;40464:148;:::i;:::-;40457:155;;40633:95;40724:3;40715:6;40633:95;:::i;:::-;40626:102;;40749:148;40893:3;40749:148;:::i;:::-;40742:155;;40918:3;40911:10;;38802:2129;;;;;;;:::o;40941:187::-;41085:31;41081:1;41073:6;41069:14;41062:55;40941:187;:::o;41138:418::-;41298:3;41323:85;41405:2;41400:3;41323:85;:::i;:::-;41316:92;;41421:93;41510:3;41421:93;:::i;:::-;41543:2;41538:3;41534:12;41527:19;;41138:418;;;:::o;41566:557::-;41799:3;41825:148;41969:3;41825:148;:::i;:::-;41818:155;;41994:95;42085:3;42076:6;41994:95;:::i;:::-;41987:102;;42110:3;42103:10;;41566:557;;;;:::o;42133:245::-;42277:34;42273:1;42265:6;42261:14;42254:58;42350:16;42345:2;42337:6;42333:15;42326:41;42133:245;:::o;42388:382::-;42530:3;42555:67;42619:2;42614:3;42555:67;:::i;:::-;42548:74;;42635:93;42724:3;42635:93;:::i;:::-;42757:2;42752:3;42748:12;42741:19;;42388:382;;;:::o;42780:435::-;42946:4;42988:2;42977:9;42973:18;42965:26;;43041:9;43035:4;43031:20;43027:1;43016:9;43012:17;43005:47;43073:131;43199:4;43073:131;:::i;:::-;43065:139;;42780:435;;;:::o;43225:157::-;43274:4;43301:3;43293:11;;43328:3;43325:1;43318:14;43366:4;43363:1;43353:18;43345:26;;43225:157;;;:::o;43392:101::-;43429:6;43480:2;43475;43468:5;43464:14;43460:23;43450:33;;43392:101;;;:::o;43503:119::-;43547:8;43605:5;43599:4;43595:16;43570:41;;43503:119;;;;:::o;43632:417::-;43701:6;43755:1;43743:10;43739:18;43782:97;43812:66;43801:9;43782:97;:::i;:::-;43904:39;43934:8;43923:9;43904:39;:::i;:::-;43892:51;;43980:4;43976:9;43969:5;43965:21;43956:30;;44033:4;44023:8;44019:19;44012:5;44009:30;43999:40;;43708:341;;43632:417;;;;;:::o;44059:68::-;44087:3;44112:5;44105:12;;44059:68;;;:::o;44137:150::-;44187:9;44224:53;44242:34;44251:24;44269:5;44251:24;:::i;:::-;44242:34;:::i;:::-;44224:53;:::i;:::-;44211:66;;44137:150;;;:::o;44297:83::-;44340:3;44365:5;44358:12;;44297:83;;;:::o;44390:281::-;44504:39;44535:7;44504:39;:::i;:::-;44569:91;44618:41;44642:16;44618:41;:::i;:::-;44610:6;44603:4;44597:11;44569:91;:::i;:::-;44563:4;44556:105;44466:205;44390:281;;;:::o;44681:81::-;44726:3;44681:81;:::o;44772:201::-;44853:32;;:::i;:::-;44898:65;44956:6;44948;44942:4;44898:65;:::i;:::-;44825:148;44772:201;;:::o;44983:206::-;45047:132;45064:3;45057:5;45054:14;45047:132;;;45126:39;45163:1;45156:5;45126:39;:::i;:::-;45091:1;45084:5;45080:13;45071:22;;45047:132;;;44983:206;;:::o;45199:575::-;45304:2;45299:3;45296:11;45293:470;;;45342:38;45374:5;45342:38;:::i;:::-;45430:29;45448:10;45430:29;:::i;:::-;45420:8;45416:44;45621:2;45609:10;45606:18;45603:49;;;45642:8;45627:23;;45603:49;45669:80;45725:22;45743:3;45725:22;:::i;:::-;45715:8;45711:37;45698:11;45669:80;:::i;:::-;45308:455;;45293:470;45199:575;;;:::o;45784:129::-;45838:8;45896:5;45890:4;45886:16;45861:41;;45784:129;;;;:::o;45923:181::-;45967:6;46004:51;46052:1;46048:6;46040:5;46037:1;46033:13;46004:51;:::i;:::-;46000:56;46089:4;46083;46079:15;46069:25;;45974:130;45923:181;;;;:::o;46113:315::-;46189:4;46347:29;46372:3;46366:4;46347:29;:::i;:::-;46339:37;;46413:3;46410:1;46406:11;46400:4;46397:21;46389:29;;46113:315;;;;:::o;46437:1523::-;46558:37;46591:3;46558:37;:::i;:::-;46668:18;46660:6;46657:30;46654:56;;;46690:18;;:::i;:::-;46654:56;46738:38;46770:4;46764:11;46738:38;:::i;:::-;46831:67;46891:6;46883;46877:4;46831:67;:::i;:::-;46929:1;46957:4;46944:17;;46993:2;46985:6;46982:14;47014:1;47009:674;;;;47735:1;47756:6;47753:85;;;47809:9;47804:3;47800:19;47794:26;47785:35;;47753:85;47868:67;47928:6;47921:5;47868:67;:::i;:::-;47862:4;47855:81;47704:246;46975:975;;47009:674;47065:4;47061:9;47053:6;47049:22;47103:37;47135:4;47103:37;:::i;:::-;47166:1;47184:224;47198:7;47195:1;47192:14;47184:224;;;47281:9;47276:3;47272:19;47266:26;47258:6;47251:42;47336:1;47328:6;47324:14;47314:24;;47387:2;47376:9;47372:18;47359:31;;47221:4;47218:1;47214:12;47209:17;;47184:224;;;47440:6;47431:7;47428:19;47425:191;;;47502:9;47497:3;47493:19;47487:26;47549:48;47591:4;47583:6;47579:17;47568:9;47549:48;:::i;:::-;47541:6;47534:64;47448:168;47425:191;47666:1;47662;47654:6;47650:14;47646:22;47640:4;47633:36;47016:667;;;46975:975;;46529:1431;;;46437:1523;;:::o;47970:243::-;48114:34;48110:1;48102:6;48098:14;48091:58;48187:14;48182:2;48174:6;48170:15;48163:39;47970:243;:::o;48223:382::-;48365:3;48390:67;48454:2;48449:3;48390:67;:::i;:::-;48383:74;;48470:93;48559:3;48470:93;:::i;:::-;48592:2;48587:3;48583:12;48576:19;;48223:382;;;:::o;48615:435::-;48781:4;48823:2;48812:9;48808:18;48800:26;;48876:9;48870:4;48866:20;48862:1;48851:9;48847:17;48840:47;48908:131;49034:4;48908:131;:::i;:::-;48900:139;;48615:435;;;:::o;49060:236::-;49204:34;49200:1;49192:6;49188:14;49181:58;49277:7;49272:2;49264:6;49260:15;49253:32;49060:236;:::o;49306:382::-;49448:3;49473:67;49537:2;49532:3;49473:67;:::i;:::-;49466:74;;49553:93;49642:3;49553:93;:::i;:::-;49675:2;49670:3;49666:12;49659:19;;49306:382;;;:::o;49698:435::-;49864:4;49906:2;49895:9;49891:18;49883:26;;49959:9;49953:4;49949:20;49945:1;49934:9;49930:17;49923:47;49991:131;50117:4;49991:131;:::i;:::-;49983:139;;49698:435;;;:::o;50143:235::-;50287:34;50283:1;50275:6;50271:14;50264:58;50360:6;50355:2;50347:6;50343:15;50336:31;50143:235;:::o;50388:382::-;50530:3;50555:67;50619:2;50614:3;50555:67;:::i;:::-;50548:74;;50635:93;50724:3;50635:93;:::i;:::-;50757:2;50752:3;50748:12;50741:19;;50388:382;;;:::o;50780:435::-;50946:4;50988:2;50977:9;50973:18;50965:26;;51041:9;51035:4;51031:20;51027:1;51016:9;51012:17;51005:47;51073:131;51199:4;51073:131;:::i;:::-;51065:139;;50780:435;;;:::o;51225:214::-;51265:4;51289:20;51307:1;51289:20;:::i;:::-;51284:25;;51327:20;51345:1;51327:20;:::i;:::-;51322:25;;51375:1;51372;51368:9;51360:17;;51403:1;51397:4;51394:11;51391:37;;;51408:18;;:::i;:::-;51391:37;51225:214;;;;:::o;51449:183::-;51593:27;51589:1;51581:6;51577:14;51570:51;51449:183;:::o;51642:382::-;51784:3;51809:67;51873:2;51868:3;51809:67;:::i;:::-;51802:74;;51889:93;51978:3;51889:93;:::i;:::-;52011:2;52006:3;52002:12;51995:19;;51642:382;;;:::o;52034:435::-;52200:4;52242:2;52231:9;52227:18;52219:26;;52295:9;52289:4;52285:20;52281:1;52270:9;52266:17;52259:47;52327:131;52453:4;52327:131;:::i;:::-;52319:139;;52034:435;;;:::o;52479:249::-;52623:34;52619:1;52611:6;52607:14;52600:58;52696:20;52691:2;52683:6;52679:15;52672:45;52479:249;:::o;52738:382::-;52880:3;52905:67;52969:2;52964:3;52905:67;:::i;:::-;52898:74;;52985:93;53074:3;52985:93;:::i;:::-;53107:2;53102:3;53098:12;53091:19;;52738:382;;;:::o;53130:435::-;53296:4;53338:2;53327:9;53323:18;53315:26;;53391:9;53385:4;53381:20;53377:1;53366:9;53362:17;53355:47;53423:131;53549:4;53423:131;:::i;:::-;53415:139;;53130:435;;;:::o;53575:248::-;53719:34;53715:1;53707:6;53703:14;53696:58;53792:19;53787:2;53779:6;53775:15;53768:44;53575:248;:::o;53833:382::-;53975:3;54000:67;54064:2;54059:3;54000:67;:::i;:::-;53993:74;;54080:93;54169:3;54080:93;:::i;:::-;54202:2;54197:3;54193:12;54186:19;;53833:382;;;:::o;54225:435::-;54391:4;54433:2;54422:9;54418:18;54410:26;;54486:9;54480:4;54476:20;54472:1;54461:9;54457:17;54450:47;54518:131;54644:4;54518:131;:::i;:::-;54510:139;;54225:435;;;:::o;54670:87::-;54709:7;54742:5;54731:16;;54670:87;;;:::o;54767:165::-;54876:45;54896:24;54914:5;54896:24;:::i;:::-;54876:45;:::i;:::-;54871:3;54864:58;54767:165;;:::o;54942:106::-;54975:8;55031:5;55027:2;55023:14;54998:39;;54942:106;;;:::o;55058:102::-;55097:7;55130:20;55144:5;55130:20;:::i;:::-;55119:31;;55058:102;;;:::o;55170:108::-;55209:7;55242:26;55262:5;55242:26;:::i;:::-;55231:37;;55170:108;;;:::o;55288:165::-;55397:45;55417:24;55435:5;55417:24;:::i;:::-;55397:45;:::i;:::-;55392:3;55385:58;55288:165;;:::o;55463:719::-;55659:3;55678:75;55749:3;55740:6;55678:75;:::i;:::-;55782:2;55777:3;55773:12;55766:19;;55799:75;55870:3;55861:6;55799:75;:::i;:::-;55903:2;55898:3;55894:12;55887:19;;55920:75;55991:3;55982:6;55920:75;:::i;:::-;56024:2;56019:3;56015:12;56008:19;;56041:75;56112:3;56103:6;56041:75;:::i;:::-;56145:2;56140:3;56136:12;56129:19;;56169:3;56162:10;;55463:719;;;;;;;:::o;56192:249::-;56231:3;56258:24;56276:5;56258:24;:::i;:::-;56249:33;;56308:66;56301:5;56298:77;56295:103;;56378:18;;:::i;:::-;56295:103;56429:1;56422:5;56418:13;56411:20;;56192:249;;;:::o;56451:106::-;56502:6;56540:5;56534:12;56524:22;;56451:106;;;:::o;56567:180::-;56650:11;56688:6;56683:3;56676:19;56732:4;56727:3;56723:14;56708:29;;56567:180;;;;:::o;56757:393::-;56843:3;56875:38;56907:5;56875:38;:::i;:::-;56933:70;56996:6;56991:3;56933:70;:::i;:::-;56926:77;;57016:65;57074:6;57069:3;57062:4;57055:5;57051:16;57016:65;:::i;:::-;57110:29;57132:6;57110:29;:::i;:::-;57105:3;57101:39;57094:46;;56847:303;56757:393;;;;:::o;57160:668::-;57355:4;57397:3;57386:9;57382:19;57374:27;;57415:71;57483:1;57472:9;57468:17;57459:6;57415:71;:::i;:::-;57500:72;57568:2;57557:9;57553:18;57544:6;57500:72;:::i;:::-;57586;57654:2;57643:9;57639:18;57630:6;57586:72;:::i;:::-;57709:9;57703:4;57699:20;57694:2;57683:9;57679:18;57672:48;57741:76;57812:4;57803:6;57741:76;:::i;:::-;57733:84;;57160:668;;;;;;;:::o;57838:153::-;57894:5;57929:6;57923:13;57914:22;;57949:32;57975:5;57949:32;:::i;:::-;57838:153;;;;:::o;58001:373::-;58070:6;58123:2;58111:9;58102:7;58098:23;58094:32;58091:119;;;58129:79;;:::i;:::-;58091:119;58257:1;58286:63;58341:7;58332:6;58321:9;58317:22;58286:63;:::i;:::-;58276:73;;58224:139;58001:373;;;;:::o;58384:246::-;58528:34;58524:1;58516:6;58512:14;58505:58;58601:17;58596:2;58588:6;58584:15;58577:42;58384:246;:::o;58640:382::-;58782:3;58807:67;58871:2;58866:3;58807:67;:::i;:::-;58800:74;;58887:93;58976:3;58887:93;:::i;:::-;59009:2;59004:3;59000:12;58993:19;;58640:382;;;:::o;59032:435::-;59198:4;59240:2;59229:9;59225:18;59217:26;;59293:9;59287:4;59283:20;59279:1;59268:9;59264:17;59257:47;59325:131;59451:4;59325:131;:::i;:::-;59317:139;;59032:435;;;:::o;59477:196::-;59509:1;59530:20;59548:1;59530:20;:::i;:::-;59525:25;;59568:20;59586:1;59568:20;:::i;:::-;59563:25;;59611:1;59601:35;;59616:18;;:::i;:::-;59601:35;59661:1;59658;59654:9;59649:14;;59477:196;;;;:::o;59683:186::-;59855:3;59850;59843:16;59683:186;:::o;59879:723::-;60149:3;60175:95;60266:3;60257:6;60175:95;:::i;:::-;60168:102;;60284:137;60417:3;60284:137;:::i;:::-;60450:1;60445:3;60441:11;60434:18;;60473:95;60564:3;60555:6;60473:95;:::i;:::-;60466:102;;60589:3;60582:10;;59879:723;;;;;:::o;60612:159::-;60756:3;60752:1;60744:6;60740:14;60733:27;60612:159;:::o;60781:416::-;60941:3;60966:84;61048:1;61043:3;60966:84;:::i;:::-;60959:91;;61063:93;61152:3;61063:93;:::i;:::-;61185:1;61180:3;61176:11;61169:18;;60781:416;;;:::o;61207:2023::-;61935:3;61961:95;62052:3;62043:6;61961:95;:::i;:::-;61954:102;;62077:148;62221:3;62077:148;:::i;:::-;62070:155;;62246:95;62337:3;62328:6;62246:95;:::i;:::-;62239:102;;62362:148;62506:3;62362:148;:::i;:::-;62355:155;;62531:95;62622:3;62613:6;62531:95;:::i;:::-;62524:102;;62647:148;62791:3;62647:148;:::i;:::-;62640:155;;62816:95;62907:3;62898:6;62816:95;:::i;:::-;62809:102;;62932:148;63076:3;62932:148;:::i;:::-;62925:155;;63101:95;63192:3;63183:6;63101:95;:::i;:::-;63094:102;;63217:3;63210:10;;61207:2023;;;;;;;;:::o;63240:159::-;63384:3;63380:1;63372:6;63368:14;63361:27;63240:159;:::o;63409:416::-;63569:3;63594:84;63676:1;63671:3;63594:84;:::i;:::-;63587:91;;63691:93;63780:3;63691:93;:::i;:::-;63813:1;63808:3;63804:11;63797:18;;63409:416;;;:::o;63835:159::-;63979:3;63975:1;63967:6;63963:14;63956:27;63835:159;:::o;64004:416::-;64164:3;64189:84;64271:1;64266:3;64189:84;:::i;:::-;64182:91;;64286:93;64375:3;64286:93;:::i;:::-;64408:1;64403:3;64399:11;64392:18;;64004:416;;;:::o;64430:991::-;64812:3;64838:148;64982:3;64838:148;:::i;:::-;64831:155;;65007:95;65098:3;65089:6;65007:95;:::i;:::-;65000:102;;65123:148;65267:3;65123:148;:::i;:::-;65116:155;;65292:95;65383:3;65374:6;65292:95;:::i;:::-;65285:102;;65408:3;65401:10;;64430:991;;;;;:::o;65431:160::-;65575:4;65571:1;65563:6;65559:14;65552:28;65431:160;:::o;65601:416::-;65761:3;65786:84;65868:1;65863:3;65786:84;:::i;:::-;65779:91;;65883:93;65972:3;65883:93;:::i;:::-;66005:1;66000:3;65996:11;65989:18;;65601:416;;;:::o;66027:1155::-;66457:3;66483:95;66574:3;66565:6;66483:95;:::i;:::-;66476:102;;66599:148;66743:3;66599:148;:::i;:::-;66592:155;;66768:95;66859:3;66850:6;66768:95;:::i;:::-;66761:102;;66884:148;67028:3;66884:148;:::i;:::-;66877:155;;67053:95;67144:3;67135:6;67053:95;:::i;:::-;67046:102;;67169:3;67162:10;;66027:1155;;;;;;:::o;67192:190::-;67336:34;67332:1;67324:6;67320:14;67313:58;67192:190;:::o;67392:382::-;67534:3;67559:67;67623:2;67618:3;67559:67;:::i;:::-;67552:74;;67639:93;67728:3;67639:93;:::i;:::-;67761:2;67756:3;67752:12;67745:19;;67392:382;;;:::o;67784:435::-;67950:4;67992:2;67981:9;67977:18;67969:26;;68045:9;68039:4;68035:20;68031:1;68020:9;68016:17;68009:47;68077:131;68203:4;68077:131;:::i;:::-;68069:139;;67784:435;;;:::o;68229:186::-;68373:30;68369:1;68361:6;68357:14;68350:54;68229:186;:::o;68425:382::-;68567:3;68592:67;68656:2;68651:3;68592:67;:::i;:::-;68585:74;;68672:93;68761:3;68672:93;:::i;:::-;68794:2;68789:3;68785:12;68778:19;;68425:382;;;:::o;68817:435::-;68983:4;69025:2;69014:9;69010:18;69002:26;;69078:9;69072:4;69068:20;69064:1;69053:9;69049:17;69042:47;69110:131;69236:4;69110:131;:::i;:::-;69102:139;;68817:435;;;:::o
Swarm Source
ipfs://9c0a0d298d09ceb7c605a1c6b0852522c2fb97a45e9858125bdd676aa26d4574
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.