@ecency/sdk 1.3.8 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/modules/core/mock-storage.ts","../../src/modules/core/config.ts","../../src/modules/core/utils/decoder-encoder.ts","../../src/modules/core/utils/parse-asset.ts","../../src/modules/core/utils/get-bound-fetch.ts","../../src/modules/core/storage.ts","../../src/modules/keychain/keychain.ts","../../src/modules/core/mutations/use-broadcast-mutation.ts","../../src/modules/core/mutations/broadcast-json.ts","../../src/modules/core/queries-manager.ts","../../src/modules/core/queries/get-dynamic-props-query-options.ts","../../src/modules/accounts/queries/get-account-full-query-options.ts","../../src/modules/accounts/utils/profile-metadata.ts","../../src/modules/accounts/utils/parse-accounts.ts","../../src/modules/accounts/queries/get-accounts-query-options.ts","../../src/modules/accounts/queries/get-follow-count-query-options.ts","../../src/modules/accounts/queries/get-following-query-options.ts","../../src/modules/accounts/queries/get-muted-users-query-options.ts","../../src/modules/accounts/queries/lookup-accounts-query-options.ts","../../src/modules/accounts/queries/search-accounts-by-username-query-options.ts","../../src/modules/accounts/queries/check-username-wallets-pending-query-options.ts","../../src/modules/accounts/queries/get-relationship-between-accounts-query-options.ts","../../src/modules/accounts/queries/get-account-subscriptions-query-options.ts","../../src/modules/accounts/queries/get-active-account-bookmarks-query-options.ts","../../src/modules/accounts/queries/get-active-account-favourites-query-options.ts","../../src/modules/accounts/queries/get-account-recoveries-query-options.ts","../../src/modules/accounts/queries/get-account-pending-recovery-query-options.ts","../../src/modules/accounts/queries/get-transactions-infinite-query-options.ts","../../src/modules/accounts/queries/get-bots-query-options.ts","../../src/modules/accounts/queries/get-referrals-infinite-query-options.ts","../../src/modules/accounts/queries/get-referrals-stats-query-options.ts","../../src/modules/accounts/queries/get-friends-infinite-query-options.ts","../../src/modules/accounts/queries/get-search-friends-query-options.ts","../../src/modules/posts/queries/get-trending-tags-query-options.ts","../../src/modules/posts/queries/get-fragments-query-options.ts","../../src/modules/posts/queries/get-promoted-posts-query-options.ts","../../src/modules/posts/queries/get-entry-active-votes-query-options.ts","../../src/modules/posts/queries/get-post-header-query-options.ts","../../src/modules/posts/utils/filter-dmca-entries.ts","../../src/modules/posts/queries/get-post-query-options.ts","../../src/modules/posts/queries/get-discussions-query-options.ts","../../src/modules/posts/queries/get-account-posts-query-options.ts","../../src/modules/posts/queries/get-posts-ranked-query-options.ts","../../src/modules/posts/queries/get-reblogs-query-options.ts","../../src/modules/posts/queries/get-schedules-query-options.ts","../../src/modules/posts/queries/get-drafts-query-options.ts","../../src/modules/posts/queries/get-images-query-options.ts","../../src/modules/posts/queries/get-comment-history-query-options.ts","../../src/modules/posts/queries/get-deleted-entry-query-options.ts","../../src/modules/posts/queries/get-post-tips-query-options.ts","../../src/modules/posts/utils/waves-helpers.ts","../../src/modules/posts/queries/get-waves-by-host-query-options.ts","../../src/modules/posts/queries/get-waves-by-tag-query-options.ts","../../src/modules/posts/queries/get-waves-following-query-options.ts","../../src/modules/posts/queries/get-waves-trending-tags-query-options.ts","../../src/modules/accounts/queries/get-account-vote-history-infinite-query-options.ts","../../src/modules/accounts/mutations/use-account-update.ts","../../src/modules/accounts/mutations/use-account-relations-update.ts","../../src/modules/accounts/mutations/bookmarks/use-account-bookmark-add.ts","../../src/modules/accounts/mutations/bookmarks/use-account-bookmark-delete.ts","../../src/modules/accounts/mutations/favourites/use-account-favourite-add.ts","../../src/modules/accounts/mutations/favourites/use-account-favourite-delete.ts","../../src/modules/accounts/mutations/use-account-update-key-auths.ts","../../src/modules/accounts/mutations/use-account-update-password.ts","../../src/modules/accounts/mutations/use-account-revoke-posting.ts","../../src/modules/accounts/mutations/use-account-update-recovery.ts","../../src/modules/accounts/mutations/use-account-revoke-key.ts","../../src/modules/operations/mutations/sign-operation-by-key.ts","../../src/modules/operations/mutations/sign-operation-by-keychain.ts","../../src/modules/operations/mutations/sign-operation-by-hivesigner.ts","../../src/modules/operations/queries/get-chain-properties-query-options.ts","../../src/modules/posts/mutations/add-fragment.ts","../../src/modules/posts/mutations/edit-fragment.ts","../../src/modules/posts/mutations/remove-fragment.ts","../../src/modules/analytics/mutations/index.ts","../../src/modules/analytics/mutations/use-record-activity.ts","../../src/modules/analytics/queries/get-discover-leaderboard-query-options.ts","../../src/modules/analytics/queries/get-discover-curation-query-options.ts","../../src/modules/analytics/queries/get-page-stats-query-options.ts","../../src/modules/integrations/3speak/queries/index.ts","../../src/modules/integrations/hivesigner/queries/index.ts","../../src/modules/integrations/hivesigner/queries/get-decode-memo-query-options.ts","../../src/modules/integrations/hivesigner/index.ts","../../src/modules/integrations/3speak/queries/get-account-token-query-options.ts","../../src/modules/integrations/3speak/queries/get-account-videos-query-options.ts","../../src/modules/integrations/3speak/index.ts","../../src/modules/integrations/hiveposh/queries/get-hiveposh-links-query-options.ts","../../src/modules/integrations/plausible/queries/get-stats-query-options.ts","../../src/modules/resource-credits/queries/get-rc-stats-query-options.ts","../../src/modules/resource-credits/queries/get-account-rc-query-options.ts","../../src/modules/games/queries/game-status-check-query-options.ts","../../src/modules/games/mutations/game-claim.ts","../../src/modules/communities/queries/get-communities-query-options.ts","../../src/modules/communities/queries/get-community-context-query-options.ts","../../src/modules/communities/queries/get-community-subscribers-query-options.ts","../../src/modules/communities/queries/get-account-notifications-infinite-query-options.ts","../../src/modules/communities/queries/get-rewarded-communities-query-options.ts","../../src/modules/communities/types/community.ts","../../src/modules/communities/utils/index.ts","../../src/modules/notifications/queries/get-notifications-unread-count-query-options.ts","../../src/modules/notifications/queries/get-notifications-infinite-query-options.ts","../../src/modules/notifications/enums/notification-filter.ts","../../src/modules/notifications/enums/notify-types.ts","../../src/modules/notifications/queries/get-notifications-settings-query-options.ts","../../src/modules/notifications/queries/get-announcements-query-options.ts","../../src/modules/proposals/queries/get-proposal-query-options.ts","../../src/modules/proposals/queries/get-proposals-query-options.ts","../../src/modules/proposals/queries/get-proposal-votes-query-options.ts","../../src/modules/proposals/queries/get-user-proposal-votes-query-options.ts","../../src/modules/wallet/queries/get-vesting-delegations-query-options.ts","../../src/modules/wallet/queries/get-conversion-requests-query-options.ts","../../src/modules/wallet/queries/get-collateralized-conversion-requests-query-options.ts","../../src/modules/wallet/queries/get-savings-withdraw-from-query-options.ts","../../src/modules/wallet/queries/get-withdraw-routes-query-options.ts","../../src/modules/wallet/queries/get-open-orders-query-options.ts","../../src/modules/wallet/queries/get-outgoing-rc-delegations-infinite-query-options.ts","../../src/modules/wallet/queries/get-received-vesting-shares-query-options.ts","../../src/modules/witnesses/queries/get-witnesses-query-options.ts","../../src/modules/market/queries/get-order-book-query-options.ts","../../src/modules/market/queries/get-market-statistics-query-options.ts","../../src/modules/market/queries/get-market-history-query-options.ts","../../src/modules/market/queries/get-hive-hbd-stats-query-options.ts","../../src/modules/market/queries/get-market-data-query-options.ts","../../src/modules/points/queries/get-points-query-options.ts","../../src/modules/search/queries/get-search-query-options.ts","../../src/modules/search/queries/get-similar-entries-query-options.ts","../../src/modules/search/queries/get-search-account-query-options.ts","../../src/modules/search/queries/get-search-topics-query-options.ts","../../src/modules/search/queries/get-search-api-infinite-query-options.ts","../../src/modules/search/queries/get-search-path-query-options.ts","../../src/modules/promotions/queries/get-boost-plus-prices-query-options.ts","../../src/modules/promotions/queries/get-promote-price-query-options.ts","../../src/modules/promotions/queries/get-boost-plus-account-prices-query-options.ts"],"names":["Client","QueryClient","ConfigManager","Symbol","NaiMap","useMutation","PrivateKey","hs","EcencyQueriesManager","useQuery","useInfiniteQuery","queryOptions","R","utils","infiniteQueryOptions","SortOrder","parseAsset","makeEntryPath","useQueryClient","data","R2","R3","R4","R5","cryptoUtils","queries_exports","RCAPI","ROLES","NotificationFilter","NotifyTypes","NotificationViewType"],"mappings":"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","file":"index.cjs","sourcesContent":["export class MockStorage implements Storage {\n [name: string]: any;\n\n length: number = 0;\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getItem(key: string): string | null {\n return this[key];\n }\n\n key(index: number): string | null {\n return Object.keys(this)[index];\n }\n\n removeItem(key: string): void {\n delete this[key];\n }\n\n setItem(key: string, value: string): void {\n this[key] = value;\n }\n}\n","import { Client } from \"@hiveio/dhive\";\nimport { MockStorage } from \"./mock-storage\";\nimport { QueryClient } from \"@tanstack/react-query\";\n\nexport const CONFIG = {\n privateApiHost: \"https://ecency.com\",\n storage:\n typeof window === \"undefined\" ? new MockStorage() : window.localStorage,\n storagePrefix: \"ecency\",\n hiveClient: new Client(\n [\n \"https://api.hive.blog\",\n \"https://api.deathwing.me\",\n \"https://rpc.mahdiyari.info\",\n \"https://api.openhive.network\",\n \"https://techcoderx.com\",\n \"https://hive-api.arcange.eu\",\n \"https://api.syncad.com\",\n \"https://anyx.io\",\n \"https://api.c0ff33a.uk\",\n \"https://hiveapi.actifit.io\",\n \"https://hive-api.3speak.tv\",\n ],\n {\n timeout: 2000,\n failoverThreshold: 2,\n consoleOnFailover: true\n }\n ),\n heliusApiKey: process.env.VITE_HELIUS_API_KEY,\n queryClient: new QueryClient(),\n plausibleHost: \"https://pl.ecency.com\",\n spkNode: \"https://spk.good-karma.xyz\",\n // DMCA filtering - can be configured by the app\n dmcaAccounts: [] as string[],\n dmcaTags: [] as string[],\n dmcaPatterns: [] as string[],\n // Pre-compiled regex patterns for performance and security\n dmcaTagRegexes: [] as RegExp[],\n dmcaPatternRegexes: [] as RegExp[],\n // Track if DMCA has been initialized to avoid duplicate logs\n _dmcaInitialized: false,\n};\n\nexport namespace ConfigManager {\n export function setQueryClient(client: QueryClient) {\n CONFIG.queryClient = client;\n }\n\n /**\n * Static analysis: Check for known ReDoS-vulnerable patterns\n * @param pattern - Raw regex pattern string\n * @returns Object with risk level and reason\n */\n function analyzeRedosRisk(pattern: string): { safe: boolean; reason?: string } {\n // Check 1: Nested quantifiers (e.g., (a+)+, (a*)+, (a{1,})+)\n if (/(\\([^)]*[*+{][^)]*\\))[*+{]/.test(pattern)) {\n return { safe: false, reason: \"nested quantifiers detected\" };\n }\n\n // Check 2: Alternation with overlapping terms (e.g., (a|a)+, (ab|a)+)\n if (/\\([^|)]*\\|[^)]*\\)[*+{]/.test(pattern)) {\n return { safe: false, reason: \"alternation with quantifier (potential overlap)\" };\n }\n\n // Check 3: Catastrophic backtracking patterns (e.g., (a*)*b, (a+)+b)\n if (/\\([^)]*[*+][^)]*\\)[*+]/.test(pattern)) {\n return { safe: false, reason: \"repeated quantifiers (catastrophic backtracking risk)\" };\n }\n\n // Check 4: Greedy quantifiers followed by optional patterns (e.g., .*.*x, .+.+x)\n if (/\\.\\*\\.\\*/.test(pattern) || /\\.\\+\\.\\+/.test(pattern)) {\n return { safe: false, reason: \"multiple greedy quantifiers on wildcards\" };\n }\n\n // Check 5: Unbounded ranges with wildcards (e.g., .{1,999999})\n const unboundedRange = /\\.?\\{(\\d+),(\\d+)\\}/g;\n let match;\n while ((match = unboundedRange.exec(pattern)) !== null) {\n const [, min, max] = match;\n const range = parseInt(max, 10) - parseInt(min, 10);\n if (range > 1000) {\n return { safe: false, reason: `excessive range: {${min},${max}}` };\n }\n }\n\n return { safe: true };\n }\n\n /**\n * Runtime test: Execute regex against adversarial inputs with timeout\n * @param regex - Compiled regex\n * @returns Object indicating if regex passed runtime test\n */\n function testRegexPerformance(regex: RegExp): { safe: boolean; reason?: string } {\n // Test inputs designed to trigger ReDoS in vulnerable patterns\n const adversarialInputs = [\n // Nested quantifier attack\n \"a\".repeat(50) + \"x\",\n // Alternation attack\n \"ab\".repeat(50) + \"x\",\n // Wildcard attack\n \"x\".repeat(100),\n // Mixed attack\n \"aaa\".repeat(30) + \"bbb\".repeat(30) + \"x\",\n ];\n\n const maxExecutionTime = 5; // 5ms hard limit per test\n\n for (const input of adversarialInputs) {\n const start = Date.now();\n try {\n regex.test(input);\n const duration = Date.now() - start;\n\n if (duration > maxExecutionTime) {\n return {\n safe: false,\n reason: `runtime test exceeded ${maxExecutionTime}ms (took ${duration}ms on input length ${input.length})`\n };\n }\n } catch (err) {\n return { safe: false, reason: `runtime test threw error: ${err}` };\n }\n }\n\n return { safe: true };\n }\n\n /**\n * Safely compile a regex pattern with defense-in-depth validation\n * @param pattern - Raw regex pattern string\n * @param maxLength - Maximum allowed pattern length (default 200)\n * @returns Compiled RegExp or null if invalid/unsafe\n */\n function safeCompileRegex(pattern: string, maxLength = 200): RegExp | null {\n try {\n // Layer 1: Basic validation\n if (!pattern) {\n console.warn(`[SDK] DMCA pattern rejected: empty pattern`);\n return null;\n }\n\n if (pattern.length > maxLength) {\n console.warn(`[SDK] DMCA pattern rejected: length ${pattern.length} exceeds max ${maxLength} - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n // Layer 2: Static ReDoS analysis\n const staticAnalysis = analyzeRedosRisk(pattern);\n if (!staticAnalysis.safe) {\n console.warn(`[SDK] DMCA pattern rejected: static analysis failed (${staticAnalysis.reason}) - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n // Layer 3: Compilation attempt\n let regex: RegExp;\n try {\n regex = new RegExp(pattern);\n } catch (compileErr) {\n console.warn(`[SDK] DMCA pattern rejected: compilation failed - pattern: ${pattern.substring(0, 50)}...`, compileErr);\n return null;\n }\n\n // Layer 4: Runtime performance testing\n const runtimeTest = testRegexPerformance(regex);\n if (!runtimeTest.safe) {\n console.warn(`[SDK] DMCA pattern rejected: runtime test failed (${runtimeTest.reason}) - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n return regex;\n } catch (err) {\n console.warn(`[SDK] DMCA pattern rejected: unexpected error - pattern: ${pattern.substring(0, 50)}...`, err);\n return null;\n }\n }\n\n /**\n * Set DMCA filtering lists\n * @param accounts - List of account usernames to filter (plain strings)\n * @param tags - List of tag patterns (regex strings) to filter\n * @param patterns - List of post patterns (plain strings) like \"@author/permlink\" for exact matching\n */\n export function setDmcaLists(\n accounts: string[] = [],\n tags: string[] = [],\n patterns: string[] = []\n ) {\n CONFIG.dmcaAccounts = accounts;\n CONFIG.dmcaTags = tags;\n CONFIG.dmcaPatterns = patterns;\n\n // Pre-compile tag regex patterns (tags can be regex)\n CONFIG.dmcaTagRegexes = tags\n .map((pattern) => safeCompileRegex(pattern))\n .filter((r): r is RegExp => r !== null);\n\n // Post patterns are plain strings for exact matching, not regex\n // No compilation needed - they will be used with simple string comparison\n CONFIG.dmcaPatternRegexes = [];\n\n const rejectedTagCount = tags.length - CONFIG.dmcaTagRegexes.length;\n\n // Only log once to avoid noise during builds/hot reloads\n if (!CONFIG._dmcaInitialized) {\n console.log(`[SDK] DMCA configuration loaded:`);\n console.log(` - Accounts: ${accounts.length}`);\n console.log(` - Tag patterns: ${CONFIG.dmcaTagRegexes.length}/${tags.length} compiled (${rejectedTagCount} rejected)`);\n console.log(` - Post patterns: ${patterns.length} (using exact string matching)`);\n\n if (rejectedTagCount > 0) {\n console.warn(`[SDK] ${rejectedTagCount} DMCA tag patterns were rejected due to security validation. Check warnings above for details.`);\n }\n\n CONFIG._dmcaInitialized = true;\n }\n }\n}\n","export function encodeObj(o: any): string {\n return btoa(JSON.stringify(o));\n}\n\nexport function decodeObj(o: any): any {\n let dataToParse = atob(o);\n if (dataToParse[0] !== \"{\") {\n return undefined;\n }\n return JSON.parse(dataToParse);\n}\n","import { SMTAsset } from \"@hiveio/dhive\";\n\nexport enum Symbol {\n HIVE = \"HIVE\",\n HBD = \"HBD\",\n VESTS = \"VESTS\",\n SPK = \"SPK\",\n}\n\nexport enum NaiMap {\n \"@@000000021\" = \"HIVE\",\n \"@@000000013\" = \"HBD\",\n \"@@000000037\" = \"VESTS\",\n}\n\nexport interface Asset {\n amount: number;\n symbol: Symbol;\n}\n\nexport function parseAsset(sval: string | SMTAsset): Asset {\n if (typeof sval === \"string\") {\n const sp = sval.split(\" \");\n return {\n amount: parseFloat(sp[0]),\n // @ts-ignore\n symbol: Symbol[sp[1]],\n };\n } else {\n return {\n amount: parseFloat(sval.amount.toString()) / Math.pow(10, sval.precision),\n // @ts-ignore\n symbol: NaiMap[sval.nai],\n };\n }\n}\n","let cachedFetch: typeof globalThis.fetch | undefined;\n\nexport function getBoundFetch() {\n if (!cachedFetch) {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"[Ecency][SDK] - global fetch is not available\");\n }\n\n cachedFetch = globalThis.fetch.bind(globalThis);\n }\n\n return cachedFetch;\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { StoringUser } from \"./entities\";\nimport { decodeObj } from \"./utils\";\n\nexport const getUser = (username: string): StoringUser | undefined => {\n try {\n const raw = CONFIG.storage.getItem(\n CONFIG.storagePrefix + \"_user_\" + username\n );\n return decodeObj(JSON.parse(raw!)) as StoringUser;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n};\n\nexport const getAccessToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.accessToken;\n\nexport const getPostingKey = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.postingKey;\n\nexport const getLoginType = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.loginType;\n\nexport const getRefreshToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.refreshToken;\n","import { Operation } from \"@hiveio/dhive\";\n\ntype KeychainedWindow = {\n hive_keychain?: any;\n} & Window;\n\ndeclare var window: KeychainedWindow;\n\nexport type KeychainAuthorityTypes = \"Owner\" | \"Active\" | \"Posting\" | \"Memo\";\n\ninterface TxResponse {\n success: boolean;\n result: string;\n}\n\nexport function handshake() {\n return new Promise<void>((resolve) => {\n window.hive_keychain?.requestHandshake(() => {\n resolve();\n });\n });\n}\n\nexport const broadcast = (\n account: string,\n operations: Operation[],\n key: KeychainAuthorityTypes,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestBroadcast(\n account,\n operations,\n key,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n },\n rpc\n );\n });\n\nexport const customJson = (\n account: string,\n id: string,\n key: KeychainAuthorityTypes,\n json: string,\n display_msg: string,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestCustomJson(\n account,\n id,\n key,\n json,\n display_msg,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n resolve(resp);\n },\n rpc\n );\n });\n","import {\n useMutation,\n type MutationKey,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccessToken, getLoginType, getPostingKey } from \"../storage\";\nimport { Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { CONFIG, getBoundFetch } from \"@/modules/core\";\n//import hs from \"hivesigner\";\nimport { Keychain } from \"@/modules/keychain\";\n\nexport function useBroadcastMutation<T>(\n mutationKey: MutationKey = [],\n username: string | undefined,\n operations: (payload: T) => Operation[],\n onSuccess: UseMutationOptions<unknown, Error, T>[\"onSuccess\"] = () => {}\n) {\n return useMutation({\n onSuccess,\n mutationKey: [...mutationKey, username],\n mutationFn: async (payload: T) => {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n operations(payload),\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == \"keychain\") {\n return Keychain.broadcast(\n username,\n operations(payload),\n \"Posting\"\n ).then((r: any) => r.result);\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const f = getBoundFetch();\n const res = await f(\"https://hivesigner.com/api/broadcast\", {\n method: \"POST\",\n headers: {\n Authorization: token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ operations: operations(payload) }),\n });\n\n if (!res.ok) {\n const txt = await res.text().catch(() => \"\");\n throw new Error(`[Hivesigner] ${res.status} ${res.statusText} ${txt}`);\n }\n\n const json = await res.json();\n if (json?.errors) {\n throw new Error(`[Hivesigner] ${JSON.stringify(json.errors)}`);\n }\n return json.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport {getAccessToken, getLoginType, getPostingKey} from \"../storage\";\nimport {Keychain} from \"@/modules/keychain\";\n\nexport async function broadcastJson<T>(\n username: string | undefined,\n id: string,\n payload: T\n) {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n const jjson = {\n id,\n required_auths: [],\n required_posting_auths: [username],\n json: JSON.stringify(payload),\n };\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.json(\n jjson,\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == 'keychain') {\n return Keychain.broadcast(username, [[\"custom_json\", jjson]], \"Posting\").then((r: any) => r.result)\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const response = await new hs.Client({\n accessToken: token,\n }).customJson([], [username], id, JSON.stringify(payload));\n return response.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n}\n","import {\n InfiniteData,\n QueryClient,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { CONFIG } from \"./config\";\n\nexport function makeQueryClient() {\n // Cache creates one single instance per request in a server side\n return new QueryClient({\n defaultOptions: {\n queries: {\n // With SSR, we usually want to set some default staleTime\n // above 0 to avoid refetching immediately on the client\n // staleTime: 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n },\n });\n}\nexport const getQueryClient = () => CONFIG.queryClient;\n\nexport namespace EcencyQueriesManager {\n export function getQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<T>(queryKey);\n }\n\n export function getInfiniteQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<InfiniteData<T>>(queryKey);\n }\n\n export async function prefetchQuery<T>(options: UseQueryOptions<T>) {\n const queryClient = getQueryClient();\n await queryClient.prefetchQuery(options);\n return getQueryData<T>(options.queryKey);\n }\n\n export async function prefetchInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n const queryClient = getQueryClient();\n await queryClient.prefetchInfiniteQuery(options);\n return getInfiniteQueryData<T>(options.queryKey);\n }\n\n export function generateClientServerQuery<T>(options: UseQueryOptions<T>) {\n return {\n prefetch: () => prefetchQuery(options),\n getData: () => getQueryData<T>(options.queryKey),\n useClientQuery: () => useQuery(options),\n fetchAndGet: () => getQueryClient().fetchQuery(options),\n };\n }\n\n export function generateClientServerInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n return {\n prefetch: () => prefetchInfiniteQuery(options),\n getData: () => getInfiniteQueryData<T>(options.queryKey),\n useClientQuery: () => useInfiniteQuery(options),\n fetchAndGet: () => getQueryClient().fetchInfiniteQuery(options),\n };\n }\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { DynamicProps } from \"../types\";\nimport { CONFIG } from \"../config\";\nimport { parseAsset } from \"../utils\";\n\nexport function getDynamicPropsQueryOptions() {\n return queryOptions({\n queryKey: [\"core\", \"dynamic-props\"],\n refetchInterval: 60000,\n staleTime: 60000,\n refetchOnMount: true,\n queryFn: async (): Promise<DynamicProps> => {\n const globalDynamic = await CONFIG.hiveClient.database\n .getDynamicGlobalProperties()\n .then((r: any) => ({\n total_vesting_fund_hive:\n r.total_vesting_fund_hive || r.total_vesting_fund_steem,\n total_vesting_shares: r.total_vesting_shares,\n hbd_print_rate: r.hbd_print_rate || r.sbd_print_rate,\n hbd_interest_rate: r.hbd_interest_rate,\n head_block_number: r.head_block_number,\n vesting_reward_percent: r.vesting_reward_percent,\n virtual_supply: r.virtual_supply,\n }));\n\n const feedHistory =\n await CONFIG.hiveClient.database.call(\"get_feed_history\");\n const chainProps = await CONFIG.hiveClient.database.call(\n \"get_chain_properties\"\n );\n const rewardFund = await CONFIG.hiveClient.database.call(\n \"get_reward_fund\",\n [\"post\"]\n );\n\n const hivePerMVests =\n (parseAsset(globalDynamic.total_vesting_fund_hive).amount /\n parseAsset(globalDynamic.total_vesting_shares).amount) *\n 1e6;\n const base = parseAsset(feedHistory.current_median_history.base).amount;\n const quote = parseAsset(feedHistory.current_median_history.quote).amount;\n const fundRecentClaims = parseFloat(rewardFund.recent_claims);\n const fundRewardBalance = parseAsset(rewardFund.reward_balance).amount;\n const hbdPrintRate = globalDynamic.hbd_print_rate;\n const hbdInterestRate = globalDynamic.hbd_interest_rate;\n const headBlock = globalDynamic.head_block_number;\n const totalVestingFund = parseAsset(\n globalDynamic.total_vesting_fund_hive\n ).amount;\n const totalVestingShares = parseAsset(\n globalDynamic.total_vesting_shares\n ).amount;\n const virtualSupply = parseAsset(globalDynamic.virtual_supply).amount;\n const vestingRewardPercent = globalDynamic.vesting_reward_percent;\n const accountCreationFee = chainProps.account_creation_fee;\n\n return {\n hivePerMVests,\n base,\n quote,\n fundRecentClaims,\n fundRewardBalance,\n hbdPrintRate,\n hbdInterestRate,\n headBlock,\n totalVestingFund,\n totalVestingShares,\n virtualSupply,\n vestingRewardPercent,\n accountCreationFee,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport {\n AccountFollowStats,\n AccountReputation,\n FullAccount,\n} from \"../types\";\nimport { parseProfileMetadata } from \"@/modules/accounts\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountFullQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"get-account-full\", username],\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK] Username is empty\");\n }\n\n const response = (await CONFIG.hiveClient.database.getAccounts([\n username,\n ])) as any[];\n if (!response[0]) {\n throw new Error(\"[SDK] No account with given username\");\n }\n\n const profile = parseProfileMetadata(response[0].posting_json_metadata);\n\n let follow_stats: AccountFollowStats | undefined;\n try {\n follow_stats = await CONFIG.hiveClient.database.call(\n \"get_follow_count\",\n [username]\n );\n } catch (e) {}\n\n let reputationValue = 0;\n try {\n const reputation = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_reputations\",\n [username, 1]\n )) as AccountReputation[];\n reputationValue = reputation[0]?.reputation ?? 0;\n } catch (e) {}\n\n return {\n name: response[0].name,\n owner: response[0].owner,\n active: response[0].active,\n posting: response[0].posting,\n memo_key: response[0].memo_key,\n post_count: response[0].post_count,\n created: response[0].created,\n posting_json_metadata: response[0].posting_json_metadata,\n last_vote_time: response[0].last_vote_time,\n last_post: response[0].last_post,\n json_metadata: response[0].json_metadata,\n reward_hive_balance: response[0].reward_hive_balance,\n reward_hbd_balance: response[0].reward_hbd_balance,\n reward_vesting_hive: response[0].reward_vesting_hive,\n reward_vesting_balance: response[0].reward_vesting_balance,\n balance: response[0].balance,\n hbd_balance: response[0].hbd_balance,\n savings_balance: response[0].savings_balance,\n savings_hbd_balance: response[0].savings_hbd_balance,\n savings_hbd_last_interest_payment:\n response[0].savings_hbd_last_interest_payment,\n savings_hbd_seconds_last_update:\n response[0].savings_hbd_seconds_last_update,\n savings_hbd_seconds: response[0].savings_hbd_seconds,\n next_vesting_withdrawal: response[0].next_vesting_withdrawal,\n pending_claimed_accounts: response[0].pending_claimed_accounts,\n vesting_shares: response[0].vesting_shares,\n delegated_vesting_shares: response[0].delegated_vesting_shares,\n received_vesting_shares: response[0].received_vesting_shares,\n vesting_withdraw_rate: response[0].vesting_withdraw_rate,\n to_withdraw: response[0].to_withdraw,\n withdrawn: response[0].withdrawn,\n witness_votes: response[0].witness_votes,\n proxy: response[0].proxy,\n recovery_account: response[0].recovery_account,\n proxied_vsf_votes: response[0].proxied_vsf_votes,\n voting_manabar: response[0].voting_manabar,\n voting_power: response[0].voting_power,\n downvote_manabar: response[0].downvote_manabar,\n follow_stats,\n reputation: reputationValue,\n profile,\n } satisfies FullAccount;\n },\n enabled: !!username,\n staleTime: 60000,\n });\n}\n","import * as R from \"remeda\";\n\nimport { AccountProfile, FullAccount } from \"../types\";\n\nexport type ProfileTokens = AccountProfile[\"tokens\"];\n\nexport interface BuildProfileMetadataArgs {\n existingProfile?: AccountProfile;\n profile?: Partial<AccountProfile> | null;\n tokens?: ProfileTokens | null;\n}\n\nfunction sanitizeTokens(\n tokens?: ProfileTokens | null\n): ProfileTokens | undefined {\n return tokens?.map(({ meta, ...rest }) => {\n if (!meta || typeof meta !== \"object\") {\n return { ...rest, meta };\n }\n\n const { privateKey, username, ...safeMeta } = meta;\n return { ...rest, meta: safeMeta };\n });\n}\n\nexport function parseProfileMetadata(\n postingJsonMetadata?: string | null\n): AccountProfile {\n if (!postingJsonMetadata) {\n return {} as AccountProfile;\n }\n\n try {\n const parsed = JSON.parse(postingJsonMetadata);\n if (\n parsed &&\n typeof parsed === \"object\" &&\n parsed.profile &&\n typeof parsed.profile === \"object\"\n ) {\n return parsed.profile as AccountProfile;\n }\n } catch (err) {}\n\n return {} as AccountProfile;\n}\n\nexport function extractAccountProfile(\n data?: Pick<FullAccount, \"posting_json_metadata\"> | null\n): AccountProfile {\n return parseProfileMetadata(data?.posting_json_metadata);\n}\n\nexport function buildProfileMetadata({\n existingProfile,\n profile,\n tokens,\n}: BuildProfileMetadataArgs): AccountProfile {\n const { tokens: profileTokens, version: _ignoredVersion, ...profileRest } =\n profile ?? {};\n\n const metadata = R.mergeDeep(\n existingProfile ?? ({} as AccountProfile),\n profileRest\n );\n\n const nextTokens = tokens ?? profileTokens;\n\n if (nextTokens && nextTokens.length > 0) {\n metadata.tokens = nextTokens;\n }\n\n metadata.tokens = sanitizeTokens(metadata.tokens);\n metadata.version = 2;\n\n return metadata;\n}\n","import { FullAccount, AccountProfile } from \"../types\";\nimport { parseProfileMetadata } from \"./profile-metadata\";\n\n/**\n * Parses raw account data from Hive API into FullAccount type\n * Handles profile metadata extraction from posting_json_metadata or json_metadata\n */\nexport function parseAccounts(rawAccounts: any[]): FullAccount[] {\n return rawAccounts.map((x) => {\n const account: FullAccount = {\n name: x.name,\n owner: x.owner,\n active: x.active,\n posting: x.posting,\n memo_key: x.memo_key,\n post_count: x.post_count,\n created: x.created,\n reputation: x.reputation,\n posting_json_metadata: x.posting_json_metadata,\n last_vote_time: x.last_vote_time,\n last_post: x.last_post,\n json_metadata: x.json_metadata,\n reward_hive_balance: x.reward_hive_balance,\n reward_hbd_balance: x.reward_hbd_balance,\n reward_vesting_hive: x.reward_vesting_hive,\n reward_vesting_balance: x.reward_vesting_balance,\n balance: x.balance,\n hbd_balance: x.hbd_balance,\n savings_balance: x.savings_balance,\n savings_hbd_balance: x.savings_hbd_balance,\n savings_hbd_last_interest_payment: x.savings_hbd_last_interest_payment,\n savings_hbd_seconds_last_update: x.savings_hbd_seconds_last_update,\n savings_hbd_seconds: x.savings_hbd_seconds,\n next_vesting_withdrawal: x.next_vesting_withdrawal,\n pending_claimed_accounts: x.pending_claimed_accounts,\n vesting_shares: x.vesting_shares,\n delegated_vesting_shares: x.delegated_vesting_shares,\n received_vesting_shares: x.received_vesting_shares,\n vesting_withdraw_rate: x.vesting_withdraw_rate,\n to_withdraw: x.to_withdraw,\n withdrawn: x.withdrawn,\n witness_votes: x.witness_votes,\n proxy: x.proxy,\n recovery_account: x.recovery_account,\n proxied_vsf_votes: x.proxied_vsf_votes,\n voting_manabar: x.voting_manabar,\n voting_power: x.voting_power,\n downvote_manabar: x.downvote_manabar,\n };\n\n // Try to parse profile from posting_json_metadata first\n let profile: AccountProfile | undefined = parseProfileMetadata(\n x.posting_json_metadata\n );\n\n // Fallback to json_metadata if posting_json_metadata didn't have a profile\n if (!profile || Object.keys(profile).length === 0) {\n try {\n const jsonMetadata = JSON.parse(x.json_metadata || \"{}\");\n if (jsonMetadata.profile) {\n profile = jsonMetadata.profile;\n }\n } catch (e) {\n // Ignore parsing errors\n }\n }\n\n // Ensure we always have a profile object\n if (!profile || Object.keys(profile).length === 0) {\n profile = {\n about: \"\",\n cover_image: \"\",\n location: \"\",\n name: \"\",\n profile_image: \"\",\n website: \"\",\n };\n }\n\n return { ...account, profile };\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { parseAccounts } from \"../utils\";\n\n/**\n * Get multiple accounts by usernames\n */\nexport function getAccountsQueryOptions(usernames: string[]) {\n return queryOptions({\n queryKey: [\"accounts\", \"get-accounts\", usernames],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.database.getAccounts(usernames);\n return parseAccounts(response);\n },\n enabled: usernames.length > 0,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { AccountFollowStats } from \"../types\";\n\n/**\n * Get follow count (followers and following) for an account\n */\nexport function getFollowCountQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"accounts\", \"follow-count\", username],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_follow_count\", [\n username,\n ]) as Promise<AccountFollowStats>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow } from \"../types\";\n\n/**\n * Get list of accounts that a user is following\n *\n * @param follower - The account doing the following\n * @param startFollowing - Pagination start point (account name)\n * @param followType - Type of follow relationship (default: \"blog\")\n * @param limit - Maximum number of results (default: 100)\n */\nexport function getFollowingQueryOptions(\n follower: string | undefined,\n startFollowing: string,\n followType = \"blog\",\n limit = 100\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"following\", follower, startFollowing, followType, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_following\", [\n follower,\n startFollowing,\n followType,\n limit,\n ]) as Promise<Follow[]>,\n enabled: !!follower,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow } from \"../types\";\n\n/**\n * Get list of users that an account has muted\n *\n * @param username - The account username\n * @param limit - Maximum number of results (default: 100)\n */\nexport function getMutedUsersQueryOptions(username: string | undefined, limit = 100) {\n return queryOptions({\n queryKey: [\"accounts\", \"muted-users\", username],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.database.call(\"get_following\", [\n username,\n \"\",\n \"ignore\",\n limit,\n ])) as Follow[];\n\n return response.map((user) => user.following);\n },\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\n\n/**\n * Lookup accounts by username prefix\n *\n * @param query - Username prefix to search for\n * @param limit - Maximum number of results (default: 50)\n */\nexport function lookupAccountsQueryOptions(query: string, limit = 50) {\n return queryOptions({\n queryKey: [\"accounts\", \"lookup\", query, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"lookup_accounts\", [\n query,\n limit,\n ]) as Promise<string[]>,\n enabled: !!query,\n staleTime: Infinity,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getSearchAccountsByUsernameQueryOptions(\n query: string,\n limit = 5,\n excludeList: string[] = []\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"search\", query, excludeList],\n enabled: !!query,\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.database.call(\n \"lookup_accounts\",\n [query, limit]\n )) as string[];\n return response.filter((item) =>\n excludeList.length > 0 ? !excludeList.includes(item) : true\n );\n },\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountProfile } from \"../types\";\n\ntype AccountProfileToken = NonNullable<AccountProfile[\"tokens\"]>[number];\n\nexport type WalletMetadataCandidate = Partial<AccountProfileToken> & {\n currency?: string;\n show?: boolean;\n address?: string;\n publicKey?: string;\n privateKey?: string;\n username?: string;\n};\n\nexport interface CheckUsernameWalletsPendingResponse {\n exist: boolean;\n tokens?: WalletMetadataCandidate[];\n wallets?: WalletMetadataCandidate[];\n}\n\nconst RESERVED_META_KEYS = new Set([\n \"ownerPublicKey\",\n \"activePublicKey\",\n \"postingPublicKey\",\n \"memoPublicKey\",\n]);\n\ninterface WalletsEndpointResponseItem {\n token?: unknown;\n address?: unknown;\n status?: unknown;\n meta?: unknown;\n username?: unknown;\n}\n\nexport function checkUsernameWalletsPendingQueryOptions(\n username: string,\n code: string | undefined\n) {\n return queryOptions<CheckUsernameWalletsPendingResponse>({\n queryKey: [\n \"accounts\",\n \"check-wallet-pending\",\n username,\n code ?? null,\n ],\n queryFn: async () => {\n if (!username || !code) {\n return { exist: false } satisfies CheckUsernameWalletsPendingResponse;\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/wallets\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n code,\n }),\n }\n );\n\n if (!response.ok) {\n return { exist: false } satisfies CheckUsernameWalletsPendingResponse;\n }\n\n const payload = (await response.json()) as unknown;\n\n const wallets: WalletMetadataCandidate[] = Array.isArray(payload)\n ? payload.flatMap((item) => {\n if (!item || typeof item !== \"object\") {\n return [];\n }\n\n const walletItem = item as WalletsEndpointResponseItem;\n\n const symbol =\n typeof walletItem.token === \"string\"\n ? walletItem.token\n : undefined;\n\n if (!symbol) {\n return [];\n }\n\n const meta: Record<string, unknown> =\n walletItem.meta && typeof walletItem.meta === \"object\"\n ? { ...(walletItem.meta as Record<string, unknown>) }\n : {};\n\n const sanitizedMeta: Record<string, unknown> = {};\n\n const address =\n typeof walletItem.address === \"string\" && walletItem.address\n ? walletItem.address\n : undefined;\n\n const statusShow =\n typeof walletItem.status === \"number\"\n ? walletItem.status === 3\n : undefined;\n\n const showFlag = statusShow ?? false;\n\n if (address) {\n sanitizedMeta.address = address;\n }\n\n sanitizedMeta.show = showFlag;\n\n const baseCandidate = {\n symbol,\n currency: symbol,\n address,\n show: showFlag,\n type: \"CHAIN\",\n meta: sanitizedMeta,\n } satisfies WalletMetadataCandidate;\n\n const metaTokenCandidates: WalletMetadataCandidate[] = [];\n\n for (const [metaSymbol, metaValue] of Object.entries(meta)) {\n if (typeof metaSymbol !== \"string\") {\n continue;\n }\n\n if (RESERVED_META_KEYS.has(metaSymbol)) {\n continue;\n }\n\n if (typeof metaValue !== \"string\" || !metaValue) {\n continue;\n }\n\n if (!/^[A-Z0-9]{2,10}$/.test(metaSymbol)) {\n continue;\n }\n\n metaTokenCandidates.push({\n symbol: metaSymbol,\n currency: metaSymbol,\n address: metaValue,\n show: showFlag,\n type: \"CHAIN\",\n meta: { address: metaValue, show: showFlag },\n });\n }\n\n return [baseCandidate, ...metaTokenCandidates];\n })\n : [];\n\n return {\n exist: wallets.length > 0,\n tokens: wallets.length ? wallets : undefined,\n wallets: wallets.length ? wallets : undefined,\n } satisfies CheckUsernameWalletsPendingResponse;\n },\n refetchOnMount: true,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountRelationship } from \"../types\";\n\nexport function getRelationshipBetweenAccountsQueryOptions(\n reference: string | undefined,\n target: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"relations\", reference, target],\n enabled: !!reference && !!target,\n refetchOnMount: false,\n refetchInterval: 3_600_000,\n queryFn: async () => {\n return (await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_relationship_between_accounts\",\n [reference, target]\n )) as AccountRelationship;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\ntype Subscriptions = string[];\n\nexport function getAccountSubscriptionsQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"subscriptions\", username],\n enabled: !!username,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_all_subscriptions\",\n {\n account: username,\n }\n );\n return (response ?? []) as Subscriptions;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountBookmark } from \"../types\";\n\nexport function getActiveAccountBookmarksQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"bookmarks\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Bookmarks] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountBookmark[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountFavorite } from \"../types\";\n\nexport function getActiveAccountFavouritesQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"favourites\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Favourites] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountFavorite[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetRecoveriesEmailResponse } from \"../types\";\n\nexport function getAccountRecoveriesQueryOptions(username: string | undefined) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/recoveries\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(username!) }),\n }\n );\n\n return response.json() as Promise<GetRecoveriesEmailResponse[]>;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountPendingRecoveryQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username, \"pending-request\"],\n queryFn: () =>\n CONFIG.hiveClient.call(\n \"database_api\",\n \"find_change_recovery_account_requests\",\n { accounts: [username] }\n ),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { utils } from \"@hiveio/dhive\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Transaction, OperationGroup } from \"../types/transaction\";\n\nconst ops = utils.operationOrders;\n\nexport const ACCOUNT_OPERATION_GROUPS: Record<OperationGroup, number[]> = {\n transfers: [\n ops.transfer,\n ops.transfer_to_savings,\n ops.transfer_from_savings,\n ops.cancel_transfer_from_savings,\n ops.recurrent_transfer,\n ops.fill_recurrent_transfer,\n ops.escrow_transfer,\n ops.fill_recurrent_transfer,\n ],\n \"market-orders\": [\n ops.fill_convert_request,\n ops.fill_order,\n ops.fill_collateralized_convert_request,\n ops.limit_order_create2,\n ops.limit_order_create,\n ops.limit_order_cancel,\n ],\n interests: [ops.interest],\n \"stake-operations\": [\n ops.return_vesting_delegation,\n ops.withdraw_vesting,\n ops.transfer_to_vesting,\n ops.set_withdraw_vesting_route,\n ops.update_proposal_votes,\n ops.fill_vesting_withdraw,\n ops.account_witness_proxy,\n ops.delegate_vesting_shares,\n ],\n rewards: [\n ops.author_reward,\n ops.curation_reward,\n ops.producer_reward,\n ops.claim_reward_balance,\n ops.comment_benefactor_reward,\n ops.liquidity_reward,\n ops.proposal_pay,\n ],\n};\n\nexport const ALL_ACCOUNT_OPERATIONS = [...Object.values(ACCOUNT_OPERATION_GROUPS)].reduce(\n (acc, val) => acc.concat(val),\n []\n);\n\ntype TxPage = Transaction[];\ntype TxCursor = number;\n\ninterface AccountHistoryOperation {\n timestamp: string;\n trx_id: string;\n op: [Transaction[\"type\"], any];\n}\n\ntype AccountHistoryRecord = [number, AccountHistoryOperation];\n\n/**\n * Get account transaction history with pagination and filtering\n *\n * @param username - Account name to get transactions for\n * @param limit - Number of transactions per page\n * @param group - Filter by operation group (transfers, market-orders, etc.)\n */\nexport function getTransactionsInfiniteQueryOptions(\n username?: string,\n limit = 20,\n group: OperationGroup | \"\" = \"\"\n) {\n return infiniteQueryOptions<TxPage, Error, TxPage, (string | number)[], TxCursor>({\n queryKey: [\"accounts\", \"transactions\", username ?? \"\", group, limit],\n initialPageParam: -1 as TxCursor,\n\n queryFn: async ({ pageParam }: { pageParam: TxCursor }) => {\n if (!username) {\n return [];\n }\n\n let filters: number[] | undefined;\n switch (group) {\n case \"transfers\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"transfers\"]);\n break;\n case \"market-orders\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"market-orders\"]);\n break;\n case \"interests\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"interests\"]);\n break;\n case \"stake-operations\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"stake-operations\"]);\n break;\n case \"rewards\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"rewards\"]);\n break;\n default:\n filters = utils.makeBitMaskFilter(ALL_ACCOUNT_OPERATIONS);\n }\n\n const response = (await (filters\n ? CONFIG.hiveClient.call(\"condenser_api\", \"get_account_history\", [\n username,\n pageParam,\n limit,\n ...filters,\n ])\n : CONFIG.hiveClient.call(\"condenser_api\", \"get_account_history\", [\n username,\n pageParam,\n limit,\n ]))) as AccountHistoryRecord[];\n\n const mapped: Transaction[] = response\n .map(([num, operation]) => {\n const base = {\n num,\n type: operation.op[0],\n timestamp: operation.timestamp,\n trx_id: operation.trx_id,\n } as const;\n\n const payload = operation.op[1] as Record<string, unknown>;\n return { ...base, ...payload } as Transaction;\n })\n .filter(Boolean)\n .sort((a, b) => b.num - a.num);\n\n return mapped;\n },\n\n getNextPageParam: (lastPage: TxPage | undefined): TxCursor =>\n lastPage?.length ? (lastPage[lastPage.length - 1]?.num ?? 0) - 1 : -1,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\n\nexport function getBotsQueryOptions() {\n return queryOptions({\n queryKey: [\"accounts\", \"bots\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/public/bots\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch bots: ${response.status}`);\n }\n\n return response.json() as Promise<string[]>;\n },\n refetchOnMount: true,\n staleTime: Infinity,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReferralItem } from \"../types/referral\";\n\ntype PageParam = { maxId?: number };\n\nexport function getReferralsInfiniteQueryOptions(username: string) {\n return infiniteQueryOptions({\n queryKey: [\"accounts\", \"referrals\", username],\n initialPageParam: { maxId: undefined } as PageParam,\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n const { maxId } = pageParam ?? {};\n const url = new URL(CONFIG.privateApiHost + `/private-api/referrals/${username}`);\n\n if (maxId !== undefined) {\n url.searchParams.set(\"max_id\", maxId.toString());\n }\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch referrals: ${response.status}`);\n }\n\n return response.json() as Promise<ReferralItem[]>;\n },\n getNextPageParam: (lastPage: ReferralItem[]) => {\n const nextMaxId = lastPage?.[lastPage.length - 1]?.id;\n return typeof nextMaxId === \"number\" ? ({ maxId: nextMaxId } as PageParam) : undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReferralStat } from \"../types/referral\";\n\ninterface ReferralStatsResponse {\n total?: number;\n rewarded?: number;\n}\n\nexport function getReferralsStatsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"accounts\", \"referrals-stats\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/referrals/${username}/stats`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch referral stats: ${response.status}`);\n }\n\n const data = await response.json() as ReferralStatsResponse;\n\n if (!data) {\n throw new Error(\"No Referrals for this user!\");\n }\n\n return {\n total: data.total ?? 0,\n rewarded: data.rewarded ?? 0,\n } as ReferralStat;\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow, Profile, FriendsRow } from \"../types\";\n\nexport interface FriendsPageParam {\n startFollowing: string;\n}\n\ntype FriendsPage = FriendsRow[];\n\n/**\n * Get list of friends (following/followers) with profile information\n *\n * @param following - The account whose friends to get\n * @param mode - \"following\" or \"followers\"\n * @param followType - Type of follow relationship (default: \"blog\")\n * @param limit - Number of results per page (default: 100)\n * @param enabled - Whether query is enabled (default: true)\n */\nexport function getFriendsInfiniteQueryOptions(\n following: string,\n mode: \"following\" | \"followers\",\n options?: {\n followType?: string;\n limit?: number;\n enabled?: boolean;\n }\n) {\n const { followType = \"blog\", limit = 100, enabled = true } = options ?? {};\n\n return infiniteQueryOptions<FriendsPage, Error, FriendsPage, (string | number)[], FriendsPageParam>({\n queryKey: [\"accounts\", \"friends\", following, mode, followType, limit],\n initialPageParam: { startFollowing: \"\" } as FriendsPageParam,\n enabled,\n refetchOnMount: true,\n\n queryFn: async ({ pageParam }: { pageParam: FriendsPageParam }) => {\n const { startFollowing } = pageParam;\n\n const response = (await CONFIG.hiveClient.database.call(\n mode === \"following\" ? \"get_following\" : \"get_followers\",\n [following, startFollowing === \"\" ? null : startFollowing, followType, limit]\n )) as Follow[];\n\n const accountNames = response.map((e) =>\n mode === \"following\" ? e.following : e.follower\n );\n\n // Get profiles via bridge API\n const accounts = (await CONFIG.hiveClient.call(\"bridge\", \"get_profiles\", {\n accounts: accountNames,\n observer: undefined,\n })) as Profile[];\n\n const rows: FriendsPage = (accounts ?? []).map((a) => ({\n name: a.name,\n reputation: a.reputation,\n active: a.active, // Return raw timestamp\n }));\n\n return rows;\n },\n\n getNextPageParam: (lastPage: FriendsPage): FriendsPageParam | undefined =>\n lastPage && lastPage.length === limit\n ? { startFollowing: lastPage[lastPage.length - 1].name }\n : undefined,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow, Profile, FriendSearchResult } from \"../types\";\n\nconst SEARCH_LIMIT = 30;\n\n/**\n * Search friends (following/followers) by query string\n *\n * @param username - The account whose friends to search\n * @param mode - \"following\" or \"followers\"\n * @param query - Search query string\n */\nexport function getSearchFriendsQueryOptions(\n username: string,\n mode: \"following\" | \"followers\",\n query: string\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"friends\", \"search\", username, mode, query],\n refetchOnMount: false,\n enabled: false, // Manual query via refetch\n queryFn: async (): Promise<FriendSearchResult[]> => {\n if (!query) return [];\n\n const start = query.slice(0, -1);\n const response = (await CONFIG.hiveClient.database.call(\n mode === \"following\" ? \"get_following\" : \"get_followers\",\n [username, start, \"blog\", 1000]\n )) as Follow[];\n\n const accountNames = response\n .map((e) => (mode === \"following\" ? e.following : e.follower))\n .filter((name) => name.toLowerCase().includes(query.toLowerCase()))\n .slice(0, SEARCH_LIMIT);\n\n // Get profiles via bridge API\n const accounts = (await CONFIG.hiveClient.call(\"bridge\", \"get_profiles\", {\n accounts: accountNames,\n observer: undefined,\n })) as Profile[];\n\n return (\n accounts?.map((a) => ({\n name: a.name,\n full_name: a.metadata.profile?.name || \"\",\n reputation: a.reputation,\n active: a.active, // Return raw timestamp\n })) ?? []\n );\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { TrendingTag } from \"../types\";\n\nexport function getTrendingTagsQueryOptions(limit = 20) {\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"trending-tags\"],\n queryFn: async ({ pageParam: { afterTag } }) =>\n CONFIG.hiveClient.database\n .call(\"get_trending_tags\", [afterTag, limit])\n .then((tags: TrendingTag[]) =>\n tags\n .filter((x) => x.name !== \"\")\n .filter((x) => !x.name.startsWith(\"hive-\"))\n .map((x) => x.name)\n ),\n initialPageParam: { afterTag: \"\" },\n getNextPageParam: (lastPage) => ({\n afterTag: lastPage?.[lastPage?.length - 1],\n }),\n staleTime: Infinity,\n refetchOnMount: true,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\n\nexport function getFragmentsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"posts\", \"fragments\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return response.json() as Promise<Fragment[]>;\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\n// TODO: replace any with Entry\nexport function getPromotedPostsQuery<T extends any>(\n type: \"feed\" | \"waves\" = \"feed\"\n) {\n return queryOptions({\n queryKey: [\"posts\", \"promoted\", type],\n queryFn: async () => {\n const url = new URL(\n CONFIG.privateApiHost + \"/private-api/promoted-entries\"\n );\n if (type === \"waves\") {\n url.searchParams.append(\"short_content\", \"1\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n const data = await response.json();\n return data as T[];\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry, Vote } from \"../types\";\n\nexport function getEntryActiveVotesQueryOptions(entry?: Entry) {\n return queryOptions({\n queryKey: [\"posts\", \"entry-active-votes\", entry?.author, entry?.permlink],\n queryFn: async () => {\n return CONFIG.hiveClient.database.call(\"get_active_votes\", [\n entry?.author,\n entry?.permlink,\n ]) as Promise<Vote[]>;\n },\n enabled: !!entry,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\n\nexport function getPostHeaderQueryOptions(author: string, permlink: string) {\n return queryOptions({\n queryKey: [\"posts\", \"post-header\", author, permlink],\n queryFn: async () => {\n return CONFIG.hiveClient.call(\"bridge\", \"get_post_header\", {\n author,\n permlink,\n }) as Promise<Entry | null>;\n },\n initialData: null,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { Entry } from \"../types\";\n\n/**\n * Filters and censors entries that match DMCA patterns\n * @param entry - Single entry or array of entries to filter\n * @returns Filtered entry/entries with DMCA content censored.\n * Note: Can return null/undefined if input is falsy - callers should guard against this.\n */\nexport function filterDmcaEntry(entry: Entry): Entry | null | undefined;\nexport function filterDmcaEntry(entries: Entry[]): Entry[];\nexport function filterDmcaEntry(entryOrEntries: Entry | Entry[] | null | undefined): Entry | Entry[] | null | undefined {\n if (Array.isArray(entryOrEntries)) {\n return entryOrEntries.map((entry) => applyFilter(entry));\n }\n return applyFilter(entryOrEntries);\n}\n\nfunction applyFilter(entry: Entry | null | undefined): Entry | null | undefined {\n if (!entry) return entry;\n\n const entryPath = `@${entry.author}/${entry.permlink}`;\n const isDmca = CONFIG.dmcaPatternRegexes.some((regex) => regex.test(entryPath));\n\n if (isDmca) {\n return {\n ...entry,\n body: \"This post is not available due to a copyright/fraudulent claim.\",\n title: \"\",\n };\n }\n\n return entry;\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\nfunction makeEntryPath(category: string, author: string, permlink: string) {\n return `${category}/@${author}/${permlink}`;\n}\n\nexport function getPostQueryOptions(\n author: string,\n permlink?: string,\n observer = \"\",\n num?: number\n) {\n const cleanPermlink = permlink?.trim();\n const entryPath = makeEntryPath(\"\", author, cleanPermlink ?? \"\");\n\n return queryOptions({\n queryKey: [\"posts\", \"entry\", entryPath],\n queryFn: async () => {\n if (!cleanPermlink || cleanPermlink === \"undefined\") {\n return null;\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_post\", {\n author,\n permlink: cleanPermlink,\n observer,\n });\n\n if (!response) {\n return null;\n }\n\n const entry = num !== undefined ? { ...response, num } as Entry : response as Entry;\n return filterDmcaEntry(entry);\n },\n enabled:\n !!author &&\n !!permlink &&\n permlink.trim() !== \"\" &&\n permlink.trim() !== \"undefined\",\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\nexport enum SortOrder {\n trending = \"trending\",\n author_reputation = \"author_reputation\",\n votes = \"votes\",\n created = \"created\",\n}\n\nfunction parseAsset(value: string): { amount: number; symbol: string } {\n const match = value.match(/^(\\d+\\.?\\d*)\\s*([A-Z]+)$/);\n if (!match) return { amount: 0, symbol: \"\" };\n return {\n amount: parseFloat(match[1]),\n symbol: match[2],\n };\n}\n\nexport function sortDiscussions(\n entry: Entry,\n discussion: Entry[],\n order: SortOrder\n) {\n const allPayout = (c: Entry) =>\n parseAsset(c.pending_payout_value).amount +\n parseAsset(c.author_payout_value).amount +\n parseAsset(c.curator_payout_value).amount;\n\n const absNegative = (a: Entry) => a.net_rshares < 0;\n const isPinned = (a: Entry) =>\n entry.json_metadata?.pinned_reply === `${a.author}/${a.permlink}`;\n\n const sortOrders = {\n trending: (a: Entry, b: Entry) => {\n if (absNegative(a)) {\n return 1;\n }\n\n if (absNegative(b)) {\n return -1;\n }\n\n const _a = allPayout(a);\n const _b = allPayout(b);\n if (_a !== _b) {\n return _b - _a;\n }\n\n return 0;\n },\n author_reputation: (a: Entry, b: Entry) => {\n const keyA = a.author_reputation;\n const keyB = b.author_reputation;\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n votes: (a: Entry, b: Entry) => {\n const keyA = a.children;\n const keyB = b.children;\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n created: (a: Entry, b: Entry) => {\n if (absNegative(a)) {\n return 1;\n }\n\n if (absNegative(b)) {\n return -1;\n }\n\n const keyA = Date.parse(a.created);\n const keyB = Date.parse(b.created);\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n };\n\n const sorted = discussion.sort(sortOrders[order]);\n const pinnedIndex = sorted.findIndex((i) => isPinned(i));\n const pinned = sorted[pinnedIndex];\n if (pinnedIndex >= 0) {\n sorted.splice(pinnedIndex, 1);\n sorted.unshift(pinned);\n }\n return sorted;\n}\n\nexport function getDiscussionsQueryOptions(\n entry: Entry,\n order: SortOrder = SortOrder.created,\n enabled: boolean = true,\n observer?: string\n) {\n return queryOptions({\n queryKey: [\n \"posts\",\n \"discussions\",\n entry?.author,\n entry?.permlink,\n order,\n observer || entry?.author,\n ],\n queryFn: async () => {\n if (!entry) {\n return [];\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_discussion\", {\n author: entry.author,\n permlink: entry.permlink,\n observer: observer || entry.author,\n });\n\n const results = response\n ? Array.from(Object.values(response as Record<string, Entry>))\n : [];\n return filterDmcaEntry(results);\n },\n enabled: enabled && !!entry,\n select: (data) => sortDiscussions(entry, data, order),\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\ntype PageParam = {\n author: string | undefined;\n permlink: string | undefined;\n hasNextPage: boolean;\n};\ntype Page = Entry[];\n\nexport function getAccountPostsInfiniteQueryOptions(\n username: string | undefined,\n filter = \"posts\",\n limit = 20,\n observer = \"\",\n enabled = true\n) {\n return infiniteQueryOptions<Page, Error, Page, (string | number)[], PageParam>({\n queryKey: [\"posts\", \"account-posts\", username ?? \"\", filter, limit, observer],\n enabled: !!username && enabled,\n initialPageParam: {\n author: undefined,\n permlink: undefined,\n hasNextPage: true,\n } as PageParam,\n\n queryFn: async ({ pageParam }) => {\n if (!pageParam?.hasNextPage || !username) return [];\n\n interface AccountPostsParams {\n sort: string;\n account: string;\n limit: number;\n observer?: string;\n start_author?: string;\n start_permlink?: string;\n }\n\n const rpcParams: AccountPostsParams = {\n sort: filter,\n account: username,\n limit,\n ...(observer && observer.length > 0 ? { observer } : {}),\n ...(pageParam.author ? { start_author: pageParam.author } : {}),\n ...(pageParam.permlink ? { start_permlink: pageParam.permlink } : {}),\n };\n\n try {\n if (CONFIG.dmcaAccounts.includes(username)) return [];\n\n const resp = await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_account_posts\",\n rpcParams\n );\n\n if (resp && Array.isArray(resp)) {\n return filterDmcaEntry(resp as Entry[]);\n }\n return [];\n } catch (err) {\n console.error(\"[SDK] get_account_posts error:\", err);\n return [];\n }\n },\n\n getNextPageParam: (lastPage: Page): PageParam | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n // Only consider there's a next page if we got a full page of results\n // A partial page means we've reached the end\n const hasNextPage = (lastPage?.length ?? 0) === limit;\n\n if (!hasNextPage) {\n return undefined;\n }\n\n return {\n author: last?.author,\n permlink: last?.permlink,\n hasNextPage,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\ntype PageParam = {\n author: string | undefined;\n permlink: string | undefined;\n hasNextPage: boolean;\n};\n\ninterface GetPostsRankedOptions {\n resolvePosts?: boolean;\n}\n\nexport function getPostsRankedInfiniteQueryOptions(\n sort: string,\n tag: string,\n limit = 20,\n observer = \"\",\n enabled = true,\n _options: GetPostsRankedOptions = {}\n) {\n return infiniteQueryOptions<Entry[], Error, Entry[], (string | number)[], PageParam>({\n queryKey: [\"posts\", \"posts-ranked\", sort, tag, limit, observer],\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n if (!pageParam.hasNextPage) {\n return [];\n }\n\n let sanitizedTag = tag;\n if (CONFIG.dmcaTagRegexes.some((regex) => regex.test(tag))) {\n sanitizedTag = \"\";\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_ranked_posts\", {\n sort,\n start_author: pageParam.author,\n start_permlink: pageParam.permlink,\n limit,\n tag: sanitizedTag,\n observer,\n });\n\n if (response && Array.isArray(response)) {\n const data = response as Entry[];\n\n // Sort by created date unless it's \"hot\"\n const sorted =\n sort === \"hot\"\n ? data\n : data.sort(\n (a, b) =>\n new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n\n // Handle pinned entries\n const pinnedEntry = sorted.find((s) => s.stats?.is_pinned);\n const nonPinnedEntries = sorted.filter((s) => !s.stats?.is_pinned);\n\n const combined = [pinnedEntry, ...nonPinnedEntries].filter((s) => !!s) as Entry[];\n return filterDmcaEntry(combined);\n }\n\n return [];\n },\n enabled,\n initialPageParam: {\n author: undefined,\n permlink: undefined,\n hasNextPage: true,\n } as PageParam,\n getNextPageParam: (lastPage: Entry[]) => {\n const last = lastPage?.[lastPage.length - 1];\n return {\n author: last?.author,\n permlink: last?.permlink,\n hasNextPage: (lastPage?.length ?? 0) > 0,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport interface BlogEntry {\n author: string;\n permlink: string;\n blog: string;\n reblog_on: string;\n reblogged_on: string;\n entry_id: number;\n}\n\nexport interface Reblog {\n author: string;\n permlink: string;\n}\n\nexport function getReblogsQueryOptions(\n username?: string,\n activeUsername?: string,\n limit = 200\n) {\n return queryOptions({\n queryKey: [\"posts\", \"reblogs\", username ?? \"\", limit],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.call(\"condenser_api\", \"get_blog_entries\", [\n username ?? activeUsername,\n 0,\n limit,\n ])) as BlogEntry[];\n\n return response\n .filter(\n (i) =>\n i.author !== activeUsername &&\n !i.reblogged_on.startsWith(\"1970-\")\n )\n .map((i) => ({ author: i.author, permlink: i.permlink })) as Reblog[];\n },\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { Schedule } from \"../types/schedule\";\n\nexport function getSchedulesQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"schedules\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/schedules\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(activeUsername),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch schedules: ${response.status}`);\n }\n\n return response.json() as Promise<Schedule[]>;\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { Draft } from \"../types/draft\";\n\nexport function getDraftsQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"drafts\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/drafts\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(activeUsername),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch drafts: ${response.status}`);\n }\n\n return response.json() as Promise<Draft[]>;\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { UserImage } from \"../types/user-image\";\n\nasync function fetchUserImages(username: string): Promise<UserImage[]> {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/images\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(username),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch images: ${response.status}`);\n }\n\n return response.json() as Promise<UserImage[]>;\n}\n\nexport function getImagesQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"posts\", \"images\", username],\n queryFn: async () => {\n if (!username) {\n return [];\n }\n return fetchUserImages(username);\n },\n enabled: !!username,\n });\n}\n\nexport function getGalleryImagesQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"gallery-images\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n return fetchUserImages(activeUsername);\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommentHistory } from \"../types/comment-history\";\n\nexport function getCommentHistoryQueryOptions(author: string, permlink: string, onlyMeta = false) {\n return queryOptions({\n queryKey: [\"posts\", \"comment-history\", author, permlink, onlyMeta],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/comment-history\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n onlyMeta: onlyMeta ? \"1\" : \"\",\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch comment history: ${response.status}`);\n }\n\n return response.json() as Promise<CommentHistory>;\n },\n enabled: !!author && !!permlink,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommentHistory } from \"../types/comment-history\";\n\nfunction makeEntryPath(author: string, permlink: string): string {\n const cleanAuthor = author?.trim();\n const cleanPermlink = permlink?.trim();\n\n if (!cleanAuthor || !cleanPermlink) {\n throw new Error(\"Invalid entry path: author and permlink are required\");\n }\n\n // Normalize by removing any leading @ or / characters\n const normalizedAuthor = cleanAuthor.replace(/^@+/, \"\");\n const normalizedPermlink = cleanPermlink.replace(/^\\/+/, \"\");\n\n if (!normalizedAuthor || !normalizedPermlink) {\n throw new Error(\"Invalid entry path: author and permlink cannot be empty after normalization\");\n }\n\n return `@${normalizedAuthor}/${normalizedPermlink}`;\n}\n\nexport interface DeletedEntry {\n body: string;\n title: string;\n tags: string[];\n}\n\nexport function getDeletedEntryQueryOptions(author: string, permlink: string) {\n const cleanPermlink = permlink?.trim();\n const cleanAuthor = author?.trim();\n const isValid =\n !!cleanAuthor && !!cleanPermlink && cleanPermlink !== \"undefined\";\n\n const entryPath = isValid ? makeEntryPath(cleanAuthor, cleanPermlink) : \"\";\n\n return queryOptions({\n queryKey: [\"posts\", \"deleted-entry\", entryPath],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/comment-history\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink: cleanPermlink || \"\",\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch comment history: ${response.status}`);\n }\n\n return response.json() as Promise<CommentHistory>;\n },\n select: (history): DeletedEntry | null => {\n if (!history?.list?.[0]) {\n return null;\n }\n const { body, title, tags } = history.list[0];\n return {\n body,\n title,\n tags,\n };\n },\n enabled: isValid,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PostTipsResponse } from \"../types/post-tip\";\n\nexport function getPostTipsQueryOptions(author: string, permlink: string, isEnabled = true) {\n return queryOptions({\n queryKey: [\"posts\", \"tips\", author, permlink],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/post-tips\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch post tips: ${response.status}`);\n }\n\n return response.json() as Promise<PostTipsResponse>;\n },\n enabled: !!author && !!permlink && isEnabled,\n });\n}\n","import { Entry, WaveEntry } from \"../types\";\nimport { getDiscussionsQueryOptions, SortOrder } from \"../queries/get-discussions-query-options\";\nimport { CONFIG } from \"@/modules/core\";\n\ntype EntryWithPostId = Entry & { post_id: number };\n\nfunction normalizeContainer(entry: EntryWithPostId, host: string): WaveEntry {\n return {\n ...entry,\n id: entry.id ?? entry.post_id,\n host\n } as WaveEntry;\n}\n\nfunction normalizeParent(entry: EntryWithPostId): Entry {\n return {\n ...entry,\n id: entry.id ?? entry.post_id\n } as Entry;\n}\n\nexport function normalizeWaveEntryFromApi(\n entry:\n | (Entry & { post_id: number; container?: EntryWithPostId | null; parent?: EntryWithPostId | null })\n | null\n | undefined,\n host: string\n): WaveEntry | null {\n if (!entry) {\n return null;\n }\n\n const containerSource = entry.container ?? entry;\n const container = normalizeContainer(containerSource, host);\n\n const parent = entry.parent ? normalizeParent(entry.parent) : undefined;\n\n return {\n ...entry,\n id: entry.id ?? entry.post_id,\n host,\n container,\n parent\n } as WaveEntry;\n}\n\nexport function toEntryArray(x: unknown): Entry[] {\n return Array.isArray(x) ? (x as Entry[]) : [];\n}\n\nexport async function getVisibleFirstLevelThreadItems(\n container: WaveEntry\n): Promise<Entry[]> {\n const queryOptions = getDiscussionsQueryOptions(container, SortOrder.created, true);\n const discussionItemsRaw = await CONFIG.queryClient.fetchQuery(queryOptions);\n const discussionItems = toEntryArray(discussionItemsRaw);\n\n if (discussionItems.length <= 1) {\n return [];\n }\n\n const firstLevelItems = discussionItems.filter(\n ({ parent_author, parent_permlink }) =>\n parent_author === container.author && parent_permlink === container.permlink\n );\n\n if (firstLevelItems.length === 0) {\n return [];\n }\n\n const visibleItems = firstLevelItems.filter((item) => !item.stats?.gray);\n\n return visibleItems;\n}\n\nexport function mapThreadItemsToWaveEntries(\n items: Entry[],\n container: WaveEntry,\n host: string\n): WaveEntry[] {\n if (items.length === 0) {\n return [];\n }\n\n return items\n .map((item) => {\n const parent = items.find(\n (i) =>\n i.author === item.parent_author &&\n i.permlink === item.parent_permlink &&\n i.author !== host\n );\n\n return {\n ...item,\n id: item.post_id,\n host,\n container,\n parent\n } as WaveEntry;\n })\n .filter((entry) => entry.container.post_id !== entry.post_id)\n .sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { WaveEntry } from \"../types\";\nimport {\n getVisibleFirstLevelThreadItems,\n mapThreadItemsToWaveEntries\n} from \"../utils/waves-helpers\";\n\nconst THREAD_CONTAINER_BATCH_SIZE = 5;\nconst MAX_CONTAINERS_TO_SCAN = 50;\n\ninterface ThreadsResult {\n entries: WaveEntry[];\n}\n\nasync function getThreads(\n host: string,\n pageParam?: WaveEntry\n): Promise<ThreadsResult | null> {\n let startAuthor = pageParam?.author;\n let startPermlink = pageParam?.permlink;\n let scannedContainers = 0;\n let skipContainerId = pageParam?.post_id;\n\n while (scannedContainers < MAX_CONTAINERS_TO_SCAN) {\n interface AccountPostsParams {\n sort: string;\n account: string;\n limit: number;\n start_author?: string;\n start_permlink?: string;\n }\n\n const rpcParams: AccountPostsParams = {\n sort: \"posts\", // ProfileFilter.posts\n account: host,\n limit: THREAD_CONTAINER_BATCH_SIZE,\n ...(startAuthor ? { start_author: startAuthor } : {}),\n ...(startPermlink ? { start_permlink: startPermlink } : {})\n };\n\n const containers = (await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_account_posts\",\n rpcParams\n )) as WaveEntry[]; // API shape is known\n\n if (!containers || containers.length === 0) {\n return null;\n }\n\n const normalizedContainers = containers.map((container) => {\n container.id = container.post_id;\n container.host = host;\n return container;\n });\n\n for (const container of normalizedContainers) {\n if (skipContainerId && container.post_id === skipContainerId) {\n skipContainerId = undefined;\n continue;\n }\n\n scannedContainers += 1;\n\n if (container.stats?.gray) {\n startAuthor = container.author;\n startPermlink = container.permlink;\n continue;\n }\n\n const visibleItems = await getVisibleFirstLevelThreadItems(container);\n\n if (visibleItems.length === 0) {\n startAuthor = container.author;\n startPermlink = container.permlink;\n continue;\n }\n\n return {\n entries: mapThreadItemsToWaveEntries(visibleItems, container, host)\n };\n }\n\n const lastContainer = normalizedContainers[normalizedContainers.length - 1];\n\n if (!lastContainer) {\n return null;\n }\n\n startAuthor = lastContainer.author;\n startPermlink = lastContainer.permlink;\n }\n\n return null;\n}\n\n// Page = array of WaveEntry; Cursor = WaveEntry (container) or undefined\ntype WavesPage = WaveEntry[];\ntype WavesCursor = WaveEntry | undefined;\n\nexport function getWavesByHostQueryOptions(host: string) {\n return infiniteQueryOptions<WavesPage, Error, WavesPage, string[], WavesCursor>({\n queryKey: [\"posts\", \"waves\", \"by-host\", host],\n initialPageParam: undefined as WavesCursor,\n\n queryFn: async ({ pageParam }: { pageParam: WavesCursor }) => {\n const result = await getThreads(host, pageParam);\n if (!result) return []; // no items to show for this page\n\n return result.entries;\n },\n\n getNextPageParam: (lastPage: WavesPage): WavesCursor => lastPage?.[0]?.container\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Entry, WaveEntry } from \"../types\";\nimport { normalizeWaveEntryFromApi } from \"../utils/waves-helpers\";\n\ntype WavesTagEntryResponse = Entry & {\n post_id: number;\n container?: (Entry & { post_id: number }) | null;\n parent?: (Entry & { post_id: number }) | null;\n};\n\nconst DEFAULT_TAG_FEED_LIMIT = 40;\n\nexport function getWavesByTagQueryOptions(host: string, tag: string, limit = DEFAULT_TAG_FEED_LIMIT) {\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"waves\", \"by-tag\", host, tag],\n initialPageParam: undefined,\n\n queryFn: async ({ signal }) => {\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/tags\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"tag\", tag);\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves by tag: ${response.status}`);\n }\n\n const data = await response.json() as WavesTagEntryResponse[];\n\n const result = data\n .slice(0, limit)\n .map((entry) => normalizeWaveEntryFromApi(entry, host))\n .filter((entry): entry is WaveEntry => Boolean(entry));\n\n return result.sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves by tag\", error);\n return [];\n }\n },\n\n getNextPageParam: () => undefined\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Entry, WaveEntry } from \"../types\";\nimport { normalizeWaveEntryFromApi } from \"../utils/waves-helpers\";\n\ntype WavesFollowingEntry = Entry & {\n post_id: number;\n container?: (Entry & { post_id: number }) | null;\n parent?: (Entry & { post_id: number }) | null;\n};\n\nexport function getWavesFollowingQueryOptions(host: string, username?: string) {\n const normalizedUsername = username?.trim().toLowerCase();\n\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"waves\", \"following\", host, normalizedUsername ?? \"\"],\n enabled: Boolean(normalizedUsername),\n initialPageParam: undefined,\n\n queryFn: async ({ signal }) => {\n if (!normalizedUsername) {\n return [];\n }\n\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/following\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"username\", normalizedUsername);\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves following feed: ${response.status}`);\n }\n\n const data = await response.json() as WavesFollowingEntry[];\n\n if (!Array.isArray(data) || data.length === 0) {\n return [];\n }\n\n const flattened = data\n .map((entry) => normalizeWaveEntryFromApi(entry, host))\n .filter((entry): entry is WaveEntry => Boolean(entry));\n\n if (flattened.length === 0) {\n return [];\n }\n\n return flattened.sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves following feed\", error);\n return [];\n }\n },\n\n getNextPageParam: () => undefined\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { WaveTrendingTag } from \"../types\";\n\ninterface WavesTrendingTagResponse {\n tag: string;\n posts: number;\n}\n\nexport function getWavesTrendingTagsQueryOptions(host: string, hours = 24) {\n return queryOptions({\n queryKey: [\"posts\", \"waves\", \"trending-tags\", host, hours],\n queryFn: async ({ signal }): Promise<WaveTrendingTag[]> => {\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/trending/tags\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"hours\", hours.toString());\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves trending tags: ${response.status}`);\n }\n\n const data = await response.json() as WavesTrendingTagResponse[];\n\n return data.map(({ tag, posts }) => ({ tag, posts }));\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves trending tags\", error);\n return [];\n }\n }\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Entry } from \"@/modules/posts/types\";\nimport { getPostQueryOptions } from \"@/modules/posts/queries\";\n\ninterface VoteOperationDetails {\n voter: string;\n author: string;\n permlink: string;\n weight: number;\n}\n\ninterface AccountVoteHistoryItem {\n timestamp: string;\n op: [string, VoteOperationDetails];\n}\n\ntype AccountVoteHistoryRecord = [number, AccountVoteHistoryItem];\n\ninterface VoteHistoryResult extends VoteOperationDetails {\n num: number;\n timestamp: string;\n}\n\nexport interface VoteHistoryPageParam {\n start: number;\n}\n\nexport interface VoteHistoryPage {\n lastDate: number;\n lastItemFetched: number;\n entries: Entry[];\n}\n\nfunction isEntry(x: unknown): x is Entry {\n return (\n !!x &&\n typeof x === \"object\" &&\n \"author\" in x &&\n \"permlink\" in x &&\n \"active_votes\" in x\n );\n}\n\n/**\n * Calculate days since a date\n */\nfunction getDays(createdDate: string): number {\n const past = new Date(createdDate);\n const now = new Date();\n const diffMs = now.getTime() - past.getTime();\n return diffMs / (1000 * 60 * 60 * 24);\n}\n\n/**\n * Get account vote history with entries\n *\n * @param username - Account name to get vote history for\n * @param limit - Number of history items per page (default: 20)\n * @param filters - Additional filters to pass to get_account_history\n * @param dayLimit - Only include votes from last N days (default: 7)\n */\nexport function getAccountVoteHistoryInfiniteQueryOptions<F>(\n username: string,\n options?: {\n limit?: number;\n filters?: F[];\n dayLimit?: number;\n }\n) {\n const { limit = 20, filters = [], dayLimit = 7.0 } = options ?? {};\n\n return infiniteQueryOptions<\n VoteHistoryPage,\n Error,\n VoteHistoryPage,\n (string | number)[],\n VoteHistoryPageParam\n >({\n queryKey: [\"accounts\", \"vote-history\", username, limit],\n initialPageParam: { start: -1 },\n\n queryFn: async ({ pageParam }: { pageParam: VoteHistoryPageParam }) => {\n const { start } = pageParam;\n\n const response = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_history\",\n [username, start, limit, ...filters]\n )) as AccountVoteHistoryRecord[];\n\n const mappedResults: VoteHistoryResult[] = response.map(([num, historyObj]) => ({\n ...historyObj.op[1],\n num,\n timestamp: historyObj.timestamp,\n }));\n\n const result = mappedResults.filter(\n (filtered) =>\n filtered.voter === username &&\n filtered.weight !== 0 &&\n getDays(filtered.timestamp) <= dayLimit\n );\n\n const entries: Entry[] = [];\n for (const obj of result) {\n const post = await CONFIG.queryClient.fetchQuery(\n getPostQueryOptions(obj.author, obj.permlink)\n );\n if (isEntry(post)) entries.push(post);\n }\n\n const [firstHistory] = response;\n\n return {\n lastDate: firstHistory ? getDays(firstHistory[1].timestamp) : 0,\n lastItemFetched: firstHistory ? firstHistory[0] : start,\n entries,\n };\n },\n\n getNextPageParam: (lastPage: VoteHistoryPage): VoteHistoryPageParam => ({\n start: lastPage.lastItemFetched,\n }),\n });\n}\n","import { useBroadcastMutation } from \"@/modules/core\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport * as R from \"remeda\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { AccountProfile, FullAccount } from \"../types\";\nimport {\n buildProfileMetadata,\n extractAccountProfile,\n} from \"../utils/profile-metadata\";\n\ninterface Payload {\n profile: Partial<AccountProfile>;\n tokens: AccountProfile[\"tokens\"];\n}\n\nexport function useAccountUpdate(username: string) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useBroadcastMutation(\n [\"accounts\", \"update\"],\n username,\n (payload: Partial<Payload>) => {\n if (!data) {\n throw new Error(\"[SDK][Accounts] – cannot update not existing account\");\n }\n\n const profile = buildProfileMetadata({\n existingProfile: extractAccountProfile(data),\n profile: payload.profile,\n tokens: payload.tokens,\n });\n\n return [\n [\n \"account_update2\",\n {\n account: username,\n json_metadata: \"\",\n extensions: [],\n posting_json_metadata: JSON.stringify({\n profile,\n }),\n },\n ],\n ];\n },\n (_, variables) =>\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return data;\n }\n\n const obj = R.clone(data);\n obj.profile = buildProfileMetadata({\n existingProfile: extractAccountProfile(data),\n profile: variables.profile,\n tokens: variables.tokens,\n });\n\n return obj;\n }\n )\n );\n}\n","import { broadcastJson, getQueryClient } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getRelationshipBetweenAccountsQueryOptions } from \"../queries\";\nimport { AccountRelationship } from \"../types\";\n\ntype Kind = \"toggle-ignore\" | \"toggle-follow\";\n\nexport function useAccountRelationsUpdate(\n reference: string | undefined,\n target: string | undefined,\n onSuccess: (data: Partial<AccountRelationship> | undefined) => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"relation\", \"update\", reference, target],\n mutationFn: async (kind: Kind) => {\n const relationsQuery = getRelationshipBetweenAccountsQueryOptions(\n reference,\n target\n );\n await getQueryClient().prefetchQuery(relationsQuery);\n const actualRelation = getQueryClient().getQueryData(\n relationsQuery.queryKey\n );\n\n await broadcastJson(reference, \"follow\", [\n \"follow\",\n {\n follower: reference,\n following: target,\n what: [\n ...(kind === \"toggle-ignore\" && !actualRelation?.ignores\n ? [\"ignore\"]\n : []),\n ...(kind === \"toggle-follow\" && !actualRelation?.follows\n ? [\"blog\"]\n : []),\n ],\n },\n ]);\n\n return {\n ...actualRelation,\n ignores:\n kind === \"toggle-ignore\"\n ? !actualRelation?.ignores\n : actualRelation?.ignores,\n follows:\n kind === \"toggle-follow\"\n ? !actualRelation?.follows\n : actualRelation?.follows,\n } satisfies Partial<AccountRelationship>;\n },\n onError,\n onSuccess(data) {\n onSuccess(data);\n\n getQueryClient().setQueryData(\n [\"accounts\", \"relations\", reference, target],\n data\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n author: string;\n permlink: string;\n}\n\nexport function useBookmarkAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"add\", username],\n mutationFn: async ({ author, permlink }: Payload) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useBookmarkDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"delete\", username],\n mutationFn: async (bookmarkId: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id: bookmarkId,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { AuthorityType, PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport * as R from \"remeda\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\nexport interface Keys {\n owner: PrivateKey;\n active: PrivateKey;\n posting: PrivateKey;\n memo_key: PrivateKey;\n}\n\ninterface Payload {\n keepCurrent?: boolean;\n currentKey: PrivateKey;\n keys: Keys[];\n}\n\nexport function dedupeAndSortKeyAuths(\n existing: AuthorityType[\"key_auths\"],\n additions: [string, number][]\n): AuthorityType[\"key_auths\"] {\n const merged = new Map<string, number>();\n\n existing.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n additions.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n return Array.from(merged.entries())\n .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\n .map(([key, weight]) => [key, weight] as [string, number]);\n}\n\ntype UpdateKeyAuthsOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateKeyAuths(\n username: string,\n options?: UpdateKeyAuthsOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"keys-update\", username],\n mutationFn: async ({ keys, keepCurrent = false, currentKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = dedupeAndSortKeyAuths(\n keepCurrent ? auth.key_auths : [],\n keys.map(\n (values, i) =>\n [values[keyName].createPublic().toString(), i + 1] as [\n string,\n number,\n ]\n )\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: username,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: keepCurrent\n ? accountData.memo_key\n : keys[0].memo_key.createPublic().toString(),\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { useAccountUpdateKeyAuths } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n newPassword: string;\n currentPassword: string;\n keepCurrent?: boolean;\n}\n\n/**\n * Only native Hive and custom passwords could be updated here\n * Seed based password cannot be updated here, it will be in an account always for now\n */\ntype UpdatePasswordOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdatePassword(\n username: string,\n options?: UpdatePasswordOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n const { mutateAsync: updateKeys } = useAccountUpdateKeyAuths(username);\n\n return useMutation({\n mutationKey: [\"accounts\", \"password-update\", username],\n mutationFn: async ({\n newPassword,\n currentPassword,\n keepCurrent,\n }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update password for anon user\"\n );\n }\n const currentKey = PrivateKey.fromLogin(\n username,\n currentPassword,\n \"owner\"\n );\n\n return updateKeys({\n currentKey,\n keepCurrent,\n keys: [\n {\n owner: PrivateKey.fromLogin(username, newPassword, \"owner\"),\n active: PrivateKey.fromLogin(username, newPassword, \"active\"),\n posting: PrivateKey.fromLogin(username, newPassword, \"posting\"),\n memo_key: PrivateKey.fromLogin(username, newPassword, \"memo\"),\n },\n ],\n });\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { FullAccount } from \"../types\";\nimport { Keychain } from \"@/modules/keychain\";\nimport hs from \"hivesigner\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n}\n\ntype RevokePostingOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokePosting(\n username: string | undefined,\n options: RevokePostingOptions\n) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-posting\", data?.name],\n mutationFn: async ({ accountName, type, key }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot revoke posting for anonymous user\"\n );\n }\n\n const posting = R.pipe(\n {},\n R.mergeDeep(data.posting)\n ) as FullAccount[\"posting\"];\n\n posting.account_auths = posting.account_auths.filter(\n ([account]) => account !== accountName\n );\n\n const operationBody = {\n account: data.name,\n posting,\n memo_key: data.memo_key,\n json_metadata: data.json_metadata,\n };\n\n if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.updateAccount(operationBody, key);\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"account_update\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"account_update\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: (resp, payload, ctx) => {\n (options.onSuccess as\n | ((data: unknown, variables: CommonPayload, context: unknown) => unknown)\n | undefined)?.(resp, payload, ctx);\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) =>\n ({\n ...data,\n posting: {\n ...data?.posting,\n account_auths:\n data?.posting?.account_auths?.filter(\n ([account]) => account !== payload.accountName\n ) ?? [],\n },\n }) as FullAccount\n );\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { Keychain } from \"@/modules/keychain\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\" | \"ecency\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n email?: string;\n}\n\ntype UpdateRecoveryOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateRecovery(\n username: string | undefined,\n options: UpdateRecoveryOptions\n) {\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"recovery\", data?.name],\n mutationFn: async ({ accountName, type, key, email }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot change recovery for anonymous user\"\n );\n }\n\n const operationBody = {\n account_to_recover: data.name,\n new_recovery_account: accountName,\n extensions: [],\n };\n\n if (type === \"ecency\") {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/recoveries-add\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(data.name),\n email,\n publicKeys: [\n ...data.owner.key_auths,\n ...data.active.key_auths,\n ...data.posting.key_auths,\n data.memo_key,\n ],\n }),\n });\n } else if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"change_recovery_account\", operationBody]],\n key\n );\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"change_recovery_account\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"change_recovery_account\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: options.onSuccess,\n });\n}\n","import { AuthorityType, PrivateKey, PublicKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Keys } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n currentKey: PrivateKey;\n revokingKey: PublicKey;\n}\n\n/**\n * This hook provides functionality to revoke a key from an account on the Hive blockchain.\n * It leverages React Query's `useMutation` for managing the mutation state and executing\n * the operation efficiently.\n *\n * @param username The username of the Hive account from which the key should be revoked.\n * Pass `undefined` if the username is unknown or not set yet.\n *\n * @returns The mutation object from `useMutation`, including methods to trigger the key\n * revocation and access its state (e.g., loading, success, error).\n */\ntype RevokeKeyOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokeKey(\n username: string | undefined,\n options?: RevokeKeyOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-key\", accountData?.name],\n mutationFn: async ({ currentKey, revokingKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = auth.key_auths.filter(\n ([key]) => key !== revokingKey.toString()\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: accountData.name,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: accountData.memo_key,\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { cryptoUtils, Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKey(username: string | undefined) {\n return useMutation({\n mutationKey: [\"operations\", \"sign\", username],\n mutationFn: ({\n operation,\n keyOrSeed,\n }: {\n operation: Operation;\n keyOrSeed: string;\n }) => {\n if (!username) {\n throw new Error(\"[Operations][Sign] – cannot sign op with anon user\");\n }\n\n let privateKey: PrivateKey;\n if (keyOrSeed.split(\" \").length === 12) {\n privateKey = PrivateKey.fromLogin(username, keyOrSeed, \"active\");\n } else if (cryptoUtils.isWif(keyOrSeed)) {\n privateKey = PrivateKey.fromString(keyOrSeed);\n } else {\n privateKey = PrivateKey.from(keyOrSeed);\n }\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n privateKey\n );\n },\n });\n}\n","import { Keychain } from \"@/modules/keychain\";\nimport { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKeychain(\n username: string | undefined,\n keyType: Keychain.KeychainAuthorityTypes = \"Active\"\n) {\n return useMutation({\n mutationKey: [\"operations\", \"sign-keychain\", username],\n mutationFn: ({ operation }: { operation: Operation }) => {\n if (!username) {\n throw new Error(\n \"[SDK][Keychain] – cannot sign operation with anon user\"\n );\n }\n return Keychain.broadcast(username, [operation], keyType) as Promise<any>;\n },\n });\n}\n","import { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function useSignOperationByHivesigner(callbackUri = \"/\") {\n return useMutation({\n mutationKey: [\"operations\", \"sign-hivesigner\", callbackUri],\n mutationFn: async ({ operation }: { operation: Operation }) => {\n return hs.sendOperation(operation, { callback: callbackUri }, () => {});\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getChainPropertiesQueryOptions() {\n return queryOptions({\n queryKey: [\"operations\", \"chain-properties\"],\n queryFn: async () => {\n return await CONFIG.hiveClient.database.getChainProperties();\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useAddFragment(username: string) {\n return useMutation({\n mutationKey: [\"posts\", \"add-fragment\", username],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-add\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [response, ...(data ?? [])]\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useEditFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"edit-fragment\", username, fragmentId],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-update\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return [];\n }\n\n const index = data.findIndex(({ id }) => id === fragmentId);\n if (index >= 0) {\n data[index] = response;\n }\n\n return [...data];\n }\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useRemoveFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"remove-fragment\", username],\n mutationFn: async () => {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/fragments-delete\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n },\n onSuccess() {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [...(data ?? [])].filter(({ id }) => id !== fragmentId)\n );\n },\n });\n}\n","export * from \"./use-record-activity\";\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ntype ActivityType =\n // Editor related\n | \"post-created\"\n | \"post-updated\"\n | \"post-scheduled\"\n | \"draft-created\"\n | \"video-published\"\n\n // Legacy editor related\n | \"legacy-post-created\"\n | \"legacy-post-updated\"\n | \"legacy-post-scheduled\"\n | \"legacy-draft-created\"\n | \"legacy-video-published\"\n\n // Perks related\n | \"perks-points-by-qr\"\n | \"perks-account-boost\"\n | \"perks-promote\"\n | \"perks-boost-plus\"\n | \"points-claimed\"\n | \"spin-rolled\"\n\n // Signup related\n | \"signed-up-with-wallets\"\n | \"signed-up-with-email\";\n\nexport function useRecordActivity(\n username: string | undefined,\n activityType: ActivityType\n) {\n return useMutation({\n mutationKey: [\"analytics\", activityType],\n mutationFn: async () => {\n if (!activityType) {\n throw new Error(\"[SDK][Analytics] – no activity type provided\");\n }\n const fetchApi = getBoundFetch();\n\n await fetchApi(CONFIG.plausibleHost + \"/api/event\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: activityType,\n url: window.location.href,\n domain: window.location.host,\n props: {\n username,\n },\n }),\n });\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { LeaderBoardDuration, LeaderBoardItem } from \"../types\";\n\nexport function getDiscoverLeaderboardQueryOptions(duration: LeaderBoardDuration) {\n return queryOptions({\n queryKey: [\"analytics\", \"discover-leaderboard\", duration],\n queryFn: async ({ signal }) => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/leaderboard/${duration}`,\n { signal }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch leaderboard: ${response.status}`);\n }\n\n return response.json() as Promise<LeaderBoardItem[]>;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CurationDuration, CurationItem } from \"../types\";\n\nexport function getDiscoverCurationQueryOptions(duration: CurationDuration) {\n return queryOptions({\n queryKey: [\"analytics\", \"discover-curation\", duration],\n queryFn: async ({ signal }) => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/curation/${duration}`,\n { signal }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch curation data: ${response.status}`);\n }\n\n const data = (await response.json()) as CurationItem[];\n\n // Fetch account data for efficiency calculation\n const accounts = data.map((item) => item.account);\n const accountsResponse = await CONFIG.hiveClient.database.getAccounts(accounts);\n\n // Calculate efficiency for each curator\n for (let index = 0; index < accountsResponse.length; index++) {\n const element = accountsResponse[index];\n const curator = data[index];\n\n // Convert Asset to string if needed\n const vestingShares = typeof element.vesting_shares === 'string'\n ? element.vesting_shares\n : element.vesting_shares.toString();\n const receivedVestingShares = typeof element.received_vesting_shares === 'string'\n ? element.received_vesting_shares\n : element.received_vesting_shares.toString();\n const delegatedVestingShares = typeof element.delegated_vesting_shares === 'string'\n ? element.delegated_vesting_shares\n : element.delegated_vesting_shares.toString();\n const vestingWithdrawRate = typeof element.vesting_withdraw_rate === 'string'\n ? element.vesting_withdraw_rate\n : element.vesting_withdraw_rate.toString();\n\n const effectiveVest: number =\n parseFloat(vestingShares) +\n parseFloat(receivedVestingShares) -\n parseFloat(delegatedVestingShares) -\n parseFloat(vestingWithdrawRate);\n curator.efficiency = curator.vests / effectiveVest;\n }\n\n // Sort by efficiency descending\n data.sort((a: CurationItem, b: CurationItem) => b.efficiency - a.efficiency);\n\n return data;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PageStatsResponse } from \"../types\";\n\n/**\n * Get page statistics from the private analytics API\n *\n * @param url - URL to get stats for\n * @param dimensions - Dimensions to query (default: [])\n * @param metrics - Metrics to query (default: [\"visitors\", \"pageviews\", \"visit_duration\"])\n * @param dateRange - Date range for the query\n */\nexport function getPageStatsQueryOptions(\n url: string,\n dimensions: string[] = [],\n metrics: string[] = [\"visitors\", \"pageviews\", \"visit_duration\"],\n dateRange?: string[]\n) {\n return queryOptions({\n queryKey: [\"analytics\", \"page-stats\", url, dimensions, metrics, dateRange],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/api/stats\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n metrics,\n url: encodeURIComponent(url),\n dimensions,\n date_range: dateRange,\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch page stats: ${response.status}`);\n }\n\n return response.json() as Promise<PageStatsResponse>;\n },\n enabled: !!url,\n });\n}\n","export * from \"./get-account-token-query-options\";\nexport * from \"./get-account-videos-query-options\";\n","export * from \"./get-decode-memo-query-options\";\n","import { getAccessToken } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function getDecodeMemoQueryOptions(username: string, memo: string) {\n return queryOptions({\n queryKey: [\"integrations\", \"hivesigner\", \"decode-memo\", username],\n queryFn: async () => {\n const accessToken = getAccessToken(username);\n\n if (accessToken) {\n const hsClient = new hs.Client({\n accessToken,\n });\n return hsClient.decode(memo);\n }\n },\n });\n}\n","import * as queries from \"./queries\";\n\nconst HiveSignerIntegration = {\n queries,\n};\n\nexport { HiveSignerIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { HiveSignerIntegration } from \"../../hivesigner\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\n\nexport function getAccountTokenQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"authenticate\", username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Integrations][3Speak] – anon user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/login?username=${username}&hivesigner=true`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n const memoQueryOptions =\n HiveSignerIntegration.queries.getDecodeMemoQueryOptions(\n username,\n (await response.json()).memo\n );\n await getQueryClient().prefetchQuery(memoQueryOptions);\n const { memoDecoded } = getQueryClient().getQueryData(\n memoQueryOptions.queryKey\n );\n\n return memoDecoded.replace(\"#\", \"\");\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { ThreeSpeakVideo } from \"../types\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\nimport { getAccountTokenQueryOptions } from \"./get-account-token-query-options\";\n\nexport function getAccountVideosQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"videos\", username],\n enabled: !!username,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(\n getAccountTokenQueryOptions(username)\n );\n const token = getQueryClient().getQueryData(\n getAccountTokenQueryOptions(username).queryKey\n );\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/api/my-videos`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n }\n );\n return (await response.json()) as ThreeSpeakVideo[];\n },\n });\n}\n","export * from \"./types\";\nimport * as queries from \"./queries\";\n\nconst ThreeSpeakIntegration = {\n queries,\n};\n\nexport { ThreeSpeakIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport function getHivePoshLinksQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"hiveposh\", \"links\", username],\n retry: false, // Don't retry on user not found errors\n queryFn: async () => {\n try {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://hiveposh.com/api/v0/linked-accounts/${username}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n // Handle 400 error when user is not registered on HivePosh\n if (response.status === 400) {\n const errorData = await response.json().catch(() => ({}));\n // Silently return null for \"User Not Connected\" errors\n if (errorData?.message === \"User Not Connected\") {\n return null;\n }\n }\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json();\n\n return {\n twitter: {\n username: data.twitter_username,\n profile: data.twitter_profile,\n },\n reddit: {\n username: data.reddit_username,\n profile: data.reddit_profile,\n },\n } satisfies Record<\n \"twitter\" | \"reddit\",\n { username: string; profile: string }\n >;\n } catch (err) {\n // Silently handle all HivePosh API errors\n return null;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport interface StatsResponse {\n results: [\n {\n metrics: number[];\n dimensions: string[];\n },\n ];\n query: {\n site_id: string;\n metrics: string[];\n date_range: string[];\n filters: string[];\n };\n}\ninterface UseStatsQueryOptions {\n url: string;\n dimensions?: string[];\n metrics?: string[];\n enabled?: boolean;\n}\n\nexport function getStatsQueryOptions({\n url,\n dimensions = [],\n metrics = [\"visitors\", \"pageviews\", \"visit_duration\"],\n enabled = true,\n}: UseStatsQueryOptions) {\n return queryOptions({\n queryKey: [\"integrations\", \"plausible\", url, dimensions, metrics],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(`https://ecency.com/api/stats`, {\n method: \"POST\",\n body: JSON.stringify({\n metrics,\n url: encodeURIComponent(url),\n dimensions,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n return (await response.json()) as StatsResponse;\n },\n enabled: !!url && enabled,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getRcStatsQueryOptions() {\n return queryOptions({\n queryKey: [\"resource-credits\", \"stats\"],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"rc_api\",\n \"get_rc_stats\",\n {}\n );\n return response.rc_stats;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { RCAPI } from \"@hiveio/dhive\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountRcQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"resource-credits\", \"account\", username],\n queryFn: async () => {\n const rcClient = new RCAPI(CONFIG.hiveClient);\n return rcClient.findRCAccounts([username]);\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetGameStatus } from \"../types\";\n\nexport function getGameStatusCheckQueryOptions(\n username: string | undefined,\n gameType: \"spin\"\n) {\n return queryOptions({\n queryKey: [\"games\", \"status-check\", gameType, username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in status check\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/get-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return (await response.json()) as GetGameStatus;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { GameClaim } from \"../types\";\nimport { useRecordActivity } from \"@/modules/analytics/mutations\";\n\nexport function useGameClaim(\n username: string | undefined,\n gameType: \"spin\",\n key: string\n) {\n const { mutateAsync: recordActivity } = useRecordActivity(\n username,\n \"spin-rolled\"\n );\n\n return useMutation({\n mutationKey: [\"games\", \"post\", gameType, username],\n mutationFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in game post\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/post-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n key,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return (await response.json()) as GameClaim;\n },\n onSuccess() {\n recordActivity();\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Communities } from \"../types\";\n\nexport function getCommunitiesQueryOptions(\n sort: string,\n query?: string,\n limit = 100,\n observer: string | undefined = undefined,\n enabled = true\n) {\n return queryOptions({\n queryKey: [\"communities\", \"list\", sort, query, limit],\n enabled,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_communities\",\n {\n last: \"\",\n limit,\n sort: sort === \"hot\" ? \"rank\" : sort,\n query: query ? query : null,\n observer,\n }\n );\n return (\n response\n ? sort === \"hot\"\n ? response.sort(() => Math.random() - 0.5)\n : response\n : []\n ) as Communities;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommunityRole } from \"../types\";\n\nexport function getCommunityContextQueryOptions(\n username: string | undefined,\n communityName: string | undefined\n) {\n return queryOptions({\n queryKey: [\"community\", \"context\", username, communityName],\n enabled: !!username && !!communityName,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_community_context\",\n {\n account: username,\n name: communityName,\n }\n );\n\n return {\n role: response?.role ?? \"guest\",\n subscribed: response?.subscribed ?? false,\n } satisfies {\n role: CommunityRole;\n subscribed: boolean;\n };\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Subscription } from \"../types\";\n\n/**\n * Get list of subscribers for a community\n *\n * @param communityName - The community name (e.g., \"hive-123456\")\n */\nexport function getCommunitySubscribersQueryOptions(communityName: string) {\n return queryOptions({\n queryKey: [\"communities\", \"subscribers\", communityName],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\"bridge\", \"list_subscribers\", {\n community: communityName,\n });\n return (response as Subscription[] | null) ?? [];\n },\n staleTime: 60000,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { AccountNotification } from \"../types\";\n\ntype NotifPage = AccountNotification[];\ntype NotifCursor = number | null;\n\n/**\n * Get account notifications for a community (bridge API)\n *\n * @param account - The account/community name\n * @param limit - Number of notifications per page\n */\nexport function getAccountNotificationsInfiniteQueryOptions(\n account: string,\n limit: number\n) {\n return infiniteQueryOptions<NotifPage, Error, NotifPage, (string | number)[], NotifCursor>({\n queryKey: [\"communities\", \"account-notifications\", account, limit],\n initialPageParam: null as NotifCursor,\n\n queryFn: async ({ pageParam }: { pageParam: NotifCursor }) => {\n try {\n const response = await CONFIG.hiveClient.call(\"bridge\", \"account_notifications\", {\n account,\n limit,\n last_id: pageParam ?? undefined,\n });\n return (response as AccountNotification[] | null) ?? [];\n } catch {\n return [];\n }\n },\n\n getNextPageParam: (lastPage: NotifPage): NotifCursor =>\n lastPage?.length > 0 ? lastPage[lastPage.length - 1].id : null,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { RewardedCommunity } from \"../types/rewarded-community\";\n\nexport function getRewardedCommunitiesQueryOptions() {\n return queryOptions({\n queryKey: [\"communities\", \"rewarded\"],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/rewarded-communities\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch rewarded communities: ${response.status}`);\n }\n\n return response.json() as Promise<RewardedCommunity[]>;\n },\n });\n}\n","export enum ROLES {\n OWNER = \"owner\",\n ADMIN = \"admin\",\n MOD = \"mod\",\n MEMBER = \"member\",\n GUEST = \"guest\",\n MUTED = \"muted\",\n}\n\nexport const roleMap: Record<string, string[]> = {\n [ROLES.OWNER]: [\n ROLES.ADMIN,\n ROLES.MOD,\n ROLES.MEMBER,\n ROLES.GUEST,\n ROLES.MUTED,\n ],\n [ROLES.ADMIN]: [ROLES.MOD, ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n [ROLES.MOD]: [ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n};\n\nexport type CommunityTeam = Array<Array<string>>;\nexport type CommunityRole = (typeof ROLES)[keyof typeof ROLES]; // \"owner\" | \"member\" | ...\nexport type CommunityType = \"Topic\" | \"Journal\" | \"Council\";\n\nexport interface Community {\n about: string;\n admins?: string[];\n avatar_url: string;\n created_at: string;\n description: string;\n flag_text: string;\n id: number;\n is_nsfw: boolean;\n lang: string;\n name: string;\n num_authors: number;\n num_pending: number;\n subscribers: number;\n sum_pending: number;\n settings?: any;\n team: CommunityTeam;\n title: string;\n type_id: number;\n}\n\nexport type Communities = Community[];\n","import { CommunityRole, CommunityType, ROLES } from \"../types\";\n\nexport function getCommunityType(name: string, type_id: number): CommunityType {\n if (name.startsWith(\"hive-3\") || type_id === 3) return \"Council\";\n if (name.startsWith(\"hive-2\") || type_id === 2) return \"Journal\";\n return \"Topic\";\n}\n\nexport function getCommunityPermissions({\n communityType,\n userRole,\n subscribed,\n}: {\n communityType: CommunityType;\n userRole: CommunityRole;\n subscribed: boolean;\n}) {\n const canPost = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n if (communityType === \"Topic\") return true;\n\n // Journal & Council\n return [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD, ROLES.MEMBER].includes(\n userRole\n );\n })();\n\n const canComment = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n switch (communityType) {\n case \"Topic\":\n return true;\n case \"Journal\":\n return userRole !== ROLES.GUEST || subscribed;\n case \"Council\":\n return canPost;\n }\n })();\n\n const isModerator = [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD].includes(userRole);\n\n return {\n canPost,\n canComment,\n isModerator,\n };\n}\n","import { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getNotificationsUnreadCountQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"notifications\", \"unread\", activeUsername],\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/notifications/unread`,\n {\n method: \"POST\",\n body: JSON.stringify({ code: getAccessToken(activeUsername!) }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n const data = (await response.json()) as { count: number };\n return data.count;\n },\n enabled: !!activeUsername,\n initialData: 0,\n refetchInterval: 60000,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { NotificationFilter } from \"../enums\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { ApiNotification } from \"../types\";\n\nexport function getNotificationsInfiniteQueryOptions(\n activeUsername: string | undefined,\n filter: NotificationFilter | undefined = undefined\n) {\n return infiniteQueryOptions({\n queryKey: [\"notifications\", activeUsername, filter],\n queryFn: async ({ pageParam }) => {\n const data = {\n code: getAccessToken(activeUsername!),\n filter,\n since: pageParam,\n user: undefined,\n };\n\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/notifications\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }\n );\n\n return response.json() as Promise<ApiNotification[]>;\n },\n enabled: !!activeUsername,\n initialData: { pages: [], pageParams: [] },\n initialPageParam: \"\",\n getNextPageParam: (lastPage) => lastPage?.[lastPage.length - 1]?.id ?? \"\",\n refetchOnMount: true,\n });\n}\n","export enum NotificationFilter {\n VOTES = \"rvotes\",\n MENTIONS = \"mentions\",\n FAVORITES = \"nfavorites\",\n BOOKMARKS = \"nbookmarks\",\n FOLLOWS = \"follows\",\n REPLIES = \"replies\",\n REBLOGS = \"reblogs\",\n TRANSFERS = \"transfers\",\n DELEGATIONS = \"delegations\",\n}\n","export enum NotifyTypes {\n VOTE = 1,\n MENTION = 2,\n FOLLOW = 3,\n COMMENT = 4,\n RE_BLOG = 5,\n TRANSFERS = 6,\n FAVORITES = 13,\n BOOKMARKS = 15,\n ALLOW_NOTIFY = \"ALLOW_NOTIFY\",\n}\n\nexport const ALL_NOTIFY_TYPES = [\n NotifyTypes.VOTE,\n NotifyTypes.MENTION,\n NotifyTypes.FOLLOW,\n NotifyTypes.COMMENT,\n NotifyTypes.RE_BLOG,\n NotifyTypes.TRANSFERS,\n NotifyTypes.FAVORITES,\n NotifyTypes.BOOKMARKS,\n] as const;\n\nexport enum NotificationViewType {\n ALL = \"All\",\n UNREAD = \"Unread\",\n READ = \"Read\",\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { ApiNotificationSetting } from \"../types\";\nimport { NotifyTypes } from \"../enums\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\n\nexport function getNotificationsSettingsQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"notifications\", \"settings\", activeUsername],\n queryFn: async () => {\n let token = activeUsername + \"-web\";\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/detail-device\",\n {\n body: JSON.stringify({\n code: getAccessToken(activeUsername!),\n username: activeUsername,\n token,\n }),\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n if (!response.ok) {\n throw new Error(`Failed to fetch notification settings: ${response.status}`);\n }\n return response.json() as Promise<ApiNotificationSetting>;\n },\n enabled: !!activeUsername,\n refetchOnMount: false,\n initialData: () => {\n const wasMutedPreviously =\n typeof window !== \"undefined\"\n ? localStorage.getItem(\"notifications\") !== \"true\"\n : false;\n return {\n status: 0,\n system: \"web\",\n allows_notify: 0,\n notify_types: wasMutedPreviously\n ? []\n : ([\n NotifyTypes.COMMENT,\n NotifyTypes.FOLLOW,\n NotifyTypes.MENTION,\n NotifyTypes.FAVORITES,\n NotifyTypes.BOOKMARKS,\n NotifyTypes.VOTE,\n NotifyTypes.RE_BLOG,\n NotifyTypes.TRANSFERS,\n ] as number[]),\n } as ApiNotificationSetting;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Announcement } from \"../types/announcement\";\n\nexport function getAnnouncementsQueryOptions() {\n return queryOptions({\n queryKey: [\"notifications\", \"announcements\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/announcements\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch announcements: ${response.status}`);\n }\n\n const data = await response.json() as Announcement[];\n return data || [];\n },\n staleTime: 3_600_000,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Proposal } from \"../types\";\n\n/**\n * Get a single proposal by ID\n */\nexport function getProposalQueryOptions(id: number) {\n return queryOptions({\n queryKey: [\"proposals\", \"proposal\", id],\n queryFn: async () => {\n const r = await CONFIG.hiveClient.call(\"condenser_api\", \"find_proposals\", [[id]]);\n const proposal = r[0];\n\n // Determine proposal status based on dates\n if (new Date(proposal.start_date) < new Date() && new Date(proposal.end_date) >= new Date()) {\n proposal.status = \"active\";\n } else if (new Date(proposal.end_date) < new Date()) {\n proposal.status = \"expired\";\n } else {\n proposal.status = \"inactive\";\n }\n\n return proposal as Proposal;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Proposal } from \"../types\";\n\n/**\n * Get all proposals, sorted with expired proposals at the end\n */\nexport function getProposalsQueryOptions() {\n return queryOptions({\n queryKey: [\"proposals\", \"list\"],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.call(\"database_api\", \"list_proposals\", {\n start: [-1],\n limit: 500,\n order: \"by_total_votes\",\n order_direction: \"descending\",\n status: \"all\",\n })) as { proposals: Proposal[] };\n\n const proposals = response.proposals;\n const expired = proposals.filter((x) => x.status === \"expired\");\n const others = proposals.filter((x) => x.status !== \"expired\");\n\n return [...others, ...expired];\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ProposalVote } from \"../types\";\nimport { FullAccount } from \"@/modules/accounts\";\nimport { parseAccounts } from \"@/modules/accounts/utils\";\n\n// One page = array of enriched vote rows\nexport type ProposalVoteRow = {\n id: number;\n voter: string;\n voterAccount: FullAccount;\n};\n\ntype Cursor = string; // we paginate by last voter name\n\n/**\n * Get proposal votes with pagination and enriched voter account data\n *\n * @param proposalId - The proposal ID\n * @param voter - Starting voter for pagination\n * @param limit - Number of votes per page\n */\nexport function getProposalVotesInfiniteQueryOptions(\n proposalId: number,\n voter: string,\n limit: number\n) {\n return infiniteQueryOptions<ProposalVoteRow[], Error, ProposalVoteRow[], (string | number)[], Cursor>({\n queryKey: [\"proposals\", \"votes\", proposalId, voter, limit],\n initialPageParam: voter as Cursor,\n refetchOnMount: true,\n staleTime: 0, // Always refetch on mount\n\n queryFn: async ({ pageParam }: { pageParam: Cursor }) => {\n const startParam = pageParam ?? voter;\n\n const response = (await CONFIG.hiveClient.call(\"condenser_api\", \"list_proposal_votes\", [\n [proposalId, startParam],\n limit,\n \"by_proposal_voter\",\n ])) as ProposalVote[];\n\n const list = response\n .filter((x) => x.proposal?.proposal_id === proposalId)\n .map((x) => ({ id: x.id, voter: x.voter }));\n\n const rawAccounts = await CONFIG.hiveClient.database.getAccounts(list.map((l) => l.voter));\n const accounts = parseAccounts(rawAccounts);\n\n const page: ProposalVoteRow[] = list.map((i) => ({\n ...i,\n voterAccount: accounts.find((a) => i.voter === a.name)!,\n }));\n\n return page;\n },\n\n getNextPageParam: (lastPage: ProposalVoteRow[]): Cursor | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n return last?.voter ?? undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ProposalVote } from \"../types\";\n\n/**\n * Fetches ALL proposal votes for a specific user in a single query.\n * Much more efficient than querying each proposal individually.\n * Uses \"by_voter_proposal\" order to get all votes by a user.\n */\nexport function getUserProposalVotesQueryOptions(voter: string) {\n return queryOptions({\n queryKey: [\"proposals\", \"votes\", \"by-user\", voter],\n enabled: !!voter && voter !== \"\",\n staleTime: 60 * 1000, // Cache for 1 minute\n queryFn: async () => {\n if (!voter || voter === \"\") {\n return [];\n }\n\n const response = (await CONFIG.hiveClient.call(\"database_api\", \"list_proposal_votes\", {\n start: [voter],\n limit: 1000,\n order: \"by_voter_proposal\",\n order_direction: \"ascending\",\n status: \"votable\",\n })) as { proposal_votes: ProposalVote[] };\n\n // Filter to only this user's votes (API might return votes after this user alphabetically)\n const userVotes = (response.proposal_votes || []).filter((vote) => vote.voter === voter);\n\n return userVotes;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { DelegatedVestingShare } from \"../types\";\n\n/**\n * Get vesting delegations for an account\n *\n * @param username - The account username\n * @param from - Pagination start point (delegatee name)\n * @param limit - Maximum number of results (default: 50)\n */\nexport function getVestingDelegationsQueryOptions(\n username?: string,\n from?: string,\n limit = 50\n) {\n return queryOptions({\n queryKey: [\"wallet\", \"vesting-delegations\", username, from, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_vesting_delegations\", [\n username,\n from,\n limit,\n ]) as Promise<DelegatedVestingShare[]>,\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ConversionRequest } from \"../types\";\n\n/**\n * Get HBD to HIVE conversion requests for an account\n *\n * @param account - The account username\n */\nexport function getConversionRequestsQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"conversion-requests\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_conversion_requests\", [\n account,\n ]) as Promise<ConversionRequest[]>,\n select: (data) => data.sort((a, b) => a.requestid - b.requestid),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { CollateralizedConversionRequest } from \"../types\";\n\n/**\n * Get collateralized HIVE to HBD conversion requests for an account\n *\n * @param account - The account username\n */\nexport function getCollateralizedConversionRequestsQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"collateralized-conversion-requests\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_collateralized_conversion_requests\", [\n account,\n ]) as Promise<CollateralizedConversionRequest[]>,\n select: (data) => data.sort((a, b) => a.requestid - b.requestid),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { SavingsWithdrawRequest } from \"../types\";\n\n/**\n * Get pending savings withdrawal requests for an account\n *\n * @param account - The account username\n */\nexport function getSavingsWithdrawFromQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"savings-withdraw\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_savings_withdraw_from\", [\n account,\n ]) as Promise<SavingsWithdrawRequest[]>,\n select: (data) => data.sort((a, b) => a.request_id - b.request_id),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { WithdrawRoute } from \"../types\";\n\n/**\n * Get power down (vesting withdrawal) routes for an account\n *\n * @param account - The account username\n */\nexport function getWithdrawRoutesQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"withdraw-routes\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_withdraw_routes\", [\n account,\n \"outgoing\",\n ]) as Promise<WithdrawRoute[]>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { OpenOrdersData } from \"../types\";\n\n/**\n * Get open market orders for an account\n *\n * @param user - The account username\n */\nexport function getOpenOrdersQueryOptions(user: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"open-orders\", user],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_open_orders\", [\n user,\n ]) as Promise<OpenOrdersData[]>,\n select: (data) => data.sort((a, b) => a.orderid - b.orderid),\n enabled: !!user,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { RcDirectDelegation, RcDirectDelegationsResponse } from \"../types/rc-direct-delegation\";\n\ntype RcPage = RcDirectDelegation[];\ntype RcCursor = string | null;\n\n/**\n * Get outgoing RC delegations for an account\n *\n * @param username - Account name to get delegations for\n * @param limit - Number of delegations per page\n */\nexport function getOutgoingRcDelegationsInfiniteQueryOptions(username: string, limit = 100) {\n return infiniteQueryOptions<RcPage, Error, RcPage, (string | number)[], RcCursor>({\n queryKey: [\"wallet\", \"outgoing-rc-delegations\", username, limit],\n initialPageParam: null as RcCursor,\n\n queryFn: async ({ pageParam }: { pageParam: RcCursor }) => {\n const response = await CONFIG.hiveClient\n .call(\"rc_api\", \"list_rc_direct_delegations\", {\n start: [username, pageParam ?? \"\"],\n limit,\n })\n .then((r: any) => r as RcDirectDelegationsResponse);\n\n let delegations: RcDirectDelegation[] = response.rc_direct_delegations || [];\n\n // Filter out the starting delegation when paginating\n if (pageParam) {\n delegations = delegations.filter((delegation) => delegation.to !== pageParam);\n }\n\n return delegations;\n },\n\n getNextPageParam: (lastPage: RcPage): RcCursor =>\n lastPage.length === limit ? lastPage[lastPage.length - 1].to : null,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReceivedVestingShare } from \"../types/received-vesting-share\";\n\nexport function getReceivedVestingSharesQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"received-vesting-shares\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/received-vesting/${username}`\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch received vesting shares: ${response.status}`);\n }\n\n const data = (await response.json()) as { list: ReceivedVestingShare[] };\n return data.list;\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Witness } from \"../types\";\n\ntype WitnessPage = Witness[];\ntype WitnessCursor = string;\n\n/**\n * Get witnesses ordered by vote count (infinite scroll)\n *\n * @param limit - Number of witnesses per page\n */\nexport function getWitnessesInfiniteQueryOptions(limit: number) {\n return infiniteQueryOptions<WitnessPage, Error, WitnessPage, (string | number)[], WitnessCursor>({\n queryKey: [\"witnesses\", \"list\", limit],\n initialPageParam: \"\" as WitnessCursor,\n\n queryFn: async ({ pageParam }: { pageParam: WitnessCursor }) =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_witnesses_by_vote\", [\n pageParam,\n limit,\n ]) as Promise<Witness[]>,\n\n getNextPageParam: (lastPage: WitnessPage): WitnessCursor | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n return last ? last.owner : undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { OrdersData } from \"../types\";\n\n/**\n * Get the internal HIVE/HBD market order book\n *\n * @param limit - Maximum number of orders to fetch (default: 500)\n */\nexport function getOrderBookQueryOptions(limit = 500) {\n return queryOptions({\n queryKey: [\"market\", \"order-book\", limit],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_order_book\", [\n limit,\n ]) as Promise<OrdersData>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { MarketStatistics } from \"../types\";\n\n/**\n * Get HIVE/HBD market statistics from the blockchain\n */\nexport function getMarketStatisticsQueryOptions() {\n return queryOptions({\n queryKey: [\"market\", \"statistics\"],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_ticker\", []) as Promise<MarketStatistics>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { MarketCandlestickDataItem } from \"../types\";\n\n/**\n * Get HIVE/HBD market history (candlestick data)\n *\n * @param seconds - Bucket size in seconds\n * @param startDate - Start date for the data\n * @param endDate - End date for the data\n */\nexport function getMarketHistoryQueryOptions(\n seconds: number,\n startDate: Date,\n endDate: Date\n) {\n const formatDate = (date: Date) => {\n return date.toISOString().replace(/\\.\\d{3}Z$/, \"\");\n };\n\n return queryOptions({\n queryKey: [\"market\", \"history\", seconds, startDate.getTime(), endDate.getTime()],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_market_history\", [\n seconds,\n formatDate(startDate),\n formatDate(endDate),\n ]) as Promise<MarketCandlestickDataItem[]>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { HiveHbdStats, MarketCandlestickDataItem, MarketStatistics } from \"../types\";\n\n/**\n * Get combined HIVE/HBD statistics including price, 24h change, and volume\n */\nexport function getHiveHbdStatsQueryOptions() {\n return queryOptions({\n queryKey: [\"market\", \"hive-hbd-stats\"],\n queryFn: async () => {\n // Get current market statistics\n const stats = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_ticker\",\n []\n )) as MarketStatistics;\n\n // Get 24h market history\n const now = new Date();\n const oneDayAgo = new Date(now.getTime() - 86400000); // 24 hours ago\n\n const formatDate = (date: Date) => {\n return date.toISOString().replace(/\\.\\d{3}Z$/, \"\");\n };\n\n const dayChange = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_market_history\",\n [86400, formatDate(oneDayAgo), formatDate(now)]\n )) as MarketCandlestickDataItem[];\n\n // Calculate stats\n const result: HiveHbdStats = {\n price: +stats.latest,\n close: dayChange[0] ? dayChange[0].non_hive.open / dayChange[0].hive.open : 0,\n high: dayChange[0] ? dayChange[0].non_hive.high / dayChange[0].hive.high : 0,\n low: dayChange[0] ? dayChange[0].non_hive.low / dayChange[0].hive.low : 0,\n percent: dayChange[0]\n ? 100 - ((dayChange[0].non_hive.open / dayChange[0].hive.open) * 100) / +stats.latest\n : 0,\n totalFromAsset: stats.hive_volume.split(\" \")[0],\n totalToAsset: stats.hbd_volume.split(\" \")[0],\n };\n\n return result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { MarketData } from \"../types\";\n\n/**\n * Get market chart data from CoinGecko API\n *\n * @param coin - Coin ID (e.g., \"hive\", \"bitcoin\")\n * @param vsCurrency - Currency to compare against (e.g., \"usd\", \"eur\")\n * @param fromTs - From timestamp (Unix timestamp in seconds)\n * @param toTs - To timestamp (Unix timestamp in seconds)\n */\nexport function getMarketDataQueryOptions(\n coin: string,\n vsCurrency: string,\n fromTs: string,\n toTs: string\n) {\n return queryOptions({\n queryKey: [\"market\", \"data\", coin, vsCurrency, fromTs, toTs],\n queryFn: async ({ signal }) => {\n const url = `https://api.coingecko.com/api/v3/coins/${coin}/market_chart/range?vs_currency=${vsCurrency}&from=${fromTs}&to=${toTs}`;\n\n const response = await fetch(url, { signal });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch market data: ${response.status}`);\n }\n\n return response.json() as Promise<MarketData>;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PointTransaction } from \"../types/point-transaction\";\n\ninterface PointsResponse {\n points: string;\n unclaimed_points: string;\n}\n\nexport function getPointsQueryOptions(username?: string, filter = 0) {\n return queryOptions({\n queryKey: [\"points\", username, filter],\n queryFn: async () => {\n if (!username) {\n throw new Error(\"Get points query – username wasn't provided\");\n }\n\n const name = username.replace(\"@\", \"\");\n\n // Get points\n const pointsResponse = await fetch(CONFIG.privateApiHost + \"/private-api/points\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username: name }),\n });\n\n if (!pointsResponse.ok) {\n throw new Error(`Failed to fetch points: ${pointsResponse.status}`);\n }\n\n const points = (await pointsResponse.json()) as PointsResponse;\n\n // Get transactions\n const transactionsResponse = await fetch(\n CONFIG.privateApiHost + \"/private-api/point-list\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username: name, type: filter }),\n }\n );\n\n if (!transactionsResponse.ok) {\n throw new Error(`Failed to fetch point transactions: ${transactionsResponse.status}`);\n }\n\n const transactions = (await transactionsResponse.json()) as PointTransaction[];\n\n return {\n points: points.points,\n uPoints: points.unclaimed_points,\n transactions,\n } as const;\n },\n staleTime: 30000,\n refetchOnMount: true,\n enabled: !!username,\n });\n}\n","import { infiniteQueryOptions, queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\nexport function searchQueryOptions(\n q: string,\n sort: string,\n hideLow: string,\n since?: string,\n scroll_id?: string,\n votes?: number\n) {\n return queryOptions({\n queryKey: [\"search\", q, sort, hideLow, since, scroll_id, votes],\n queryFn: async () => {\n const data: {\n q: string;\n sort: string;\n hide_low: string;\n since?: string;\n scroll_id?: string;\n votes?: number;\n } = { q, sort, hide_low: hideLow };\n\n if (since) data.since = since;\n if (scroll_id) data.scroll_id = scroll_id;\n if (votes) data.votes = votes;\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n });\n}\n\ntype PageParam = {\n sid: string | undefined;\n hasNextPage: boolean;\n};\n\nexport function getControversialRisingInfiniteQueryOptions(\n what: string,\n tag: string,\n enabled = true\n) {\n return infiniteQueryOptions<SearchResponse, Error, SearchResponse, (string | number)[], PageParam>({\n queryKey: [\"search\", \"controversial-rising\", what, tag],\n initialPageParam: { sid: undefined, hasNextPage: true } as PageParam,\n\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n if (!pageParam.hasNextPage) {\n return {\n hits: 0,\n took: 0,\n results: [],\n };\n }\n\n let sinceDate: Date | undefined;\n const now = new Date();\n\n switch (tag) {\n case \"today\":\n sinceDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n break;\n case \"week\":\n sinceDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n break;\n case \"month\":\n sinceDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n break;\n case \"year\":\n sinceDate = new Date(now.getTime() - 365 * 24 * 60 * 60 * 1000);\n break;\n default:\n sinceDate = undefined;\n }\n\n const q = \"* type:post\";\n const sort = what === \"rising\" ? \"children\" : what;\n const since = sinceDate ? sinceDate.toISOString().split(\".\")[0] : undefined;\n const hideLow = \"0\";\n const votes = tag === \"today\" ? 50 : 200;\n\n const data: {\n q: string;\n sort: string;\n hide_low: string;\n since?: string;\n scroll_id?: string;\n votes?: number;\n } = { q, sort, hide_low: hideLow };\n\n if (since) data.since = since;\n if (pageParam.sid) data.scroll_id = pageParam.sid;\n if (votes) data.votes = votes;\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n\n getNextPageParam: (resp: SearchResponse): PageParam => {\n return {\n sid: resp?.scroll_id,\n hasNextPage: resp.results.length > 0,\n };\n },\n\n enabled,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\ninterface Entry {\n author: string;\n permlink: string;\n json_metadata?: {\n tags?: string[];\n };\n}\n\nfunction buildQuery(entry: Entry, retry = 3) {\n const { json_metadata, permlink } = entry;\n\n let q = \"*\";\n q += ` -dporn type:post`;\n let tags;\n\n // 3 tags and decrease until there is enough relevant posts\n if (json_metadata && json_metadata.tags && Array.isArray(json_metadata.tags)) {\n tags = json_metadata.tags\n .filter((tag) => tag && tag !== \"\")\n .filter((tag) => !tag.startsWith(\"hive-\")) // filter out communities\n .filter((_tag, ind) => ind < +retry)\n .join(\",\");\n }\n\n // check to make sure tags are not empty\n if (tags && tags.length > 0) {\n q += ` tag:${tags}`;\n } else {\n // no tags in post, try with permlink\n const fperm = permlink.split(\"-\");\n tags = fperm\n .filter((part: string) => part !== \"\")\n .filter((part: string) => !/^-?\\d+$/.test(part))\n .filter((part: string) => part.length > 2)\n .join(\",\");\n q += ` tag:${tags}`;\n }\n\n return q;\n}\n\nexport function getSimilarEntriesQueryOptions(entry: Entry) {\n const query = buildQuery(entry);\n\n return queryOptions({\n queryKey: [\"search\", \"similar-entries\", entry.author, entry.permlink, query],\n queryFn: async () => {\n const data = {\n q: query,\n sort: \"newest\",\n hide_low: \"0\",\n };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n const searchResponse = (await response.json()) as SearchResponse;\n\n const rawEntries = searchResponse.results.filter(\n (r) => r.permlink !== entry.permlink && r.tags.indexOf(\"nsfw\") === -1\n );\n\n const entries = [];\n for (const result of rawEntries) {\n if (entries.find((y) => y.author === result.author) === undefined) {\n entries.push(result);\n }\n }\n\n return entries.slice(0, 3);\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { AccountSearchResult } from \"../types/account-search-result\";\n\nexport function getSearchAccountQueryOptions(q: string, limit = 5, random = false) {\n return queryOptions({\n queryKey: [\"search\", \"account\", q, limit],\n queryFn: async () => {\n const data = { q, limit, random: +random };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-account\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to search accounts: ${response.status}`);\n }\n\n return response.json() as Promise<AccountSearchResult[]>;\n },\n enabled: !!q,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { TagSearchResult } from \"../types/tag-search-result\";\n\nexport function getSearchTopicsQueryOptions(q: string, limit = 20, random = false) {\n return queryOptions({\n queryKey: [\"search\", \"topics\", q],\n queryFn: async () => {\n const data = { q, limit, random: +random };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-tag\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to search topics: ${response.status}`);\n }\n\n return response.json() as Promise<TagSearchResult[]>;\n },\n enabled: !!q,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\nexport function getSearchApiInfiniteQueryOptions(\n q: string,\n sort: string,\n hideLow: boolean,\n since?: string,\n votes?: number\n) {\n return infiniteQueryOptions({\n queryKey: [\"search\", \"api\", q, sort, hideLow, since, votes],\n queryFn: async ({ pageParam }: { pageParam: string | undefined }) => {\n interface SearchApiPayload {\n q: string;\n sort: string;\n hide_low: boolean;\n since?: string;\n scroll_id?: string;\n votes?: number;\n }\n\n const payload: SearchApiPayload = { q, sort, hide_low: hideLow };\n\n if (since) {\n payload.since = since;\n }\n if (pageParam) {\n payload.scroll_id = pageParam;\n }\n if (votes !== undefined) {\n payload.votes = votes;\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage: SearchResponse) => lastPage?.scroll_id,\n enabled: !!q,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\n\nexport function getSearchPathQueryOptions(q: string) {\n return queryOptions({\n queryKey: [\"search\", \"path\", q],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-path\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ q }),\n });\n\n if (!response.ok) {\n throw new Error(`Search path failed: ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data?.length > 0) {\n return data as string[];\n }\n\n return [q];\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\nimport type { PromotePrice } from \"../types\";\n\nexport function getBoostPlusPricesQueryOptions(accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"boost-plus-prices\"],\n queryFn: async () => {\n if (!accessToken) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/boost-plus-price\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch boost plus prices: ${response.status}`);\n }\n\n return await response.json() as PromotePrice[];\n },\n staleTime: Infinity,\n refetchOnMount: true,\n enabled: !!accessToken\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\nimport type { PromotePrice } from \"../types\";\n\nexport function getPromotePriceQueryOptions(accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"promote-price\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/promote-price\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch promote prices: ${response.status}`);\n }\n\n return await response.json() as PromotePrice[];\n },\n enabled: !!accessToken\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\n\nexport interface BoostPlusAccountPrice {\n account: string;\n expires: Date;\n}\n\nexport function getBoostPlusAccountPricesQueryOptions(account: string, accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"boost-plus-accounts\", account],\n queryFn: async (): Promise<BoostPlusAccountPrice | null> => {\n if (!accessToken || !account) {\n return null;\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/boosted-plus-account\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken, account }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch boost plus account prices: ${response.status}`);\n }\n\n const responseData = await response.json() as {\n expires: string;\n account: string;\n };\n\n return responseData\n ? {\n account: responseData.account,\n expires: new Date(responseData.expires)\n }\n : null;\n },\n enabled: !!account && !!accessToken\n });\n}\n"]}
1
+ {"version":3,"sources":["../../src/modules/core/mock-storage.ts","../../src/modules/core/config.ts","../../src/modules/core/utils/decoder-encoder.ts","../../src/modules/core/utils/parse-asset.ts","../../src/modules/core/utils/get-bound-fetch.ts","../../src/modules/core/storage.ts","../../src/modules/keychain/keychain.ts","../../src/modules/core/mutations/use-broadcast-mutation.ts","../../src/modules/core/mutations/broadcast-json.ts","../../src/modules/core/queries-manager.ts","../../src/modules/core/queries/get-dynamic-props-query-options.ts","../../src/modules/accounts/queries/get-account-full-query-options.ts","../../src/modules/accounts/utils/profile-metadata.ts","../../src/modules/accounts/utils/parse-accounts.ts","../../src/modules/accounts/queries/get-accounts-query-options.ts","../../src/modules/accounts/queries/get-follow-count-query-options.ts","../../src/modules/accounts/queries/get-following-query-options.ts","../../src/modules/accounts/queries/get-muted-users-query-options.ts","../../src/modules/accounts/queries/lookup-accounts-query-options.ts","../../src/modules/accounts/queries/search-accounts-by-username-query-options.ts","../../src/modules/accounts/queries/check-username-wallets-pending-query-options.ts","../../src/modules/accounts/queries/get-relationship-between-accounts-query-options.ts","../../src/modules/accounts/queries/get-account-subscriptions-query-options.ts","../../src/modules/accounts/queries/get-active-account-bookmarks-query-options.ts","../../src/modules/accounts/queries/get-active-account-favourites-query-options.ts","../../src/modules/accounts/queries/get-account-recoveries-query-options.ts","../../src/modules/accounts/queries/get-account-pending-recovery-query-options.ts","../../src/modules/accounts/queries/get-transactions-infinite-query-options.ts","../../src/modules/accounts/queries/get-bots-query-options.ts","../../src/modules/accounts/queries/get-referrals-infinite-query-options.ts","../../src/modules/accounts/queries/get-referrals-stats-query-options.ts","../../src/modules/accounts/queries/get-friends-infinite-query-options.ts","../../src/modules/accounts/queries/get-search-friends-query-options.ts","../../src/modules/posts/queries/get-trending-tags-query-options.ts","../../src/modules/posts/queries/get-fragments-query-options.ts","../../src/modules/posts/queries/get-promoted-posts-query-options.ts","../../src/modules/posts/queries/get-entry-active-votes-query-options.ts","../../src/modules/posts/queries/get-post-header-query-options.ts","../../src/modules/posts/utils/filter-dmca-entries.ts","../../src/modules/posts/queries/get-post-query-options.ts","../../src/modules/posts/queries/get-discussions-query-options.ts","../../src/modules/posts/queries/get-account-posts-query-options.ts","../../src/modules/posts/queries/get-posts-ranked-query-options.ts","../../src/modules/posts/queries/get-reblogs-query-options.ts","../../src/modules/posts/queries/get-schedules-query-options.ts","../../src/modules/posts/queries/get-drafts-query-options.ts","../../src/modules/posts/queries/get-images-query-options.ts","../../src/modules/posts/queries/get-comment-history-query-options.ts","../../src/modules/posts/queries/get-deleted-entry-query-options.ts","../../src/modules/posts/queries/get-post-tips-query-options.ts","../../src/modules/posts/utils/waves-helpers.ts","../../src/modules/posts/queries/get-waves-by-host-query-options.ts","../../src/modules/posts/queries/get-waves-by-tag-query-options.ts","../../src/modules/posts/queries/get-waves-following-query-options.ts","../../src/modules/posts/queries/get-waves-trending-tags-query-options.ts","../../src/modules/accounts/queries/get-account-vote-history-infinite-query-options.ts","../../src/modules/accounts/mutations/use-account-update.ts","../../src/modules/accounts/mutations/use-account-relations-update.ts","../../src/modules/accounts/mutations/bookmarks/use-account-bookmark-add.ts","../../src/modules/accounts/mutations/bookmarks/use-account-bookmark-delete.ts","../../src/modules/accounts/mutations/favourites/use-account-favourite-add.ts","../../src/modules/accounts/mutations/favourites/use-account-favourite-delete.ts","../../src/modules/accounts/mutations/use-account-update-key-auths.ts","../../src/modules/accounts/mutations/use-account-update-password.ts","../../src/modules/accounts/mutations/use-account-revoke-posting.ts","../../src/modules/accounts/mutations/use-account-update-recovery.ts","../../src/modules/accounts/mutations/use-account-revoke-key.ts","../../src/modules/operations/mutations/sign-operation-by-key.ts","../../src/modules/operations/mutations/sign-operation-by-keychain.ts","../../src/modules/operations/mutations/sign-operation-by-hivesigner.ts","../../src/modules/operations/queries/get-chain-properties-query-options.ts","../../src/modules/posts/mutations/add-fragment.ts","../../src/modules/posts/mutations/edit-fragment.ts","../../src/modules/posts/mutations/remove-fragment.ts","../../src/modules/analytics/mutations/index.ts","../../src/modules/analytics/mutations/use-record-activity.ts","../../src/modules/analytics/queries/get-discover-leaderboard-query-options.ts","../../src/modules/analytics/queries/get-discover-curation-query-options.ts","../../src/modules/analytics/queries/get-page-stats-query-options.ts","../../src/modules/integrations/3speak/queries/index.ts","../../src/modules/integrations/hivesigner/queries/index.ts","../../src/modules/integrations/hivesigner/queries/get-decode-memo-query-options.ts","../../src/modules/integrations/hivesigner/index.ts","../../src/modules/integrations/3speak/queries/get-account-token-query-options.ts","../../src/modules/integrations/3speak/queries/get-account-videos-query-options.ts","../../src/modules/integrations/3speak/index.ts","../../src/modules/integrations/hiveposh/queries/get-hiveposh-links-query-options.ts","../../src/modules/integrations/plausible/queries/get-stats-query-options.ts","../../src/modules/resource-credits/queries/get-rc-stats-query-options.ts","../../src/modules/resource-credits/queries/get-account-rc-query-options.ts","../../src/modules/games/queries/game-status-check-query-options.ts","../../src/modules/games/mutations/game-claim.ts","../../src/modules/communities/queries/get-communities-query-options.ts","../../src/modules/communities/queries/get-community-context-query-options.ts","../../src/modules/communities/queries/get-community-subscribers-query-options.ts","../../src/modules/communities/queries/get-account-notifications-infinite-query-options.ts","../../src/modules/communities/queries/get-rewarded-communities-query-options.ts","../../src/modules/communities/types/community.ts","../../src/modules/communities/utils/index.ts","../../src/modules/notifications/queries/get-notifications-unread-count-query-options.ts","../../src/modules/notifications/queries/get-notifications-infinite-query-options.ts","../../src/modules/notifications/enums/notification-filter.ts","../../src/modules/notifications/enums/notify-types.ts","../../src/modules/notifications/queries/get-notifications-settings-query-options.ts","../../src/modules/notifications/queries/get-announcements-query-options.ts","../../src/modules/proposals/queries/get-proposal-query-options.ts","../../src/modules/proposals/queries/get-proposals-query-options.ts","../../src/modules/proposals/queries/get-proposal-votes-query-options.ts","../../src/modules/proposals/queries/get-user-proposal-votes-query-options.ts","../../src/modules/wallet/queries/get-vesting-delegations-query-options.ts","../../src/modules/wallet/queries/get-conversion-requests-query-options.ts","../../src/modules/wallet/queries/get-collateralized-conversion-requests-query-options.ts","../../src/modules/wallet/queries/get-savings-withdraw-from-query-options.ts","../../src/modules/wallet/queries/get-withdraw-routes-query-options.ts","../../src/modules/wallet/queries/get-open-orders-query-options.ts","../../src/modules/wallet/queries/get-outgoing-rc-delegations-infinite-query-options.ts","../../src/modules/wallet/queries/get-received-vesting-shares-query-options.ts","../../src/modules/witnesses/queries/get-witnesses-query-options.ts","../../src/modules/market/queries/get-order-book-query-options.ts","../../src/modules/market/queries/get-market-statistics-query-options.ts","../../src/modules/market/queries/get-market-history-query-options.ts","../../src/modules/market/queries/get-hive-hbd-stats-query-options.ts","../../src/modules/market/queries/get-market-data-query-options.ts","../../src/modules/points/queries/get-points-query-options.ts","../../src/modules/search/queries/get-search-query-options.ts","../../src/modules/search/queries/get-similar-entries-query-options.ts","../../src/modules/search/queries/get-search-account-query-options.ts","../../src/modules/search/queries/get-search-topics-query-options.ts","../../src/modules/search/queries/get-search-api-infinite-query-options.ts","../../src/modules/search/queries/get-search-path-query-options.ts","../../src/modules/promotions/queries/get-boost-plus-prices-query-options.ts","../../src/modules/promotions/queries/get-promote-price-query-options.ts","../../src/modules/promotions/queries/get-boost-plus-account-prices-query-options.ts"],"names":["Client","QueryClient","ConfigManager","Symbol","NaiMap","useMutation","PrivateKey","hs","EcencyQueriesManager","useQuery","useInfiniteQuery","queryOptions","R","utils","infiniteQueryOptions","SortOrder","parseAsset","makeEntryPath","useQueryClient","data","R2","R3","R4","R5","cryptoUtils","queries_exports","RCAPI","ROLES","NotificationFilter","NotifyTypes","NotificationViewType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,cAAN,MAAqC;AAAA,EAG1C,MAAA,GAAiB,CAAA;AAAA,EAEjB,KAAA,GAAc;AACZ,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEA,QAAQ,GAAA,EAA4B;AAClC,IAAA,OAAO,KAAK,GAAG,CAAA;AAAA,EACjB;AAAA,EAEA,IAAI,KAAA,EAA8B;AAChC,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,KAAK,CAAA;AAAA,EAChC;AAAA,EAEA,WAAW,GAAA,EAAmB;AAC5B,IAAA,OAAO,KAAK,GAAG,CAAA;AAAA,EACjB;AAAA,EAEA,OAAA,CAAQ,KAAa,KAAA,EAAqB;AACxC,IAAA,IAAA,CAAK,GAAG,CAAA,GAAI,KAAA;AAAA,EACd;AACF,CAAA;ACpBO,IAAM,MAAA,GAAS;AAAA,EACpB,cAAA,EAAgB,oBAAA;AAAA,EAChB,SACE,OAAO,MAAA,KAAW,cAAc,IAAI,WAAA,KAAgB,MAAA,CAAO,YAAA;AAAA,EAC7D,aAAA,EAAe,QAAA;AAAA,EACf,YAAY,IAAIA,YAAA;AAAA,IACd;AAAA,MACE,uBAAA;AAAA,MACA,0BAAA;AAAA,MACA,4BAAA;AAAA,MACA,8BAAA;AAAA,MACA,wBAAA;AAAA,MACA,6BAAA;AAAA,MACA,wBAAA;AAAA,MACA,iBAAA;AAAA,MACA,wBAAA;AAAA,MACA,4BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,OAAA,EAAS,GAAA;AAAA,MACT,iBAAA,EAAmB,CAAA;AAAA,MACnB,iBAAA,EAAmB;AAAA;AACrB,GACF;AAAA,EACA,YAAA,EAAc,QAAQ,GAAA,CAAI,mBAAA;AAAA,EAC1B,WAAA,EAAa,IAAIC,sBAAA,EAAY;AAAA,EAC7B,aAAA,EAAe,uBAAA;AAAA,EACf,OAAA,EAAS,4BAAA;AAAA;AAAA,EAET,cAAc,EAAC;AAAA,EACf,UAAU,EAAC;AAAA,EACX,cAAc,EAAC;AAAA;AAAA,EAEf,gBAAgB,EAAC;AAAA,EACjB,oBAAoB,EAAC;AAAA;AAAA,EAErB,gBAAA,EAAkB;AACpB;AAEiBC;AAAA,CAAV,CAAUA,cAAAA,KAAV;AACE,EAAA,SAAS,eAAe,MAAA,EAAqB;AAClD,IAAA,MAAA,CAAO,WAAA,GAAc,MAAA;AAAA,EACvB;AAFO,EAAAA,cAAAA,CAAS,cAAA,GAAA,cAAA;AAQT,EAAA,SAAS,kBAAkB,IAAA,EAAc;AAC9C,IAAA,MAAA,CAAO,cAAA,GAAiB,IAAA;AAAA,EAC1B;AAFO,EAAAA,cAAAA,CAAS,iBAAA,GAAA,iBAAA;AAShB,EAAA,SAAS,iBAAiB,OAAA,EAAqD;AAE7E,IAAA,IAAI,4BAAA,CAA6B,IAAA,CAAK,OAAO,CAAA,EAAG;AAC9C,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,6BAAA,EAA8B;AAAA,IAC9D;AAGA,IAAA,IAAI,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1C,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,iDAAA,EAAkD;AAAA,IAClF;AAGA,IAAA,IAAI,wBAAA,CAAyB,IAAA,CAAK,OAAO,CAAA,EAAG;AAC1C,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,uDAAA,EAAwD;AAAA,IACxF;AAGA,IAAA,IAAI,WAAW,IAAA,CAAK,OAAO,KAAK,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,EAAG;AACxD,MAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,0CAAA,EAA2C;AAAA,IAC3E;AAGA,IAAA,MAAM,cAAA,GAAiB,qBAAA;AACvB,IAAA,IAAI,KAAA;AACJ,IAAA,OAAA,CAAQ,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,OAAO,OAAO,IAAA,EAAM;AACtD,MAAA,MAAM,GAAG,GAAA,EAAK,GAAG,CAAA,GAAI,KAAA;AACrB,MAAA,MAAM,QAAQ,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA,GAAI,QAAA,CAAS,KAAK,EAAE,CAAA;AAClD,MAAA,IAAI,QAAQ,GAAA,EAAM;AAChB,QAAA,OAAO,EAAE,MAAM,KAAA,EAAO,MAAA,EAAQ,qBAAqB,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAA,EAAI;AAAA,MACnE;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AAOA,EAAA,SAAS,qBAAqB,KAAA,EAAmD;AAE/E,IAAA,MAAM,iBAAA,GAAoB;AAAA;AAAA,MAExB,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,GAAI,GAAA;AAAA;AAAA,MAEjB,IAAA,CAAK,MAAA,CAAO,EAAE,CAAA,GAAI,GAAA;AAAA;AAAA,MAElB,GAAA,CAAI,OAAO,GAAG,CAAA;AAAA;AAAA,MAEd,MAAM,MAAA,CAAO,EAAE,IAAI,KAAA,CAAM,MAAA,CAAO,EAAE,CAAA,GAAI;AAAA,KACxC;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAA;AAEzB,IAAA,KAAA,MAAW,SAAS,iBAAA,EAAmB;AACrC,MAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,EAAI;AACvB,MAAA,IAAI;AACF,QAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAChB,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,EAAI,GAAI,KAAA;AAE9B,QAAA,IAAI,WAAW,gBAAA,EAAkB;AAC/B,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,KAAA;AAAA,YACN,QAAQ,CAAA,sBAAA,EAAyB,gBAAgB,YAAY,QAAQ,CAAA,mBAAA,EAAsB,MAAM,MAAM,CAAA,CAAA;AAAA,WACzG;AAAA,QACF;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA,0BAAA,EAA6B,GAAG,CAAA,CAAA,EAAG;AAAA,MACnE;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AAQA,EAAA,SAAS,gBAAA,CAAiB,OAAA,EAAiB,SAAA,GAAY,GAAA,EAAoB;AACzE,IAAA,IAAI;AAEF,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,OAAA,CAAQ,KAAK,CAAA,0CAAA,CAA4C,CAAA;AACzD,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAA,CAAQ,SAAS,SAAA,EAAW;AAC9B,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,oCAAA,EAAuC,OAAA,CAAQ,MAAM,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,EAAe,OAAA,CAAQ,SAAA,CAAU,CAAA,EAAG,EAAE,CAAC,CAAA,GAAA,CAAK,CAAA;AACvI,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,MAAM,cAAA,GAAiB,iBAAiB,OAAO,CAAA;AAC/C,MAAA,IAAI,CAAC,eAAe,IAAA,EAAM;AACxB,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,qDAAA,EAAwD,cAAA,CAAe,MAAM,CAAA,aAAA,EAAgB,QAAQ,SAAA,CAAU,CAAA,EAAG,EAAE,CAAC,CAAA,GAAA,CAAK,CAAA;AACvI,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,IAAI,KAAA;AACJ,MAAA,IAAI;AACF,QAAA,KAAA,GAAQ,IAAI,OAAO,OAAO,CAAA;AAAA,MAC5B,SAAS,UAAA,EAAY;AACnB,QAAA,OAAA,CAAQ,IAAA,CAAK,8DAA8D,OAAA,CAAQ,SAAA,CAAU,GAAG,EAAE,CAAC,OAAO,UAAU,CAAA;AACpH,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,MAAM,WAAA,GAAc,qBAAqB,KAAK,CAAA;AAC9C,MAAA,IAAI,CAAC,YAAY,IAAA,EAAM;AACrB,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,kDAAA,EAAqD,WAAA,CAAY,MAAM,CAAA,aAAA,EAAgB,QAAQ,SAAA,CAAU,CAAA,EAAG,EAAE,CAAC,CAAA,GAAA,CAAK,CAAA;AACjI,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,IAAA,CAAK,4DAA4D,OAAA,CAAQ,SAAA,CAAU,GAAG,EAAE,CAAC,OAAO,GAAG,CAAA;AAC3G,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAQO,EAAA,SAAS,YAAA,CACd,WAAqB,EAAC,EACtB,OAAiB,EAAC,EAClB,QAAA,GAAqB,EAAC,EACtB;AACA,IAAA,MAAA,CAAO,YAAA,GAAe,QAAA;AACtB,IAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,IAAA,MAAA,CAAO,YAAA,GAAe,QAAA;AAGtB,IAAA,MAAA,CAAO,cAAA,GAAiB,IAAA,CACrB,GAAA,CAAI,CAAC,OAAA,KAAY,gBAAA,CAAiB,OAAO,CAAC,CAAA,CAC1C,MAAA,CAAO,CAAC,CAAA,KAAmB,MAAM,IAAI,CAAA;AAIxC,IAAA,MAAA,CAAO,qBAAqB,EAAC;AAE7B,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,MAAA,GAAS,MAAA,CAAO,cAAA,CAAe,MAAA;AAG7D,IAAA,IAAI,CAAC,OAAO,gBAAA,EAAkB;AAC5B,MAAA,OAAA,CAAQ,IAAI,CAAA,gCAAA,CAAkC,CAAA;AAC9C,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,cAAA,EAAiB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAC9C,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,kBAAA,EAAqB,MAAA,CAAO,cAAA,CAAe,MAAM,IAAI,IAAA,CAAK,MAAM,CAAA,WAAA,EAAc,gBAAgB,CAAA,UAAA,CAAY,CAAA;AACtH,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mBAAA,EAAsB,QAAA,CAAS,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAEjF,MAAA,IAAI,mBAAmB,CAAA,EAAG;AACxB,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,gBAAgB,CAAA,8FAAA,CAAgG,CAAA;AAAA,MACxI;AAEA,MAAA,MAAA,CAAO,gBAAA,GAAmB,IAAA;AAAA,IAC5B;AAAA,EACF;AAjCO,EAAAA,cAAAA,CAAS,YAAA,GAAA,YAAA;AAAA,CAAA,EApJDA,qBAAA,KAAAA,qBAAA,GAAA,EAAA,CAAA,CAAA;;;AC5CV,SAAS,UAAU,CAAA,EAAgB;AACxC,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AAC/B;AAEO,SAAS,UAAU,CAAA,EAAa;AACrC,EAAA,IAAI,WAAA,GAAc,KAAK,CAAC,CAAA;AACxB,EAAA,IAAI,WAAA,CAAY,CAAC,CAAA,KAAM,GAAA,EAAK;AAC1B,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA,CAAK,MAAM,WAAW,CAAA;AAC/B;;;ACRO,IAAKC,OAAAA,qBAAAA,OAAAA,KAAL;AACL,EAAAA,QAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,QAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,QAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,QAAA,KAAA,CAAA,GAAM,KAAA;AAJI,EAAA,OAAAA,OAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;AAOL,IAAK,MAAA,qBAAAC,OAAAA,KAAL;AACL,EAAAA,QAAA,aAAA,CAAA,GAAgB,MAAA;AAChB,EAAAA,QAAA,aAAA,CAAA,GAAgB,KAAA;AAChB,EAAAA,QAAA,aAAA,CAAA,GAAgB,OAAA;AAHN,EAAA,OAAAA,OAAAA;AAAA,CAAA,EAAA,MAAA,IAAA,EAAA;AAWL,SAAS,WAAW,IAAA,EAAgC;AACzD,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACzB,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,UAAA,CAAW,EAAA,CAAG,CAAC,CAAC,CAAA;AAAA;AAAA,MAExB,MAAA,EAAQD,OAAAA,CAAO,EAAA,CAAG,CAAC,CAAC;AAAA,KACtB;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,SAAS,CAAA;AAAA;AAAA,MAExE,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,GAAG;AAAA,KACzB;AAAA,EACF;AACF;;;ACnCA,IAAI,WAAA;AAEG,SAAS,aAAA,GAAgB;AAC9B,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,IAAI,OAAO,UAAA,CAAW,KAAA,KAAU,UAAA,EAAY;AAC1C,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AAEA,IAAA,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA;AAAA,EAChD;AAEA,EAAA,OAAO,WAAA;AACT;;;ACRO,IAAM,OAAA,GAAU,CAAC,QAAA,KAA8C;AACpE,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,OAAO,OAAA,CAAQ,OAAA;AAAA,MACzB,MAAA,CAAO,gBAAgB,QAAA,GAAW;AAAA,KACpC;AACA,IAAA,OAAO,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,GAAI,CAAC,CAAA;AAAA,EACnC,SAAS,CAAA,EAAG;AACV,IAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEO,IAAM,cAAA,GAAiB,CAAC,QAAA,KAC7B,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAG;AAEnC,IAAM,aAAA,GAAgB,CAAC,QAAA,KAC5B,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAG;AAEnC,IAAM,YAAA,GAAe,CAAC,QAAA,KACzB,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAG;AAErC,IAAM,eAAA,GAAkB,CAAC,QAAA,KAC9B,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAA,CAAQ,QAAQ,CAAA,CAAG;;;AC1B1C,IAAA,gBAAA,GAAA;AAAA,QAAA,CAAA,gBAAA,EAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,SAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAeO,SAAS,SAAA,GAAY;AAC1B,EAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY;AACpC,IAAA,MAAA,CAAO,aAAA,EAAe,iBAAiB,MAAM;AAC3C,MAAA,OAAA,EAAQ;AAAA,IACV,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH;AAEO,IAAM,SAAA,GAAY,CACvB,OAAA,EACA,UAAA,EACA,GAAA,EACA,GAAA,GAAqB,IAAA,KAErB,IAAI,OAAA,CAAoB,CAAC,OAAA,EAAS,MAAA,KAAW;AAC3C,EAAA,MAAA,CAAO,aAAA,EAAe,gBAAA;AAAA,IACpB,OAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,CAAC,IAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,QAAA,MAAA,CAAO,EAAE,OAAA,EAAS,qBAAA,EAAuB,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA;AAAA,GACF;AACF,CAAC,CAAA;AAEI,IAAM,UAAA,GAAa,CACxB,OAAA,EACA,EAAA,EACA,GAAA,EACA,IAAA,EACA,WAAA,EACA,GAAA,GAAqB,IAAA,KAErB,IAAI,OAAA,CAAoB,CAAC,SAAS,MAAA,KAAW;AAC3C,EAAA,MAAA,CAAO,aAAA,EAAe,iBAAA;AAAA,IACpB,OAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,CAAC,IAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,QAAA,MAAA,CAAO,EAAE,OAAA,EAAS,qBAAA,EAAuB,CAAA;AAAA,MAC3C;AACA,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA;AAAA,GACF;AACF,CAAC,CAAA;;;ACzDI,SAAS,qBACd,WAAA,GAA2B,IAC3B,QAAA,EACA,UAAA,EACA,YAAgE,MAAM;AAAC,CAAA,EACvE;AACA,EAAA,OAAOE,sBAAA,CAAY;AAAA,IACjB,SAAA;AAAA,IACA,WAAA,EAAa,CAAC,GAAG,WAAA,EAAa,QAAQ,CAAA;AAAA,IACtC,UAAA,EAAY,OAAO,OAAA,KAAe;AAChC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,GAAa,cAAc,QAAQ,CAAA;AACzC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,UAAA,GAAaC,gBAAA,CAAW,UAAA,CAAW,UAAU,CAAA;AAEnD,QAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,cAAA;AAAA,UACjC,WAAW,OAAO,CAAA;AAAA,UAClB;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,aAAa,QAAQ,CAAA;AACvC,MAAA,IAAI,SAAA,IAAa,aAAa,UAAA,EAAY;AACxC,QAAA,OAAO,gBAAA,CAAS,SAAA;AAAA,UACd,QAAA;AAAA,UACA,WAAW,OAAO,CAAA;AAAA,UAClB;AAAA,SACF,CAAE,IAAA,CAAK,CAAC,CAAA,KAAW,EAAE,MAAM,CAAA;AAAA,MAC7B;AAGA,MAAA,IAAI,KAAA,GAAQ,eAAe,QAAQ,CAAA;AACnC,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,MAAM,IAAI,aAAA,EAAc;AACxB,QAAA,MAAM,GAAA,GAAM,MAAM,CAAA,CAAE,sCAAA,EAAwC;AAAA,UAC1D,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,aAAA,EAAe,KAAA;AAAA,YACf,cAAA,EAAgB,kBAAA;AAAA,YAChB,MAAA,EAAQ;AAAA,WACV;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,YAAY,UAAA,CAAW,OAAO,GAAG;AAAA,SACzD,CAAA;AAED,QAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,UAAA,MAAM,MAAM,MAAM,GAAA,CAAI,MAAK,CAAE,KAAA,CAAM,MAAM,EAAE,CAAA;AAC3C,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,aAAA,EAAgB,GAAA,CAAI,MAAM,IAAI,GAAA,CAAI,UAAU,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAAA,QACvE;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,QAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,UAAA,MAAM,IAAI,MAAM,CAAA,aAAA,EAAgB,IAAA,CAAK,UAAU,IAAA,CAAK,MAAM,CAAC,CAAA,CAAE,CAAA;AAAA,QAC/D;AACA,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAEA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACvEA,eAAsB,aAAA,CACpB,QAAA,EACA,EAAA,EACA,OAAA,EACA;AACA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,EAAA;AAAA,IACA,gBAAgB,EAAC;AAAA,IACjB,sBAAA,EAAwB,CAAC,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,OAAO;AAAA,GAC9B;AAEA,EAAA,MAAM,UAAA,GAAa,cAAc,QAAQ,CAAA;AACzC,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,UAAA,GAAaA,gBAAAA,CAAW,UAAA,CAAW,UAAU,CAAA;AAEnD,IAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,IAAA;AAAA,MACjC,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,aAAa,QAAQ,CAAA;AACvC,EAAA,IAAI,SAAA,IAAa,aAAa,UAAA,EAAY;AACxC,IAAA,OAAO,gBAAA,CAAS,SAAA,CAAU,QAAA,EAAU,CAAC,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA,EAAG,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAW,EAAE,MAAM,CAAA;AAAA,EACpG;AAGA,EAAA,IAAI,KAAA,GAAQ,eAAe,QAAQ,CAAA;AACnC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,QAAA,GAAW,MAAM,IAAIC,mBAAA,CAAG,MAAA,CAAO;AAAA,MACnC,WAAA,EAAa;AAAA,KACd,CAAA,CAAE,UAAA,CAAW,EAAC,EAAG,CAAC,QAAQ,CAAA,EAAG,EAAA,EAAI,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AACzD,IAAA,OAAO,QAAA,CAAS,MAAA;AAAA,EAClB;AAEA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF;ACvCO,SAAS,eAAA,GAAkB;AAEhC,EAAA,OAAO,IAAIN,sBAAAA,CAAY;AAAA,IACrB,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS;AAAA;AAAA;AAAA;AAAA,QAIP,oBAAA,EAAsB,KAAA;AAAA,QACtB,cAAA,EAAgB;AAAA;AAClB;AACF,GACD,CAAA;AACH;AACO,IAAM,cAAA,GAAiB,MAAM,MAAA,CAAO;AAE1BO;AAAA,CAAV,CAAUA,qBAAAA,KAAV;AACE,EAAA,SAAS,aAAgB,QAAA,EAAoB;AAClD,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,aAAgB,QAAQ,CAAA;AAAA,EAC7C;AAHO,EAAAA,qBAAAA,CAAS,YAAA,GAAA,YAAA;AAKT,EAAA,SAAS,qBAAwB,QAAA,EAAoB;AAC1D,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,OAAO,WAAA,CAAY,aAA8B,QAAQ,CAAA;AAAA,EAC3D;AAHO,EAAAA,qBAAAA,CAAS,oBAAA,GAAA,oBAAA;AAKhB,EAAA,eAAsB,cAAiB,OAAA,EAA6B;AAClE,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,MAAM,WAAA,CAAY,cAAc,OAAO,CAAA;AACvC,IAAA,OAAO,YAAA,CAAgB,QAAQ,QAAQ,CAAA;AAAA,EACzC;AAJA,EAAAA,qBAAAA,CAAsB,aAAA,GAAA,aAAA;AAMtB,EAAA,eAAsB,sBACpB,OAAA,EAOA;AACA,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,MAAM,WAAA,CAAY,sBAAsB,OAAO,CAAA;AAC/C,IAAA,OAAO,oBAAA,CAAwB,QAAQ,QAAQ,CAAA;AAAA,EACjD;AAZA,EAAAA,qBAAAA,CAAsB,qBAAA,GAAA,qBAAA;AAcf,EAAA,SAAS,0BAA6B,OAAA,EAA6B;AACxE,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,MAAM,aAAA,CAAc,OAAO,CAAA;AAAA,MACrC,OAAA,EAAS,MAAM,YAAA,CAAgB,OAAA,CAAQ,QAAQ,CAAA;AAAA,MAC/C,cAAA,EAAgB,MAAMC,mBAAA,CAAS,OAAO,CAAA;AAAA,MACtC,WAAA,EAAa,MAAM,cAAA,EAAe,CAAE,WAAW,OAAO;AAAA,KACxD;AAAA,EACF;AAPO,EAAAD,qBAAAA,CAAS,yBAAA,GAAA,yBAAA;AAST,EAAA,SAAS,kCACd,OAAA,EAOA;AACA,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,MAAM,qBAAA,CAAsB,OAAO,CAAA;AAAA,MAC7C,OAAA,EAAS,MAAM,oBAAA,CAAwB,OAAA,CAAQ,QAAQ,CAAA;AAAA,MACvD,cAAA,EAAgB,MAAME,2BAAA,CAAiB,OAAO,CAAA;AAAA,MAC9C,WAAA,EAAa,MAAM,cAAA,EAAe,CAAE,mBAAmB,OAAO;AAAA,KAChE;AAAA,EACF;AAfO,EAAAF,qBAAAA,CAAS,iCAAA,GAAA,iCAAA;AAAA,CAAA,EAxCDA,4BAAA,KAAAA,4BAAA,GAAA,EAAA,CAAA,CAAA;ACtBV,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAOG,uBAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,MAAA,EAAQ,eAAe,CAAA;AAAA,IAClC,eAAA,EAAiB,GAAA;AAAA,IACjB,SAAA,EAAW,GAAA;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAS,YAAmC;AAC1C,MAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,CAAO,UAAA,CAAW,SAC3C,0BAAA,EAA2B,CAC3B,IAAA,CAAK,CAAC,CAAA,MAAY;AAAA,QACjB,uBAAA,EACE,CAAA,CAAE,uBAAA,IAA2B,CAAA,CAAE,wBAAA;AAAA,QACjC,sBAAsB,CAAA,CAAE,oBAAA;AAAA,QACxB,cAAA,EAAgB,CAAA,CAAE,cAAA,IAAkB,CAAA,CAAE,cAAA;AAAA,QACtC,mBAAmB,CAAA,CAAE,iBAAA;AAAA,QACrB,mBAAmB,CAAA,CAAE,iBAAA;AAAA,QACrB,wBAAwB,CAAA,CAAE,sBAAA;AAAA,QAC1B,gBAAgB,CAAA,CAAE;AAAA,OACpB,CAAE,CAAA;AAEJ,MAAA,MAAM,cACJ,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,kBAAkB,CAAA;AAC1D,MAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,QAClD;AAAA,OACF;AACA,MAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,QAClD,iBAAA;AAAA,QACA,CAAC,MAAM;AAAA,OACT;AAEA,MAAA,MAAM,aAAA,GACH,UAAA,CAAW,aAAA,CAAc,uBAAuB,CAAA,CAAE,SACjD,UAAA,CAAW,aAAA,CAAc,oBAAoB,CAAA,CAAE,MAAA,GACjD,GAAA;AACF,MAAA,MAAM,IAAA,GAAO,UAAA,CAAW,WAAA,CAAY,sBAAA,CAAuB,IAAI,CAAA,CAAE,MAAA;AACjE,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,WAAA,CAAY,sBAAA,CAAuB,KAAK,CAAA,CAAE,MAAA;AACnE,MAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,UAAA,CAAW,aAAa,CAAA;AAC5D,MAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,UAAA,CAAW,cAAc,CAAA,CAAE,MAAA;AAChE,MAAA,MAAM,eAAe,aAAA,CAAc,cAAA;AACnC,MAAA,MAAM,kBAAkB,aAAA,CAAc,iBAAA;AACtC,MAAA,MAAM,YAAY,aAAA,CAAc,iBAAA;AAChC,MAAA,MAAM,gBAAA,GAAmB,UAAA;AAAA,QACvB,aAAA,CAAc;AAAA,OAChB,CAAE,MAAA;AACF,MAAA,MAAM,kBAAA,GAAqB,UAAA;AAAA,QACzB,aAAA,CAAc;AAAA,OAChB,CAAE,MAAA;AACF,MAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,aAAA,CAAc,cAAc,CAAA,CAAE,MAAA;AAC/D,MAAA,MAAM,uBAAuB,aAAA,CAAc,sBAAA;AAC3C,MAAA,MAAM,qBAAqB,UAAA,CAAW,oBAAA;AAEtC,MAAA,OAAO;AAAA,QACL,aAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,gBAAA;AAAA,QACA,iBAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,SAAA;AAAA,QACA,gBAAA;AAAA,QACA,kBAAA;AAAA,QACA,aAAA;AAAA,QACA,oBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;AChEO,SAAS,2BAA2B,QAAA,EAA8B;AACvE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,kBAAA,EAAoB,QAAQ,CAAA;AAAA,IACvC,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,MAC3C;AAEA,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,UAAA,CAAW,SAAS,WAAA,CAAY;AAAA,QAC7D;AAAA,OACD,CAAA;AACD,MAAA,IAAI,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG;AAChB,QAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,MACxD;AAEA,MAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,QAAA,CAAS,CAAC,EAAE,qBAAqB,CAAA;AAEtE,MAAA,IAAI,YAAA;AACJ,MAAA,IAAI;AACF,QAAA,YAAA,GAAe,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,UAC9C,kBAAA;AAAA,UACA,CAAC,QAAQ;AAAA,SACX;AAAA,MACF,SAAS,CAAA,EAAG;AAAA,MAAC;AAEb,MAAA,IAAI,eAAA,GAAkB,CAAA;AACtB,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAc,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,UAC1C,eAAA;AAAA,UACA,yBAAA;AAAA,UACA,CAAC,UAAU,CAAC;AAAA,SACd;AACA,QAAA,eAAA,GAAkB,UAAA,CAAW,CAAC,CAAA,EAAG,UAAA,IAAc,CAAA;AAAA,MACjD,SAAS,CAAA,EAAG;AAAA,MAAC;AAEb,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,QAClB,KAAA,EAAO,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA;AAAA,QACnB,MAAA,EAAQ,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA;AAAA,QACpB,OAAA,EAAS,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA;AAAA,QACrB,QAAA,EAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA;AAAA,QACtB,UAAA,EAAY,QAAA,CAAS,CAAC,CAAA,CAAE,UAAA;AAAA,QACxB,OAAA,EAAS,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA;AAAA,QACrB,qBAAA,EAAuB,QAAA,CAAS,CAAC,CAAA,CAAE,qBAAA;AAAA,QACnC,cAAA,EAAgB,QAAA,CAAS,CAAC,CAAA,CAAE,cAAA;AAAA,QAC5B,SAAA,EAAW,QAAA,CAAS,CAAC,CAAA,CAAE,SAAA;AAAA,QACvB,aAAA,EAAe,QAAA,CAAS,CAAC,CAAA,CAAE,aAAA;AAAA,QAC3B,mBAAA,EAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,mBAAA;AAAA,QACjC,kBAAA,EAAoB,QAAA,CAAS,CAAC,CAAA,CAAE,kBAAA;AAAA,QAChC,mBAAA,EAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,mBAAA;AAAA,QACjC,sBAAA,EAAwB,QAAA,CAAS,CAAC,CAAA,CAAE,sBAAA;AAAA,QACpC,OAAA,EAAS,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA;AAAA,QACrB,WAAA,EAAa,QAAA,CAAS,CAAC,CAAA,CAAE,WAAA;AAAA,QACzB,eAAA,EAAiB,QAAA,CAAS,CAAC,CAAA,CAAE,eAAA;AAAA,QAC7B,mBAAA,EAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,mBAAA;AAAA,QACjC,iCAAA,EACE,QAAA,CAAS,CAAC,CAAA,CAAE,iCAAA;AAAA,QACd,+BAAA,EACE,QAAA,CAAS,CAAC,CAAA,CAAE,+BAAA;AAAA,QACd,mBAAA,EAAqB,QAAA,CAAS,CAAC,CAAA,CAAE,mBAAA;AAAA,QACjC,uBAAA,EAAyB,QAAA,CAAS,CAAC,CAAA,CAAE,uBAAA;AAAA,QACrC,wBAAA,EAA0B,QAAA,CAAS,CAAC,CAAA,CAAE,wBAAA;AAAA,QACtC,cAAA,EAAgB,QAAA,CAAS,CAAC,CAAA,CAAE,cAAA;AAAA,QAC5B,wBAAA,EAA0B,QAAA,CAAS,CAAC,CAAA,CAAE,wBAAA;AAAA,QACtC,uBAAA,EAAyB,QAAA,CAAS,CAAC,CAAA,CAAE,uBAAA;AAAA,QACrC,qBAAA,EAAuB,QAAA,CAAS,CAAC,CAAA,CAAE,qBAAA;AAAA,QACnC,WAAA,EAAa,QAAA,CAAS,CAAC,CAAA,CAAE,WAAA;AAAA,QACzB,SAAA,EAAW,QAAA,CAAS,CAAC,CAAA,CAAE,SAAA;AAAA,QACvB,aAAA,EAAe,QAAA,CAAS,CAAC,CAAA,CAAE,aAAA;AAAA,QAC3B,KAAA,EAAO,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA;AAAA,QACnB,gBAAA,EAAkB,QAAA,CAAS,CAAC,CAAA,CAAE,gBAAA;AAAA,QAC9B,iBAAA,EAAmB,QAAA,CAAS,CAAC,CAAA,CAAE,iBAAA;AAAA,QAC/B,cAAA,EAAgB,QAAA,CAAS,CAAC,CAAA,CAAE,cAAA;AAAA,QAC5B,YAAA,EAAc,QAAA,CAAS,CAAC,CAAA,CAAE,YAAA;AAAA,QAC1B,gBAAA,EAAkB,QAAA,CAAS,CAAC,CAAA,CAAE,gBAAA;AAAA,QAC9B,YAAA;AAAA,QACA,UAAA,EAAY,eAAA;AAAA,QACZ;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AChFA,SAAS,eACP,MAAA,EAC2B;AAC3B,EAAA,OAAO,QAAQ,GAAA,CAAI,CAAC,EAAE,IAAA,EAAM,GAAG,MAAK,KAAM;AACxC,IAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AACrC,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAK;AAAA,IACzB;AAEA,IAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,GAAG,UAAS,GAAI,IAAA;AAC9C,IAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS;AAAA,EACnC,CAAC,CAAA;AACH;AAEO,SAAS,qBACd,mBAAA,EACgB;AAChB,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,mBAAmB,CAAA;AAC7C,IAAA,IACE,MAAA,IACA,OAAO,MAAA,KAAW,QAAA,IAClB,OAAO,OAAA,IACP,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,EAC1B;AACA,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAChB;AAAA,EACF,SAAS,GAAA,EAAK;AAAA,EAAC;AAEf,EAAA,OAAO,EAAC;AACV;AAEO,SAAS,sBACd,IAAA,EACgB;AAChB,EAAA,OAAO,oBAAA,CAAqB,MAAM,qBAAqB,CAAA;AACzD;AAEO,SAAS,oBAAA,CAAqB;AAAA,EACnC,eAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,MAAM,EAAE,QAAQ,aAAA,EAAe,OAAA,EAAS,iBAAiB,GAAG,WAAA,EAAY,GACtE,OAAA,IAAW,EAAC;AAEd,EAAA,MAAM,QAAA,GAAaC,aAAA,CAAA,SAAA;AAAA,IACjB,mBAAoB,EAAC;AAAA,IACrB;AAAA,GACF;AAEA,EAAA,MAAM,aAAa,MAAA,IAAU,aAAA;AAE7B,EAAA,IAAI,UAAA,IAAc,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AACvC,IAAA,QAAA,CAAS,MAAA,GAAS,UAAA;AAAA,EACpB;AAEA,EAAA,QAAA,CAAS,MAAA,GAAS,cAAA,CAAe,QAAA,CAAS,MAAM,CAAA;AAChD,EAAA,QAAA,CAAS,OAAA,GAAU,CAAA;AAEnB,EAAA,OAAO,QAAA;AACT;;;ACrEO,SAAS,cAAc,WAAA,EAAmC;AAC/D,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5B,IAAA,MAAM,OAAA,GAAuB;AAAA,MAC3B,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,YAAY,CAAA,CAAE,UAAA;AAAA,MACd,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,YAAY,CAAA,CAAE,UAAA;AAAA,MACd,uBAAuB,CAAA,CAAE,qBAAA;AAAA,MACzB,gBAAgB,CAAA,CAAE,cAAA;AAAA,MAClB,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,eAAe,CAAA,CAAE,aAAA;AAAA,MACjB,qBAAqB,CAAA,CAAE,mBAAA;AAAA,MACvB,oBAAoB,CAAA,CAAE,kBAAA;AAAA,MACtB,qBAAqB,CAAA,CAAE,mBAAA;AAAA,MACvB,wBAAwB,CAAA,CAAE,sBAAA;AAAA,MAC1B,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,iBAAiB,CAAA,CAAE,eAAA;AAAA,MACnB,qBAAqB,CAAA,CAAE,mBAAA;AAAA,MACvB,mCAAmC,CAAA,CAAE,iCAAA;AAAA,MACrC,iCAAiC,CAAA,CAAE,+BAAA;AAAA,MACnC,qBAAqB,CAAA,CAAE,mBAAA;AAAA,MACvB,yBAAyB,CAAA,CAAE,uBAAA;AAAA,MAC3B,0BAA0B,CAAA,CAAE,wBAAA;AAAA,MAC5B,gBAAgB,CAAA,CAAE,cAAA;AAAA,MAClB,0BAA0B,CAAA,CAAE,wBAAA;AAAA,MAC5B,yBAAyB,CAAA,CAAE,uBAAA;AAAA,MAC3B,uBAAuB,CAAA,CAAE,qBAAA;AAAA,MACzB,aAAa,CAAA,CAAE,WAAA;AAAA,MACf,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,eAAe,CAAA,CAAE,aAAA;AAAA,MACjB,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,kBAAkB,CAAA,CAAE,gBAAA;AAAA,MACpB,mBAAmB,CAAA,CAAE,iBAAA;AAAA,MACrB,gBAAgB,CAAA,CAAE,cAAA;AAAA,MAClB,cAAc,CAAA,CAAE,YAAA;AAAA,MAChB,kBAAkB,CAAA,CAAE;AAAA,KACtB;AAGA,IAAA,IAAI,OAAA,GAAsC,oBAAA;AAAA,MACxC,CAAA,CAAE;AAAA,KACJ;AAGA,IAAA,IAAI,CAAC,OAAA,IAAW,MAAA,CAAO,KAAK,OAAO,CAAA,CAAE,WAAW,CAAA,EAAG;AACjD,MAAA,IAAI;AACF,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,iBAAiB,IAAI,CAAA;AACvD,QAAA,IAAI,aAAa,OAAA,EAAS;AACxB,UAAA,OAAA,GAAU,YAAA,CAAa,OAAA;AAAA,QACzB;AAAA,MACF,SAAS,CAAA,EAAG;AAAA,MAEZ;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,OAAA,IAAW,MAAA,CAAO,KAAK,OAAO,CAAA,CAAE,WAAW,CAAA,EAAG;AACjD,MAAA,OAAA,GAAU;AAAA,QACR,KAAA,EAAO,EAAA;AAAA,QACP,WAAA,EAAa,EAAA;AAAA,QACb,QAAA,EAAU,EAAA;AAAA,QACV,IAAA,EAAM,EAAA;AAAA,QACN,aAAA,EAAe,EAAA;AAAA,QACf,OAAA,EAAS;AAAA,OACX;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,GAAG,OAAA,EAAS,OAAA,EAAQ;AAAA,EAC/B,CAAC,CAAA;AACH;;;AC1EO,SAAS,wBAAwB,SAAA,EAAqB;AAC3D,EAAA,OAAOD,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,cAAA,EAAgB,SAAS,CAAA;AAAA,IAChD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,YAAY,SAAS,CAAA;AACvE,MAAA,OAAO,cAAc,QAAQ,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,OAAA,EAAS,UAAU,MAAA,GAAS;AAAA,GAC7B,CAAA;AACH;ACTO,SAAS,2BAA2B,QAAA,EAAkB;AAC3D,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,cAAA,EAAgB,QAAQ,CAAA;AAAA,IAC/C,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,kBAAA,EAAoB;AAAA,MAClD;AAAA,KACD;AAAA,GACJ,CAAA;AACH;ACHO,SAAS,yBACd,QAAA,EACA,cAAA,EACA,UAAA,GAAa,MAAA,EACb,QAAQ,GAAA,EACR;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,UAAA,EAAY,aAAa,QAAA,EAAU,cAAA,EAAgB,YAAY,KAAK,CAAA;AAAA,IAC/E,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,eAAA,EAAiB;AAAA,MAC/C,QAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACnBO,SAAS,yBAAA,CAA0B,QAAA,EAA8B,KAAA,GAAQ,GAAA,EAAK;AACnF,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,aAAA,EAAe,QAAQ,CAAA;AAAA,IAC9C,SAAS,YAAY;AACnB,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,eAAA,EAAiB;AAAA,QACvE,QAAA;AAAA,QACA,EAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,SAAS,CAAA;AAAA,IAC9C,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AChBO,SAAS,0BAAA,CAA2B,KAAA,EAAe,KAAA,GAAQ,EAAA,EAAI;AACpE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,QAAA,EAAU,OAAO,KAAK,CAAA;AAAA,IAC7C,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,iBAAA,EAAmB;AAAA,MACjD,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,OAAA,EAAS,CAAC,CAAC,KAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;ACjBO,SAAS,wCACd,KAAA,EACA,KAAA,GAAQ,CAAA,EACR,WAAA,GAAwB,EAAC,EACzB;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,QAAA,EAAU,OAAO,WAAW,CAAA;AAAA,IACnD,OAAA,EAAS,CAAC,CAAC,KAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,QACjD,iBAAA;AAAA,QACA,CAAC,OAAO,KAAK;AAAA,OACf;AACA,MAAA,OAAO,QAAA,CAAS,MAAA;AAAA,QAAO,CAAC,SACtB,WAAA,CAAY,MAAA,GAAS,IAAI,CAAC,WAAA,CAAY,QAAA,CAAS,IAAI,CAAA,GAAI;AAAA,OACzD;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACAA,IAAM,kBAAA,uBAAyB,GAAA,CAAI;AAAA,EACjC,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAUM,SAAS,uCAAA,CACd,UACA,IAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAkD;AAAA,IACvD,QAAA,EAAU;AAAA,MACR,UAAA;AAAA,MACA,sBAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,IAAQ;AAAA,KACV;AAAA,IACA,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,IAAA,EAAM;AACtB,QAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,MACxB;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,sBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,QAAA;AAAA,YACA;AAAA,WACD;AAAA;AACH,OACF;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AAAA,MACxB;AAEA,MAAA,MAAM,OAAA,GAAW,MAAM,QAAA,CAAS,IAAA,EAAK;AAErC,MAAA,MAAM,OAAA,GAAqC,MAAM,OAAA,CAAQ,OAAO,IAC5D,OAAA,CAAQ,OAAA,CAAQ,CAAC,IAAA,KAAS;AACxB,QAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AACrC,UAAA,OAAO,EAAC;AAAA,QACV;AAEA,QAAA,MAAM,UAAA,GAAa,IAAA;AAEnB,QAAA,MAAM,SACJ,OAAO,UAAA,CAAW,KAAA,KAAU,QAAA,GACxB,WAAW,KAAA,GACX,MAAA;AAEN,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,EAAC;AAAA,QACV;AAEA,QAAA,MAAM,IAAA,GACJ,UAAA,CAAW,IAAA,IAAQ,OAAO,UAAA,CAAW,IAAA,KAAS,QAAA,GAC1C,EAAE,GAAI,UAAA,CAAW,IAAA,EAAiC,GAClD,EAAC;AAEP,QAAA,MAAM,gBAAyC,EAAC;AAEhD,QAAA,MAAM,OAAA,GACJ,OAAO,UAAA,CAAW,OAAA,KAAY,YAAY,UAAA,CAAW,OAAA,GACjD,WAAW,OAAA,GACX,MAAA;AAEN,QAAA,MAAM,aACJ,OAAO,UAAA,CAAW,WAAW,QAAA,GACzB,UAAA,CAAW,WAAW,CAAA,GACtB,MAAA;AAEN,QAAA,MAAM,WAAW,UAAA,IAAc,KAAA;AAE/B,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,aAAA,CAAc,OAAA,GAAU,OAAA;AAAA,QAC1B;AAEA,QAAA,aAAA,CAAc,IAAA,GAAO,QAAA;AAErB,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,MAAA;AAAA,UACA,QAAA,EAAU,MAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM;AAAA,SACR;AAEA,QAAA,MAAM,sBAAiD,EAAC;AAExD,QAAA,KAAA,MAAW,CAAC,UAAA,EAAY,SAAS,KAAK,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC1D,UAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,kBAAA,CAAmB,GAAA,CAAI,UAAU,CAAA,EAAG;AACtC,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,CAAC,SAAA,EAAW;AAC/C,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,CAAC,kBAAA,CAAmB,IAAA,CAAK,UAAU,CAAA,EAAG;AACxC,YAAA;AAAA,UACF;AAEA,UAAA,mBAAA,CAAoB,IAAA,CAAK;AAAA,YACvB,MAAA,EAAQ,UAAA;AAAA,YACR,QAAA,EAAU,UAAA;AAAA,YACV,OAAA,EAAS,SAAA;AAAA,YACT,IAAA,EAAM,QAAA;AAAA,YACN,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAM,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,QAAA;AAAS,WAC5C,CAAA;AAAA,QACH;AAEA,QAAA,OAAO,CAAC,aAAA,EAAe,GAAG,mBAAmB,CAAA;AAAA,MAC/C,CAAC,IACD,EAAC;AAEL,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,QAAQ,MAAA,GAAS,CAAA;AAAA,QACxB,MAAA,EAAQ,OAAA,CAAQ,MAAA,GAAS,OAAA,GAAU,MAAA;AAAA,QACnC,OAAA,EAAS,OAAA,CAAQ,MAAA,GAAS,OAAA,GAAU;AAAA,OACtC;AAAA,IACF,CAAA;AAAA,IACA,cAAA,EAAgB;AAAA,GACjB,CAAA;AACH;ACjKO,SAAS,0CAAA,CACd,WACA,MAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,WAAA,EAAa,WAAW,MAAM,CAAA;AAAA,IACrD,OAAA,EAAS,CAAC,CAAC,SAAA,IAAa,CAAC,CAAC,MAAA;AAAA,IAC1B,cAAA,EAAgB,KAAA;AAAA,IAChB,eAAA,EAAiB,IAAA;AAAA,IACjB,SAAS,YAAY;AACnB,MAAA,OAAQ,MAAM,OAAO,UAAA,CAAW,IAAA;AAAA,QAC9B,QAAA;AAAA,QACA,mCAAA;AAAA,QACA,CAAC,WAAW,MAAM;AAAA,OACpB;AAAA,IACF;AAAA,GACD,CAAA;AACH;AChBO,SAAS,oCACd,QAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,eAAA,EAAiB,QAAQ,CAAA;AAAA,IAChD,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACvC,QAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,UACE,OAAA,EAAS;AAAA;AACX,OACF;AACA,MAAA,OAAQ,YAAY,EAAC;AAAA,IACvB;AAAA,GACD,CAAA;AACH;AClBO,SAAS,sCACd,cAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,WAAA,EAAa,cAAc,CAAA;AAAA,IAClD,OAAA,EAAS,CAAC,CAAC,cAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,MAAM,IAAI,MAAM,kDAA6C,CAAA;AAAA,MAC/D;AACA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,wBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,MAAM,cAAA,CAAe,cAAc,GAAG;AAAA;AAC/D,OACF;AACA,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B;AAAA,GACD,CAAA;AACH;ACxBO,SAAS,uCACd,cAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,YAAA,EAAc,cAAc,CAAA;AAAA,IACnD,OAAA,EAAS,CAAC,CAAC,cAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,MAAM,IAAI,MAAM,mDAA8C,CAAA;AAAA,MAChE;AACA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,wBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,MAAM,cAAA,CAAe,cAAc,GAAG;AAAA;AAC/D,OACF;AACA,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B;AAAA,GACD,CAAA;AACH;ACxBO,SAAS,iCAAiC,QAAA,EAA8B;AAC7E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,QAAA,EAAU,CAAC,UAAA,EAAY,YAAA,EAAc,QAAQ,CAAA;AAAA,IAC7C,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,yBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,MAAM,cAAA,CAAe,QAAS,GAAG;AAAA;AAC1D,OACF;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AAAA,GACD,CAAA;AACH;ACrBO,SAAS,sCACd,QAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,QAAA,EAAU,CAAC,UAAA,EAAY,YAAA,EAAc,UAAU,iBAAiB,CAAA;AAAA,IAChE,OAAA,EAAS,MACP,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,MAChB,cAAA;AAAA,MACA,uCAAA;AAAA,MACA,EAAE,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAE;AACzB,GACH,CAAA;AACH;ACXA,IAAM,MAAME,WAAA,CAAM,eAAA;AAEX,IAAM,wBAAA,GAA6D;AAAA,EACxE,SAAA,EAAW;AAAA,IACT,GAAA,CAAI,QAAA;AAAA,IACJ,GAAA,CAAI,mBAAA;AAAA,IACJ,GAAA,CAAI,qBAAA;AAAA,IACJ,GAAA,CAAI,4BAAA;AAAA,IACJ,GAAA,CAAI,kBAAA;AAAA,IACJ,GAAA,CAAI,uBAAA;AAAA,IACJ,GAAA,CAAI,eAAA;AAAA,IACJ,GAAA,CAAI;AAAA,GACN;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,GAAA,CAAI,oBAAA;AAAA,IACJ,GAAA,CAAI,UAAA;AAAA,IACJ,GAAA,CAAI,mCAAA;AAAA,IACJ,GAAA,CAAI,mBAAA;AAAA,IACJ,GAAA,CAAI,kBAAA;AAAA,IACJ,GAAA,CAAI;AAAA,GACN;AAAA,EACA,SAAA,EAAW,CAAC,GAAA,CAAI,QAAQ,CAAA;AAAA,EACxB,kBAAA,EAAoB;AAAA,IAClB,GAAA,CAAI,yBAAA;AAAA,IACJ,GAAA,CAAI,gBAAA;AAAA,IACJ,GAAA,CAAI,mBAAA;AAAA,IACJ,GAAA,CAAI,0BAAA;AAAA,IACJ,GAAA,CAAI,qBAAA;AAAA,IACJ,GAAA,CAAI,qBAAA;AAAA,IACJ,GAAA,CAAI,qBAAA;AAAA,IACJ,GAAA,CAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAA,CAAI,aAAA;AAAA,IACJ,GAAA,CAAI,eAAA;AAAA,IACJ,GAAA,CAAI,eAAA;AAAA,IACJ,GAAA,CAAI,oBAAA;AAAA,IACJ,GAAA,CAAI,yBAAA;AAAA,IACJ,GAAA,CAAI,gBAAA;AAAA,IACJ,GAAA,CAAI;AAAA;AAER;AAEO,IAAM,yBAAyB,CAAC,GAAG,OAAO,MAAA,CAAO,wBAAwB,CAAC,CAAA,CAAE,MAAA;AAAA,EACjF,CAAC,GAAA,EAAK,GAAA,KAAQ,GAAA,CAAI,OAAO,GAAG,CAAA;AAAA,EAC5B;AACF;AAoBO,SAAS,mCAAA,CACd,QAAA,EACA,KAAA,GAAQ,EAAA,EACR,QAA6B,EAAA,EAC7B;AACA,EAAA,OAAOC,+BAAA,CAA2E;AAAA,IAChF,UAAU,CAAC,UAAA,EAAY,gBAAgB,QAAA,IAAY,EAAA,EAAI,OAAO,KAAK,CAAA;AAAA,IACnE,gBAAA,EAAkB,EAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAA+B;AACzD,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,IAAI,OAAA;AACJ,MAAA,QAAQ,KAAA;AAAO,QACb,KAAK,WAAA;AACH,UAAA,OAAA,GAAUD,WAAA,CAAM,iBAAA,CAAkB,wBAAA,CAAyB,WAAW,CAAC,CAAA;AACvE,UAAA;AAAA,QACF,KAAK,eAAA;AACH,UAAA,OAAA,GAAUA,WAAA,CAAM,iBAAA,CAAkB,wBAAA,CAAyB,eAAe,CAAC,CAAA;AAC3E,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,OAAA,GAAUA,WAAA,CAAM,iBAAA,CAAkB,wBAAA,CAAyB,WAAW,CAAC,CAAA;AACvE,UAAA;AAAA,QACF,KAAK,kBAAA;AACH,UAAA,OAAA,GAAUA,WAAA,CAAM,iBAAA,CAAkB,wBAAA,CAAyB,kBAAkB,CAAC,CAAA;AAC9E,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,OAAA,GAAUA,WAAA,CAAM,iBAAA,CAAkB,wBAAA,CAAyB,SAAS,CAAC,CAAA;AACrE,UAAA;AAAA,QACF;AACE,UAAA,OAAA,GAAUA,WAAA,CAAM,kBAAkB,sBAAsB,CAAA;AAAA;AAG5D,MAAA,MAAM,WAAY,OAAO,OAAA,GACrB,OAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,qBAAA,EAAuB;AAAA,QAC7D,QAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA;AAAA,QACA,GAAG;AAAA,OACJ,CAAA,GACD,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,qBAAA,EAAuB;AAAA,QAC7D,QAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD,CAAA,CAAA;AAEL,MAAA,MAAM,SAAwB,QAAA,CAC3B,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,SAAS,CAAA,KAAM;AACzB,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,GAAA;AAAA,UACA,IAAA,EAAM,SAAA,CAAU,EAAA,CAAG,CAAC,CAAA;AAAA,UACpB,WAAW,SAAA,CAAU,SAAA;AAAA,UACrB,QAAQ,SAAA,CAAU;AAAA,SACpB;AAEA,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,EAAA,CAAG,CAAC,CAAA;AAC9B,QAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAG,OAAA,EAAQ;AAAA,MAC/B,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,GAAG,CAAA;AAE/B,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KACjB,QAAA,EAAU,MAAA,GAAA,CAAU,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,EAAG,GAAA,IAAO,CAAA,IAAK,CAAA,GAAI;AAAA,GACtE,CAAA;AACH;ACzIO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAOF,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,MAAM,CAAA;AAAA,IAC7B,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,0BAAA,EAA4B;AAAA,QAC/E,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC5D;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;ACjBO,SAAS,iCAAiC,QAAA,EAAkB;AACjE,EAAA,OAAOG,+BAAAA,CAAqB;AAAA,IAC1B,QAAA,EAAU,CAAC,UAAA,EAAY,WAAA,EAAa,QAAQ,CAAA;AAAA,IAC5C,gBAAA,EAAkB,EAAE,KAAA,EAAO,MAAA,EAAU;AAAA,IACrC,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAgC;AAC1D,MAAA,MAAM,EAAE,KAAA,EAAM,GAAI,SAAA,IAAa,EAAC;AAChC,MAAA,MAAM,MAAM,IAAI,GAAA,CAAI,OAAO,cAAA,GAAiB,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE,CAAA;AAEhF,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAAA,MACjD;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAS,EAAG;AAAA,QAC3C,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACjE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,gBAAA,EAAkB,CAAC,QAAA,KAA6B;AAC9C,MAAA,MAAM,SAAA,GAAY,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,EAAG,EAAA;AACnD,MAAA,OAAO,OAAO,SAAA,KAAc,QAAA,GAAY,EAAE,KAAA,EAAO,WAAU,GAAkB,MAAA;AAAA,IAC/E;AAAA,GACD,CAAA;AACH;AC3BO,SAAS,8BAA8B,QAAA,EAAkB;AAC9D,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,UAAA,EAAY,iBAAA,EAAmB,QAAQ,CAAA;AAAA,IAClD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,MAAA,CAAO,cAAA,GAAiB,CAAA,uBAAA,EAA0B,QAAQ,CAAA,MAAA,CAAA;AAAA,QAC1D;AAAA,UACE,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACtE;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA,MAC/C;AAEA,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,KAAK,KAAA,IAAS,CAAA;AAAA,QACrB,QAAA,EAAU,KAAK,QAAA,IAAY;AAAA,OAC7B;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACpBO,SAAS,8BAAA,CACd,SAAA,EACA,IAAA,EACA,OAAA,EAKA;AACA,EAAA,MAAM,EAAE,aAAa,MAAA,EAAQ,KAAA,GAAQ,KAAK,OAAA,GAAU,IAAA,EAAK,GAAI,OAAA,IAAW,EAAC;AAEzE,EAAA,OAAOG,+BAAAA,CAA6F;AAAA,IAClG,UAAU,CAAC,UAAA,EAAY,WAAW,SAAA,EAAW,IAAA,EAAM,YAAY,KAAK,CAAA;AAAA,IACpE,gBAAA,EAAkB,EAAE,cAAA,EAAgB,EAAA,EAAG;AAAA,IACvC,OAAA;AAAA,IACA,cAAA,EAAgB,IAAA;AAAA,IAEhB,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAuC;AACjE,MAAA,MAAM,EAAE,gBAAe,GAAI,SAAA;AAE3B,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,QACjD,IAAA,KAAS,cAAc,eAAA,GAAkB,eAAA;AAAA,QACzC,CAAC,SAAA,EAAW,cAAA,KAAmB,KAAK,IAAA,GAAO,cAAA,EAAgB,YAAY,KAAK;AAAA,OAC9E;AAEA,MAAA,MAAM,eAAe,QAAA,CAAS,GAAA;AAAA,QAAI,CAAC,CAAA,KACjC,IAAA,KAAS,WAAA,GAAc,CAAA,CAAE,YAAY,CAAA,CAAE;AAAA,OACzC;AAGA,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,cAAA,EAAgB;AAAA,QACvE,QAAA,EAAU,YAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,MAAM,QAAqB,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACrD,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,YAAY,CAAA,CAAE,UAAA;AAAA,QACd,QAAQ,CAAA,CAAE;AAAA;AAAA,OACZ,CAAE,CAAA;AAEF,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KACjB,QAAA,IAAY,SAAS,MAAA,KAAW,KAAA,GAC5B,EAAE,cAAA,EAAgB,SAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,MAAK,GACrD;AAAA,GACP,CAAA;AACH;AChEA,IAAM,YAAA,GAAe,EAAA;AASd,SAAS,4BAAA,CACd,QAAA,EACA,IAAA,EACA,KAAA,EACA;AACA,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,UAAA,EAAY,WAAW,QAAA,EAAU,QAAA,EAAU,MAAM,KAAK,CAAA;AAAA,IACjE,cAAA,EAAgB,KAAA;AAAA,IAChB,OAAA,EAAS,KAAA;AAAA;AAAA,IACT,SAAS,YAA2C;AAClD,MAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AAEpB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAC/B,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA;AAAA,QACjD,IAAA,KAAS,cAAc,eAAA,GAAkB,eAAA;AAAA,QACzC,CAAC,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,GAAI;AAAA,OAChC;AAEA,MAAA,MAAM,YAAA,GAAe,QAAA,CAClB,GAAA,CAAI,CAAC,CAAA,KAAO,IAAA,KAAS,WAAA,GAAc,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,QAAS,CAAA,CAC5D,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,WAAA,EAAY,CAAE,QAAA,CAAS,KAAA,CAAM,WAAA,EAAa,CAAC,CAAA,CACjE,KAAA,CAAM,CAAA,EAAG,YAAY,CAAA;AAGxB,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,cAAA,EAAgB;AAAA,QACvE,QAAA,EAAU,YAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,OACE,QAAA,EAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACpB,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,SAAA,EAAW,CAAA,CAAE,QAAA,CAAS,OAAA,EAAS,IAAA,IAAQ,EAAA;AAAA,QACvC,YAAY,CAAA,CAAE,UAAA;AAAA,QACd,QAAQ,CAAA,CAAE;AAAA;AAAA,OACZ,CAAE,KAAK,EAAC;AAAA,IAEZ;AAAA,GACD,CAAA;AACH;AChDO,SAAS,2BAAA,CAA4B,QAAQ,EAAA,EAAI;AACtD,EAAA,OAAOG,+BAAAA,CAAqB;AAAA,IAC1B,QAAA,EAAU,CAAC,OAAA,EAAS,eAAe,CAAA;AAAA,IACnC,SAAS,OAAO,EAAE,SAAA,EAAW,EAAE,UAAS,EAAE,KACxC,MAAA,CAAO,UAAA,CAAW,SACf,IAAA,CAAK,mBAAA,EAAqB,CAAC,QAAA,EAAU,KAAK,CAAC,CAAA,CAC3C,IAAA;AAAA,MAAK,CAAC,IAAA,KACL,IAAA,CACG,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,EAAE,CAAA,CAC3B,MAAA,CAAO,CAAC,MAAM,CAAC,CAAA,CAAE,IAAA,CAAK,UAAA,CAAW,OAAO,CAAC,EACzC,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI;AAAA,KACtB;AAAA,IACJ,gBAAA,EAAkB,EAAE,QAAA,EAAU,EAAA,EAAG;AAAA,IACjC,gBAAA,EAAkB,CAAC,QAAA,MAAc;AAAA,MAC/B,QAAA,EAAU,QAAA,GAAW,QAAA,EAAU,MAAA,GAAS,CAAC;AAAA,KAC3C,CAAA;AAAA,IACA,SAAA,EAAW,QAAA;AAAA,IACX,cAAA,EAAgB;AAAA,GACjB,CAAA;AACH;ACnBO,SAAS,yBAAyB,QAAA,EAAkB;AACzD,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,WAAA,EAAa,QAAQ,CAAA;AAAA,IACzC,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,wBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACtBO,SAAS,qBAAA,CACd,OAAyB,MAAA,EACzB;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,UAAA,EAAY,IAAI,CAAA;AAAA,IACpC,SAAS,YAAY;AACnB,MAAA,MAAM,MAAM,IAAI,GAAA;AAAA,QACd,OAAO,cAAA,GAAiB;AAAA,OAC1B;AACA,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,eAAA,EAAiB,GAAG,CAAA;AAAA,MAC9C;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,GAAA,CAAI,UAAS,EAAG;AAAA,QAC9C,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AACD,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;ACxBO,SAAS,gCAAgC,KAAA,EAAe;AAC7D,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,OAAA,EAAS,sBAAsB,KAAA,EAAO,MAAA,EAAQ,OAAO,QAAQ,CAAA;AAAA,IACxE,SAAS,YAAY;AACnB,MAAA,OAAO,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,IAAA,CAAK,kBAAA,EAAoB;AAAA,QACzD,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,IACH,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACXO,SAAS,yBAAA,CAA0B,QAAgB,QAAA,EAAkB;AAC1E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,aAAA,EAAe,QAAQ,QAAQ,CAAA;AAAA,IACnD,SAAS,YAAY;AACnB,MAAA,OAAO,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,QAAA,EAAU,iBAAA,EAAmB;AAAA,QACzD,MAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa;AAAA,GACd,CAAA;AACH;;;ACJO,SAAS,gBAAgB,cAAA,EAAwF;AACtH,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,EAAG;AACjC,IAAA,OAAO,eAAe,GAAA,CAAI,CAAC,KAAA,KAAU,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,EACzD;AACA,EAAA,OAAO,YAAY,cAAc,CAAA;AACnC;AAEA,SAAS,YAAY,KAAA,EAA2D;AAC9E,EAAA,IAAI,CAAC,OAAO,OAAO,KAAA;AAEnB,EAAA,MAAM,YAAY,CAAA,CAAA,EAAI,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,MAAM,QAAQ,CAAA,CAAA;AACpD,EAAA,MAAM,MAAA,GAAS,OAAO,kBAAA,CAAmB,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAE9E,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,IAAA,EAAM,iEAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;;;AC5BA,SAAS,aAAA,CAAc,QAAA,EAAkB,MAAA,EAAgB,QAAA,EAAkB;AACzE,EAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,MAAM,IAAI,QAAQ,CAAA,CAAA;AAC3C;AAEO,SAAS,mBAAA,CACd,MAAA,EACA,QAAA,EACA,QAAA,GAAW,IACX,GAAA,EACA;AACA,EAAA,MAAM,aAAA,GAAgB,UAAU,IAAA,EAAK;AACrC,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,EAAA,EAAI,MAAA,EAAQ,iBAAiB,EAAE,CAAA;AAE/D,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,SAAS,CAAA;AAAA,IACtC,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,KAAkB,WAAA,EAAa;AACnD,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,UAAA,EAAY;AAAA,QAClE,MAAA;AAAA,QACA,QAAA,EAAU,aAAA;AAAA,QACV;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,QAAQ,GAAA,KAAQ,MAAA,GAAY,EAAE,GAAG,QAAA,EAAU,KAAI,GAAa,QAAA;AAClE,MAAA,OAAO,gBAAgB,KAAK,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,OAAA,EACE,CAAC,CAAC,MAAA,IACF,CAAC,CAAC,QAAA,IACF,QAAA,CAAS,IAAA,EAAK,KAAM,EAAA,IACpB,QAAA,CAAS,MAAK,KAAM;AAAA,GACvB,CAAA;AACH;ACvCO,IAAK,SAAA,qBAAAI,UAAAA,KAAL;AACL,EAAAA,WAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,WAAA,mBAAA,CAAA,GAAoB,mBAAA;AACpB,EAAAA,WAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,WAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAOZ,SAASC,YAAW,KAAA,EAAmD;AACrE,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,0BAA0B,CAAA;AACpD,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,QAAQ,EAAA,EAAG;AAC3C,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,IAC3B,MAAA,EAAQ,MAAM,CAAC;AAAA,GACjB;AACF;AAEO,SAAS,eAAA,CACd,KAAA,EACA,UAAA,EACA,KAAA,EACA;AACA,EAAA,MAAM,YAAY,CAAC,CAAA,KACjBA,WAAAA,CAAW,CAAA,CAAE,oBAAoB,CAAA,CAAE,MAAA,GACnCA,WAAAA,CAAW,CAAA,CAAE,mBAAmB,CAAA,CAAE,MAAA,GAClCA,WAAAA,CAAW,CAAA,CAAE,oBAAoB,CAAA,CAAE,MAAA;AAErC,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAa,CAAA,CAAE,WAAA,GAAc,CAAA;AAClD,EAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAChB,KAAA,CAAM,aAAA,EAAe,YAAA,KAAiB,CAAA,EAAG,CAAA,CAAE,MAAM,CAAA,CAAA,EAAI,CAAA,CAAE,QAAQ,CAAA,CAAA;AAEjE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,QAAA,EAAU,CAAC,CAAA,EAAU,CAAA,KAAa;AAChC,MAAA,IAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAClB,QAAA,OAAO,CAAA;AAAA,MACT;AAEA,MAAA,IAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAClB,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,EAAA,GAAK,UAAU,CAAC,CAAA;AACtB,MAAA,MAAM,EAAA,GAAK,UAAU,CAAC,CAAA;AACtB,MAAA,IAAI,OAAO,EAAA,EAAI;AACb,QAAA,OAAO,EAAA,GAAK,EAAA;AAAA,MACd;AAEA,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAAA,IACA,iBAAA,EAAmB,CAAC,CAAA,EAAU,CAAA,KAAa;AACzC,MAAA,MAAM,OAAO,CAAA,CAAE,iBAAA;AACf,MAAA,MAAM,OAAO,CAAA,CAAE,iBAAA;AAEf,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,EAAA;AACxB,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,CAAA;AAExB,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,CAAA,EAAU,CAAA,KAAa;AAC7B,MAAA,MAAM,OAAO,CAAA,CAAE,QAAA;AACf,MAAA,MAAM,OAAO,CAAA,CAAE,QAAA;AAEf,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,EAAA;AACxB,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,CAAA;AAExB,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAA,EAAU,CAAA,KAAa;AAC/B,MAAA,IAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAClB,QAAA,OAAO,CAAA;AAAA,MACT;AAEA,MAAA,IAAI,WAAA,CAAY,CAAC,CAAA,EAAG;AAClB,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,OAAO,CAAA;AACjC,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,OAAO,CAAA;AAEjC,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,EAAA;AACxB,MAAA,IAAI,IAAA,GAAO,MAAM,OAAO,CAAA;AAExB,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,GACF;AAEA,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,IAAA,CAAK,UAAA,CAAW,KAAK,CAAC,CAAA;AAChD,EAAA,MAAM,cAAc,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAC,CAAC,CAAA;AACvD,EAAA,MAAM,MAAA,GAAS,OAAO,WAAW,CAAA;AACjC,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,MAAA,CAAO,MAAA,CAAO,aAAa,CAAC,CAAA;AAC5B,IAAA,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA,EACvB;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,2BACd,KAAA,EACA,KAAA,GAAmB,SAAA,gBACnB,OAAA,GAAmB,MACnB,QAAA,EACA;AACA,EAAA,OAAOL,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU;AAAA,MACR,OAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA;AAAA,MACA,YAAY,KAAA,EAAO;AAAA,KACrB;AAAA,IACA,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,gBAAA,EAAkB;AAAA,QACxE,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,QAAA,EAAU,YAAY,KAAA,CAAM;AAAA,OAC7B,CAAA;AAED,MAAA,MAAM,OAAA,GAAU,WACZ,KAAA,CAAM,IAAA,CAAK,OAAO,MAAA,CAAO,QAAiC,CAAC,CAAA,GAC3D,EAAC;AACL,MAAA,OAAO,gBAAgB,OAAO,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,OAAA,EAAS,OAAA,IAAW,CAAC,CAAC,KAAA;AAAA,IACtB,QAAQ,CAAC,IAAA,KAAS,eAAA,CAAgB,KAAA,EAAO,MAAM,KAAK;AAAA,GACrD,CAAA;AACH;AC1HO,SAAS,mCAAA,CACd,UACA,MAAA,GAAS,OAAA,EACT,QAAQ,EAAA,EACR,QAAA,GAAW,EAAA,EACX,OAAA,GAAU,IAAA,EACV;AACA,EAAA,OAAOG,+BAAAA,CAAwE;AAAA,IAC7E,QAAA,EAAU,CAAC,OAAA,EAAS,eAAA,EAAiB,YAAY,EAAA,EAAI,MAAA,EAAQ,OAAO,QAAQ,CAAA;AAAA,IAC5E,OAAA,EAAS,CAAC,CAAC,QAAA,IAAY,OAAA;AAAA,IACvB,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAU,MAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IAEA,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAM;AAChC,MAAA,IAAI,CAAC,SAAA,EAAW,WAAA,IAAe,CAAC,QAAA,SAAiB,EAAC;AAWlD,MAAA,MAAM,SAAA,GAAgC;AAAA,QACpC,IAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAS,QAAA;AAAA,QACT,KAAA;AAAA,QACA,GAAI,YAAY,QAAA,CAAS,MAAA,GAAS,IAAI,EAAE,QAAA,KAAa,EAAC;AAAA,QACtD,GAAI,UAAU,MAAA,GAAS,EAAE,cAAc,SAAA,CAAU,MAAA,KAAW,EAAC;AAAA,QAC7D,GAAI,UAAU,QAAA,GAAW,EAAE,gBAAgB,SAAA,CAAU,QAAA,KAAa;AAAC,OACrE;AAEA,MAAA,IAAI;AACF,QAAA,IAAI,OAAO,YAAA,CAAa,QAAA,CAAS,QAAQ,CAAA,SAAU,EAAC;AAEpD,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,UACnC,QAAA;AAAA,UACA,mBAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAA,IAAI,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC/B,UAAA,OAAO,gBAAgB,IAAe,CAAA;AAAA,QACxC;AACA,QAAA,OAAO,EAAC;AAAA,MACV,SAAS,GAAA,EAAK;AACZ,QAAA,OAAA,CAAQ,KAAA,CAAM,kCAAkC,GAAG,CAAA;AACnD,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,IACF,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KAA0C;AAC3D,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAG3C,MAAA,MAAM,WAAA,GAAA,CAAe,QAAA,EAAU,MAAA,IAAU,CAAA,MAAO,KAAA;AAEhD,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,OAAO;AAAA,QACL,QAAQ,IAAA,EAAM,MAAA;AAAA,QACd,UAAU,IAAA,EAAM,QAAA;AAAA,QAChB;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACtEO,SAAS,kCAAA,CACd,IAAA,EACA,GAAA,EACA,KAAA,GAAQ,EAAA,EACR,QAAA,GAAW,EAAA,EACX,OAAA,GAAU,IAAA,EACV,QAAA,GAAkC,EAAC,EACnC;AACA,EAAA,OAAOA,+BAAAA,CAA8E;AAAA,IACnF,UAAU,CAAC,OAAA,EAAS,gBAAgB,IAAA,EAAM,GAAA,EAAK,OAAO,QAAQ,CAAA;AAAA,IAC9D,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAgC;AAC1D,MAAA,IAAI,CAAC,UAAU,WAAA,EAAa;AAC1B,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,IAAI,YAAA,GAAe,GAAA;AACnB,MAAA,IAAI,MAAA,CAAO,eAAe,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,CAAA,EAAG;AAC1D,QAAA,YAAA,GAAe,EAAA;AAAA,MACjB;AAEA,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,kBAAA,EAAoB;AAAA,QAC1E,IAAA;AAAA,QACA,cAAc,SAAA,CAAU,MAAA;AAAA,QACxB,gBAAgB,SAAA,CAAU,QAAA;AAAA,QAC1B,KAAA;AAAA,QACA,GAAA,EAAK,YAAA;AAAA,QACL;AAAA,OACD,CAAA;AAED,MAAA,IAAI,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACvC,QAAA,MAAM,IAAA,GAAO,QAAA;AAGb,QAAA,MAAM,MAAA,GACJ,IAAA,KAAS,KAAA,GACL,IAAA,GACA,IAAA,CAAK,IAAA;AAAA,UACH,CAAC,CAAA,EAAG,CAAA,KACF,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,OAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,OAAO,EAAE,OAAA;AAAQ,SAChE;AAGN,QAAA,MAAM,cAAc,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,SAAS,CAAA;AACzD,QAAA,MAAM,gBAAA,GAAmB,OAAO,MAAA,CAAO,CAAC,MAAM,CAAC,CAAA,CAAE,OAAO,SAAS,CAAA;AAEjE,QAAA,MAAM,QAAA,GAAW,CAAC,WAAA,EAAa,GAAG,gBAAgB,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAC,CAAC,CAAA;AACrE,QAAA,OAAO,gBAAgB,QAAQ,CAAA;AAAA,MACjC;AAEA,MAAA,OAAO,EAAC;AAAA,IACV,CAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,MAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAU,MAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACf;AAAA,IACA,gBAAA,EAAkB,CAAC,QAAA,KAAsB;AACvC,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,MAAA,OAAO;AAAA,QACL,QAAQ,IAAA,EAAM,MAAA;AAAA,QACd,UAAU,IAAA,EAAM,QAAA;AAAA,QAChB,WAAA,EAAA,CAAc,QAAA,EAAU,MAAA,IAAU,CAAA,IAAK;AAAA,OACzC;AAAA,IACF;AAAA,GACD,CAAA;AACH;AChEO,SAAS,sBAAA,CACd,QAAA,EACA,cAAA,EACA,KAAA,GAAQ,GAAA,EACR;AACA,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,OAAA,EAAS,SAAA,EAAW,QAAA,IAAY,IAAI,KAAK,CAAA;AAAA,IACpD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,kBAAA,EAAoB;AAAA,QAClF,QAAA,IAAY,cAAA;AAAA,QACZ,CAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,OAAO,QAAA,CACJ,MAAA;AAAA,QACC,CAAC,MACC,CAAA,CAAE,MAAA,KAAW,kBACb,CAAC,CAAA,CAAE,YAAA,CAAa,UAAA,CAAW,OAAO;AAAA,OACtC,CACC,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAQ,QAAA,EAAU,CAAA,CAAE,QAAA,EAAS,CAAE,CAAA;AAAA,IAC5D,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACrCO,SAAS,yBAAyB,cAAA,EAAoC;AAC3E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,WAAA,EAAa,cAAc,CAAA;AAAA,IAC/C,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,wBAAA,EAA0B;AAAA,QAC7E,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,IAAA,EAAM,eAAe,cAAc;AAAA,SACpC;AAAA,OACF,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACjE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AC1BO,SAAS,sBAAsB,cAAA,EAAoC;AACxE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AAAA,IAC5C,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,qBAAA,EAAuB;AAAA,QAC1E,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,IAAA,EAAM,eAAe,cAAc;AAAA,SACpC;AAAA,OACF,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC9D;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AC1BA,eAAe,gBAAgB,QAAA,EAAwC;AACrE,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,qBAAA,EAAuB;AAAA,IAC1E,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA,KAClB;AAAA,IACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,MACnB,IAAA,EAAM,eAAe,QAAQ;AAAA,KAC9B;AAAA,GACF,CAAA;AAED,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,EAC9D;AAEA,EAAA,OAAO,SAAS,IAAA,EAAK;AACvB;AAEO,SAAS,sBAAsB,QAAA,EAAmB;AACvD,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,IACtC,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,EAAC;AAAA,MACV;AACA,MAAA,OAAO,gBAAgB,QAAQ,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AAEO,SAAS,6BAA6B,cAAA,EAAoC;AAC/E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,gBAAA,EAAkB,cAAc,CAAA;AAAA,IACpD,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,OAAO,EAAC;AAAA,MACV;AACA,MAAA,OAAO,gBAAgB,cAAc,CAAA;AAAA,IACvC,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AC1CO,SAAS,6BAAA,CAA8B,MAAA,EAAgB,QAAA,EAAkB,QAAA,GAAW,KAAA,EAAO;AAChG,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,OAAA,EAAS,iBAAA,EAAmB,MAAA,EAAQ,UAAU,QAAQ,CAAA;AAAA,IACjE,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,8BAAA,EAAgC;AAAA,QACnF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,MAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA,EAAU,WAAW,GAAA,GAAM;AAAA,SAC5B,CAAA;AAAA,QACD;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iCAAA,EAAoC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACvE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,MAAA,IAAU,CAAC,CAAC;AAAA,GACxB,CAAA;AACH;ACzBA,SAASM,cAAAA,CAAc,QAAgB,QAAA,EAA0B;AAC/D,EAAA,MAAM,WAAA,GAAc,QAAQ,IAAA,EAAK;AACjC,EAAA,MAAM,aAAA,GAAgB,UAAU,IAAA,EAAK;AAErC,EAAA,IAAI,CAAC,WAAA,IAAe,CAAC,aAAA,EAAe;AAClC,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AAGA,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtD,EAAA,MAAM,kBAAA,GAAqB,aAAA,CAAc,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAE3D,EAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,kBAAA,EAAoB;AAC5C,IAAA,MAAM,IAAI,MAAM,6EAA6E,CAAA;AAAA,EAC/F;AAEA,EAAA,OAAO,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAA,EAAI,kBAAkB,CAAA,CAAA;AACnD;AAQO,SAAS,2BAAA,CAA4B,QAAgB,QAAA,EAAkB;AAC5E,EAAA,MAAM,aAAA,GAAgB,UAAU,IAAA,EAAK;AACrC,EAAA,MAAM,WAAA,GAAc,QAAQ,IAAA,EAAK;AACjC,EAAA,MAAM,UACJ,CAAC,CAAC,eAAe,CAAC,CAAC,iBAAiB,aAAA,KAAkB,WAAA;AAExD,EAAA,MAAM,SAAA,GAAY,OAAA,GAAUA,cAAAA,CAAc,WAAA,EAAa,aAAa,CAAA,GAAI,EAAA;AAExE,EAAA,OAAON,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,eAAA,EAAiB,SAAS,CAAA;AAAA,IAC9C,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,8BAAA,EAAgC;AAAA,QACnF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,MAAA;AAAA,UACA,UAAU,aAAA,IAAiB;AAAA,SAC5B,CAAA;AAAA,QACD;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iCAAA,EAAoC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACvE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,MAAA,EAAQ,CAAC,OAAA,KAAiC;AACxC,MAAA,IAAI,CAAC,OAAA,EAAS,IAAA,GAAO,CAAC,CAAA,EAAG;AACvB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,MAAK,GAAI,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC5C,MAAA,OAAO;AAAA,QACL,IAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV,CAAA;AACH;ACnEO,SAAS,uBAAA,CAAwB,MAAA,EAAgB,QAAA,EAAkB,SAAA,GAAY,IAAA,EAAM;AAC1F,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,IAC5C,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,wBAAA,EAA0B;AAAA,QAC7E,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,MAAA;AAAA,UACA;AAAA,SACD;AAAA,OACF,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACjE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,SAAS,CAAC,CAAC,MAAA,IAAU,CAAC,CAAC,QAAA,IAAY;AAAA,GACpC,CAAA;AACH;;;ACrBA,SAAS,kBAAA,CAAmB,OAAwB,IAAA,EAAyB;AAC3E,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA,CAAM,EAAA,IAAM,KAAA,CAAM,OAAA;AAAA,IACtB;AAAA,GACF;AACF;AAEA,SAAS,gBAAgB,KAAA,EAA+B;AACtD,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA,CAAM,EAAA,IAAM,KAAA,CAAM;AAAA,GACxB;AACF;AAEO,SAAS,yBAAA,CACd,OAIA,IAAA,EACkB;AAClB,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAA,GAAkB,MAAM,SAAA,IAAa,KAAA;AAC3C,EAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,eAAA,EAAiB,IAAI,CAAA;AAE1D,EAAA,MAAM,SAAS,KAAA,CAAM,MAAA,GAAS,eAAA,CAAgB,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA;AAE9D,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,EAAA,EAAI,KAAA,CAAM,EAAA,IAAM,KAAA,CAAM,OAAA;AAAA,IACtB,IAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,aAAa,CAAA,EAAqB;AAChD,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAK,IAAgB,EAAC;AAC9C;AAEA,eAAsB,gCACpB,SAAA,EACkB;AAClB,EAAA,MAAMA,cAAAA,GAAe,0BAAA,CAA2B,SAAA,EAAA,SAAA,gBAA8B,IAAI,CAAA;AAClF,EAAA,MAAM,kBAAA,GAAqB,MAAM,MAAA,CAAO,WAAA,CAAY,WAAWA,cAAY,CAAA;AAC3E,EAAA,MAAM,eAAA,GAAkB,aAAa,kBAAkB,CAAA;AAEvD,EAAA,IAAI,eAAA,CAAgB,UAAU,CAAA,EAAG;AAC/B,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,kBAAkB,eAAA,CAAgB,MAAA;AAAA,IACtC,CAAC,EAAE,aAAA,EAAe,eAAA,OAChB,aAAA,KAAkB,SAAA,CAAU,MAAA,IAAU,eAAA,KAAoB,SAAA,CAAU;AAAA,GACxE;AAEA,EAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,YAAA,GAAe,gBAAgB,MAAA,CAAO,CAAC,SAAS,CAAC,IAAA,CAAK,OAAO,IAAI,CAAA;AAEvE,EAAA,OAAO,YAAA;AACT;AAEO,SAAS,2BAAA,CACd,KAAA,EACA,SAAA,EACA,IAAA,EACa;AACb,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAO,KAAA,CACJ,GAAA,CAAI,CAAC,IAAA,KAAS;AACb,IAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,MACnB,CAAC,CAAA,KACC,CAAA,CAAE,MAAA,KAAW,IAAA,CAAK,aAAA,IAClB,CAAA,CAAE,QAAA,KAAa,IAAA,CAAK,eAAA,IACpB,CAAA,CAAE,MAAA,KAAW;AAAA,KACjB;AAEA,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,IAAI,IAAA,CAAK,OAAA;AAAA,MACT,IAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAC,CAAA,CACA,MAAA,CAAO,CAAC,KAAA,KAAU,MAAM,SAAA,CAAU,OAAA,KAAY,KAAA,CAAM,OAAO,CAAA,CAC3D,IAAA;AAAA,IACC,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,OAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,OAAO,EAAE,OAAA;AAAQ,GACxE;AACJ;;;ACjGA,IAAM,2BAAA,GAA8B,CAAA;AACpC,IAAM,sBAAA,GAAyB,EAAA;AAM/B,eAAe,UAAA,CACb,MACA,SAAA,EAC+B;AAC/B,EAAA,IAAI,cAAc,SAAA,EAAW,MAAA;AAC7B,EAAA,IAAI,gBAAgB,SAAA,EAAW,QAAA;AAC/B,EAAA,IAAI,iBAAA,GAAoB,CAAA;AACxB,EAAA,IAAI,kBAAkB,SAAA,EAAW,OAAA;AAEjC,EAAA,OAAO,oBAAoB,sBAAA,EAAwB;AASjD,IAAA,MAAM,SAAA,GAAgC;AAAA,MACpC,IAAA,EAAM,OAAA;AAAA;AAAA,MACN,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO,2BAAA;AAAA,MACP,GAAI,WAAA,GAAc,EAAE,YAAA,EAAc,WAAA,KAAgB,EAAC;AAAA,MACnD,GAAI,aAAA,GAAgB,EAAE,cAAA,EAAgB,aAAA,KAAkB;AAAC,KAC3D;AAEA,IAAA,MAAM,UAAA,GAAc,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,MAC1C,QAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,CAAC,UAAA,IAAc,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAC1C,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,oBAAA,GAAuB,UAAA,CAAW,GAAA,CAAI,CAAC,SAAA,KAAc;AACzD,MAAA,SAAA,CAAU,KAAK,SAAA,CAAU,OAAA;AACzB,MAAA,SAAA,CAAU,IAAA,GAAO,IAAA;AACjB,MAAA,OAAO,SAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,KAAA,MAAW,aAAa,oBAAA,EAAsB;AAC5C,MAAA,IAAI,eAAA,IAAmB,SAAA,CAAU,OAAA,KAAY,eAAA,EAAiB;AAC5D,QAAA,eAAA,GAAkB,MAAA;AAClB,QAAA;AAAA,MACF;AAEA,MAAA,iBAAA,IAAqB,CAAA;AAErB,MAAA,IAAI,SAAA,CAAU,OAAO,IAAA,EAAM;AACzB,QAAA,WAAA,GAAc,SAAA,CAAU,MAAA;AACxB,QAAA,aAAA,GAAgB,SAAA,CAAU,QAAA;AAC1B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAA,GAAe,MAAM,+BAAA,CAAgC,SAAS,CAAA;AAEpE,MAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,QAAA,WAAA,GAAc,SAAA,CAAU,MAAA;AACxB,QAAA,aAAA,GAAgB,SAAA,CAAU,QAAA;AAC1B,QAAA;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,2BAAA,CAA4B,YAAA,EAAc,SAAA,EAAW,IAAI;AAAA,OACpE;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,oBAAA,CAAqB,MAAA,GAAS,CAAC,CAAA;AAE1E,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,WAAA,GAAc,aAAA,CAAc,MAAA;AAC5B,IAAA,aAAA,GAAgB,aAAA,CAAc,QAAA;AAAA,EAChC;AAEA,EAAA,OAAO,IAAA;AACT;AAMO,SAAS,2BAA2B,IAAA,EAAc;AACvD,EAAA,OAAOG,+BAAAA,CAAyE;AAAA,IAC9E,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,WAAW,IAAI,CAAA;AAAA,IAC5C,gBAAA,EAAkB,MAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAkC;AAC5D,MAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,IAAA,EAAM,SAAS,CAAA;AAC/C,MAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,EAAC;AAErB,MAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAChB,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KAAqC,QAAA,GAAW,CAAC,CAAA,EAAG;AAAA,GACxE,CAAA;AACH;ACxGA,IAAM,sBAAA,GAAyB,EAAA;AAExB,SAAS,yBAAA,CAA0B,IAAA,EAAc,GAAA,EAAa,KAAA,GAAQ,sBAAA,EAAwB;AACnG,EAAA,OAAOA,+BAAAA,CAAqB;AAAA,IAC1B,UAAU,CAAC,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,MAAM,GAAG,CAAA;AAAA,IAChD,gBAAA,EAAkB,MAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,iBAAiB,yBAAyB,CAAA;AACrE,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,IAAI,CAAA;AACtC,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAE/B,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAS,EAAG;AAAA,UAC3C,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,QACpE;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,QAAA,MAAM,SAAS,IAAA,CACZ,KAAA,CAAM,GAAG,KAAK,CAAA,CACd,IAAI,CAAC,KAAA,KAAU,0BAA0B,KAAA,EAAO,IAAI,CAAC,CAAA,CACrD,MAAA,CAAO,CAAC,KAAA,KAA8B,OAAA,CAAQ,KAAK,CAAC,CAAA;AAEvD,QAAA,OAAO,MAAA,CAAO,IAAA;AAAA,UACZ,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,OAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,OAAO,EAAE,OAAA;AAAQ,SACxE;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,IACF,CAAA;AAAA,IAEA,kBAAkB,MAAM;AAAA,GACzB,CAAA;AACH;AC3CO,SAAS,6BAAA,CAA8B,MAAc,QAAA,EAAmB;AAC7E,EAAA,MAAM,kBAAA,GAAqB,QAAA,EAAU,IAAA,EAAK,CAAE,WAAA,EAAY;AAExD,EAAA,OAAOA,+BAAAA,CAAqB;AAAA,IAC1B,UAAU,CAAC,OAAA,EAAS,SAAS,WAAA,EAAa,IAAA,EAAM,sBAAsB,EAAE,CAAA;AAAA,IACxE,OAAA,EAAS,QAAQ,kBAAkB,CAAA;AAAA,IACnC,gBAAA,EAAkB,MAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,iBAAiB,8BAA8B,CAAA;AAC1E,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,IAAI,CAAA;AACtC,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,kBAAkB,CAAA;AAEnD,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAS,EAAG;AAAA,UAC3C,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sCAAA,EAAyC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,QAC5E;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AAC7C,UAAA,OAAO,EAAC;AAAA,QACV;AAEA,QAAA,MAAM,SAAA,GAAY,IAAA,CACf,GAAA,CAAI,CAAC,UAAU,yBAAA,CAA0B,KAAA,EAAO,IAAI,CAAC,EACrD,MAAA,CAAO,CAAC,KAAA,KAA8B,OAAA,CAAQ,KAAK,CAAC,CAAA;AAEvD,QAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,UAAA,OAAO,EAAC;AAAA,QACV;AAEA,QAAA,OAAO,SAAA,CAAU,IAAA;AAAA,UACf,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,OAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,OAAO,EAAE,OAAA;AAAQ,SACxE;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,8CAA8C,KAAK,CAAA;AACjE,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,IACF,CAAA;AAAA,IAEA,kBAAkB,MAAM;AAAA,GACzB,CAAA;AACH;ACzDO,SAAS,gCAAA,CAAiC,IAAA,EAAc,KAAA,GAAQ,EAAA,EAAI;AACzE,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,OAAA,EAAS,OAAA,EAAS,eAAA,EAAiB,MAAM,KAAK,CAAA;AAAA,IACzD,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAkC;AACzD,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,iBAAiB,kCAAkC,CAAA;AAC9E,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,WAAA,EAAa,IAAI,CAAA;AACtC,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,OAAA,EAAS,KAAA,CAAM,UAAU,CAAA;AAE9C,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAS,EAAG;AAAA,UAC3C,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,QAC3E;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,OAAM,MAAO,EAAE,GAAA,EAAK,KAAA,EAAM,CAAE,CAAA;AAAA,MACtD,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,6CAA6C,KAAK,CAAA;AAChE,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;ACLA,SAAS,QAAQ,CAAA,EAAwB;AACvC,EAAA,OACE,CAAC,CAAC,CAAA,IACF,OAAO,CAAA,KAAM,YACb,QAAA,IAAY,CAAA,IACZ,UAAA,IAAc,CAAA,IACd,cAAA,IAAkB,CAAA;AAEtB;AAKA,SAAS,QAAQ,WAAA,EAA6B;AAC5C,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,WAAW,CAAA;AACjC,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,EAAQ,GAAI,KAAK,OAAA,EAAQ;AAC5C,EAAA,OAAO,MAAA,IAAU,GAAA,GAAO,EAAA,GAAK,EAAA,GAAK,EAAA,CAAA;AACpC;AAUO,SAAS,yCAAA,CACd,UACA,OAAA,EAKA;AACA,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAA,EAAI,OAAA,GAAU,IAAI,QAAA,GAAW,CAAA,EAAI,GAAI,OAAA,IAAW,EAAC;AAEjE,EAAA,OAAOG,+BAAAA,CAML;AAAA,IACA,QAAA,EAAU,CAAC,UAAA,EAAY,cAAA,EAAgB,UAAU,KAAK,CAAA;AAAA,IACtD,gBAAA,EAAkB,EAAE,KAAA,EAAO,EAAA,EAAG;AAAA,IAE9B,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAA2C;AACrE,MAAA,MAAM,EAAE,OAAM,GAAI,SAAA;AAElB,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACxC,eAAA;AAAA,QACA,qBAAA;AAAA,QACA,CAAC,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO,GAAG,OAAO;AAAA,OACrC;AAEA,MAAA,MAAM,gBAAqC,QAAA,CAAS,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,UAAU,CAAA,MAAO;AAAA,QAC9E,GAAG,UAAA,CAAW,EAAA,CAAG,CAAC,CAAA;AAAA,QAClB,GAAA;AAAA,QACA,WAAW,UAAA,CAAW;AAAA,OACxB,CAAE,CAAA;AAEF,MAAA,MAAM,SAAS,aAAA,CAAc,MAAA;AAAA,QAC3B,CAAC,QAAA,KACC,QAAA,CAAS,KAAA,KAAU,QAAA,IACnB,QAAA,CAAS,MAAA,KAAW,CAAA,IACpB,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,IAAK;AAAA,OACnC;AAEA,MAAA,MAAM,UAAmB,EAAC;AAC1B,MAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,WAAA,CAAY,UAAA;AAAA,UACpC,mBAAA,CAAoB,GAAA,CAAI,MAAA,EAAQ,GAAA,CAAI,QAAQ;AAAA,SAC9C;AACA,QAAA,IAAI,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,MACtC;AAEA,MAAA,MAAM,CAAC,YAAY,CAAA,GAAI,QAAA;AAEvB,MAAA,OAAO;AAAA,QACL,UAAU,YAAA,GAAe,OAAA,CAAQ,aAAa,CAAC,CAAA,CAAE,SAAS,CAAA,GAAI,CAAA;AAAA,QAC9D,eAAA,EAAiB,YAAA,GAAe,YAAA,CAAa,CAAC,CAAA,GAAI,KAAA;AAAA,QAClD;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,MAAqD;AAAA,MACtE,OAAO,QAAA,CAAS;AAAA,KAClB;AAAA,GACD,CAAA;AACH;;;AC9GO,SAAS,iBAAiB,QAAA,EAAkB;AACjD,EAAA,MAAM,cAAcI,yBAAA,EAAe;AAEnC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIT,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE9D,EAAA,OAAO,oBAAA;AAAA,IACL,CAAC,YAAY,QAAQ,CAAA;AAAA,IACrB,QAAA;AAAA,IACA,CAAC,OAAA,KAA8B;AAC7B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,MAAM,2DAAsD,CAAA;AAAA,MACxE;AAEA,MAAA,MAAM,UAAU,oBAAA,CAAqB;AAAA,QACnC,eAAA,EAAiB,sBAAsB,IAAI,CAAA;AAAA,QAC3C,SAAS,OAAA,CAAQ,OAAA;AAAA,QACjB,QAAQ,OAAA,CAAQ;AAAA,OACjB,CAAA;AAED,MAAA,OAAO;AAAA,QACL;AAAA,UACE,iBAAA;AAAA,UACA;AAAA,YACE,OAAA,EAAS,QAAA;AAAA,YACT,aAAA,EAAe,EAAA;AAAA,YACf,YAAY,EAAC;AAAA,YACb,qBAAA,EAAuB,KAAK,SAAA,CAAU;AAAA,cACpC;AAAA,aACD;AAAA;AACH;AACF,OACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,CAAA,EAAG,SAAA,KACF,WAAA,CAAY,YAAA;AAAA,MACV,0BAAA,CAA2B,QAAQ,CAAA,CAAE,QAAA;AAAA,MACrC,CAACU,KAAAA,KAAS;AACR,QAAA,IAAI,CAACA,KAAAA,EAAM;AACT,UAAA,OAAOA,KAAAA;AAAA,QACT;AAEA,QAAA,MAAM,GAAA,GAAQC,oBAAMD,KAAI,CAAA;AACxB,QAAA,GAAA,CAAI,UAAU,oBAAA,CAAqB;AAAA,UACjC,eAAA,EAAiB,sBAAsBA,KAAI,CAAA;AAAA,UAC3C,SAAS,SAAA,CAAU,OAAA;AAAA,UACnB,QAAQ,SAAA,CAAU;AAAA,SACnB,CAAA;AAED,QAAA,OAAO,GAAA;AAAA,MACT;AAAA;AACF,GACJ;AACF;AC5DO,SAAS,yBAAA,CACd,SAAA,EACA,MAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,OAAOd,sBAAAA,CAAY;AAAA,IACjB,aAAa,CAAC,UAAA,EAAY,UAAA,EAAY,QAAA,EAAU,WAAW,MAAM,CAAA;AAAA,IACjE,UAAA,EAAY,OAAO,IAAA,KAAe;AAChC,MAAA,MAAM,cAAA,GAAiB,0CAAA;AAAA,QACrB,SAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,MAAM,cAAA,EAAe,CAAE,aAAA,CAAc,cAAc,CAAA;AACnD,MAAA,MAAM,cAAA,GAAiB,gBAAe,CAAE,YAAA;AAAA,QACtC,cAAA,CAAe;AAAA,OACjB;AAEA,MAAA,MAAM,aAAA,CAAc,WAAW,QAAA,EAAU;AAAA,QACvC,QAAA;AAAA,QACA;AAAA,UACE,QAAA,EAAU,SAAA;AAAA,UACV,SAAA,EAAW,MAAA;AAAA,UACX,IAAA,EAAM;AAAA,YACJ,GAAI,SAAS,eAAA,IAAmB,CAAC,gBAAgB,OAAA,GAC7C,CAAC,QAAQ,CAAA,GACT,EAAC;AAAA,YACL,GAAI,SAAS,eAAA,IAAmB,CAAC,gBAAgB,OAAA,GAC7C,CAAC,MAAM,CAAA,GACP;AAAC;AACP;AACF,OACD,CAAA;AAED,MAAA,OAAO;AAAA,QACL,GAAG,cAAA;AAAA,QACH,SACE,IAAA,KAAS,eAAA,GACL,CAAC,cAAA,EAAgB,UACjB,cAAA,EAAgB,OAAA;AAAA,QACtB,SACE,IAAA,KAAS,eAAA,GACL,CAAC,cAAA,EAAgB,UACjB,cAAA,EAAgB;AAAA,OACxB;AAAA,IACF,CAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAU,IAAA,EAAM;AACd,MAAA,SAAA,CAAU,IAAI,CAAA;AAEd,MAAA,cAAA,EAAe,CAAE,YAAA;AAAA,QACf,CAAC,UAAA,EAAY,WAAA,EAAa,SAAA,EAAW,MAAM,CAAA;AAAA,QAC3C;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;AClDO,SAAS,cAAA,CACd,QAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,WAAA,EAAa,OAAO,QAAQ,CAAA;AAAA,IACtD,UAAA,EAAY,OAAO,EAAE,MAAA,EAAQ,UAAS,KAAe;AACnD,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,iDAA4C,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,4BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,MAAA;AAAA,YACA,QAAA;AAAA,YACA,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B;AAAA;AACH,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAA,SAAA,EAAU;AACV,MAAA,cAAA,GAAiB,iBAAA,CAAkB;AAAA,QACjC,QAAA,EAAU,CAAC,UAAA,EAAY,WAAA,EAAa,QAAQ;AAAA,OAC7C,CAAA;AAAA,IACH,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;AC1CO,SAAS,iBAAA,CACd,QAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,WAAA,EAAa,UAAU,QAAQ,CAAA;AAAA,IACzD,UAAA,EAAY,OAAO,UAAA,KAAuB;AACxC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,iDAA4C,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,+BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,EAAA,EAAI,UAAA;AAAA,YACJ,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B;AAAA;AACH,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAA,SAAA,EAAU;AACV,MAAA,cAAA,GAAiB,iBAAA,CAAkB;AAAA,QACjC,QAAA,EAAU,CAAC,UAAA,EAAY,WAAA,EAAa,QAAQ;AAAA,OAC7C,CAAA;AAAA,IACH,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;ACpCO,SAAS,sBAAA,CACd,QAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,YAAA,EAAc,OAAO,QAAQ,CAAA;AAAA,IACvD,UAAA,EAAY,OAAO,OAAA,KAAoB;AACrC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,iDAA4C,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,4BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,OAAA;AAAA,YACA,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B;AAAA;AACH,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAA,SAAA,EAAU;AACV,MAAA,cAAA,GAAiB,iBAAA,CAAkB;AAAA,QACjC,QAAA,EAAU,CAAC,UAAA,EAAY,YAAA,EAAc,QAAQ;AAAA,OAC9C,CAAA;AAAA,IACH,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;ACpCO,SAAS,yBAAA,CACd,QAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,YAAA,EAAc,OAAO,QAAQ,CAAA;AAAA,IACvD,UAAA,EAAY,OAAO,OAAA,KAAoB;AACrC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,iDAA4C,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,+BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,OAAA;AAAA,YACA,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B;AAAA;AACH,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAA,SAAA,EAAU;AACV,MAAA,cAAA,GAAiB,iBAAA,CAAkB;AAAA,QACjC,QAAA,EAAU,CAAC,UAAA,EAAY,YAAA,EAAc,QAAQ;AAAA,OAC9C,CAAA;AAAA,IACH,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;ACrBO,SAAS,qBAAA,CACd,UACA,SAAA,EAC4B;AAC5B,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AAEvC,EAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,MAAM,CAAA,KAAM;AAClC,IAAA,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,QAAA,EAAS,EAAG,MAAM,CAAA;AAAA,EACnC,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,MAAM,CAAA,KAAM;AACnC,IAAA,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,QAAA,EAAS,EAAG,MAAM,CAAA;AAAA,EACnC,CAAC,CAAA;AAED,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,CAAA,CAC/B,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,IAAI,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,IAAI,CAAC,CAAA,CACjD,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,MAAM,CAAA,KAAM,CAAC,GAAA,EAAK,MAAM,CAAqB,CAAA;AAC7D;AAOO,SAAS,wBAAA,CACd,UACA,OAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,KAAgBI,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE3E,EAAA,OAAOJ,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,aAAA,EAAe,QAAQ,CAAA;AAAA,IACjD,YAAY,OAAO,EAAE,MAAM,WAAA,GAAc,KAAA,EAAO,YAAW,KAAe;AACxE,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAAwB;AAC3C,QAAA,MAAM,IAAA,GAAwBgB,aAAA,CAAA,KAAA,CAAM,WAAA,CAAY,OAAO,CAAC,CAAA;AAExD,QAAA,IAAA,CAAK,SAAA,GAAY,qBAAA;AAAA,UACf,WAAA,GAAc,IAAA,CAAK,SAAA,GAAY,EAAC;AAAA,UAChC,IAAA,CAAK,GAAA;AAAA,YACH,CAAC,MAAA,EAAQ,CAAA,KACP,CAAC,MAAA,CAAO,OAAO,CAAA,CAAE,YAAA,EAAa,CAAE,QAAA,EAAS,EAAG,CAAA,GAAI,CAAC;AAAA;AAIrD,SACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,aAAA;AAAA,QACjC;AAAA,UACE,OAAA,EAAS,QAAA;AAAA,UACT,eAAe,WAAA,CAAY,aAAA;AAAA,UAC3B,KAAA,EAAO,YAAY,OAAO,CAAA;AAAA,UAC1B,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAAA,UAC5B,OAAA,EAAS,YAAY,SAAS,CAAA;AAAA,UAC9B,QAAA,EAAU,WAAA,GACN,WAAA,CAAY,QAAA,GACZ,IAAA,CAAK,CAAC,CAAA,CAAE,QAAA,CAAS,YAAA,EAAa,CAAE,QAAA;AAAS,SAC/C;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;ACvEO,SAAS,wBAAA,CACd,UACA,OAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,KAAgBZ,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE3E,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAW,GAAI,yBAAyB,QAAQ,CAAA;AAErE,EAAA,OAAOJ,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,iBAAA,EAAmB,QAAQ,CAAA;AAAA,IACrD,YAAY,OAAO;AAAA,MACjB,WAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,KAAe;AACb,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,aAAaC,gBAAAA,CAAW,SAAA;AAAA,QAC5B,QAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,OAAO,UAAA,CAAW;AAAA,QAChB,UAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ;AAAA,YACE,KAAA,EAAOA,gBAAAA,CAAW,SAAA,CAAU,QAAA,EAAU,aAAa,OAAO,CAAA;AAAA,YAC1D,MAAA,EAAQA,gBAAAA,CAAW,SAAA,CAAU,QAAA,EAAU,aAAa,QAAQ,CAAA;AAAA,YAC5D,OAAA,EAASA,gBAAAA,CAAW,SAAA,CAAU,QAAA,EAAU,aAAa,SAAS,CAAA;AAAA,YAC9D,QAAA,EAAUA,gBAAAA,CAAW,SAAA,CAAU,QAAA,EAAU,aAAa,MAAM;AAAA;AAC9D;AACF,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;ACtCO,SAAS,uBAAA,CACd,UACA,OAAA,EACA;AACA,EAAA,MAAM,cAAcY,yBAAAA,EAAe;AAEnC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIT,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE9D,EAAA,OAAOJ,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,gBAAA,EAAkB,MAAM,IAAI,CAAA;AAAA,IACtD,YAAY,OAAO,EAAE,WAAA,EAAa,IAAA,EAAM,KAAI,KAAqB;AAC/D,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAYiB,aAAA,CAAA,IAAA;AAAA,QAChB,EAAC;AAAA,QACCA,aAAA,CAAA,SAAA,CAAU,KAAK,OAAO;AAAA,OAC1B;AAEA,MAAA,OAAA,CAAQ,aAAA,GAAgB,QAAQ,aAAA,CAAc,MAAA;AAAA,QAC5C,CAAC,CAAC,OAAO,CAAA,KAAM,OAAA,KAAY;AAAA,OAC7B;AAEA,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,SAAS,IAAA,CAAK,IAAA;AAAA,QACd,OAAA;AAAA,QACA,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,eAAe,IAAA,CAAK;AAAA,OACtB;AAEA,MAAA,IAAI,IAAA,KAAS,SAAS,GAAA,EAAK;AACzB,QAAA,OAAO,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,aAAA,CAAc,eAAe,GAAG,CAAA;AAAA,MACrE,CAAA,MAAA,IAAW,SAAS,UAAA,EAAY;AAC9B,QAAA,OAAO,gBAAA,CAAS,SAAA;AAAA,UACd,IAAA,CAAK,IAAA;AAAA,UACL,CAAC,CAAC,gBAAA,EAAkB,aAAa,CAAC,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS;AAAA,UACb,QAAA,EAAU,CAAA,oBAAA,EAAuB,IAAA,CAAK,IAAI,CAAA,YAAA;AAAA,SAC5C;AACA,QAAA,OAAOf,mBAAAA,CAAG,aAAA;AAAA,UACR,CAAC,kBAAkB,aAAa,CAAA;AAAA,UAChC,MAAA;AAAA,UACA,MAAM;AAAA,UAAC;AAAA,SACT;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,SAAA,EAAW,CAAC,IAAA,EAAM,OAAA,EAAS,GAAA,KAAQ;AACjC,MAAC,OAAA,CAAQ,SAAA,GAEQ,IAAA,EAAM,OAAA,EAAS,GAAG,CAAA;AACnC,MAAA,WAAA,CAAY,YAAA;AAAA,QACV,0BAAA,CAA2B,QAAQ,CAAA,CAAE,QAAA;AAAA,QACrC,CAACY,KAAAA,MACE;AAAA,UACC,GAAGA,KAAAA;AAAA,UACH,OAAA,EAAS;AAAA,YACP,GAAGA,KAAAA,EAAM,OAAA;AAAA,YACT,aAAA,EACEA,KAAAA,EAAM,OAAA,EAAS,aAAA,EAAe,MAAA;AAAA,cAC5B,CAAC,CAAC,OAAO,CAAA,KAAM,YAAY,OAAA,CAAQ;AAAA,iBAChC;AAAC;AACV,SACF;AAAA,OACJ;AAAA,IACF;AAAA,GACD,CAAA;AACH;AC3EO,SAAS,wBAAA,CACd,UACA,OAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIV,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE9D,EAAA,OAAOJ,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,UAAA,EAAY,MAAM,IAAI,CAAA;AAAA,IAChD,YAAY,OAAO,EAAE,aAAa,IAAA,EAAM,GAAA,EAAK,OAAM,KAAqB;AACtE,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,oBAAoB,IAAA,CAAK,IAAA;AAAA,QACzB,oBAAA,EAAsB,WAAA;AAAA,QACtB,YAAY;AAAC,OACf;AAEA,MAAA,IAAI,SAAS,QAAA,EAAU;AACrB,QAAA,MAAM,WAAW,aAAA,EAAc;AAE/B,QAAA,OAAO,QAAA,CAAS,MAAA,CAAO,cAAA,GAAiB,6BAAA,EAA+B;AAAA,UACrE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAA,EAAM,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAAA,YAC9B,KAAA;AAAA,YACA,UAAA,EAAY;AAAA,cACV,GAAG,KAAK,KAAA,CAAM,SAAA;AAAA,cACd,GAAG,KAAK,MAAA,CAAO,SAAA;AAAA,cACf,GAAG,KAAK,OAAA,CAAQ,SAAA;AAAA,cAChB,IAAA,CAAK;AAAA;AACP,WACD;AAAA,SACF,CAAA;AAAA,MACH,CAAA,MAAA,IAAW,IAAA,KAAS,KAAA,IAAS,GAAA,EAAK;AAChC,QAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,cAAA;AAAA,UACjC,CAAC,CAAC,yBAAA,EAA2B,aAAa,CAAC,CAAA;AAAA,UAC3C;AAAA,SACF;AAAA,MACF,CAAA,MAAA,IAAW,SAAS,UAAA,EAAY;AAC9B,QAAA,OAAO,gBAAA,CAAS,SAAA;AAAA,UACd,IAAA,CAAK,IAAA;AAAA,UACL,CAAC,CAAC,yBAAA,EAA2B,aAAa,CAAC,CAAA;AAAA,UAC3C;AAAA,SACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS;AAAA,UACb,QAAA,EAAU,CAAA,oBAAA,EAAuB,IAAA,CAAK,IAAI,CAAA,YAAA;AAAA,SAC5C;AACA,QAAA,OAAOE,mBAAAA,CAAG,aAAA;AAAA,UACR,CAAC,2BAA2B,aAAa,CAAA;AAAA,UACzC,MAAA;AAAA,UACA,MAAM;AAAA,UAAC;AAAA,SACT;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,WAAW,OAAA,CAAQ;AAAA,GACpB,CAAA;AACH;ACvDO,SAAS,mBAAA,CACd,UACA,OAAA,EACA;AACA,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,KAAgBE,mBAAAA,CAAS,0BAAA,CAA2B,QAAQ,CAAC,CAAA;AAE3E,EAAA,OAAOJ,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,UAAA,EAAY,YAAA,EAAc,aAAa,IAAI,CAAA;AAAA,IACzD,UAAA,EAAY,OAAO,EAAE,UAAA,EAAY,aAAY,KAAe;AAC1D,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,WAAA,GAAc,CAAC,OAAA,KAAwB;AAC3C,QAAA,MAAM,IAAA,GAAwBkB,aAAA,CAAA,KAAA,CAAM,WAAA,CAAY,OAAO,CAAC,CAAA;AAExD,QAAA,IAAA,CAAK,SAAA,GAAY,KAAK,SAAA,CAAU,MAAA;AAAA,UAC9B,CAAC,CAAC,GAAG,CAAA,KAAM,GAAA,KAAQ,YAAY,QAAA;AAAS,SAC1C;AAEA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,aAAA;AAAA,QACjC;AAAA,UACE,SAAS,WAAA,CAAY,IAAA;AAAA,UACrB,eAAe,WAAA,CAAY,aAAA;AAAA,UAC3B,KAAA,EAAO,YAAY,OAAO,CAAA;AAAA,UAC1B,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAAA,UAC5B,OAAA,EAAS,YAAY,SAAS,CAAA;AAAA,UAC9B,UAAU,WAAA,CAAY;AAAA,SACxB;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;ACnEO,SAAS,sBAAsB,QAAA,EAA8B;AAClE,EAAA,OAAOlB,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,YAAA,EAAc,MAAA,EAAQ,QAAQ,CAAA;AAAA,IAC5C,YAAY,CAAC;AAAA,MACX,SAAA;AAAA,MACA;AAAA,KACF,KAGM;AACJ,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,yDAAoD,CAAA;AAAA,MACtE;AAEA,MAAA,IAAI,UAAA;AACJ,MAAA,IAAI,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA,CAAE,WAAW,EAAA,EAAI;AACtC,QAAA,UAAA,GAAaC,gBAAAA,CAAW,SAAA,CAAU,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAA;AAAA,MACjE,CAAA,MAAA,IAAWkB,iBAAA,CAAY,KAAA,CAAM,SAAS,CAAA,EAAG;AACvC,QAAA,UAAA,GAAalB,gBAAAA,CAAW,WAAW,SAAS,CAAA;AAAA,MAC9C,CAAA,MAAO;AACL,QAAA,UAAA,GAAaA,gBAAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MACxC;AAEA,MAAA,OAAO,MAAA,CAAO,WAAW,SAAA,CAAU,cAAA;AAAA,QACjC,CAAC,SAAS,CAAA;AAAA,QACV;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;AC7BO,SAAS,0BAAA,CACd,QAAA,EACA,OAAA,GAA2C,QAAA,EAC3C;AACA,EAAA,OAAOD,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,YAAA,EAAc,eAAA,EAAiB,QAAQ,CAAA;AAAA,IACrD,UAAA,EAAY,CAAC,EAAE,SAAA,EAAU,KAAgC;AACvD,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAO,iBAAS,SAAA,CAAU,QAAA,EAAU,CAAC,SAAS,GAAG,OAAO,CAAA;AAAA,IAC1D;AAAA,GACD,CAAA;AACH;ACfO,SAAS,4BAAA,CAA6B,cAAc,GAAA,EAAK;AAC9D,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,YAAA,EAAc,iBAAA,EAAmB,WAAW,CAAA;AAAA,IAC1D,UAAA,EAAY,OAAO,EAAE,SAAA,EAAU,KAAgC;AAC7D,MAAA,OAAOE,oBAAG,aAAA,CAAc,SAAA,EAAW,EAAE,QAAA,EAAU,WAAA,IAAe,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;ACRO,SAAS,8BAAA,GAAiC;AAC/C,EAAA,OAAOI,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,YAAA,EAAc,kBAAkB,CAAA;AAAA,IAC3C,SAAS,YAAY;AACnB,MAAA,OAAO,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,kBAAA,EAAmB;AAAA,IAC7D;AAAA,GACD,CAAA;AACH;ACAO,SAAS,eAAe,QAAA,EAAkB;AAC/C,EAAA,OAAON,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,OAAA,EAAS,cAAA,EAAgB,QAAQ,CAAA;AAAA,IAC/C,UAAA,EAAY,OAAO,EAAE,KAAA,EAAO,MAAK,KAAuC;AACtE,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,4BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAA,EAAM,eAAe,QAAQ,CAAA;AAAA,YAC7B,KAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,UAAU,QAAA,EAAU;AAClB,MAAA,cAAA,EAAe,CAAE,YAAA;AAAA,QACf,wBAAA,CAAyB,QAAQ,CAAA,CAAE,QAAA;AAAA,QACnC,CAAC,IAAA,KAAS,CAAC,UAAU,GAAI,IAAA,IAAQ,EAAG;AAAA,OACtC;AAAA,IACF;AAAA,GACD,CAAA;AACH;AC5BO,SAAS,eAAA,CAAgB,UAAkB,UAAA,EAAoB;AACpE,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,OAAA,EAAS,eAAA,EAAiB,UAAU,UAAU,CAAA;AAAA,IAC5D,UAAA,EAAY,OAAO,EAAE,KAAA,EAAO,MAAK,KAAuC;AACtE,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,+BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAA,EAAM,eAAe,QAAQ,CAAA;AAAA,YAC7B,EAAA,EAAI,UAAA;AAAA,YACJ,KAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,UAAU,QAAA,EAAU;AAClB,MAAA,cAAA,EAAe,CAAE,YAAA;AAAA,QACf,wBAAA,CAAyB,QAAQ,CAAA,CAAE,QAAA;AAAA,QACnC,CAAC,IAAA,KAAS;AACR,UAAA,IAAI,CAAC,IAAA,EAAM;AACT,YAAA,OAAO,EAAC;AAAA,UACV;AAEA,UAAA,MAAM,KAAA,GAAQ,KAAK,SAAA,CAAU,CAAC,EAAE,EAAA,EAAG,KAAM,OAAO,UAAU,CAAA;AAC1D,UAAA,IAAI,SAAS,CAAA,EAAG;AACd,YAAA,IAAA,CAAK,KAAK,CAAA,GAAI,QAAA;AAAA,UAChB;AAEA,UAAA,OAAO,CAAC,GAAG,IAAI,CAAA;AAAA,QACjB;AAAA,OACF;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACxCO,SAAS,iBAAA,CAAkB,UAAkB,UAAA,EAAoB;AACtE,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,OAAA,EAAS,iBAAA,EAAmB,QAAQ,CAAA;AAAA,IAClD,YAAY,YAAY;AACtB,MAAA,MAAM,WAAW,aAAA,EAAc;AAE/B,MAAA,OAAO,QAAA,CAAS,MAAA,CAAO,cAAA,GAAiB,+BAAA,EAAiC;AAAA,QACvE,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,IAAA,EAAM,eAAe,QAAQ,CAAA;AAAA,UAC7B,EAAA,EAAI;AAAA,SACL,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,SAAA,GAAY;AACV,MAAA,cAAA,EAAe,CAAE,YAAA;AAAA,QACf,wBAAA,CAAyB,QAAQ,CAAA,CAAE,QAAA;AAAA,QACnC,CAAC,IAAA,KAAS,CAAC,GAAI,QAAQ,EAAG,CAAA,CAAE,MAAA,CAAO,CAAC,EAAE,EAAA,EAAG,KAAM,OAAO,UAAU;AAAA,OAClE;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;AClCA,IAAA,iBAAA,GAAA;AAAA,QAAA,CAAA,iBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AC8BO,SAAS,iBAAA,CACd,UACA,YAAA,EACA;AACA,EAAA,OAAOA,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,WAAA,EAAa,YAAY,CAAA;AAAA,IACvC,YAAY,YAAY;AACtB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,IAAI,MAAM,mDAA8C,CAAA;AAAA,MAChE;AACA,MAAA,MAAM,WAAW,aAAA,EAAc;AAE/B,MAAA,MAAM,QAAA,CAAS,MAAA,CAAO,aAAA,GAAgB,YAAA,EAAc;AAAA,QAClD,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,IAAA,EAAM,YAAA;AAAA,UACN,GAAA,EAAK,OAAO,QAAA,CAAS,IAAA;AAAA,UACrB,MAAA,EAAQ,OAAO,QAAA,CAAS,IAAA;AAAA,UACxB,KAAA,EAAO;AAAA,YACL;AAAA;AACF,SACD;AAAA,OACF,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AACH;ACtDO,SAAS,mCAAmC,QAAA,EAA+B;AAChF,EAAA,OAAOM,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,sBAAA,EAAwB,QAAQ,CAAA;AAAA,IACxD,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,MAAA,CAAO,cAAA,GAAiB,CAAA,yBAAA,EAA4B,QAAQ,CAAA,CAAA;AAAA,QAC5D,EAAE,MAAA;AAAO,OACX;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACnE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AAAA,GACD,CAAA;AACH;AChBO,SAAS,gCAAgC,QAAA,EAA4B;AAC1E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,mBAAA,EAAqB,QAAQ,CAAA;AAAA,IACrD,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,MAAA,CAAO,cAAA,GAAiB,CAAA,sBAAA,EAAyB,QAAQ,CAAA,CAAA;AAAA,QACzD,EAAE,MAAA;AAAO,OACX;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrE;AAEA,MAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAGlC,MAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,OAAO,CAAA;AAChD,MAAA,MAAM,mBAAmB,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,YAAY,QAAQ,CAAA;AAG9E,MAAA,KAAA,IAAS,KAAA,GAAQ,CAAA,EAAG,KAAA,GAAQ,gBAAA,CAAiB,QAAQ,KAAA,EAAA,EAAS;AAC5D,QAAA,MAAM,OAAA,GAAU,iBAAiB,KAAK,CAAA;AACtC,QAAA,MAAM,OAAA,GAAU,KAAK,KAAK,CAAA;AAG1B,QAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,CAAQ,cAAA,KAAmB,WACpD,OAAA,CAAQ,cAAA,GACR,OAAA,CAAQ,cAAA,CAAe,QAAA,EAAS;AACpC,QAAA,MAAM,qBAAA,GAAwB,OAAO,OAAA,CAAQ,uBAAA,KAA4B,WACrE,OAAA,CAAQ,uBAAA,GACR,OAAA,CAAQ,uBAAA,CAAwB,QAAA,EAAS;AAC7C,QAAA,MAAM,sBAAA,GAAyB,OAAO,OAAA,CAAQ,wBAAA,KAA6B,WACvE,OAAA,CAAQ,wBAAA,GACR,OAAA,CAAQ,wBAAA,CAAyB,QAAA,EAAS;AAC9C,QAAA,MAAM,mBAAA,GAAsB,OAAO,OAAA,CAAQ,qBAAA,KAA0B,WACjE,OAAA,CAAQ,qBAAA,GACR,OAAA,CAAQ,qBAAA,CAAsB,QAAA,EAAS;AAE3C,QAAA,MAAM,aAAA,GACJ,UAAA,CAAW,aAAa,CAAA,GACxB,UAAA,CAAW,qBAAqB,CAAA,GAChC,UAAA,CAAW,sBAAsB,CAAA,GACjC,UAAA,CAAW,mBAAmB,CAAA;AAChC,QAAA,OAAA,CAAQ,UAAA,GAAa,QAAQ,KAAA,GAAQ,aAAA;AAAA,MACvC;AAGA,MAAA,IAAA,CAAK,KAAK,CAAC,CAAA,EAAiB,MAAoB,CAAA,CAAE,UAAA,GAAa,EAAE,UAAU,CAAA;AAE3E,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;AC5CO,SAAS,wBAAA,CACd,GAAA,EACA,UAAA,GAAuB,EAAC,EACxB,OAAA,GAAoB,CAAC,UAAA,EAAY,WAAA,EAAa,gBAAgB,CAAA,EAC9D,SAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,WAAA,EAAa,cAAc,GAAA,EAAK,UAAA,EAAY,SAAS,SAAS,CAAA;AAAA,IACzE,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,YAAA,EAAc;AAAA,QACjE,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,OAAA;AAAA,UACA,GAAA,EAAK,mBAAmB,GAAG,CAAA;AAAA,UAC3B,UAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACb,CAAA;AAAA,QACD;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAClE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;;;AC3CA,IAAAc,gBAAAA,GAAA,EAAA;AAAA,QAAA,CAAAA,gBAAAA,EAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,4BAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACAA,IAAA,eAAA,GAAA,EAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,yBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACIO,SAAS,yBAAA,CAA0B,UAAkB,IAAA,EAAc;AACxE,EAAA,OAAOd,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,cAAA,EAAgB,YAAA,EAAc,eAAe,QAAQ,CAAA;AAAA,IAChE,SAAS,YAAY;AACnB,MAAA,MAAM,WAAA,GAAc,eAAe,QAAQ,CAAA;AAE3C,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,MAAM,QAAA,GAAW,IAAIJ,mBAAAA,CAAG,MAAA,CAAO;AAAA,UAC7B;AAAA,SACD,CAAA;AACD,QAAA,OAAO,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;AChBA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,OAAA,EAAA;AACF;;;ACAO,SAAS,4BAA4B,QAAA,EAA8B;AACxE,EAAA,OAAOI,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,cAAA,EAAgB,QAAA,EAAU,gBAAgB,QAAQ,CAAA;AAAA,IAC7D,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,iDAAyC,CAAA;AAAA,MAC3D;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,kDAAkD,QAAQ,CAAA,gBAAA,CAAA;AAAA,QAC1D;AAAA,UACE,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AAEA,MAAA,MAAM,gBAAA,GACJ,sBAAsB,OAAA,CAAQ,yBAAA;AAAA,QAC5B,QAAA;AAAA,QAAA,CACC,MAAM,QAAA,CAAS,IAAA,EAAK,EAAG;AAAA,OAC1B;AACF,MAAA,MAAM,cAAA,EAAe,CAAE,aAAA,CAAc,gBAAgB,CAAA;AACrD,MAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,EAAe,CAAE,YAAA;AAAA,QACvC,gBAAA,CAAiB;AAAA,OACnB;AAEA,MAAA,OAAO,WAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAAA,IACpC;AAAA,GACD,CAAA;AACH;AC/BO,SAAS,6BAA6B,QAAA,EAA8B;AACzE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,cAAA,EAAgB,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA,IACvD,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,MAAM,gBAAe,CAAE,aAAA;AAAA,QACrB,4BAA4B,QAAQ;AAAA,OACtC;AACA,MAAA,MAAM,KAAA,GAAQ,gBAAe,CAAE,YAAA;AAAA,QAC7B,2BAAA,CAA4B,QAAQ,CAAA,CAAE;AAAA,OACxC;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,CAAA,6CAAA,CAAA;AAAA,QACA;AAAA,UACE,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB,kBAAA;AAAA,YAChB,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAChC;AACF,OACF;AACA,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B;AAAA,GACD,CAAA;AACH;;;AC3BA,IAAM,qBAAA,GAAwB;AAAA,EAC5B,OAAA,EAAAc;AACF;ACFO,SAAS,6BAA6B,QAAA,EAA8B;AACzE,EAAA,OAAOd,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,cAAA,EAAgB,UAAA,EAAY,SAAS,QAAQ,CAAA;AAAA,IACxD,KAAA,EAAO,KAAA;AAAA;AAAA,IACP,SAAS,YAAY;AACnB,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,QAAA,MAAM,WAAW,MAAM,QAAA;AAAA,UACrB,+CAA+C,QAAQ,CAAA,CAAA;AAAA,UACvD;AAAA,YACE,OAAA,EAAS;AAAA,cACP,cAAA,EAAgB;AAAA;AAClB;AACF,SACF;AAGA,QAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,UAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM,OAAO,EAAC,CAAE,CAAA;AAExD,UAAA,IAAI,SAAA,EAAW,YAAY,oBAAA,EAAsB;AAC/C,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,QAAA,OAAO;AAAA,UACL,OAAA,EAAS;AAAA,YACP,UAAU,IAAA,CAAK,gBAAA;AAAA,YACf,SAAS,IAAA,CAAK;AAAA,WAChB;AAAA,UACA,MAAA,EAAQ;AAAA,YACN,UAAU,IAAA,CAAK,eAAA;AAAA,YACf,SAAS,IAAA,CAAK;AAAA;AAChB,SACF;AAAA,MAIF,SAAS,GAAA,EAAK;AAEZ,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAAA,GACD,CAAA;AACH;AC7BO,SAAS,oBAAA,CAAqB;AAAA,EACnC,GAAA;AAAA,EACA,aAAa,EAAC;AAAA,EACd,OAAA,GAAU,CAAC,UAAA,EAAY,WAAA,EAAa,gBAAgB,CAAA;AAAA,EACpD,OAAA,GAAU;AACZ,CAAA,EAAyB;AACvB,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,cAAA,EAAgB,WAAA,EAAa,GAAA,EAAK,YAAY,OAAO,CAAA;AAAA,IAChE,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,CAAA,4BAAA,CAAA,EAAgC;AAAA,QAC9D,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,OAAA;AAAA,UACA,GAAA,EAAK,mBAAmB,GAAG,CAAA;AAAA,UAC3B;AAAA,SACD,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,GAAA,IAAO;AAAA,GACnB,CAAA;AACH;AC/CO,SAAS,sBAAA,GAAyB;AACvC,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,kBAAA,EAAoB,OAAO,CAAA;AAAA,IACtC,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACvC,QAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAC,OACH;AACA,MAAA,OAAO,QAAA,CAAS,QAAA;AAAA,IAClB;AAAA,GACD,CAAA;AACH;ACXO,SAAS,yBAAyB,QAAA,EAAkB;AACzD,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,kBAAA,EAAoB,SAAA,EAAW,QAAQ,CAAA;AAAA,IAClD,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,IAAIe,WAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AAC5C,MAAA,OAAO,QAAA,CAAS,cAAA,CAAe,CAAC,QAAQ,CAAC,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACTO,SAAS,8BAAA,CACd,UACA,QAAA,EACA;AACA,EAAA,OAAOf,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,OAAA,EAAS,cAAA,EAAgB,UAAU,QAAQ,CAAA;AAAA,IACtD,OAAA,EAAS,CAAC,CAAC,QAAA;AAAA,IACX,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,+CAA0C,CAAA;AAAA,MAC5D;AACA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,uBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,SAAA,EAAW,QAAA;AAAA,YACX,IAAA,EAAM,eAAe,QAAQ;AAAA,WAC9B,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AACA,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B;AAAA,GACD,CAAA;AACH;AC3BO,SAAS,YAAA,CACd,QAAA,EACA,QAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,iBAAA;AAAA,IACtC,QAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAON,sBAAAA,CAAY;AAAA,IACjB,WAAA,EAAa,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU,QAAQ,CAAA;AAAA,IACjD,YAAY,YAAY;AACtB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,4CAAuC,CAAA;AAAA,MACzD;AAEA,MAAA,MAAM,WAAW,aAAA,EAAc;AAC/B,MAAA,MAAM,WAAW,MAAM,QAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,wBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,SAAA,EAAW,QAAA;AAAA,YACX,IAAA,EAAM,eAAe,QAAQ,CAAA;AAAA,YAC7B;AAAA,WACD,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AAEA,MAAA,OAAQ,MAAM,SAAS,IAAA,EAAK;AAAA,IAC9B,CAAA;AAAA,IACA,SAAA,GAAY;AACV,MAAA,cAAA,EAAe;AAAA,IACjB;AAAA,GACD,CAAA;AACH;ACxCO,SAAS,0BAAA,CACd,MACA,KAAA,EACA,KAAA,GAAQ,KACR,QAAA,GAA+B,MAAA,EAC/B,UAAU,IAAA,EACV;AACA,EAAA,OAAOM,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,aAAA,EAAe,MAAA,EAAQ,IAAA,EAAM,OAAO,KAAK,CAAA;AAAA,IACpD,OAAA;AAAA,IACA,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACvC,QAAA;AAAA,QACA,kBAAA;AAAA,QACA;AAAA,UACE,IAAA,EAAM,EAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM,IAAA,KAAS,KAAA,GAAQ,MAAA,GAAS,IAAA;AAAA,UAChC,KAAA,EAAO,QAAQ,KAAA,GAAQ,IAAA;AAAA,UACvB;AAAA;AACF,OACF;AACA,MAAA,OACE,QAAA,GACI,IAAA,KAAS,KAAA,GACP,QAAA,CAAS,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,EAAO,GAAI,GAAG,CAAA,GACvC,QAAA,GACF,EAAC;AAAA,IAET;AAAA,GACD,CAAA;AACH;AC/BO,SAAS,+BAAA,CACd,UACA,aAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,SAAA,EAAW,UAAU,aAAa,CAAA;AAAA,IAC1D,OAAA,EAAS,CAAC,CAAC,QAAA,IAAY,CAAC,CAAC,aAAA;AAAA,IACzB,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACvC,QAAA;AAAA,QACA,uBAAA;AAAA,QACA;AAAA,UACE,OAAA,EAAS,QAAA;AAAA,UACT,IAAA,EAAM;AAAA;AACR,OACF;AAEA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,UAAU,IAAA,IAAQ,OAAA;AAAA,QACxB,UAAA,EAAY,UAAU,UAAA,IAAc;AAAA,OACtC;AAAA,IAIF;AAAA,GACD,CAAA;AACH;ACrBO,SAAS,oCAAoC,aAAA,EAAuB;AACzE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,aAAA,EAAe,aAAA,EAAe,aAAa,CAAA;AAAA,IACtD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,kBAAA,EAAoB;AAAA,QAC1E,SAAA,EAAW;AAAA,OACZ,CAAA;AACD,MAAA,OAAQ,YAAsC,EAAC;AAAA,IACjD,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;ACPO,SAAS,2CAAA,CACd,SACA,KAAA,EACA;AACA,EAAA,OAAOG,+BAAAA,CAAoF;AAAA,IACzF,QAAA,EAAU,CAAC,aAAA,EAAe,uBAAA,EAAyB,SAAS,KAAK,CAAA;AAAA,IACjE,gBAAA,EAAkB,IAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAkC;AAC5D,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,uBAAA,EAAyB;AAAA,UAC/E,OAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAS,SAAA,IAAa,KAAA;AAAA,SACvB,CAAA;AACD,QAAA,OAAQ,YAA6C,EAAC;AAAA,MACxD,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,EAAC;AAAA,MACV;AAAA,IACF,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KACjB,QAAA,EAAU,MAAA,GAAS,CAAA,GAAI,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,EAAA,GAAK;AAAA,GAC7D,CAAA;AACH;ACjCO,SAAS,kCAAA,GAAqC;AACnD,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,aAAA,EAAe,UAAU,CAAA;AAAA,IACpC,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,mCAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,KAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sCAAA,EAAyC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC5E;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AAAA,GACD,CAAA;AACH;;;ACzBO,IAAK,KAAA,qBAAAgB,MAAAA,KAAL;AACL,EAAAA,OAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,OAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,OAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,OAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,OAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,OAAA,OAAA,CAAA,GAAQ,OAAA;AANE,EAAA,OAAAA,MAAAA;AAAA,CAAA,EAAA,KAAA,IAAA,EAAA;AASL,IAAM,OAAA,GAAoC;AAAA,EAC/C,CAAC,sBAAc;AAAA,IACb,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,GACF;AAAA,EACA,CAAC,OAAA,eAAc,CAAC,KAAA,YAAW,QAAA,eAAc,qBAAa,OAAA,aAAW;AAAA,EACjE,CAAC,KAAA,aAAY,CAAC,QAAA,eAAc,qBAAa,OAAA;AAC3C;;;ACjBO,SAAS,gBAAA,CAAiB,MAAc,OAAA,EAAgC;AAC7E,EAAA,IAAI,KAAK,UAAA,CAAW,QAAQ,CAAA,IAAK,OAAA,KAAY,GAAG,OAAO,SAAA;AACvD,EAAA,IAAI,KAAK,UAAA,CAAW,QAAQ,CAAA,IAAK,OAAA,KAAY,GAAG,OAAO,SAAA;AACvD,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,uBAAA,CAAwB;AAAA,EACtC,aAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,kCAA0B,OAAO,KAAA;AAErC,IAAA,IAAI,aAAA,KAAkB,SAAS,OAAO,IAAA;AAGtC,IAAA,OAAO,kFAAkD,CAAE,QAAA;AAAA,MACzD;AAAA,KACF;AAAA,EACF,CAAA,GAAG;AAEH,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,kCAA0B,OAAO,KAAA;AAErC,IAAA,QAAQ,aAAA;AAAe,MACrB,KAAK,OAAA;AACH,QAAA,OAAO,IAAA;AAAA,MACT,KAAK,SAAA;AACH,QAAA,OAAO,QAAA,KAAA,OAAA,gBAA4B,UAAA;AAAA,MACrC,KAAK,SAAA;AACH,QAAA,OAAO,OAAA;AAAA;AACX,EACF,CAAA,GAAG;AAEH,EAAA,MAAM,WAAA,GAAc,CAAA,OAAA,cAAA,OAAA,cAAA,KAAA,WAAoC,CAAE,QAAA,CAAS,QAAQ,CAAA;AAE3E,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF;AC7CO,SAAS,wCACd,cAAA,EACA;AACA,EAAA,OAAOhB,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,eAAA,EAAiB,QAAA,EAAU,cAAc,CAAA;AAAA,IACpD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,CAAA,EAAG,OAAO,cAAc,CAAA,iCAAA,CAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,MAAM,cAAA,CAAe,cAAe,GAAG,CAAA;AAAA,UAC9D,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AACA,MAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,MAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IACd,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,cAAA;AAAA,IACX,WAAA,EAAa,CAAA;AAAA,IACb,eAAA,EAAiB;AAAA,GAClB,CAAA;AACH;ACrBO,SAAS,oCAAA,CACd,cAAA,EACA,MAAA,GAAyC,MAAA,EACzC;AACA,EAAA,OAAOG,+BAAAA,CAAqB;AAAA,IAC1B,QAAA,EAAU,CAAC,eAAA,EAAiB,cAAA,EAAgB,MAAM,CAAA;AAAA,IAClD,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAM;AAChC,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,IAAA,EAAM,eAAe,cAAe,CAAA;AAAA,QACpC,MAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAEA,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,4BAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,OACF;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,cAAA;AAAA,IACX,aAAa,EAAE,KAAA,EAAO,EAAC,EAAG,UAAA,EAAY,EAAC,EAAE;AAAA,IACzC,gBAAA,EAAkB,EAAA;AAAA,IAClB,gBAAA,EAAkB,CAAC,QAAA,KAAa,QAAA,GAAW,SAAS,MAAA,GAAS,CAAC,GAAG,EAAA,IAAM,EAAA;AAAA,IACvE,cAAA,EAAgB;AAAA,GACjB,CAAA;AACH;;;ACtCO,IAAK,kBAAA,qBAAAc,mBAAAA,KAAL;AACL,EAAAA,oBAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,oBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,oBAAA,WAAA,CAAA,GAAY,YAAA;AACZ,EAAAA,oBAAA,WAAA,CAAA,GAAY,YAAA;AACZ,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,oBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,oBAAA,aAAA,CAAA,GAAc,aAAA;AATJ,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;;;ACAL,IAAK,WAAA,qBAAAC,YAAAA,KAAL;AACL,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,aAAU,CAAA,CAAA,GAAV,SAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,YAAS,CAAA,CAAA,GAAT,QAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,aAAU,CAAA,CAAA,GAAV,SAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,aAAU,CAAA,CAAA,GAAV,SAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAY,CAAA,CAAA,GAAZ,WAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAY,EAAA,CAAA,GAAZ,WAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,eAAY,EAAA,CAAA,GAAZ,WAAA;AACA,EAAAA,aAAA,cAAA,CAAA,GAAe,cAAA;AATL,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;AAYL,IAAM,gBAAA,GAAmB;AAAA,EAC9B,CAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,CAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AACF;AAEO,IAAK,oBAAA,qBAAAC,qBAAAA,KAAL;AACL,EAAAA,sBAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,sBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,sBAAA,MAAA,CAAA,GAAO,MAAA;AAHG,EAAA,OAAAA,qBAAAA;AAAA,CAAA,EAAA,oBAAA,IAAA,EAAA;;;AClBL,SAAS,qCACd,cAAA,EACA;AACA,EAAA,OAAOnB,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,eAAA,EAAiB,UAAA,EAAY,cAAc,CAAA;AAAA,IACtD,SAAS,YAAY;AACnB,MAAA,IAAI,QAAQ,cAAA,GAAiB,MAAA;AAC7B,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,OAAO,cAAA,GAAiB,4BAAA;AAAA,QACxB;AAAA,UACE,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAA,EAAM,eAAe,cAAe,CAAA;AAAA,YACpC,QAAA,EAAU,cAAA;AAAA,YACV;AAAA,WACD,CAAA;AAAA,UACD,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA;AAClB;AACF,OACF;AACA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uCAAA,EAA0C,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC7E;AACA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,cAAA;AAAA,IACX,cAAA,EAAgB,KAAA;AAAA,IAChB,aAAa,MAAM;AACjB,MAAA,MAAM,kBAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GACd,aAAa,OAAA,CAAQ,eAAe,MAAM,MAAA,GAC1C,KAAA;AACN,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA;AAAA,QACR,MAAA,EAAQ,KAAA;AAAA,QACR,aAAA,EAAe,CAAA;AAAA,QACf,YAAA,EAAc,kBAAA,GACV,EAAC,GACA;AAAA,UAAA,CAAA;AAAA,UAAA,CAAA;AAAA,UAAA,CAAA;AAAA,UAAA,EAAA;AAAA,UAAA,EAAA;AAAA,UAAA,CAAA;AAAA,UAAA,CAAA;AAAA,UAAA,CAAA;AAAA;AASD,OACN;AAAA,IACF;AAAA,GACD,CAAA;AACH;ACrDO,SAAS,4BAAA,GAA+B;AAC7C,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,eAAA,EAAiB,eAAe,CAAA;AAAA,IAC3C,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,4BAAA,EAA8B;AAAA,QACjF,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA;AAClB,OACD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrE;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,MAAA,OAAO,QAAQ,EAAC;AAAA,IAClB,CAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;ACjBO,SAAS,wBAAwB,EAAA,EAAY;AAClD,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,UAAA,EAAY,EAAE,CAAA;AAAA,IACtC,SAAS,YAAY;AACnB,MAAA,MAAM,CAAA,GAAI,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,eAAA,EAAiB,gBAAA,EAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAChF,MAAA,MAAM,QAAA,GAAW,EAAE,CAAC,CAAA;AAGpB,MAAA,IAAI,IAAI,IAAA,CAAK,QAAA,CAAS,UAAU,oBAAI,IAAI,IAAA,EAAK,IAAK,IAAI,KAAK,QAAA,CAAS,QAAQ,CAAA,oBAAK,IAAI,MAAK,EAAG;AAC3F,QAAA,QAAA,CAAS,MAAA,GAAS,QAAA;AAAA,MACpB,CAAA,MAAA,IAAW,IAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,mBAAI,IAAI,MAAK,EAAG;AACnD,QAAA,QAAA,CAAS,MAAA,GAAS,SAAA;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,MAAA,GAAS,UAAA;AAAA,MACpB;AAEA,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;ACnBO,SAAS,wBAAA,GAA2B;AACzC,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,MAAM,CAAA;AAAA,IAC9B,SAAS,YAAY;AACnB,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,gBAAgB,gBAAA,EAAkB;AAAA,QAC/E,KAAA,EAAO,CAAC,EAAE,CAAA;AAAA,QACV,KAAA,EAAO,GAAA;AAAA,QACP,KAAA,EAAO,gBAAA;AAAA,QACP,eAAA,EAAiB,YAAA;AAAA,QACjB,MAAA,EAAQ;AAAA,OACT,CAAA;AAED,MAAA,MAAM,YAAY,QAAA,CAAS,SAAA;AAC3B,MAAA,MAAM,UAAU,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,SAAS,CAAA;AAC9D,MAAA,MAAM,SAAS,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,SAAS,CAAA;AAE7D,MAAA,OAAO,CAAC,GAAG,MAAA,EAAQ,GAAG,OAAO,CAAA;AAAA,IAC/B;AAAA,GACD,CAAA;AACH;ACJO,SAAS,oCAAA,CACd,UAAA,EACA,KAAA,EACA,KAAA,EACA;AACA,EAAA,OAAOG,+BAAAA,CAA+F;AAAA,IACpG,UAAU,CAAC,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,OAAO,KAAK,CAAA;AAAA,IACzD,gBAAA,EAAkB,KAAA;AAAA,IAClB,cAAA,EAAgB,IAAA;AAAA,IAChB,SAAA,EAAW,CAAA;AAAA;AAAA,IAEX,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAA6B;AACvD,MAAA,MAAM,aAAa,SAAA,IAAa,KAAA;AAEhC,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,qBAAA,EAAuB;AAAA,QACrF,CAAC,YAAY,UAAU,CAAA;AAAA,QACvB,KAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,MAAM,IAAA,GAAO,SACV,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,EAAU,gBAAgB,UAAU,CAAA,CACpD,IAAI,CAAC,CAAA,MAAO,EAAE,EAAA,EAAI,CAAA,CAAE,IAAI,KAAA,EAAO,CAAA,CAAE,OAAM,CAAE,CAAA;AAE5C,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,WAAA,CAAY,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AACzF,MAAA,MAAM,QAAA,GAAW,cAAc,WAAW,CAAA;AAE1C,MAAA,MAAM,IAAA,GAA0B,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QAC/C,GAAG,CAAA;AAAA,QACH,YAAA,EAAc,SAAS,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,EAAE,IAAI;AAAA,OACvD,CAAE,CAAA;AAEF,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KAAoD;AACrE,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,MAAA,OAAO,MAAM,KAAA,IAAS,MAAA;AAAA,IACxB;AAAA,GACD,CAAA;AACH;ACrDO,SAAS,iCAAiC,KAAA,EAAe;AAC9D,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,WAAA,EAAa,OAAA,EAAS,WAAW,KAAK,CAAA;AAAA,IACjD,OAAA,EAAS,CAAC,CAAC,KAAA,IAAS,KAAA,KAAU,EAAA;AAAA,IAC9B,WAAW,EAAA,GAAK,GAAA;AAAA;AAAA,IAChB,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,EAAA,EAAI;AAC1B,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,WAAY,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,gBAAgB,qBAAA,EAAuB;AAAA,QACpF,KAAA,EAAO,CAAC,KAAK,CAAA;AAAA,QACb,KAAA,EAAO,GAAA;AAAA,QACP,KAAA,EAAO,mBAAA;AAAA,QACP,eAAA,EAAiB,WAAA;AAAA,QACjB,MAAA,EAAQ;AAAA,OACT,CAAA;AAGD,MAAA,MAAM,SAAA,GAAA,CAAa,QAAA,CAAS,cAAA,IAAkB,EAAC,EAAG,OAAO,CAAC,IAAA,KAAS,IAAA,CAAK,KAAA,KAAU,KAAK,CAAA;AAEvF,MAAA,OAAO,SAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;ACtBO,SAAS,iCAAA,CACd,QAAA,EACA,IAAA,EACA,KAAA,GAAQ,EAAA,EACR;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,QAAA,EAAU,qBAAA,EAAuB,QAAA,EAAU,MAAM,KAAK,CAAA;AAAA,IACjE,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,yBAAA,EAA2B;AAAA,MACzD,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IACH,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACjBO,SAAS,kCAAkC,OAAA,EAAiB;AACjE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,qBAAA,EAAuB,OAAO,CAAA;AAAA,IACnD,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,yBAAA,EAA2B;AAAA,MACzD;AAAA,KACD,CAAA;AAAA,IACH,MAAA,EAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAS;AAAA,GAChE,CAAA;AACH;ACTO,SAAS,gDAAgD,OAAA,EAAiB;AAC/E,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,oCAAA,EAAsC,OAAO,CAAA;AAAA,IAClE,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,wCAAA,EAA0C;AAAA,MACxE;AAAA,KACD,CAAA;AAAA,IACH,MAAA,EAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAS;AAAA,GAChE,CAAA;AACH;ACTO,SAAS,mCAAmC,OAAA,EAAiB;AAClE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,kBAAA,EAAoB,OAAO,CAAA;AAAA,IAChD,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,2BAAA,EAA6B;AAAA,MAC3D;AAAA,KACD,CAAA;AAAA,IACH,MAAA,EAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,UAAA,GAAa,CAAA,CAAE,UAAU;AAAA,GAClE,CAAA;AACH;ACTO,SAAS,8BAA8B,OAAA,EAAiB;AAC7D,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,iBAAA,EAAmB,OAAO,CAAA;AAAA,IAC/C,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,KAAK,qBAAA,EAAuB;AAAA,MACrD,OAAA;AAAA,MACA;AAAA,KACD;AAAA,GACJ,CAAA;AACH;ACTO,SAAS,0BAA0B,IAAA,EAAc;AACtD,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AAAA,IACxC,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,iBAAA,EAAmB;AAAA,MACzD;AAAA,KACD,CAAA;AAAA,IACH,MAAA,EAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA;AAAA,IAC3D,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACNO,SAAS,4CAAA,CAA6C,QAAA,EAAkB,KAAA,GAAQ,GAAA,EAAK;AAC1F,EAAA,OAAOG,+BAAAA,CAA2E;AAAA,IAChF,QAAA,EAAU,CAAC,QAAA,EAAU,yBAAA,EAA2B,UAAU,KAAK,CAAA;AAAA,IAC/D,gBAAA,EAAkB,IAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAA+B;AACzD,MAAA,MAAM,WAAW,MAAM,MAAA,CAAO,UAAA,CAC3B,IAAA,CAAK,UAAU,4BAAA,EAA8B;AAAA,QAC5C,KAAA,EAAO,CAAC,QAAA,EAAU,SAAA,IAAa,EAAE,CAAA;AAAA,QACjC;AAAA,OACD,CAAA,CACA,IAAA,CAAK,CAAC,MAAW,CAAgC,CAAA;AAEpD,MAAA,IAAI,WAAA,GAAoC,QAAA,CAAS,qBAAA,IAAyB,EAAC;AAG3E,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,WAAA,GAAc,YAAY,MAAA,CAAO,CAAC,UAAA,KAAe,UAAA,CAAW,OAAO,SAAS,CAAA;AAAA,MAC9E;AAEA,MAAA,OAAO,WAAA;AAAA,IACT,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,QAAA,KACjB,QAAA,CAAS,MAAA,KAAW,KAAA,GAAQ,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,EAAA,GAAK;AAAA,GAClE,CAAA;AACH;ACnCO,SAAS,qCAAqC,QAAA,EAAkB;AACrE,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,yBAAA,EAA2B,QAAQ,CAAA;AAAA,IACxD,SAAS,YAAY;AACnB,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,MAAA,CAAO,cAAA,GAAiB,CAAA,8BAAA,EAAiC,QAAQ,CAAA;AAAA,OACnE;AAEA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yCAAA,EAA4C,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC/E;AAEA,MAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,MAAA,OAAO,IAAA,CAAK,IAAA;AAAA,IACd;AAAA,GACD,CAAA;AACH;ACRO,SAAS,iCAAiC,KAAA,EAAe;AAC9D,EAAA,OAAOG,+BAAAA,CAA0F;AAAA,IAC/F,QAAA,EAAU,CAAC,WAAA,EAAa,MAAA,EAAQ,KAAK,CAAA;AAAA,IACrC,gBAAA,EAAkB,EAAA;AAAA,IAElB,OAAA,EAAS,OAAO,EAAE,SAAA,OAChB,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,eAAA,EAAiB,uBAAA,EAAyB;AAAA,MAC/D,SAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,IAEH,gBAAA,EAAkB,CAAC,QAAA,KAAqD;AACtE,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,MAAA,OAAO,IAAA,GAAO,KAAK,KAAA,GAAQ,MAAA;AAAA,IAC7B;AAAA,GACD,CAAA;AACH;ACnBO,SAAS,wBAAA,CAAyB,QAAQ,GAAA,EAAK;AACpD,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,YAAA,EAAc,KAAK,CAAA;AAAA,IACxC,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,gBAAA,EAAkB;AAAA,MACxD;AAAA,KACD;AAAA,GACJ,CAAA;AACH;ACVO,SAAS,+BAAA,GAAkC;AAChD,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,YAAY,CAAA;AAAA,IACjC,OAAA,EAAS,MACP,MAAA,CAAO,UAAA,CAAW,KAAK,eAAA,EAAiB,YAAA,EAAc,EAAE;AAAA,GAC3D,CAAA;AACH;ACFO,SAAS,4BAAA,CACd,OAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAe;AACjC,IAAA,OAAO,IAAA,CAAK,WAAA,EAAY,CAAE,OAAA,CAAQ,aAAa,EAAE,CAAA;AAAA,EACnD,CAAA;AAEA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,UAAU,OAAA,EAAQ,EAAG,OAAA,CAAQ,OAAA,EAAS,CAAA;AAAA,IAC/E,SAAS,MACP,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,iBAAiB,oBAAA,EAAsB;AAAA,MAC5D,OAAA;AAAA,MACA,WAAW,SAAS,CAAA;AAAA,MACpB,WAAW,OAAO;AAAA,KACnB;AAAA,GACJ,CAAA;AACH;ACtBO,SAAS,2BAAA,GAA8B;AAC5C,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,gBAAgB,CAAA;AAAA,IACrC,SAAS,YAAY;AAEnB,MAAA,MAAM,KAAA,GAAS,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACrC,eAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAC,OACH;AAGA,MAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,MAAA,MAAM,YAAY,IAAI,IAAA,CAAK,GAAA,CAAI,OAAA,KAAY,KAAQ,CAAA;AAEnD,MAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAe;AACjC,QAAA,OAAO,IAAA,CAAK,WAAA,EAAY,CAAE,OAAA,CAAQ,aAAa,EAAE,CAAA;AAAA,MACnD,CAAA;AAEA,MAAA,MAAM,SAAA,GAAa,MAAM,MAAA,CAAO,UAAA,CAAW,IAAA;AAAA,QACzC,eAAA;AAAA,QACA,oBAAA;AAAA,QACA,CAAC,KAAA,EAAO,UAAA,CAAW,SAAS,CAAA,EAAG,UAAA,CAAW,GAAG,CAAC;AAAA,OAChD;AAGA,MAAA,MAAM,MAAA,GAAuB;AAAA,QAC3B,KAAA,EAAO,CAAC,KAAA,CAAM,MAAA;AAAA,QACd,KAAA,EAAO,SAAA,CAAU,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA,CAAE,QAAA,CAAS,IAAA,GAAO,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,IAAA,GAAO,CAAA;AAAA,QAC5E,IAAA,EAAM,SAAA,CAAU,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA,CAAE,QAAA,CAAS,IAAA,GAAO,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,IAAA,GAAO,CAAA;AAAA,QAC3E,GAAA,EAAK,SAAA,CAAU,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA,CAAE,QAAA,CAAS,GAAA,GAAM,SAAA,CAAU,CAAC,CAAA,CAAE,KAAK,GAAA,GAAM,CAAA;AAAA,QACxE,SAAS,SAAA,CAAU,CAAC,IAChB,GAAA,GAAQ,SAAA,CAAU,CAAC,CAAA,CAAE,QAAA,CAAS,IAAA,GAAO,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,CAAK,OAAQ,GAAA,GAAO,CAAC,MAAM,MAAA,GAC7E,CAAA;AAAA,QACJ,gBAAgB,KAAA,CAAM,WAAA,CAAY,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,QAC9C,cAAc,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,GAAG,EAAE,CAAC;AAAA,OAC7C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;ACrCO,SAAS,yBAAA,CACd,IAAA,EACA,UAAA,EACA,MAAA,EACA,IAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,UAAU,CAAC,QAAA,EAAU,QAAQ,IAAA,EAAM,UAAA,EAAY,QAAQ,IAAI,CAAA;AAAA,IAC3D,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,MAAA,MAAM,GAAA,GAAM,0CAA0C,IAAI,CAAA,gCAAA,EAAmC,UAAU,CAAA,MAAA,EAAS,MAAM,OAAO,IAAI,CAAA,CAAA;AAEjI,MAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAA,EAAK,EAAE,QAAQ,CAAA;AAE5C,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACnE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AAAA,GACD,CAAA;AACH;ACtBO,SAAS,qBAAA,CAAsB,QAAA,EAAmB,MAAA,GAAS,CAAA,EAAG;AACnE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,QAAA,EAAU,MAAM,CAAA;AAAA,IACrC,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,MAAM,IAAI,MAAM,kDAA6C,CAAA;AAAA,MAC/D;AAEA,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAGrC,MAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,qBAAA,EAAuB;AAAA,QAChF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,QAAA,EAAU,MAAM;AAAA,OACxC,CAAA;AAED,MAAA,IAAI,CAAC,eAAe,EAAA,EAAI;AACtB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2B,cAAA,CAAe,MAAM,CAAA,CAAE,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,MAAA,GAAU,MAAM,cAAA,CAAe,IAAA,EAAK;AAG1C,MAAA,MAAM,uBAAuB,MAAM,KAAA;AAAA,QACjC,OAAO,cAAA,GAAiB,yBAAA;AAAA,QACxB;AAAA,UACE,MAAA,EAAQ,MAAA;AAAA,UACR,OAAA,EAAS;AAAA,YACP,cAAA,EAAgB;AAAA,WAClB;AAAA,UACA,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,UAAU,IAAA,EAAM,IAAA,EAAM,QAAQ;AAAA;AACvD,OACF;AAEA,MAAA,IAAI,CAAC,qBAAqB,EAAA,EAAI;AAC5B,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oCAAA,EAAuC,oBAAA,CAAqB,MAAM,CAAA,CAAE,CAAA;AAAA,MACtF;AAEA,MAAA,MAAM,YAAA,GAAgB,MAAM,oBAAA,CAAqB,IAAA,EAAK;AAEtD,MAAA,OAAO;AAAA,QACL,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,gBAAA;AAAA,QAChB;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,SAAA,EAAW,GAAA;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AC1DO,SAAS,mBACd,CAAA,EACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,WACA,KAAA,EACA;AACA,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,CAAA,EAAG,MAAM,OAAA,EAAS,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA,IAC9D,SAAS,YAAY;AACnB,MAAA,MAAM,IAAA,GAOF,EAAE,CAAA,EAAG,IAAA,EAAM,UAAU,OAAA,EAAQ;AAEjC,MAAA,IAAI,KAAA,OAAY,KAAA,GAAQ,KAAA;AACxB,MAAA,IAAI,SAAA,OAAgB,SAAA,GAAY,SAAA;AAChC,MAAA,IAAI,KAAA,OAAY,KAAA,GAAQ,KAAA;AAExB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,oBAAA,EAAsB;AAAA,QACzE,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,OAC1B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrD;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB;AAAA,GACD,CAAA;AACH;AAOO,SAAS,0CAAA,CACd,IAAA,EACA,GAAA,EACA,OAAA,GAAU,IAAA,EACV;AACA,EAAA,OAAOG,+BAAAA,CAA4F;AAAA,IACjG,QAAA,EAAU,CAAC,QAAA,EAAU,sBAAA,EAAwB,MAAM,GAAG,CAAA;AAAA,IACtD,gBAAA,EAAkB,EAAE,GAAA,EAAK,MAAA,EAAW,aAAa,IAAA,EAAK;AAAA,IAEtD,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAgC;AAC1D,MAAA,IAAI,CAAC,UAAU,WAAA,EAAa;AAC1B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,CAAA;AAAA,UACN,IAAA,EAAM,CAAA;AAAA,UACN,SAAS;AAAC,SACZ;AAAA,MACF;AAEA,MAAA,IAAI,SAAA;AACJ,MAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AAErB,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,OAAA;AACH,UAAA,SAAA,GAAY,IAAI,KAAK,GAAA,CAAI,OAAA,KAAY,EAAA,GAAK,EAAA,GAAK,KAAK,GAAI,CAAA;AACxD,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,SAAA,GAAY,IAAI,KAAK,GAAA,CAAI,OAAA,KAAY,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI,CAAA;AAC5D,UAAA;AAAA,QACF,KAAK,OAAA;AACH,UAAA,SAAA,GAAY,IAAI,KAAK,GAAA,CAAI,OAAA,KAAY,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI,CAAA;AAC7D,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,SAAA,GAAY,IAAI,KAAK,GAAA,CAAI,OAAA,KAAY,GAAA,GAAM,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI,CAAA;AAC9D,UAAA;AAAA,QACF;AACE,UAAA,SAAA,GAAY,MAAA;AAAA;AAGhB,MAAA,MAAM,CAAA,GAAI,aAAA;AACV,MAAA,MAAM,IAAA,GAAO,IAAA,KAAS,QAAA,GAAW,UAAA,GAAa,IAAA;AAC9C,MAAA,MAAM,KAAA,GAAQ,YAAY,SAAA,CAAU,WAAA,GAAc,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,GAAI,MAAA;AAClE,MAAA,MAAM,OAAA,GAAU,GAAA;AAChB,MAAA,MAAM,KAAA,GAAQ,GAAA,KAAQ,OAAA,GAAU,EAAA,GAAK,GAAA;AAErC,MAAA,MAAM,IAAA,GAOF,EAAE,CAAA,EAAG,IAAA,EAAM,UAAU,OAAA,EAAQ;AAEjC,MAAA,IAAI,KAAA,OAAY,KAAA,GAAQ,KAAA;AACxB,MAAA,IAAI,SAAA,CAAU,GAAA,EAAK,IAAA,CAAK,SAAA,GAAY,SAAA,CAAU,GAAA;AAC9C,WAAgB,KAAA,GAAQ,KAAA;AAExB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,oBAAA,EAAsB;AAAA,QACzE,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,OAC1B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrD;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IAEA,gBAAA,EAAkB,CAAC,IAAA,KAAoC;AACrD,MAAA,OAAO;AAAA,QACL,KAAK,IAAA,EAAM,SAAA;AAAA,QACX,WAAA,EAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS;AAAA,OACrC;AAAA,IACF,CAAA;AAAA,IAEA;AAAA,GACD,CAAA;AACH;ACvHA,SAAS,UAAA,CAAW,KAAA,EAAc,KAAA,GAAQ,CAAA,EAAG;AAC3C,EAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAS,GAAI,KAAA;AAEpC,EAAA,IAAI,CAAA,GAAI,GAAA;AACR,EAAA,CAAA,IAAK,CAAA,iBAAA,CAAA;AACL,EAAA,IAAI,IAAA;AAGJ,EAAA,IAAI,iBAAiB,aAAA,CAAc,IAAA,IAAQ,MAAM,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,EAAG;AAC5E,IAAA,IAAA,GAAO,aAAA,CAAc,IAAA,CAClB,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,EAAE,CAAA,CACjC,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,GAAA,CAAI,UAAA,CAAW,OAAO,CAAC,CAAA,CACxC,MAAA,CAAO,CAAC,IAAA,EAAM,GAAA,KAAQ,GAAA,GAAM,CAAC,KAAK,CAAA,CAClC,IAAA,CAAK,GAAG,CAAA;AAAA,EACb;AAGA,EAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3B,IAAA,CAAA,IAAK,QAAQ,IAAI,CAAA,CAAA;AAAA,EACnB,CAAA,MAAO;AAEL,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,IAAA,IAAA,GAAO,KAAA,CACJ,MAAA,CAAO,CAAC,IAAA,KAAiB,IAAA,KAAS,EAAE,CAAA,CACpC,MAAA,CAAO,CAAC,IAAA,KAAiB,CAAC,SAAA,CAAU,KAAK,IAAI,CAAC,CAAA,CAC9C,MAAA,CAAO,CAAC,IAAA,KAAiB,KAAK,MAAA,GAAS,CAAC,CAAA,CACxC,IAAA,CAAK,GAAG,CAAA;AACX,IAAA,CAAA,IAAK,QAAQ,IAAI,CAAA,CAAA;AAAA,EACnB;AAEA,EAAA,OAAO,CAAA;AACT;AAEO,SAAS,8BAA8B,KAAA,EAAc;AAC1D,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAE9B,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,iBAAA,EAAmB,MAAM,MAAA,EAAQ,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,IAC3E,SAAS,YAAY;AACnB,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,CAAA,EAAG,KAAA;AAAA,QACH,IAAA,EAAM,QAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACZ;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,oBAAA,EAAsB;AAAA,QACzE,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,OAC1B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrD;AAEA,MAAA,MAAM,cAAA,GAAkB,MAAM,QAAA,CAAS,IAAA,EAAK;AAE5C,MAAA,MAAM,UAAA,GAAa,eAAe,OAAA,CAAQ,MAAA;AAAA,QACxC,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,KAAA,CAAM,YAAY,CAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,KAAM;AAAA,OACrE;AAEA,MAAA,MAAM,UAAU,EAAC;AACjB,MAAA,KAAA,MAAW,UAAU,UAAA,EAAY;AAC/B,QAAA,IAAI,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,EAAE,MAAA,KAAW,MAAA,CAAO,MAAM,CAAA,KAAM,MAAA,EAAW;AACjE,UAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,QACrB;AAAA,MACF;AAEA,MAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA,IAC3B;AAAA,GACD,CAAA;AACH;ACjFO,SAAS,4BAAA,CAA6B,CAAA,EAAW,KAAA,GAAQ,CAAA,EAAG,SAAS,KAAA,EAAO;AACjF,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,SAAA,EAAW,GAAG,KAAK,CAAA;AAAA,IACxC,SAAS,YAAY;AACnB,MAAA,MAAM,OAAO,EAAE,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,CAAC,MAAA,EAAO;AAEzC,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,4BAAA,EAA8B;AAAA,QACjF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,OAC1B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACjE;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACtBO,SAAS,2BAAA,CAA4B,CAAA,EAAW,KAAA,GAAQ,EAAA,EAAI,SAAS,KAAA,EAAO;AACjF,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,QAAA,EAAU,CAAC,CAAA;AAAA,IAChC,SAAS,YAAY;AACnB,MAAA,MAAM,OAAO,EAAE,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,CAAC,MAAA,EAAO;AAEzC,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,wBAAA,EAA0B;AAAA,QAC7E,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,OAC1B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC/D;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;ACtBO,SAAS,gCAAA,CACd,CAAA,EACA,IAAA,EACA,OAAA,EACA,OACA,KAAA,EACA;AACA,EAAA,OAAOG,+BAAAA,CAAqB;AAAA,IAC1B,QAAA,EAAU,CAAC,QAAA,EAAU,KAAA,EAAO,GAAG,IAAA,EAAM,OAAA,EAAS,OAAO,KAAK,CAAA;AAAA,IAC1D,OAAA,EAAS,OAAO,EAAE,SAAA,EAAU,KAAyC;AAUnE,MAAA,MAAM,OAAA,GAA4B,EAAE,CAAA,EAAG,IAAA,EAAM,UAAU,OAAA,EAAQ;AAE/D,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,MAClB;AACA,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,OAAA,CAAQ,SAAA,GAAY,SAAA;AAAA,MACtB;AACA,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,MAClB;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,oBAAA,EAAsB;AAAA,QACzE,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,OAAO;AAAA,OAC7B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACrD;AAEA,MAAA,OAAO,SAAS,IAAA,EAAK;AAAA,IACvB,CAAA;AAAA,IACA,gBAAA,EAAkB,MAAA;AAAA,IAClB,gBAAA,EAAkB,CAAC,QAAA,KAA6B,QAAA,EAAU,SAAA;AAAA,IAC1D,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AClDO,SAAS,0BAA0B,CAAA,EAAW;AACnD,EAAA,OAAOH,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,QAAA,EAAU,MAAA,EAAQ,CAAC,CAAA;AAAA,IAC9B,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,yBAAA,EAA2B;AAAA,QAC9E,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,EAAE,GAAG;AAAA,OAC3B,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MAC1D;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,MAAA,IAAI,IAAA,EAAM,SAAS,CAAA,EAAG;AACpB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAO,CAAC,CAAC,CAAA;AAAA,IACX;AAAA,GACD,CAAA;AACH;ACxBO,SAAS,+BAA+B,WAAA,EAAqB;AAClE,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,YAAA,EAAc,mBAAmB,CAAA;AAAA,IAC5C,SAAS,YAAY;AACnB,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,+BAAA,EAAiC;AAAA,QACpF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,aAAa;AAAA,OAC3C,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACzE;AAEA,MAAA,OAAO,MAAM,SAAS,IAAA,EAAK;AAAA,IAC7B,CAAA;AAAA,IACA,SAAA,EAAW,QAAA;AAAA,IACX,cAAA,EAAgB,IAAA;AAAA,IAChB,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AC1BO,SAAS,4BAA4B,WAAA,EAAqB;AAC/D,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,YAAA,EAAc,eAAe,CAAA;AAAA,IACxC,SAAS,YAAY;AACnB,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,4BAAA,EAA8B;AAAA,QACjF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,aAAa;AAAA,OAC3C,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACtE;AAEA,MAAA,OAAO,MAAM,SAAS,IAAA,EAAK;AAAA,IAC7B,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC;AAAA,GACZ,CAAA;AACH;AChBO,SAAS,qCAAA,CAAsC,SAAiB,WAAA,EAAqB;AAC1F,EAAA,OAAOA,uBAAAA,CAAa;AAAA,IAClB,QAAA,EAAU,CAAC,YAAA,EAAc,qBAAA,EAAuB,OAAO,CAAA;AAAA,IACvD,SAAS,YAAmD;AAC1D,MAAA,IAAI,CAAC,WAAA,IAAe,CAAC,OAAA,EAAS;AAC5B,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,iBAAiB,mCAAA,EAAqC;AAAA,QACxF,MAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB;AAAA,SAClB;AAAA,QACA,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,WAAA,EAAa,SAAS;AAAA,OACpD,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACjF;AAEA,MAAA,MAAM,YAAA,GAAe,MAAM,QAAA,CAAS,IAAA,EAAK;AAKzC,MAAA,OAAO,YAAA,GACH;AAAA,QACE,SAAS,YAAA,CAAa,OAAA;AAAA,QACtB,OAAA,EAAS,IAAI,IAAA,CAAK,YAAA,CAAa,OAAO;AAAA,OACxC,GACA,IAAA;AAAA,IACN,CAAA;AAAA,IACA,OAAA,EAAS,CAAC,CAAC,OAAA,IAAW,CAAC,CAAC;AAAA,GACzB,CAAA;AACH","file":"index.cjs","sourcesContent":["export class MockStorage implements Storage {\n [name: string]: any;\n\n length: number = 0;\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getItem(key: string): string | null {\n return this[key];\n }\n\n key(index: number): string | null {\n return Object.keys(this)[index];\n }\n\n removeItem(key: string): void {\n delete this[key];\n }\n\n setItem(key: string, value: string): void {\n this[key] = value;\n }\n}\n","import { Client } from \"@hiveio/dhive\";\nimport { MockStorage } from \"./mock-storage\";\nimport { QueryClient } from \"@tanstack/react-query\";\n\nexport const CONFIG = {\n privateApiHost: \"https://ecency.com\",\n storage:\n typeof window === \"undefined\" ? new MockStorage() : window.localStorage,\n storagePrefix: \"ecency\",\n hiveClient: new Client(\n [\n \"https://api.hive.blog\",\n \"https://api.deathwing.me\",\n \"https://rpc.mahdiyari.info\",\n \"https://api.openhive.network\",\n \"https://techcoderx.com\",\n \"https://hive-api.arcange.eu\",\n \"https://api.syncad.com\",\n \"https://anyx.io\",\n \"https://api.c0ff33a.uk\",\n \"https://hiveapi.actifit.io\",\n \"https://hive-api.3speak.tv\",\n ],\n {\n timeout: 2000,\n failoverThreshold: 2,\n consoleOnFailover: true\n }\n ),\n heliusApiKey: process.env.VITE_HELIUS_API_KEY,\n queryClient: new QueryClient(),\n plausibleHost: \"https://pl.ecency.com\",\n spkNode: \"https://spk.good-karma.xyz\",\n // DMCA filtering - can be configured by the app\n dmcaAccounts: [] as string[],\n dmcaTags: [] as string[],\n dmcaPatterns: [] as string[],\n // Pre-compiled regex patterns for performance and security\n dmcaTagRegexes: [] as RegExp[],\n dmcaPatternRegexes: [] as RegExp[],\n // Track if DMCA has been initialized to avoid duplicate logs\n _dmcaInitialized: false,\n};\n\nexport namespace ConfigManager {\n export function setQueryClient(client: QueryClient) {\n CONFIG.queryClient = client;\n }\n\n /**\n * Set the private API host\n * @param host - The private API host URL (e.g., \"https://ecency.com\" or \"\" for relative URLs)\n */\n export function setPrivateApiHost(host: string) {\n CONFIG.privateApiHost = host;\n }\n\n /**\n * Static analysis: Check for known ReDoS-vulnerable patterns\n * @param pattern - Raw regex pattern string\n * @returns Object with risk level and reason\n */\n function analyzeRedosRisk(pattern: string): { safe: boolean; reason?: string } {\n // Check 1: Nested quantifiers (e.g., (a+)+, (a*)+, (a{1,})+)\n if (/(\\([^)]*[*+{][^)]*\\))[*+{]/.test(pattern)) {\n return { safe: false, reason: \"nested quantifiers detected\" };\n }\n\n // Check 2: Alternation with overlapping terms (e.g., (a|a)+, (ab|a)+)\n if (/\\([^|)]*\\|[^)]*\\)[*+{]/.test(pattern)) {\n return { safe: false, reason: \"alternation with quantifier (potential overlap)\" };\n }\n\n // Check 3: Catastrophic backtracking patterns (e.g., (a*)*b, (a+)+b)\n if (/\\([^)]*[*+][^)]*\\)[*+]/.test(pattern)) {\n return { safe: false, reason: \"repeated quantifiers (catastrophic backtracking risk)\" };\n }\n\n // Check 4: Greedy quantifiers followed by optional patterns (e.g., .*.*x, .+.+x)\n if (/\\.\\*\\.\\*/.test(pattern) || /\\.\\+\\.\\+/.test(pattern)) {\n return { safe: false, reason: \"multiple greedy quantifiers on wildcards\" };\n }\n\n // Check 5: Unbounded ranges with wildcards (e.g., .{1,999999})\n const unboundedRange = /\\.?\\{(\\d+),(\\d+)\\}/g;\n let match;\n while ((match = unboundedRange.exec(pattern)) !== null) {\n const [, min, max] = match;\n const range = parseInt(max, 10) - parseInt(min, 10);\n if (range > 1000) {\n return { safe: false, reason: `excessive range: {${min},${max}}` };\n }\n }\n\n return { safe: true };\n }\n\n /**\n * Runtime test: Execute regex against adversarial inputs with timeout\n * @param regex - Compiled regex\n * @returns Object indicating if regex passed runtime test\n */\n function testRegexPerformance(regex: RegExp): { safe: boolean; reason?: string } {\n // Test inputs designed to trigger ReDoS in vulnerable patterns\n const adversarialInputs = [\n // Nested quantifier attack\n \"a\".repeat(50) + \"x\",\n // Alternation attack\n \"ab\".repeat(50) + \"x\",\n // Wildcard attack\n \"x\".repeat(100),\n // Mixed attack\n \"aaa\".repeat(30) + \"bbb\".repeat(30) + \"x\",\n ];\n\n const maxExecutionTime = 5; // 5ms hard limit per test\n\n for (const input of adversarialInputs) {\n const start = Date.now();\n try {\n regex.test(input);\n const duration = Date.now() - start;\n\n if (duration > maxExecutionTime) {\n return {\n safe: false,\n reason: `runtime test exceeded ${maxExecutionTime}ms (took ${duration}ms on input length ${input.length})`\n };\n }\n } catch (err) {\n return { safe: false, reason: `runtime test threw error: ${err}` };\n }\n }\n\n return { safe: true };\n }\n\n /**\n * Safely compile a regex pattern with defense-in-depth validation\n * @param pattern - Raw regex pattern string\n * @param maxLength - Maximum allowed pattern length (default 200)\n * @returns Compiled RegExp or null if invalid/unsafe\n */\n function safeCompileRegex(pattern: string, maxLength = 200): RegExp | null {\n try {\n // Layer 1: Basic validation\n if (!pattern) {\n console.warn(`[SDK] DMCA pattern rejected: empty pattern`);\n return null;\n }\n\n if (pattern.length > maxLength) {\n console.warn(`[SDK] DMCA pattern rejected: length ${pattern.length} exceeds max ${maxLength} - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n // Layer 2: Static ReDoS analysis\n const staticAnalysis = analyzeRedosRisk(pattern);\n if (!staticAnalysis.safe) {\n console.warn(`[SDK] DMCA pattern rejected: static analysis failed (${staticAnalysis.reason}) - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n // Layer 3: Compilation attempt\n let regex: RegExp;\n try {\n regex = new RegExp(pattern);\n } catch (compileErr) {\n console.warn(`[SDK] DMCA pattern rejected: compilation failed - pattern: ${pattern.substring(0, 50)}...`, compileErr);\n return null;\n }\n\n // Layer 4: Runtime performance testing\n const runtimeTest = testRegexPerformance(regex);\n if (!runtimeTest.safe) {\n console.warn(`[SDK] DMCA pattern rejected: runtime test failed (${runtimeTest.reason}) - pattern: ${pattern.substring(0, 50)}...`);\n return null;\n }\n\n return regex;\n } catch (err) {\n console.warn(`[SDK] DMCA pattern rejected: unexpected error - pattern: ${pattern.substring(0, 50)}...`, err);\n return null;\n }\n }\n\n /**\n * Set DMCA filtering lists\n * @param accounts - List of account usernames to filter (plain strings)\n * @param tags - List of tag patterns (regex strings) to filter\n * @param patterns - List of post patterns (plain strings) like \"@author/permlink\" for exact matching\n */\n export function setDmcaLists(\n accounts: string[] = [],\n tags: string[] = [],\n patterns: string[] = []\n ) {\n CONFIG.dmcaAccounts = accounts;\n CONFIG.dmcaTags = tags;\n CONFIG.dmcaPatterns = patterns;\n\n // Pre-compile tag regex patterns (tags can be regex)\n CONFIG.dmcaTagRegexes = tags\n .map((pattern) => safeCompileRegex(pattern))\n .filter((r): r is RegExp => r !== null);\n\n // Post patterns are plain strings for exact matching, not regex\n // No compilation needed - they will be used with simple string comparison\n CONFIG.dmcaPatternRegexes = [];\n\n const rejectedTagCount = tags.length - CONFIG.dmcaTagRegexes.length;\n\n // Only log once to avoid noise during builds/hot reloads\n if (!CONFIG._dmcaInitialized) {\n console.log(`[SDK] DMCA configuration loaded:`);\n console.log(` - Accounts: ${accounts.length}`);\n console.log(` - Tag patterns: ${CONFIG.dmcaTagRegexes.length}/${tags.length} compiled (${rejectedTagCount} rejected)`);\n console.log(` - Post patterns: ${patterns.length} (using exact string matching)`);\n\n if (rejectedTagCount > 0) {\n console.warn(`[SDK] ${rejectedTagCount} DMCA tag patterns were rejected due to security validation. Check warnings above for details.`);\n }\n\n CONFIG._dmcaInitialized = true;\n }\n }\n}\n","export function encodeObj(o: any): string {\n return btoa(JSON.stringify(o));\n}\n\nexport function decodeObj(o: any): any {\n let dataToParse = atob(o);\n if (dataToParse[0] !== \"{\") {\n return undefined;\n }\n return JSON.parse(dataToParse);\n}\n","import { SMTAsset } from \"@hiveio/dhive\";\n\nexport enum Symbol {\n HIVE = \"HIVE\",\n HBD = \"HBD\",\n VESTS = \"VESTS\",\n SPK = \"SPK\",\n}\n\nexport enum NaiMap {\n \"@@000000021\" = \"HIVE\",\n \"@@000000013\" = \"HBD\",\n \"@@000000037\" = \"VESTS\",\n}\n\nexport interface Asset {\n amount: number;\n symbol: Symbol;\n}\n\nexport function parseAsset(sval: string | SMTAsset): Asset {\n if (typeof sval === \"string\") {\n const sp = sval.split(\" \");\n return {\n amount: parseFloat(sp[0]),\n // @ts-ignore\n symbol: Symbol[sp[1]],\n };\n } else {\n return {\n amount: parseFloat(sval.amount.toString()) / Math.pow(10, sval.precision),\n // @ts-ignore\n symbol: NaiMap[sval.nai],\n };\n }\n}\n","let cachedFetch: typeof globalThis.fetch | undefined;\n\nexport function getBoundFetch() {\n if (!cachedFetch) {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"[Ecency][SDK] - global fetch is not available\");\n }\n\n cachedFetch = globalThis.fetch.bind(globalThis);\n }\n\n return cachedFetch;\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { StoringUser } from \"./entities\";\nimport { decodeObj } from \"./utils\";\n\nexport const getUser = (username: string): StoringUser | undefined => {\n try {\n const raw = CONFIG.storage.getItem(\n CONFIG.storagePrefix + \"_user_\" + username\n );\n return decodeObj(JSON.parse(raw!)) as StoringUser;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n};\n\nexport const getAccessToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.accessToken;\n\nexport const getPostingKey = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.postingKey;\n\nexport const getLoginType = (username: string): null | undefined | string =>\n getUser(username) && getUser(username)!.loginType;\n\nexport const getRefreshToken = (username: string): string | undefined =>\n getUser(username) && getUser(username)!.refreshToken;\n","import { Operation } from \"@hiveio/dhive\";\n\ntype KeychainedWindow = {\n hive_keychain?: any;\n} & Window;\n\ndeclare var window: KeychainedWindow;\n\nexport type KeychainAuthorityTypes = \"Owner\" | \"Active\" | \"Posting\" | \"Memo\";\n\ninterface TxResponse {\n success: boolean;\n result: string;\n}\n\nexport function handshake() {\n return new Promise<void>((resolve) => {\n window.hive_keychain?.requestHandshake(() => {\n resolve();\n });\n });\n}\n\nexport const broadcast = (\n account: string,\n operations: Operation[],\n key: KeychainAuthorityTypes,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestBroadcast(\n account,\n operations,\n key,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n },\n rpc\n );\n });\n\nexport const customJson = (\n account: string,\n id: string,\n key: KeychainAuthorityTypes,\n json: string,\n display_msg: string,\n rpc: string | null = null\n): Promise<TxResponse> =>\n new Promise<TxResponse>((resolve, reject) => {\n window.hive_keychain?.requestCustomJson(\n account,\n id,\n key,\n json,\n display_msg,\n (resp: TxResponse) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n resolve(resp);\n },\n rpc\n );\n });\n","import {\n useMutation,\n type MutationKey,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccessToken, getLoginType, getPostingKey } from \"../storage\";\nimport { Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { CONFIG, getBoundFetch } from \"@/modules/core\";\n//import hs from \"hivesigner\";\nimport { Keychain } from \"@/modules/keychain\";\n\nexport function useBroadcastMutation<T>(\n mutationKey: MutationKey = [],\n username: string | undefined,\n operations: (payload: T) => Operation[],\n onSuccess: UseMutationOptions<unknown, Error, T>[\"onSuccess\"] = () => {}\n) {\n return useMutation({\n onSuccess,\n mutationKey: [...mutationKey, username],\n mutationFn: async (payload: T) => {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n operations(payload),\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == \"keychain\") {\n return Keychain.broadcast(\n username,\n operations(payload),\n \"Posting\"\n ).then((r: any) => r.result);\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const f = getBoundFetch();\n const res = await f(\"https://hivesigner.com/api/broadcast\", {\n method: \"POST\",\n headers: {\n Authorization: token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ operations: operations(payload) }),\n });\n\n if (!res.ok) {\n const txt = await res.text().catch(() => \"\");\n throw new Error(`[Hivesigner] ${res.status} ${res.statusText} ${txt}`);\n }\n\n const json = await res.json();\n if (json?.errors) {\n throw new Error(`[Hivesigner] ${JSON.stringify(json.errors)}`);\n }\n return json.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport {getAccessToken, getLoginType, getPostingKey} from \"../storage\";\nimport {Keychain} from \"@/modules/keychain\";\n\nexport async function broadcastJson<T>(\n username: string | undefined,\n id: string,\n payload: T\n) {\n if (!username) {\n throw new Error(\n \"[Core][Broadcast] Attempted to call broadcast API with anon user\"\n );\n }\n const jjson = {\n id,\n required_auths: [],\n required_posting_auths: [username],\n json: JSON.stringify(payload),\n };\n\n const postingKey = getPostingKey(username);\n if (postingKey) {\n const privateKey = PrivateKey.fromString(postingKey);\n\n return CONFIG.hiveClient.broadcast.json(\n jjson,\n privateKey\n );\n }\n\n const loginType = getLoginType(username);\n if (loginType && loginType == 'keychain') {\n return Keychain.broadcast(username, [[\"custom_json\", jjson]], \"Posting\").then((r: any) => r.result)\n }\n\n // With hivesigner access token\n let token = getAccessToken(username);\n if (token) {\n const response = await new hs.Client({\n accessToken: token,\n }).customJson([], [username], id, JSON.stringify(payload));\n return response.result;\n }\n\n throw new Error(\n \"[SDK][Broadcast] – cannot broadcast w/o posting key or token\"\n );\n}\n","import {\n InfiniteData,\n QueryClient,\n QueryKey,\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n useQuery,\n UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport { CONFIG } from \"./config\";\n\nexport function makeQueryClient() {\n // Cache creates one single instance per request in a server side\n return new QueryClient({\n defaultOptions: {\n queries: {\n // With SSR, we usually want to set some default staleTime\n // above 0 to avoid refetching immediately on the client\n // staleTime: 60 * 1000,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n },\n });\n}\nexport const getQueryClient = () => CONFIG.queryClient;\n\nexport namespace EcencyQueriesManager {\n export function getQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<T>(queryKey);\n }\n\n export function getInfiniteQueryData<T>(queryKey: QueryKey) {\n const queryClient = getQueryClient();\n return queryClient.getQueryData<InfiniteData<T>>(queryKey);\n }\n\n export async function prefetchQuery<T>(options: UseQueryOptions<T>) {\n const queryClient = getQueryClient();\n await queryClient.prefetchQuery(options);\n return getQueryData<T>(options.queryKey);\n }\n\n export async function prefetchInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n const queryClient = getQueryClient();\n await queryClient.prefetchInfiniteQuery(options);\n return getInfiniteQueryData<T>(options.queryKey);\n }\n\n export function generateClientServerQuery<T>(options: UseQueryOptions<T>) {\n return {\n prefetch: () => prefetchQuery(options),\n getData: () => getQueryData<T>(options.queryKey),\n useClientQuery: () => useQuery(options),\n fetchAndGet: () => getQueryClient().fetchQuery(options),\n };\n }\n\n export function generateClientServerInfiniteQuery<T, P>(\n options: UseInfiniteQueryOptions<\n T,\n Error,\n InfiniteData<T>,\n QueryKey,\n P\n >\n ) {\n return {\n prefetch: () => prefetchInfiniteQuery(options),\n getData: () => getInfiniteQueryData<T>(options.queryKey),\n useClientQuery: () => useInfiniteQuery(options),\n fetchAndGet: () => getQueryClient().fetchInfiniteQuery(options),\n };\n }\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { DynamicProps } from \"../types\";\nimport { CONFIG } from \"../config\";\nimport { parseAsset } from \"../utils\";\n\nexport function getDynamicPropsQueryOptions() {\n return queryOptions({\n queryKey: [\"core\", \"dynamic-props\"],\n refetchInterval: 60000,\n staleTime: 60000,\n refetchOnMount: true,\n queryFn: async (): Promise<DynamicProps> => {\n const globalDynamic = await CONFIG.hiveClient.database\n .getDynamicGlobalProperties()\n .then((r: any) => ({\n total_vesting_fund_hive:\n r.total_vesting_fund_hive || r.total_vesting_fund_steem,\n total_vesting_shares: r.total_vesting_shares,\n hbd_print_rate: r.hbd_print_rate || r.sbd_print_rate,\n hbd_interest_rate: r.hbd_interest_rate,\n head_block_number: r.head_block_number,\n vesting_reward_percent: r.vesting_reward_percent,\n virtual_supply: r.virtual_supply,\n }));\n\n const feedHistory =\n await CONFIG.hiveClient.database.call(\"get_feed_history\");\n const chainProps = await CONFIG.hiveClient.database.call(\n \"get_chain_properties\"\n );\n const rewardFund = await CONFIG.hiveClient.database.call(\n \"get_reward_fund\",\n [\"post\"]\n );\n\n const hivePerMVests =\n (parseAsset(globalDynamic.total_vesting_fund_hive).amount /\n parseAsset(globalDynamic.total_vesting_shares).amount) *\n 1e6;\n const base = parseAsset(feedHistory.current_median_history.base).amount;\n const quote = parseAsset(feedHistory.current_median_history.quote).amount;\n const fundRecentClaims = parseFloat(rewardFund.recent_claims);\n const fundRewardBalance = parseAsset(rewardFund.reward_balance).amount;\n const hbdPrintRate = globalDynamic.hbd_print_rate;\n const hbdInterestRate = globalDynamic.hbd_interest_rate;\n const headBlock = globalDynamic.head_block_number;\n const totalVestingFund = parseAsset(\n globalDynamic.total_vesting_fund_hive\n ).amount;\n const totalVestingShares = parseAsset(\n globalDynamic.total_vesting_shares\n ).amount;\n const virtualSupply = parseAsset(globalDynamic.virtual_supply).amount;\n const vestingRewardPercent = globalDynamic.vesting_reward_percent;\n const accountCreationFee = chainProps.account_creation_fee;\n\n return {\n hivePerMVests,\n base,\n quote,\n fundRecentClaims,\n fundRewardBalance,\n hbdPrintRate,\n hbdInterestRate,\n headBlock,\n totalVestingFund,\n totalVestingShares,\n virtualSupply,\n vestingRewardPercent,\n accountCreationFee,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport {\n AccountFollowStats,\n AccountReputation,\n FullAccount,\n} from \"../types\";\nimport { parseProfileMetadata } from \"@/modules/accounts\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountFullQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"get-account-full\", username],\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK] Username is empty\");\n }\n\n const response = (await CONFIG.hiveClient.database.getAccounts([\n username,\n ])) as any[];\n if (!response[0]) {\n throw new Error(\"[SDK] No account with given username\");\n }\n\n const profile = parseProfileMetadata(response[0].posting_json_metadata);\n\n let follow_stats: AccountFollowStats | undefined;\n try {\n follow_stats = await CONFIG.hiveClient.database.call(\n \"get_follow_count\",\n [username]\n );\n } catch (e) {}\n\n let reputationValue = 0;\n try {\n const reputation = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_reputations\",\n [username, 1]\n )) as AccountReputation[];\n reputationValue = reputation[0]?.reputation ?? 0;\n } catch (e) {}\n\n return {\n name: response[0].name,\n owner: response[0].owner,\n active: response[0].active,\n posting: response[0].posting,\n memo_key: response[0].memo_key,\n post_count: response[0].post_count,\n created: response[0].created,\n posting_json_metadata: response[0].posting_json_metadata,\n last_vote_time: response[0].last_vote_time,\n last_post: response[0].last_post,\n json_metadata: response[0].json_metadata,\n reward_hive_balance: response[0].reward_hive_balance,\n reward_hbd_balance: response[0].reward_hbd_balance,\n reward_vesting_hive: response[0].reward_vesting_hive,\n reward_vesting_balance: response[0].reward_vesting_balance,\n balance: response[0].balance,\n hbd_balance: response[0].hbd_balance,\n savings_balance: response[0].savings_balance,\n savings_hbd_balance: response[0].savings_hbd_balance,\n savings_hbd_last_interest_payment:\n response[0].savings_hbd_last_interest_payment,\n savings_hbd_seconds_last_update:\n response[0].savings_hbd_seconds_last_update,\n savings_hbd_seconds: response[0].savings_hbd_seconds,\n next_vesting_withdrawal: response[0].next_vesting_withdrawal,\n pending_claimed_accounts: response[0].pending_claimed_accounts,\n vesting_shares: response[0].vesting_shares,\n delegated_vesting_shares: response[0].delegated_vesting_shares,\n received_vesting_shares: response[0].received_vesting_shares,\n vesting_withdraw_rate: response[0].vesting_withdraw_rate,\n to_withdraw: response[0].to_withdraw,\n withdrawn: response[0].withdrawn,\n witness_votes: response[0].witness_votes,\n proxy: response[0].proxy,\n recovery_account: response[0].recovery_account,\n proxied_vsf_votes: response[0].proxied_vsf_votes,\n voting_manabar: response[0].voting_manabar,\n voting_power: response[0].voting_power,\n downvote_manabar: response[0].downvote_manabar,\n follow_stats,\n reputation: reputationValue,\n profile,\n } satisfies FullAccount;\n },\n enabled: !!username,\n staleTime: 60000,\n });\n}\n","import * as R from \"remeda\";\n\nimport { AccountProfile, FullAccount } from \"../types\";\n\nexport type ProfileTokens = AccountProfile[\"tokens\"];\n\nexport interface BuildProfileMetadataArgs {\n existingProfile?: AccountProfile;\n profile?: Partial<AccountProfile> | null;\n tokens?: ProfileTokens | null;\n}\n\nfunction sanitizeTokens(\n tokens?: ProfileTokens | null\n): ProfileTokens | undefined {\n return tokens?.map(({ meta, ...rest }) => {\n if (!meta || typeof meta !== \"object\") {\n return { ...rest, meta };\n }\n\n const { privateKey, username, ...safeMeta } = meta;\n return { ...rest, meta: safeMeta };\n });\n}\n\nexport function parseProfileMetadata(\n postingJsonMetadata?: string | null\n): AccountProfile {\n if (!postingJsonMetadata) {\n return {} as AccountProfile;\n }\n\n try {\n const parsed = JSON.parse(postingJsonMetadata);\n if (\n parsed &&\n typeof parsed === \"object\" &&\n parsed.profile &&\n typeof parsed.profile === \"object\"\n ) {\n return parsed.profile as AccountProfile;\n }\n } catch (err) {}\n\n return {} as AccountProfile;\n}\n\nexport function extractAccountProfile(\n data?: Pick<FullAccount, \"posting_json_metadata\"> | null\n): AccountProfile {\n return parseProfileMetadata(data?.posting_json_metadata);\n}\n\nexport function buildProfileMetadata({\n existingProfile,\n profile,\n tokens,\n}: BuildProfileMetadataArgs): AccountProfile {\n const { tokens: profileTokens, version: _ignoredVersion, ...profileRest } =\n profile ?? {};\n\n const metadata = R.mergeDeep(\n existingProfile ?? ({} as AccountProfile),\n profileRest\n );\n\n const nextTokens = tokens ?? profileTokens;\n\n if (nextTokens && nextTokens.length > 0) {\n metadata.tokens = nextTokens;\n }\n\n metadata.tokens = sanitizeTokens(metadata.tokens);\n metadata.version = 2;\n\n return metadata;\n}\n","import { FullAccount, AccountProfile } from \"../types\";\nimport { parseProfileMetadata } from \"./profile-metadata\";\n\n/**\n * Parses raw account data from Hive API into FullAccount type\n * Handles profile metadata extraction from posting_json_metadata or json_metadata\n */\nexport function parseAccounts(rawAccounts: any[]): FullAccount[] {\n return rawAccounts.map((x) => {\n const account: FullAccount = {\n name: x.name,\n owner: x.owner,\n active: x.active,\n posting: x.posting,\n memo_key: x.memo_key,\n post_count: x.post_count,\n created: x.created,\n reputation: x.reputation,\n posting_json_metadata: x.posting_json_metadata,\n last_vote_time: x.last_vote_time,\n last_post: x.last_post,\n json_metadata: x.json_metadata,\n reward_hive_balance: x.reward_hive_balance,\n reward_hbd_balance: x.reward_hbd_balance,\n reward_vesting_hive: x.reward_vesting_hive,\n reward_vesting_balance: x.reward_vesting_balance,\n balance: x.balance,\n hbd_balance: x.hbd_balance,\n savings_balance: x.savings_balance,\n savings_hbd_balance: x.savings_hbd_balance,\n savings_hbd_last_interest_payment: x.savings_hbd_last_interest_payment,\n savings_hbd_seconds_last_update: x.savings_hbd_seconds_last_update,\n savings_hbd_seconds: x.savings_hbd_seconds,\n next_vesting_withdrawal: x.next_vesting_withdrawal,\n pending_claimed_accounts: x.pending_claimed_accounts,\n vesting_shares: x.vesting_shares,\n delegated_vesting_shares: x.delegated_vesting_shares,\n received_vesting_shares: x.received_vesting_shares,\n vesting_withdraw_rate: x.vesting_withdraw_rate,\n to_withdraw: x.to_withdraw,\n withdrawn: x.withdrawn,\n witness_votes: x.witness_votes,\n proxy: x.proxy,\n recovery_account: x.recovery_account,\n proxied_vsf_votes: x.proxied_vsf_votes,\n voting_manabar: x.voting_manabar,\n voting_power: x.voting_power,\n downvote_manabar: x.downvote_manabar,\n };\n\n // Try to parse profile from posting_json_metadata first\n let profile: AccountProfile | undefined = parseProfileMetadata(\n x.posting_json_metadata\n );\n\n // Fallback to json_metadata if posting_json_metadata didn't have a profile\n if (!profile || Object.keys(profile).length === 0) {\n try {\n const jsonMetadata = JSON.parse(x.json_metadata || \"{}\");\n if (jsonMetadata.profile) {\n profile = jsonMetadata.profile;\n }\n } catch (e) {\n // Ignore parsing errors\n }\n }\n\n // Ensure we always have a profile object\n if (!profile || Object.keys(profile).length === 0) {\n profile = {\n about: \"\",\n cover_image: \"\",\n location: \"\",\n name: \"\",\n profile_image: \"\",\n website: \"\",\n };\n }\n\n return { ...account, profile };\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { parseAccounts } from \"../utils\";\n\n/**\n * Get multiple accounts by usernames\n */\nexport function getAccountsQueryOptions(usernames: string[]) {\n return queryOptions({\n queryKey: [\"accounts\", \"get-accounts\", usernames],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.database.getAccounts(usernames);\n return parseAccounts(response);\n },\n enabled: usernames.length > 0,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { AccountFollowStats } from \"../types\";\n\n/**\n * Get follow count (followers and following) for an account\n */\nexport function getFollowCountQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"accounts\", \"follow-count\", username],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_follow_count\", [\n username,\n ]) as Promise<AccountFollowStats>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow } from \"../types\";\n\n/**\n * Get list of accounts that a user is following\n *\n * @param follower - The account doing the following\n * @param startFollowing - Pagination start point (account name)\n * @param followType - Type of follow relationship (default: \"blog\")\n * @param limit - Maximum number of results (default: 100)\n */\nexport function getFollowingQueryOptions(\n follower: string | undefined,\n startFollowing: string,\n followType = \"blog\",\n limit = 100\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"following\", follower, startFollowing, followType, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_following\", [\n follower,\n startFollowing,\n followType,\n limit,\n ]) as Promise<Follow[]>,\n enabled: !!follower,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow } from \"../types\";\n\n/**\n * Get list of users that an account has muted\n *\n * @param username - The account username\n * @param limit - Maximum number of results (default: 100)\n */\nexport function getMutedUsersQueryOptions(username: string | undefined, limit = 100) {\n return queryOptions({\n queryKey: [\"accounts\", \"muted-users\", username],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.database.call(\"get_following\", [\n username,\n \"\",\n \"ignore\",\n limit,\n ])) as Follow[];\n\n return response.map((user) => user.following);\n },\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\n\n/**\n * Lookup accounts by username prefix\n *\n * @param query - Username prefix to search for\n * @param limit - Maximum number of results (default: 50)\n */\nexport function lookupAccountsQueryOptions(query: string, limit = 50) {\n return queryOptions({\n queryKey: [\"accounts\", \"lookup\", query, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"lookup_accounts\", [\n query,\n limit,\n ]) as Promise<string[]>,\n enabled: !!query,\n staleTime: Infinity,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getSearchAccountsByUsernameQueryOptions(\n query: string,\n limit = 5,\n excludeList: string[] = []\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"search\", query, excludeList],\n enabled: !!query,\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.database.call(\n \"lookup_accounts\",\n [query, limit]\n )) as string[];\n return response.filter((item) =>\n excludeList.length > 0 ? !excludeList.includes(item) : true\n );\n },\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountProfile } from \"../types\";\n\ntype AccountProfileToken = NonNullable<AccountProfile[\"tokens\"]>[number];\n\nexport type WalletMetadataCandidate = Partial<AccountProfileToken> & {\n currency?: string;\n show?: boolean;\n address?: string;\n publicKey?: string;\n privateKey?: string;\n username?: string;\n};\n\nexport interface CheckUsernameWalletsPendingResponse {\n exist: boolean;\n tokens?: WalletMetadataCandidate[];\n wallets?: WalletMetadataCandidate[];\n}\n\nconst RESERVED_META_KEYS = new Set([\n \"ownerPublicKey\",\n \"activePublicKey\",\n \"postingPublicKey\",\n \"memoPublicKey\",\n]);\n\ninterface WalletsEndpointResponseItem {\n token?: unknown;\n address?: unknown;\n status?: unknown;\n meta?: unknown;\n username?: unknown;\n}\n\nexport function checkUsernameWalletsPendingQueryOptions(\n username: string,\n code: string | undefined\n) {\n return queryOptions<CheckUsernameWalletsPendingResponse>({\n queryKey: [\n \"accounts\",\n \"check-wallet-pending\",\n username,\n code ?? null,\n ],\n queryFn: async () => {\n if (!username || !code) {\n return { exist: false } satisfies CheckUsernameWalletsPendingResponse;\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/wallets\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n code,\n }),\n }\n );\n\n if (!response.ok) {\n return { exist: false } satisfies CheckUsernameWalletsPendingResponse;\n }\n\n const payload = (await response.json()) as unknown;\n\n const wallets: WalletMetadataCandidate[] = Array.isArray(payload)\n ? payload.flatMap((item) => {\n if (!item || typeof item !== \"object\") {\n return [];\n }\n\n const walletItem = item as WalletsEndpointResponseItem;\n\n const symbol =\n typeof walletItem.token === \"string\"\n ? walletItem.token\n : undefined;\n\n if (!symbol) {\n return [];\n }\n\n const meta: Record<string, unknown> =\n walletItem.meta && typeof walletItem.meta === \"object\"\n ? { ...(walletItem.meta as Record<string, unknown>) }\n : {};\n\n const sanitizedMeta: Record<string, unknown> = {};\n\n const address =\n typeof walletItem.address === \"string\" && walletItem.address\n ? walletItem.address\n : undefined;\n\n const statusShow =\n typeof walletItem.status === \"number\"\n ? walletItem.status === 3\n : undefined;\n\n const showFlag = statusShow ?? false;\n\n if (address) {\n sanitizedMeta.address = address;\n }\n\n sanitizedMeta.show = showFlag;\n\n const baseCandidate = {\n symbol,\n currency: symbol,\n address,\n show: showFlag,\n type: \"CHAIN\",\n meta: sanitizedMeta,\n } satisfies WalletMetadataCandidate;\n\n const metaTokenCandidates: WalletMetadataCandidate[] = [];\n\n for (const [metaSymbol, metaValue] of Object.entries(meta)) {\n if (typeof metaSymbol !== \"string\") {\n continue;\n }\n\n if (RESERVED_META_KEYS.has(metaSymbol)) {\n continue;\n }\n\n if (typeof metaValue !== \"string\" || !metaValue) {\n continue;\n }\n\n if (!/^[A-Z0-9]{2,10}$/.test(metaSymbol)) {\n continue;\n }\n\n metaTokenCandidates.push({\n symbol: metaSymbol,\n currency: metaSymbol,\n address: metaValue,\n show: showFlag,\n type: \"CHAIN\",\n meta: { address: metaValue, show: showFlag },\n });\n }\n\n return [baseCandidate, ...metaTokenCandidates];\n })\n : [];\n\n return {\n exist: wallets.length > 0,\n tokens: wallets.length ? wallets : undefined,\n wallets: wallets.length ? wallets : undefined,\n } satisfies CheckUsernameWalletsPendingResponse;\n },\n refetchOnMount: true,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountRelationship } from \"../types\";\n\nexport function getRelationshipBetweenAccountsQueryOptions(\n reference: string | undefined,\n target: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"relations\", reference, target],\n enabled: !!reference && !!target,\n refetchOnMount: false,\n refetchInterval: 3_600_000,\n queryFn: async () => {\n return (await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_relationship_between_accounts\",\n [reference, target]\n )) as AccountRelationship;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\ntype Subscriptions = string[];\n\nexport function getAccountSubscriptionsQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"subscriptions\", username],\n enabled: !!username,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_all_subscriptions\",\n {\n account: username,\n }\n );\n return (response ?? []) as Subscriptions;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountBookmark } from \"../types\";\n\nexport function getActiveAccountBookmarksQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"bookmarks\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Bookmarks] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountBookmark[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { AccountFavorite } from \"../types\";\n\nexport function getActiveAccountFavouritesQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"favourites\", activeUsername],\n enabled: !!activeUsername,\n queryFn: async () => {\n if (!activeUsername) {\n throw new Error(\"[SDK][Accounts][Favourites] – no active user\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(activeUsername) }),\n }\n );\n return (await response.json()) as AccountFavorite[];\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetRecoveriesEmailResponse } from \"../types\";\n\nexport function getAccountRecoveriesQueryOptions(username: string | undefined) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/recoveries\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(username!) }),\n }\n );\n\n return response.json() as Promise<GetRecoveriesEmailResponse[]>;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountPendingRecoveryQueryOptions(\n username: string | undefined\n) {\n return queryOptions({\n enabled: !!username,\n queryKey: [\"accounts\", \"recoveries\", username, \"pending-request\"],\n queryFn: () =>\n CONFIG.hiveClient.call(\n \"database_api\",\n \"find_change_recovery_account_requests\",\n { accounts: [username] }\n ),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { utils } from \"@hiveio/dhive\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Transaction, OperationGroup } from \"../types/transaction\";\n\nconst ops = utils.operationOrders;\n\nexport const ACCOUNT_OPERATION_GROUPS: Record<OperationGroup, number[]> = {\n transfers: [\n ops.transfer,\n ops.transfer_to_savings,\n ops.transfer_from_savings,\n ops.cancel_transfer_from_savings,\n ops.recurrent_transfer,\n ops.fill_recurrent_transfer,\n ops.escrow_transfer,\n ops.fill_recurrent_transfer,\n ],\n \"market-orders\": [\n ops.fill_convert_request,\n ops.fill_order,\n ops.fill_collateralized_convert_request,\n ops.limit_order_create2,\n ops.limit_order_create,\n ops.limit_order_cancel,\n ],\n interests: [ops.interest],\n \"stake-operations\": [\n ops.return_vesting_delegation,\n ops.withdraw_vesting,\n ops.transfer_to_vesting,\n ops.set_withdraw_vesting_route,\n ops.update_proposal_votes,\n ops.fill_vesting_withdraw,\n ops.account_witness_proxy,\n ops.delegate_vesting_shares,\n ],\n rewards: [\n ops.author_reward,\n ops.curation_reward,\n ops.producer_reward,\n ops.claim_reward_balance,\n ops.comment_benefactor_reward,\n ops.liquidity_reward,\n ops.proposal_pay,\n ],\n};\n\nexport const ALL_ACCOUNT_OPERATIONS = [...Object.values(ACCOUNT_OPERATION_GROUPS)].reduce(\n (acc, val) => acc.concat(val),\n []\n);\n\ntype TxPage = Transaction[];\ntype TxCursor = number;\n\ninterface AccountHistoryOperation {\n timestamp: string;\n trx_id: string;\n op: [Transaction[\"type\"], any];\n}\n\ntype AccountHistoryRecord = [number, AccountHistoryOperation];\n\n/**\n * Get account transaction history with pagination and filtering\n *\n * @param username - Account name to get transactions for\n * @param limit - Number of transactions per page\n * @param group - Filter by operation group (transfers, market-orders, etc.)\n */\nexport function getTransactionsInfiniteQueryOptions(\n username?: string,\n limit = 20,\n group: OperationGroup | \"\" = \"\"\n) {\n return infiniteQueryOptions<TxPage, Error, TxPage, (string | number)[], TxCursor>({\n queryKey: [\"accounts\", \"transactions\", username ?? \"\", group, limit],\n initialPageParam: -1 as TxCursor,\n\n queryFn: async ({ pageParam }: { pageParam: TxCursor }) => {\n if (!username) {\n return [];\n }\n\n let filters: number[] | undefined;\n switch (group) {\n case \"transfers\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"transfers\"]);\n break;\n case \"market-orders\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"market-orders\"]);\n break;\n case \"interests\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"interests\"]);\n break;\n case \"stake-operations\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"stake-operations\"]);\n break;\n case \"rewards\":\n filters = utils.makeBitMaskFilter(ACCOUNT_OPERATION_GROUPS[\"rewards\"]);\n break;\n default:\n filters = utils.makeBitMaskFilter(ALL_ACCOUNT_OPERATIONS);\n }\n\n const response = (await (filters\n ? CONFIG.hiveClient.call(\"condenser_api\", \"get_account_history\", [\n username,\n pageParam,\n limit,\n ...filters,\n ])\n : CONFIG.hiveClient.call(\"condenser_api\", \"get_account_history\", [\n username,\n pageParam,\n limit,\n ]))) as AccountHistoryRecord[];\n\n const mapped: Transaction[] = response\n .map(([num, operation]) => {\n const base = {\n num,\n type: operation.op[0],\n timestamp: operation.timestamp,\n trx_id: operation.trx_id,\n } as const;\n\n const payload = operation.op[1] as Record<string, unknown>;\n return { ...base, ...payload } as Transaction;\n })\n .filter(Boolean)\n .sort((a, b) => b.num - a.num);\n\n return mapped;\n },\n\n getNextPageParam: (lastPage: TxPage | undefined): TxCursor =>\n lastPage?.length ? (lastPage[lastPage.length - 1]?.num ?? 0) - 1 : -1,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\n\nexport function getBotsQueryOptions() {\n return queryOptions({\n queryKey: [\"accounts\", \"bots\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/public/bots\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch bots: ${response.status}`);\n }\n\n return response.json() as Promise<string[]>;\n },\n refetchOnMount: true,\n staleTime: Infinity,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReferralItem } from \"../types/referral\";\n\ntype PageParam = { maxId?: number };\n\nexport function getReferralsInfiniteQueryOptions(username: string) {\n return infiniteQueryOptions({\n queryKey: [\"accounts\", \"referrals\", username],\n initialPageParam: { maxId: undefined } as PageParam,\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n const { maxId } = pageParam ?? {};\n const url = new URL(CONFIG.privateApiHost + `/private-api/referrals/${username}`);\n\n if (maxId !== undefined) {\n url.searchParams.set(\"max_id\", maxId.toString());\n }\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch referrals: ${response.status}`);\n }\n\n return response.json() as Promise<ReferralItem[]>;\n },\n getNextPageParam: (lastPage: ReferralItem[]) => {\n const nextMaxId = lastPage?.[lastPage.length - 1]?.id;\n return typeof nextMaxId === \"number\" ? ({ maxId: nextMaxId } as PageParam) : undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReferralStat } from \"../types/referral\";\n\ninterface ReferralStatsResponse {\n total?: number;\n rewarded?: number;\n}\n\nexport function getReferralsStatsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"accounts\", \"referrals-stats\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/referrals/${username}/stats`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch referral stats: ${response.status}`);\n }\n\n const data = await response.json() as ReferralStatsResponse;\n\n if (!data) {\n throw new Error(\"No Referrals for this user!\");\n }\n\n return {\n total: data.total ?? 0,\n rewarded: data.rewarded ?? 0,\n } as ReferralStat;\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow, Profile, FriendsRow } from \"../types\";\n\nexport interface FriendsPageParam {\n startFollowing: string;\n}\n\ntype FriendsPage = FriendsRow[];\n\n/**\n * Get list of friends (following/followers) with profile information\n *\n * @param following - The account whose friends to get\n * @param mode - \"following\" or \"followers\"\n * @param followType - Type of follow relationship (default: \"blog\")\n * @param limit - Number of results per page (default: 100)\n * @param enabled - Whether query is enabled (default: true)\n */\nexport function getFriendsInfiniteQueryOptions(\n following: string,\n mode: \"following\" | \"followers\",\n options?: {\n followType?: string;\n limit?: number;\n enabled?: boolean;\n }\n) {\n const { followType = \"blog\", limit = 100, enabled = true } = options ?? {};\n\n return infiniteQueryOptions<FriendsPage, Error, FriendsPage, (string | number)[], FriendsPageParam>({\n queryKey: [\"accounts\", \"friends\", following, mode, followType, limit],\n initialPageParam: { startFollowing: \"\" } as FriendsPageParam,\n enabled,\n refetchOnMount: true,\n\n queryFn: async ({ pageParam }: { pageParam: FriendsPageParam }) => {\n const { startFollowing } = pageParam;\n\n const response = (await CONFIG.hiveClient.database.call(\n mode === \"following\" ? \"get_following\" : \"get_followers\",\n [following, startFollowing === \"\" ? null : startFollowing, followType, limit]\n )) as Follow[];\n\n const accountNames = response.map((e) =>\n mode === \"following\" ? e.following : e.follower\n );\n\n // Get profiles via bridge API\n const accounts = (await CONFIG.hiveClient.call(\"bridge\", \"get_profiles\", {\n accounts: accountNames,\n observer: undefined,\n })) as Profile[];\n\n const rows: FriendsPage = (accounts ?? []).map((a) => ({\n name: a.name,\n reputation: a.reputation,\n active: a.active, // Return raw timestamp\n }));\n\n return rows;\n },\n\n getNextPageParam: (lastPage: FriendsPage): FriendsPageParam | undefined =>\n lastPage && lastPage.length === limit\n ? { startFollowing: lastPage[lastPage.length - 1].name }\n : undefined,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Follow, Profile, FriendSearchResult } from \"../types\";\n\nconst SEARCH_LIMIT = 30;\n\n/**\n * Search friends (following/followers) by query string\n *\n * @param username - The account whose friends to search\n * @param mode - \"following\" or \"followers\"\n * @param query - Search query string\n */\nexport function getSearchFriendsQueryOptions(\n username: string,\n mode: \"following\" | \"followers\",\n query: string\n) {\n return queryOptions({\n queryKey: [\"accounts\", \"friends\", \"search\", username, mode, query],\n refetchOnMount: false,\n enabled: false, // Manual query via refetch\n queryFn: async (): Promise<FriendSearchResult[]> => {\n if (!query) return [];\n\n const start = query.slice(0, -1);\n const response = (await CONFIG.hiveClient.database.call(\n mode === \"following\" ? \"get_following\" : \"get_followers\",\n [username, start, \"blog\", 1000]\n )) as Follow[];\n\n const accountNames = response\n .map((e) => (mode === \"following\" ? e.following : e.follower))\n .filter((name) => name.toLowerCase().includes(query.toLowerCase()))\n .slice(0, SEARCH_LIMIT);\n\n // Get profiles via bridge API\n const accounts = (await CONFIG.hiveClient.call(\"bridge\", \"get_profiles\", {\n accounts: accountNames,\n observer: undefined,\n })) as Profile[];\n\n return (\n accounts?.map((a) => ({\n name: a.name,\n full_name: a.metadata.profile?.name || \"\",\n reputation: a.reputation,\n active: a.active, // Return raw timestamp\n })) ?? []\n );\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { TrendingTag } from \"../types\";\n\nexport function getTrendingTagsQueryOptions(limit = 20) {\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"trending-tags\"],\n queryFn: async ({ pageParam: { afterTag } }) =>\n CONFIG.hiveClient.database\n .call(\"get_trending_tags\", [afterTag, limit])\n .then((tags: TrendingTag[]) =>\n tags\n .filter((x) => x.name !== \"\")\n .filter((x) => !x.name.startsWith(\"hive-\"))\n .map((x) => x.name)\n ),\n initialPageParam: { afterTag: \"\" },\n getNextPageParam: (lastPage) => ({\n afterTag: lastPage?.[lastPage?.length - 1],\n }),\n staleTime: Infinity,\n refetchOnMount: true,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\n\nexport function getFragmentsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"posts\", \"fragments\", username],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return response.json() as Promise<Fragment[]>;\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\n// TODO: replace any with Entry\nexport function getPromotedPostsQuery<T extends any>(\n type: \"feed\" | \"waves\" = \"feed\"\n) {\n return queryOptions({\n queryKey: [\"posts\", \"promoted\", type],\n queryFn: async () => {\n const url = new URL(\n CONFIG.privateApiHost + \"/private-api/promoted-entries\"\n );\n if (type === \"waves\") {\n url.searchParams.append(\"short_content\", \"1\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n const data = await response.json();\n return data as T[];\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry, Vote } from \"../types\";\n\nexport function getEntryActiveVotesQueryOptions(entry?: Entry) {\n return queryOptions({\n queryKey: [\"posts\", \"entry-active-votes\", entry?.author, entry?.permlink],\n queryFn: async () => {\n return CONFIG.hiveClient.database.call(\"get_active_votes\", [\n entry?.author,\n entry?.permlink,\n ]) as Promise<Vote[]>;\n },\n enabled: !!entry,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\n\nexport function getPostHeaderQueryOptions(author: string, permlink: string) {\n return queryOptions({\n queryKey: [\"posts\", \"post-header\", author, permlink],\n queryFn: async () => {\n return CONFIG.hiveClient.call(\"bridge\", \"get_post_header\", {\n author,\n permlink,\n }) as Promise<Entry | null>;\n },\n initialData: null,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { Entry } from \"../types\";\n\n/**\n * Filters and censors entries that match DMCA patterns\n * @param entry - Single entry or array of entries to filter\n * @returns Filtered entry/entries with DMCA content censored.\n * Note: Can return null/undefined if input is falsy - callers should guard against this.\n */\nexport function filterDmcaEntry(entry: Entry): Entry | null | undefined;\nexport function filterDmcaEntry(entries: Entry[]): Entry[];\nexport function filterDmcaEntry(entryOrEntries: Entry | Entry[] | null | undefined): Entry | Entry[] | null | undefined {\n if (Array.isArray(entryOrEntries)) {\n return entryOrEntries.map((entry) => applyFilter(entry));\n }\n return applyFilter(entryOrEntries);\n}\n\nfunction applyFilter(entry: Entry | null | undefined): Entry | null | undefined {\n if (!entry) return entry;\n\n const entryPath = `@${entry.author}/${entry.permlink}`;\n const isDmca = CONFIG.dmcaPatternRegexes.some((regex) => regex.test(entryPath));\n\n if (isDmca) {\n return {\n ...entry,\n body: \"This post is not available due to a copyright/fraudulent claim.\",\n title: \"\",\n };\n }\n\n return entry;\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\nfunction makeEntryPath(category: string, author: string, permlink: string) {\n return `${category}/@${author}/${permlink}`;\n}\n\nexport function getPostQueryOptions(\n author: string,\n permlink?: string,\n observer = \"\",\n num?: number\n) {\n const cleanPermlink = permlink?.trim();\n const entryPath = makeEntryPath(\"\", author, cleanPermlink ?? \"\");\n\n return queryOptions({\n queryKey: [\"posts\", \"entry\", entryPath],\n queryFn: async () => {\n if (!cleanPermlink || cleanPermlink === \"undefined\") {\n return null;\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_post\", {\n author,\n permlink: cleanPermlink,\n observer,\n });\n\n if (!response) {\n return null;\n }\n\n const entry = num !== undefined ? { ...response, num } as Entry : response as Entry;\n return filterDmcaEntry(entry);\n },\n enabled:\n !!author &&\n !!permlink &&\n permlink.trim() !== \"\" &&\n permlink.trim() !== \"undefined\",\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\nexport enum SortOrder {\n trending = \"trending\",\n author_reputation = \"author_reputation\",\n votes = \"votes\",\n created = \"created\",\n}\n\nfunction parseAsset(value: string): { amount: number; symbol: string } {\n const match = value.match(/^(\\d+\\.?\\d*)\\s*([A-Z]+)$/);\n if (!match) return { amount: 0, symbol: \"\" };\n return {\n amount: parseFloat(match[1]),\n symbol: match[2],\n };\n}\n\nexport function sortDiscussions(\n entry: Entry,\n discussion: Entry[],\n order: SortOrder\n) {\n const allPayout = (c: Entry) =>\n parseAsset(c.pending_payout_value).amount +\n parseAsset(c.author_payout_value).amount +\n parseAsset(c.curator_payout_value).amount;\n\n const absNegative = (a: Entry) => a.net_rshares < 0;\n const isPinned = (a: Entry) =>\n entry.json_metadata?.pinned_reply === `${a.author}/${a.permlink}`;\n\n const sortOrders = {\n trending: (a: Entry, b: Entry) => {\n if (absNegative(a)) {\n return 1;\n }\n\n if (absNegative(b)) {\n return -1;\n }\n\n const _a = allPayout(a);\n const _b = allPayout(b);\n if (_a !== _b) {\n return _b - _a;\n }\n\n return 0;\n },\n author_reputation: (a: Entry, b: Entry) => {\n const keyA = a.author_reputation;\n const keyB = b.author_reputation;\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n votes: (a: Entry, b: Entry) => {\n const keyA = a.children;\n const keyB = b.children;\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n created: (a: Entry, b: Entry) => {\n if (absNegative(a)) {\n return 1;\n }\n\n if (absNegative(b)) {\n return -1;\n }\n\n const keyA = Date.parse(a.created);\n const keyB = Date.parse(b.created);\n\n if (keyA > keyB) return -1;\n if (keyA < keyB) return 1;\n\n return 0;\n },\n };\n\n const sorted = discussion.sort(sortOrders[order]);\n const pinnedIndex = sorted.findIndex((i) => isPinned(i));\n const pinned = sorted[pinnedIndex];\n if (pinnedIndex >= 0) {\n sorted.splice(pinnedIndex, 1);\n sorted.unshift(pinned);\n }\n return sorted;\n}\n\nexport function getDiscussionsQueryOptions(\n entry: Entry,\n order: SortOrder = SortOrder.created,\n enabled: boolean = true,\n observer?: string\n) {\n return queryOptions({\n queryKey: [\n \"posts\",\n \"discussions\",\n entry?.author,\n entry?.permlink,\n order,\n observer || entry?.author,\n ],\n queryFn: async () => {\n if (!entry) {\n return [];\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_discussion\", {\n author: entry.author,\n permlink: entry.permlink,\n observer: observer || entry.author,\n });\n\n const results = response\n ? Array.from(Object.values(response as Record<string, Entry>))\n : [];\n return filterDmcaEntry(results);\n },\n enabled: enabled && !!entry,\n select: (data) => sortDiscussions(entry, data, order),\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\ntype PageParam = {\n author: string | undefined;\n permlink: string | undefined;\n hasNextPage: boolean;\n};\ntype Page = Entry[];\n\nexport function getAccountPostsInfiniteQueryOptions(\n username: string | undefined,\n filter = \"posts\",\n limit = 20,\n observer = \"\",\n enabled = true\n) {\n return infiniteQueryOptions<Page, Error, Page, (string | number)[], PageParam>({\n queryKey: [\"posts\", \"account-posts\", username ?? \"\", filter, limit, observer],\n enabled: !!username && enabled,\n initialPageParam: {\n author: undefined,\n permlink: undefined,\n hasNextPage: true,\n } as PageParam,\n\n queryFn: async ({ pageParam }) => {\n if (!pageParam?.hasNextPage || !username) return [];\n\n interface AccountPostsParams {\n sort: string;\n account: string;\n limit: number;\n observer?: string;\n start_author?: string;\n start_permlink?: string;\n }\n\n const rpcParams: AccountPostsParams = {\n sort: filter,\n account: username,\n limit,\n ...(observer && observer.length > 0 ? { observer } : {}),\n ...(pageParam.author ? { start_author: pageParam.author } : {}),\n ...(pageParam.permlink ? { start_permlink: pageParam.permlink } : {}),\n };\n\n try {\n if (CONFIG.dmcaAccounts.includes(username)) return [];\n\n const resp = await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_account_posts\",\n rpcParams\n );\n\n if (resp && Array.isArray(resp)) {\n return filterDmcaEntry(resp as Entry[]);\n }\n return [];\n } catch (err) {\n console.error(\"[SDK] get_account_posts error:\", err);\n return [];\n }\n },\n\n getNextPageParam: (lastPage: Page): PageParam | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n // Only consider there's a next page if we got a full page of results\n // A partial page means we've reached the end\n const hasNextPage = (lastPage?.length ?? 0) === limit;\n\n if (!hasNextPage) {\n return undefined;\n }\n\n return {\n author: last?.author,\n permlink: last?.permlink,\n hasNextPage,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { Entry } from \"../types\";\nimport { filterDmcaEntry } from \"../utils/filter-dmca-entries\";\n\ntype PageParam = {\n author: string | undefined;\n permlink: string | undefined;\n hasNextPage: boolean;\n};\n\ninterface GetPostsRankedOptions {\n resolvePosts?: boolean;\n}\n\nexport function getPostsRankedInfiniteQueryOptions(\n sort: string,\n tag: string,\n limit = 20,\n observer = \"\",\n enabled = true,\n _options: GetPostsRankedOptions = {}\n) {\n return infiniteQueryOptions<Entry[], Error, Entry[], (string | number)[], PageParam>({\n queryKey: [\"posts\", \"posts-ranked\", sort, tag, limit, observer],\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n if (!pageParam.hasNextPage) {\n return [];\n }\n\n let sanitizedTag = tag;\n if (CONFIG.dmcaTagRegexes.some((regex) => regex.test(tag))) {\n sanitizedTag = \"\";\n }\n\n const response = await CONFIG.hiveClient.call(\"bridge\", \"get_ranked_posts\", {\n sort,\n start_author: pageParam.author,\n start_permlink: pageParam.permlink,\n limit,\n tag: sanitizedTag,\n observer,\n });\n\n if (response && Array.isArray(response)) {\n const data = response as Entry[];\n\n // Sort by created date unless it's \"hot\"\n const sorted =\n sort === \"hot\"\n ? data\n : data.sort(\n (a, b) =>\n new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n\n // Handle pinned entries\n const pinnedEntry = sorted.find((s) => s.stats?.is_pinned);\n const nonPinnedEntries = sorted.filter((s) => !s.stats?.is_pinned);\n\n const combined = [pinnedEntry, ...nonPinnedEntries].filter((s) => !!s) as Entry[];\n return filterDmcaEntry(combined);\n }\n\n return [];\n },\n enabled,\n initialPageParam: {\n author: undefined,\n permlink: undefined,\n hasNextPage: true,\n } as PageParam,\n getNextPageParam: (lastPage: Entry[]) => {\n const last = lastPage?.[lastPage.length - 1];\n return {\n author: last?.author,\n permlink: last?.permlink,\n hasNextPage: (lastPage?.length ?? 0) > 0,\n };\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport interface BlogEntry {\n author: string;\n permlink: string;\n blog: string;\n reblog_on: string;\n reblogged_on: string;\n entry_id: number;\n}\n\nexport interface Reblog {\n author: string;\n permlink: string;\n}\n\nexport function getReblogsQueryOptions(\n username?: string,\n activeUsername?: string,\n limit = 200\n) {\n return queryOptions({\n queryKey: [\"posts\", \"reblogs\", username ?? \"\", limit],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.call(\"condenser_api\", \"get_blog_entries\", [\n username ?? activeUsername,\n 0,\n limit,\n ])) as BlogEntry[];\n\n return response\n .filter(\n (i) =>\n i.author !== activeUsername &&\n !i.reblogged_on.startsWith(\"1970-\")\n )\n .map((i) => ({ author: i.author, permlink: i.permlink })) as Reblog[];\n },\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { Schedule } from \"../types/schedule\";\n\nexport function getSchedulesQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"schedules\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/schedules\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(activeUsername),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch schedules: ${response.status}`);\n }\n\n return response.json() as Promise<Schedule[]>;\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { Draft } from \"../types/draft\";\n\nexport function getDraftsQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"drafts\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/drafts\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(activeUsername),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch drafts: ${response.status}`);\n }\n\n return response.json() as Promise<Draft[]>;\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { UserImage } from \"../types/user-image\";\n\nasync function fetchUserImages(username: string): Promise<UserImage[]> {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/images\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code: getAccessToken(username),\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch images: ${response.status}`);\n }\n\n return response.json() as Promise<UserImage[]>;\n}\n\nexport function getImagesQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"posts\", \"images\", username],\n queryFn: async () => {\n if (!username) {\n return [];\n }\n return fetchUserImages(username);\n },\n enabled: !!username,\n });\n}\n\nexport function getGalleryImagesQueryOptions(activeUsername: string | undefined) {\n return queryOptions({\n queryKey: [\"posts\", \"gallery-images\", activeUsername],\n queryFn: async () => {\n if (!activeUsername) {\n return [];\n }\n return fetchUserImages(activeUsername);\n },\n enabled: !!activeUsername,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommentHistory } from \"../types/comment-history\";\n\nexport function getCommentHistoryQueryOptions(author: string, permlink: string, onlyMeta = false) {\n return queryOptions({\n queryKey: [\"posts\", \"comment-history\", author, permlink, onlyMeta],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/comment-history\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n onlyMeta: onlyMeta ? \"1\" : \"\",\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch comment history: ${response.status}`);\n }\n\n return response.json() as Promise<CommentHistory>;\n },\n enabled: !!author && !!permlink,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommentHistory } from \"../types/comment-history\";\n\nfunction makeEntryPath(author: string, permlink: string): string {\n const cleanAuthor = author?.trim();\n const cleanPermlink = permlink?.trim();\n\n if (!cleanAuthor || !cleanPermlink) {\n throw new Error(\"Invalid entry path: author and permlink are required\");\n }\n\n // Normalize by removing any leading @ or / characters\n const normalizedAuthor = cleanAuthor.replace(/^@+/, \"\");\n const normalizedPermlink = cleanPermlink.replace(/^\\/+/, \"\");\n\n if (!normalizedAuthor || !normalizedPermlink) {\n throw new Error(\"Invalid entry path: author and permlink cannot be empty after normalization\");\n }\n\n return `@${normalizedAuthor}/${normalizedPermlink}`;\n}\n\nexport interface DeletedEntry {\n body: string;\n title: string;\n tags: string[];\n}\n\nexport function getDeletedEntryQueryOptions(author: string, permlink: string) {\n const cleanPermlink = permlink?.trim();\n const cleanAuthor = author?.trim();\n const isValid =\n !!cleanAuthor && !!cleanPermlink && cleanPermlink !== \"undefined\";\n\n const entryPath = isValid ? makeEntryPath(cleanAuthor, cleanPermlink) : \"\";\n\n return queryOptions({\n queryKey: [\"posts\", \"deleted-entry\", entryPath],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/comment-history\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink: cleanPermlink || \"\",\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch comment history: ${response.status}`);\n }\n\n return response.json() as Promise<CommentHistory>;\n },\n select: (history): DeletedEntry | null => {\n if (!history?.list?.[0]) {\n return null;\n }\n const { body, title, tags } = history.list[0];\n return {\n body,\n title,\n tags,\n };\n },\n enabled: isValid,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PostTipsResponse } from \"../types/post-tip\";\n\nexport function getPostTipsQueryOptions(author: string, permlink: string, isEnabled = true) {\n return queryOptions({\n queryKey: [\"posts\", \"tips\", author, permlink],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/post-tips\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch post tips: ${response.status}`);\n }\n\n return response.json() as Promise<PostTipsResponse>;\n },\n enabled: !!author && !!permlink && isEnabled,\n });\n}\n","import { Entry, WaveEntry } from \"../types\";\nimport { getDiscussionsQueryOptions, SortOrder } from \"../queries/get-discussions-query-options\";\nimport { CONFIG } from \"@/modules/core\";\n\ntype EntryWithPostId = Entry & { post_id: number };\n\nfunction normalizeContainer(entry: EntryWithPostId, host: string): WaveEntry {\n return {\n ...entry,\n id: entry.id ?? entry.post_id,\n host\n } as WaveEntry;\n}\n\nfunction normalizeParent(entry: EntryWithPostId): Entry {\n return {\n ...entry,\n id: entry.id ?? entry.post_id\n } as Entry;\n}\n\nexport function normalizeWaveEntryFromApi(\n entry:\n | (Entry & { post_id: number; container?: EntryWithPostId | null; parent?: EntryWithPostId | null })\n | null\n | undefined,\n host: string\n): WaveEntry | null {\n if (!entry) {\n return null;\n }\n\n const containerSource = entry.container ?? entry;\n const container = normalizeContainer(containerSource, host);\n\n const parent = entry.parent ? normalizeParent(entry.parent) : undefined;\n\n return {\n ...entry,\n id: entry.id ?? entry.post_id,\n host,\n container,\n parent\n } as WaveEntry;\n}\n\nexport function toEntryArray(x: unknown): Entry[] {\n return Array.isArray(x) ? (x as Entry[]) : [];\n}\n\nexport async function getVisibleFirstLevelThreadItems(\n container: WaveEntry\n): Promise<Entry[]> {\n const queryOptions = getDiscussionsQueryOptions(container, SortOrder.created, true);\n const discussionItemsRaw = await CONFIG.queryClient.fetchQuery(queryOptions);\n const discussionItems = toEntryArray(discussionItemsRaw);\n\n if (discussionItems.length <= 1) {\n return [];\n }\n\n const firstLevelItems = discussionItems.filter(\n ({ parent_author, parent_permlink }) =>\n parent_author === container.author && parent_permlink === container.permlink\n );\n\n if (firstLevelItems.length === 0) {\n return [];\n }\n\n const visibleItems = firstLevelItems.filter((item) => !item.stats?.gray);\n\n return visibleItems;\n}\n\nexport function mapThreadItemsToWaveEntries(\n items: Entry[],\n container: WaveEntry,\n host: string\n): WaveEntry[] {\n if (items.length === 0) {\n return [];\n }\n\n return items\n .map((item) => {\n const parent = items.find(\n (i) =>\n i.author === item.parent_author &&\n i.permlink === item.parent_permlink &&\n i.author !== host\n );\n\n return {\n ...item,\n id: item.post_id,\n host,\n container,\n parent\n } as WaveEntry;\n })\n .filter((entry) => entry.container.post_id !== entry.post_id)\n .sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { WaveEntry } from \"../types\";\nimport {\n getVisibleFirstLevelThreadItems,\n mapThreadItemsToWaveEntries\n} from \"../utils/waves-helpers\";\n\nconst THREAD_CONTAINER_BATCH_SIZE = 5;\nconst MAX_CONTAINERS_TO_SCAN = 50;\n\ninterface ThreadsResult {\n entries: WaveEntry[];\n}\n\nasync function getThreads(\n host: string,\n pageParam?: WaveEntry\n): Promise<ThreadsResult | null> {\n let startAuthor = pageParam?.author;\n let startPermlink = pageParam?.permlink;\n let scannedContainers = 0;\n let skipContainerId = pageParam?.post_id;\n\n while (scannedContainers < MAX_CONTAINERS_TO_SCAN) {\n interface AccountPostsParams {\n sort: string;\n account: string;\n limit: number;\n start_author?: string;\n start_permlink?: string;\n }\n\n const rpcParams: AccountPostsParams = {\n sort: \"posts\", // ProfileFilter.posts\n account: host,\n limit: THREAD_CONTAINER_BATCH_SIZE,\n ...(startAuthor ? { start_author: startAuthor } : {}),\n ...(startPermlink ? { start_permlink: startPermlink } : {})\n };\n\n const containers = (await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_account_posts\",\n rpcParams\n )) as WaveEntry[]; // API shape is known\n\n if (!containers || containers.length === 0) {\n return null;\n }\n\n const normalizedContainers = containers.map((container) => {\n container.id = container.post_id;\n container.host = host;\n return container;\n });\n\n for (const container of normalizedContainers) {\n if (skipContainerId && container.post_id === skipContainerId) {\n skipContainerId = undefined;\n continue;\n }\n\n scannedContainers += 1;\n\n if (container.stats?.gray) {\n startAuthor = container.author;\n startPermlink = container.permlink;\n continue;\n }\n\n const visibleItems = await getVisibleFirstLevelThreadItems(container);\n\n if (visibleItems.length === 0) {\n startAuthor = container.author;\n startPermlink = container.permlink;\n continue;\n }\n\n return {\n entries: mapThreadItemsToWaveEntries(visibleItems, container, host)\n };\n }\n\n const lastContainer = normalizedContainers[normalizedContainers.length - 1];\n\n if (!lastContainer) {\n return null;\n }\n\n startAuthor = lastContainer.author;\n startPermlink = lastContainer.permlink;\n }\n\n return null;\n}\n\n// Page = array of WaveEntry; Cursor = WaveEntry (container) or undefined\ntype WavesPage = WaveEntry[];\ntype WavesCursor = WaveEntry | undefined;\n\nexport function getWavesByHostQueryOptions(host: string) {\n return infiniteQueryOptions<WavesPage, Error, WavesPage, string[], WavesCursor>({\n queryKey: [\"posts\", \"waves\", \"by-host\", host],\n initialPageParam: undefined as WavesCursor,\n\n queryFn: async ({ pageParam }: { pageParam: WavesCursor }) => {\n const result = await getThreads(host, pageParam);\n if (!result) return []; // no items to show for this page\n\n return result.entries;\n },\n\n getNextPageParam: (lastPage: WavesPage): WavesCursor => lastPage?.[0]?.container\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Entry, WaveEntry } from \"../types\";\nimport { normalizeWaveEntryFromApi } from \"../utils/waves-helpers\";\n\ntype WavesTagEntryResponse = Entry & {\n post_id: number;\n container?: (Entry & { post_id: number }) | null;\n parent?: (Entry & { post_id: number }) | null;\n};\n\nconst DEFAULT_TAG_FEED_LIMIT = 40;\n\nexport function getWavesByTagQueryOptions(host: string, tag: string, limit = DEFAULT_TAG_FEED_LIMIT) {\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"waves\", \"by-tag\", host, tag],\n initialPageParam: undefined,\n\n queryFn: async ({ signal }) => {\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/tags\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"tag\", tag);\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves by tag: ${response.status}`);\n }\n\n const data = await response.json() as WavesTagEntryResponse[];\n\n const result = data\n .slice(0, limit)\n .map((entry) => normalizeWaveEntryFromApi(entry, host))\n .filter((entry): entry is WaveEntry => Boolean(entry));\n\n return result.sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves by tag\", error);\n return [];\n }\n },\n\n getNextPageParam: () => undefined\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Entry, WaveEntry } from \"../types\";\nimport { normalizeWaveEntryFromApi } from \"../utils/waves-helpers\";\n\ntype WavesFollowingEntry = Entry & {\n post_id: number;\n container?: (Entry & { post_id: number }) | null;\n parent?: (Entry & { post_id: number }) | null;\n};\n\nexport function getWavesFollowingQueryOptions(host: string, username?: string) {\n const normalizedUsername = username?.trim().toLowerCase();\n\n return infiniteQueryOptions({\n queryKey: [\"posts\", \"waves\", \"following\", host, normalizedUsername ?? \"\"],\n enabled: Boolean(normalizedUsername),\n initialPageParam: undefined,\n\n queryFn: async ({ signal }) => {\n if (!normalizedUsername) {\n return [];\n }\n\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/following\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"username\", normalizedUsername);\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves following feed: ${response.status}`);\n }\n\n const data = await response.json() as WavesFollowingEntry[];\n\n if (!Array.isArray(data) || data.length === 0) {\n return [];\n }\n\n const flattened = data\n .map((entry) => normalizeWaveEntryFromApi(entry, host))\n .filter((entry): entry is WaveEntry => Boolean(entry));\n\n if (flattened.length === 0) {\n return [];\n }\n\n return flattened.sort(\n (a, b) => new Date(b.created).getTime() - new Date(a.created).getTime()\n );\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves following feed\", error);\n return [];\n }\n },\n\n getNextPageParam: () => undefined\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { WaveTrendingTag } from \"../types\";\n\ninterface WavesTrendingTagResponse {\n tag: string;\n posts: number;\n}\n\nexport function getWavesTrendingTagsQueryOptions(host: string, hours = 24) {\n return queryOptions({\n queryKey: [\"posts\", \"waves\", \"trending-tags\", host, hours],\n queryFn: async ({ signal }): Promise<WaveTrendingTag[]> => {\n try {\n const url = new URL(CONFIG.privateApiHost + \"/private-api/waves/trending/tags\");\n url.searchParams.set(\"container\", host);\n url.searchParams.set(\"hours\", hours.toString());\n\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch waves trending tags: ${response.status}`);\n }\n\n const data = await response.json() as WavesTrendingTagResponse[];\n\n return data.map(({ tag, posts }) => ({ tag, posts }));\n } catch (error) {\n console.error(\"[SDK] Failed to fetch waves trending tags\", error);\n return [];\n }\n }\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Entry } from \"@/modules/posts/types\";\nimport { getPostQueryOptions } from \"@/modules/posts/queries\";\n\ninterface VoteOperationDetails {\n voter: string;\n author: string;\n permlink: string;\n weight: number;\n}\n\ninterface AccountVoteHistoryItem {\n timestamp: string;\n op: [string, VoteOperationDetails];\n}\n\ntype AccountVoteHistoryRecord = [number, AccountVoteHistoryItem];\n\ninterface VoteHistoryResult extends VoteOperationDetails {\n num: number;\n timestamp: string;\n}\n\nexport interface VoteHistoryPageParam {\n start: number;\n}\n\nexport interface VoteHistoryPage {\n lastDate: number;\n lastItemFetched: number;\n entries: Entry[];\n}\n\nfunction isEntry(x: unknown): x is Entry {\n return (\n !!x &&\n typeof x === \"object\" &&\n \"author\" in x &&\n \"permlink\" in x &&\n \"active_votes\" in x\n );\n}\n\n/**\n * Calculate days since a date\n */\nfunction getDays(createdDate: string): number {\n const past = new Date(createdDate);\n const now = new Date();\n const diffMs = now.getTime() - past.getTime();\n return diffMs / (1000 * 60 * 60 * 24);\n}\n\n/**\n * Get account vote history with entries\n *\n * @param username - Account name to get vote history for\n * @param limit - Number of history items per page (default: 20)\n * @param filters - Additional filters to pass to get_account_history\n * @param dayLimit - Only include votes from last N days (default: 7)\n */\nexport function getAccountVoteHistoryInfiniteQueryOptions<F>(\n username: string,\n options?: {\n limit?: number;\n filters?: F[];\n dayLimit?: number;\n }\n) {\n const { limit = 20, filters = [], dayLimit = 7.0 } = options ?? {};\n\n return infiniteQueryOptions<\n VoteHistoryPage,\n Error,\n VoteHistoryPage,\n (string | number)[],\n VoteHistoryPageParam\n >({\n queryKey: [\"accounts\", \"vote-history\", username, limit],\n initialPageParam: { start: -1 },\n\n queryFn: async ({ pageParam }: { pageParam: VoteHistoryPageParam }) => {\n const { start } = pageParam;\n\n const response = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_history\",\n [username, start, limit, ...filters]\n )) as AccountVoteHistoryRecord[];\n\n const mappedResults: VoteHistoryResult[] = response.map(([num, historyObj]) => ({\n ...historyObj.op[1],\n num,\n timestamp: historyObj.timestamp,\n }));\n\n const result = mappedResults.filter(\n (filtered) =>\n filtered.voter === username &&\n filtered.weight !== 0 &&\n getDays(filtered.timestamp) <= dayLimit\n );\n\n const entries: Entry[] = [];\n for (const obj of result) {\n const post = await CONFIG.queryClient.fetchQuery(\n getPostQueryOptions(obj.author, obj.permlink)\n );\n if (isEntry(post)) entries.push(post);\n }\n\n const [firstHistory] = response;\n\n return {\n lastDate: firstHistory ? getDays(firstHistory[1].timestamp) : 0,\n lastItemFetched: firstHistory ? firstHistory[0] : start,\n entries,\n };\n },\n\n getNextPageParam: (lastPage: VoteHistoryPage): VoteHistoryPageParam => ({\n start: lastPage.lastItemFetched,\n }),\n });\n}\n","import { useBroadcastMutation } from \"@/modules/core\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport * as R from \"remeda\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { AccountProfile, FullAccount } from \"../types\";\nimport {\n buildProfileMetadata,\n extractAccountProfile,\n} from \"../utils/profile-metadata\";\n\ninterface Payload {\n profile: Partial<AccountProfile>;\n tokens: AccountProfile[\"tokens\"];\n}\n\nexport function useAccountUpdate(username: string) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useBroadcastMutation(\n [\"accounts\", \"update\"],\n username,\n (payload: Partial<Payload>) => {\n if (!data) {\n throw new Error(\"[SDK][Accounts] – cannot update not existing account\");\n }\n\n const profile = buildProfileMetadata({\n existingProfile: extractAccountProfile(data),\n profile: payload.profile,\n tokens: payload.tokens,\n });\n\n return [\n [\n \"account_update2\",\n {\n account: username,\n json_metadata: \"\",\n extensions: [],\n posting_json_metadata: JSON.stringify({\n profile,\n }),\n },\n ],\n ];\n },\n (_, variables) =>\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return data;\n }\n\n const obj = R.clone(data);\n obj.profile = buildProfileMetadata({\n existingProfile: extractAccountProfile(data),\n profile: variables.profile,\n tokens: variables.tokens,\n });\n\n return obj;\n }\n )\n );\n}\n","import { broadcastJson, getQueryClient } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getRelationshipBetweenAccountsQueryOptions } from \"../queries\";\nimport { AccountRelationship } from \"../types\";\n\ntype Kind = \"toggle-ignore\" | \"toggle-follow\";\n\nexport function useAccountRelationsUpdate(\n reference: string | undefined,\n target: string | undefined,\n onSuccess: (data: Partial<AccountRelationship> | undefined) => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"relation\", \"update\", reference, target],\n mutationFn: async (kind: Kind) => {\n const relationsQuery = getRelationshipBetweenAccountsQueryOptions(\n reference,\n target\n );\n await getQueryClient().prefetchQuery(relationsQuery);\n const actualRelation = getQueryClient().getQueryData(\n relationsQuery.queryKey\n );\n\n await broadcastJson(reference, \"follow\", [\n \"follow\",\n {\n follower: reference,\n following: target,\n what: [\n ...(kind === \"toggle-ignore\" && !actualRelation?.ignores\n ? [\"ignore\"]\n : []),\n ...(kind === \"toggle-follow\" && !actualRelation?.follows\n ? [\"blog\"]\n : []),\n ],\n },\n ]);\n\n return {\n ...actualRelation,\n ignores:\n kind === \"toggle-ignore\"\n ? !actualRelation?.ignores\n : actualRelation?.ignores,\n follows:\n kind === \"toggle-follow\"\n ? !actualRelation?.follows\n : actualRelation?.follows,\n } satisfies Partial<AccountRelationship>;\n },\n onError,\n onSuccess(data) {\n onSuccess(data);\n\n getQueryClient().setQueryData(\n [\"accounts\", \"relations\", reference, target],\n data\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n author: string;\n permlink: string;\n}\n\nexport function useBookmarkAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"add\", username],\n mutationFn: async ({ author, permlink }: Payload) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n author,\n permlink,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useBookmarkDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"bookmarks\", \"delete\", username],\n mutationFn: async (bookmarkId: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/bookmarks-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n id: bookmarkId,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"bookmarks\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteAdd(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-add\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useAccountFavouriteDelete(\n username: string | undefined,\n onSuccess: () => void,\n onError: (e: Error) => void\n) {\n return useMutation({\n mutationKey: [\"accounts\", \"favourites\", \"add\", username],\n mutationFn: async (account: string) => {\n if (!username) {\n throw new Error(\"[SDK][Account][Bookmarks] – no active user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/favorites-delete\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n account,\n code: getAccessToken(username),\n }),\n }\n );\n return response.json();\n },\n onSuccess: () => {\n onSuccess();\n getQueryClient().invalidateQueries({\n queryKey: [\"accounts\", \"favourites\", username],\n });\n },\n onError,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { AuthorityType, PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport * as R from \"remeda\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\nexport interface Keys {\n owner: PrivateKey;\n active: PrivateKey;\n posting: PrivateKey;\n memo_key: PrivateKey;\n}\n\ninterface Payload {\n keepCurrent?: boolean;\n currentKey: PrivateKey;\n keys: Keys[];\n}\n\nexport function dedupeAndSortKeyAuths(\n existing: AuthorityType[\"key_auths\"],\n additions: [string, number][]\n): AuthorityType[\"key_auths\"] {\n const merged = new Map<string, number>();\n\n existing.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n additions.forEach(([key, weight]) => {\n merged.set(key.toString(), weight);\n });\n\n return Array.from(merged.entries())\n .sort(([keyA], [keyB]) => keyA.localeCompare(keyB))\n .map(([key, weight]) => [key, weight] as [string, number]);\n}\n\ntype UpdateKeyAuthsOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateKeyAuths(\n username: string,\n options?: UpdateKeyAuthsOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"keys-update\", username],\n mutationFn: async ({ keys, keepCurrent = false, currentKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = dedupeAndSortKeyAuths(\n keepCurrent ? auth.key_auths : [],\n keys.map(\n (values, i) =>\n [values[keyName].createPublic().toString(), i + 1] as [\n string,\n number,\n ]\n )\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: username,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: keepCurrent\n ? accountData.memo_key\n : keys[0].memo_key.createPublic().toString(),\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport { useAccountUpdateKeyAuths } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n newPassword: string;\n currentPassword: string;\n keepCurrent?: boolean;\n}\n\n/**\n * Only native Hive and custom passwords could be updated here\n * Seed based password cannot be updated here, it will be in an account always for now\n */\ntype UpdatePasswordOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdatePassword(\n username: string,\n options?: UpdatePasswordOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n const { mutateAsync: updateKeys } = useAccountUpdateKeyAuths(username);\n\n return useMutation({\n mutationKey: [\"accounts\", \"password-update\", username],\n mutationFn: async ({\n newPassword,\n currentPassword,\n keepCurrent,\n }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update password for anon user\"\n );\n }\n const currentKey = PrivateKey.fromLogin(\n username,\n currentPassword,\n \"owner\"\n );\n\n return updateKeys({\n currentKey,\n keepCurrent,\n keys: [\n {\n owner: PrivateKey.fromLogin(username, newPassword, \"owner\"),\n active: PrivateKey.fromLogin(username, newPassword, \"active\"),\n posting: PrivateKey.fromLogin(username, newPassword, \"posting\"),\n memo_key: PrivateKey.fromLogin(username, newPassword, \"memo\"),\n },\n ],\n });\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { FullAccount } from \"../types\";\nimport { Keychain } from \"@/modules/keychain\";\nimport hs from \"hivesigner\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n}\n\ntype RevokePostingOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokePosting(\n username: string | undefined,\n options: RevokePostingOptions\n) {\n const queryClient = useQueryClient();\n\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-posting\", data?.name],\n mutationFn: async ({ accountName, type, key }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot revoke posting for anonymous user\"\n );\n }\n\n const posting = R.pipe(\n {},\n R.mergeDeep(data.posting)\n ) as FullAccount[\"posting\"];\n\n posting.account_auths = posting.account_auths.filter(\n ([account]) => account !== accountName\n );\n\n const operationBody = {\n account: data.name,\n posting,\n memo_key: data.memo_key,\n json_metadata: data.json_metadata,\n };\n\n if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.updateAccount(operationBody, key);\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"account_update\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"account_update\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: (resp, payload, ctx) => {\n (options.onSuccess as\n | ((data: unknown, variables: CommonPayload, context: unknown) => unknown)\n | undefined)?.(resp, payload, ctx);\n queryClient.setQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey,\n (data) =>\n ({\n ...data,\n posting: {\n ...data?.posting,\n account_auths:\n data?.posting?.account_auths?.filter(\n ([account]) => account !== payload.accountName\n ) ?? [],\n },\n }) as FullAccount\n );\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { Keychain } from \"@/modules/keychain\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\nimport { getAccountFullQueryOptions } from \"../queries\";\n\ntype SignType = \"key\" | \"keychain\" | \"hivesigner\" | \"ecency\";\n\ninterface CommonPayload {\n accountName: string;\n type: SignType;\n key?: PrivateKey;\n email?: string;\n}\n\ntype UpdateRecoveryOptions = Pick<\n UseMutationOptions<unknown, Error, CommonPayload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountUpdateRecovery(\n username: string | undefined,\n options: UpdateRecoveryOptions\n) {\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"recovery\", data?.name],\n mutationFn: async ({ accountName, type, key, email }: CommonPayload) => {\n if (!data) {\n throw new Error(\n \"[SDK][Accounts] – cannot change recovery for anonymous user\"\n );\n }\n\n const operationBody = {\n account_to_recover: data.name,\n new_recovery_account: accountName,\n extensions: [],\n };\n\n if (type === \"ecency\") {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/recoveries-add\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(data.name),\n email,\n publicKeys: [\n ...data.owner.key_auths,\n ...data.active.key_auths,\n ...data.posting.key_auths,\n data.memo_key,\n ],\n }),\n });\n } else if (type === \"key\" && key) {\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"change_recovery_account\", operationBody]],\n key\n );\n } else if (type === \"keychain\") {\n return Keychain.broadcast(\n data.name,\n [[\"change_recovery_account\", operationBody]],\n \"Active\"\n ) as Promise<any>;\n } else {\n const params = {\n callback: `https://ecency.com/@${data.name}/permissions`,\n };\n return hs.sendOperation(\n [\"change_recovery_account\", operationBody],\n params,\n () => {}\n );\n }\n },\n onError: options.onError,\n onSuccess: options.onSuccess,\n });\n}\n","import { AuthorityType, PrivateKey, PublicKey } from \"@hiveio/dhive\";\nimport {\n useMutation,\n useQuery,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { getAccountFullQueryOptions } from \"../queries\";\nimport * as R from \"remeda\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Keys } from \"./use-account-update-key-auths\";\n\ninterface Payload {\n currentKey: PrivateKey;\n revokingKey: PublicKey;\n}\n\n/**\n * This hook provides functionality to revoke a key from an account on the Hive blockchain.\n * It leverages React Query's `useMutation` for managing the mutation state and executing\n * the operation efficiently.\n *\n * @param username The username of the Hive account from which the key should be revoked.\n * Pass `undefined` if the username is unknown or not set yet.\n *\n * @returns The mutation object from `useMutation`, including methods to trigger the key\n * revocation and access its state (e.g., loading, success, error).\n */\ntype RevokeKeyOptions = Pick<\n UseMutationOptions<unknown, Error, Payload>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useAccountRevokeKey(\n username: string | undefined,\n options?: RevokeKeyOptions\n) {\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n\n return useMutation({\n mutationKey: [\"accounts\", \"revoke-key\", accountData?.name],\n mutationFn: async ({ currentKey, revokingKey }: Payload) => {\n if (!accountData) {\n throw new Error(\n \"[SDK][Update password] – cannot update keys for anon user\"\n );\n }\n\n const prepareAuth = (keyName: keyof Keys) => {\n const auth: AuthorityType = R.clone(accountData[keyName]);\n\n auth.key_auths = auth.key_auths.filter(\n ([key]) => key !== revokingKey.toString()\n );\n\n return auth;\n };\n\n return CONFIG.hiveClient.broadcast.updateAccount(\n {\n account: accountData.name,\n json_metadata: accountData.json_metadata,\n owner: prepareAuth(\"owner\"),\n active: prepareAuth(\"active\"),\n posting: prepareAuth(\"posting\"),\n memo_key: accountData.memo_key,\n },\n currentKey\n );\n },\n ...options,\n });\n}\n","import { CONFIG } from \"@/modules/core/config\";\nimport { cryptoUtils, Operation, PrivateKey } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKey(username: string | undefined) {\n return useMutation({\n mutationKey: [\"operations\", \"sign\", username],\n mutationFn: ({\n operation,\n keyOrSeed,\n }: {\n operation: Operation;\n keyOrSeed: string;\n }) => {\n if (!username) {\n throw new Error(\"[Operations][Sign] – cannot sign op with anon user\");\n }\n\n let privateKey: PrivateKey;\n if (keyOrSeed.split(\" \").length === 12) {\n privateKey = PrivateKey.fromLogin(username, keyOrSeed, \"active\");\n } else if (cryptoUtils.isWif(keyOrSeed)) {\n privateKey = PrivateKey.fromString(keyOrSeed);\n } else {\n privateKey = PrivateKey.from(keyOrSeed);\n }\n\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n privateKey\n );\n },\n });\n}\n","import { Keychain } from \"@/modules/keychain\";\nimport { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\n\nexport function useSignOperationByKeychain(\n username: string | undefined,\n keyType: Keychain.KeychainAuthorityTypes = \"Active\"\n) {\n return useMutation({\n mutationKey: [\"operations\", \"sign-keychain\", username],\n mutationFn: ({ operation }: { operation: Operation }) => {\n if (!username) {\n throw new Error(\n \"[SDK][Keychain] – cannot sign operation with anon user\"\n );\n }\n return Keychain.broadcast(username, [operation], keyType) as Promise<any>;\n },\n });\n}\n","import { Operation } from \"@hiveio/dhive\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function useSignOperationByHivesigner(callbackUri = \"/\") {\n return useMutation({\n mutationKey: [\"operations\", \"sign-hivesigner\", callbackUri],\n mutationFn: async ({ operation }: { operation: Operation }) => {\n return hs.sendOperation(operation, { callback: callbackUri }, () => {});\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getChainPropertiesQueryOptions() {\n return queryOptions({\n queryKey: [\"operations\", \"chain-properties\"],\n queryFn: async () => {\n return await CONFIG.hiveClient.database.getChainProperties();\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useAddFragment(username: string) {\n return useMutation({\n mutationKey: [\"posts\", \"add-fragment\", username],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-add\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [response, ...(data ?? [])]\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useEditFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"edit-fragment\", username, fragmentId],\n mutationFn: async ({ title, body }: { title: string; body: string }) => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/fragments-update\",\n {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n title,\n body,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.json() as Promise<Fragment>;\n },\n onSuccess(response) {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return [];\n }\n\n const index = data.findIndex(({ id }) => id === fragmentId);\n if (index >= 0) {\n data[index] = response;\n }\n\n return [...data];\n }\n );\n },\n });\n}\n","import {\n CONFIG,\n getAccessToken,\n getBoundFetch,\n getQueryClient,\n} from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"../types\";\nimport { getFragmentsQueryOptions } from \"../queries\";\n\nexport function useRemoveFragment(username: string, fragmentId: string) {\n return useMutation({\n mutationKey: [\"posts\", \"remove-fragment\", username],\n mutationFn: async () => {\n const fetchApi = getBoundFetch();\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/fragments-delete\", {\n method: \"POST\",\n body: JSON.stringify({\n code: getAccessToken(username),\n id: fragmentId,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n },\n onSuccess() {\n getQueryClient().setQueryData<Fragment[]>(\n getFragmentsQueryOptions(username).queryKey,\n (data) => [...(data ?? [])].filter(({ id }) => id !== fragmentId)\n );\n },\n });\n}\n","export * from \"./use-record-activity\";\n","import { CONFIG, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ntype ActivityType =\n // Editor related\n | \"post-created\"\n | \"post-updated\"\n | \"post-scheduled\"\n | \"draft-created\"\n | \"video-published\"\n\n // Legacy editor related\n | \"legacy-post-created\"\n | \"legacy-post-updated\"\n | \"legacy-post-scheduled\"\n | \"legacy-draft-created\"\n | \"legacy-video-published\"\n\n // Perks related\n | \"perks-points-by-qr\"\n | \"perks-account-boost\"\n | \"perks-promote\"\n | \"perks-boost-plus\"\n | \"points-claimed\"\n | \"spin-rolled\"\n\n // Signup related\n | \"signed-up-with-wallets\"\n | \"signed-up-with-email\";\n\nexport function useRecordActivity(\n username: string | undefined,\n activityType: ActivityType\n) {\n return useMutation({\n mutationKey: [\"analytics\", activityType],\n mutationFn: async () => {\n if (!activityType) {\n throw new Error(\"[SDK][Analytics] – no activity type provided\");\n }\n const fetchApi = getBoundFetch();\n\n await fetchApi(CONFIG.plausibleHost + \"/api/event\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n name: activityType,\n url: window.location.href,\n domain: window.location.host,\n props: {\n username,\n },\n }),\n });\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { LeaderBoardDuration, LeaderBoardItem } from \"../types\";\n\nexport function getDiscoverLeaderboardQueryOptions(duration: LeaderBoardDuration) {\n return queryOptions({\n queryKey: [\"analytics\", \"discover-leaderboard\", duration],\n queryFn: async ({ signal }) => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/leaderboard/${duration}`,\n { signal }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch leaderboard: ${response.status}`);\n }\n\n return response.json() as Promise<LeaderBoardItem[]>;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CurationDuration, CurationItem } from \"../types\";\n\nexport function getDiscoverCurationQueryOptions(duration: CurationDuration) {\n return queryOptions({\n queryKey: [\"analytics\", \"discover-curation\", duration],\n queryFn: async ({ signal }) => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/curation/${duration}`,\n { signal }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch curation data: ${response.status}`);\n }\n\n const data = (await response.json()) as CurationItem[];\n\n // Fetch account data for efficiency calculation\n const accounts = data.map((item) => item.account);\n const accountsResponse = await CONFIG.hiveClient.database.getAccounts(accounts);\n\n // Calculate efficiency for each curator\n for (let index = 0; index < accountsResponse.length; index++) {\n const element = accountsResponse[index];\n const curator = data[index];\n\n // Convert Asset to string if needed\n const vestingShares = typeof element.vesting_shares === 'string'\n ? element.vesting_shares\n : element.vesting_shares.toString();\n const receivedVestingShares = typeof element.received_vesting_shares === 'string'\n ? element.received_vesting_shares\n : element.received_vesting_shares.toString();\n const delegatedVestingShares = typeof element.delegated_vesting_shares === 'string'\n ? element.delegated_vesting_shares\n : element.delegated_vesting_shares.toString();\n const vestingWithdrawRate = typeof element.vesting_withdraw_rate === 'string'\n ? element.vesting_withdraw_rate\n : element.vesting_withdraw_rate.toString();\n\n const effectiveVest: number =\n parseFloat(vestingShares) +\n parseFloat(receivedVestingShares) -\n parseFloat(delegatedVestingShares) -\n parseFloat(vestingWithdrawRate);\n curator.efficiency = curator.vests / effectiveVest;\n }\n\n // Sort by efficiency descending\n data.sort((a: CurationItem, b: CurationItem) => b.efficiency - a.efficiency);\n\n return data;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PageStatsResponse } from \"../types\";\n\n/**\n * Get page statistics from the private analytics API\n *\n * @param url - URL to get stats for\n * @param dimensions - Dimensions to query (default: [])\n * @param metrics - Metrics to query (default: [\"visitors\", \"pageviews\", \"visit_duration\"])\n * @param dateRange - Date range for the query\n */\nexport function getPageStatsQueryOptions(\n url: string,\n dimensions: string[] = [],\n metrics: string[] = [\"visitors\", \"pageviews\", \"visit_duration\"],\n dateRange?: string[]\n) {\n return queryOptions({\n queryKey: [\"analytics\", \"page-stats\", url, dimensions, metrics, dateRange],\n queryFn: async ({ signal }) => {\n const response = await fetch(CONFIG.privateApiHost + \"/api/stats\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n metrics,\n url: encodeURIComponent(url),\n dimensions,\n date_range: dateRange,\n }),\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch page stats: ${response.status}`);\n }\n\n return response.json() as Promise<PageStatsResponse>;\n },\n enabled: !!url,\n });\n}\n","export * from \"./get-account-token-query-options\";\nexport * from \"./get-account-videos-query-options\";\n","export * from \"./get-decode-memo-query-options\";\n","import { getAccessToken } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport hs from \"hivesigner\";\n\nexport function getDecodeMemoQueryOptions(username: string, memo: string) {\n return queryOptions({\n queryKey: [\"integrations\", \"hivesigner\", \"decode-memo\", username],\n queryFn: async () => {\n const accessToken = getAccessToken(username);\n\n if (accessToken) {\n const hsClient = new hs.Client({\n accessToken,\n });\n return hsClient.decode(memo);\n }\n },\n });\n}\n","import * as queries from \"./queries\";\n\nconst HiveSignerIntegration = {\n queries,\n};\n\nexport { HiveSignerIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { HiveSignerIntegration } from \"../../hivesigner\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\n\nexport function getAccountTokenQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"authenticate\", username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Integrations][3Speak] – anon user\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/login?username=${username}&hivesigner=true`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n const memoQueryOptions =\n HiveSignerIntegration.queries.getDecodeMemoQueryOptions(\n username,\n (await response.json()).memo\n );\n await getQueryClient().prefetchQuery(memoQueryOptions);\n const { memoDecoded } = getQueryClient().getQueryData(\n memoQueryOptions.queryKey\n );\n\n return memoDecoded.replace(\"#\", \"\");\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { ThreeSpeakVideo } from \"../types\";\nimport { getBoundFetch, getQueryClient } from \"@/modules/core\";\nimport { getAccountTokenQueryOptions } from \"./get-account-token-query-options\";\n\nexport function getAccountVideosQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"3speak\", \"videos\", username],\n enabled: !!username,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(\n getAccountTokenQueryOptions(username)\n );\n const token = getQueryClient().getQueryData(\n getAccountTokenQueryOptions(username).queryKey\n );\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://studio.3speak.tv/mobile/api/my-videos`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n }\n );\n return (await response.json()) as ThreeSpeakVideo[];\n },\n });\n}\n","export * from \"./types\";\nimport * as queries from \"./queries\";\n\nconst ThreeSpeakIntegration = {\n queries,\n};\n\nexport { ThreeSpeakIntegration };\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport function getHivePoshLinksQueryOptions(username: string | undefined) {\n return queryOptions({\n queryKey: [\"integrations\", \"hiveposh\", \"links\", username],\n retry: false, // Don't retry on user not found errors\n queryFn: async () => {\n try {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n `https://hiveposh.com/api/v0/linked-accounts/${username}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n // Handle 400 error when user is not registered on HivePosh\n if (response.status === 400) {\n const errorData = await response.json().catch(() => ({}));\n // Silently return null for \"User Not Connected\" errors\n if (errorData?.message === \"User Not Connected\") {\n return null;\n }\n }\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json();\n\n return {\n twitter: {\n username: data.twitter_username,\n profile: data.twitter_profile,\n },\n reddit: {\n username: data.reddit_username,\n profile: data.reddit_profile,\n },\n } satisfies Record<\n \"twitter\" | \"reddit\",\n { username: string; profile: string }\n >;\n } catch (err) {\n // Silently handle all HivePosh API errors\n return null;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/core\";\n\nexport interface StatsResponse {\n results: [\n {\n metrics: number[];\n dimensions: string[];\n },\n ];\n query: {\n site_id: string;\n metrics: string[];\n date_range: string[];\n filters: string[];\n };\n}\ninterface UseStatsQueryOptions {\n url: string;\n dimensions?: string[];\n metrics?: string[];\n enabled?: boolean;\n}\n\nexport function getStatsQueryOptions({\n url,\n dimensions = [],\n metrics = [\"visitors\", \"pageviews\", \"visit_duration\"],\n enabled = true,\n}: UseStatsQueryOptions) {\n return queryOptions({\n queryKey: [\"integrations\", \"plausible\", url, dimensions, metrics],\n queryFn: async () => {\n const fetchApi = getBoundFetch();\n const response = await fetchApi(`https://ecency.com/api/stats`, {\n method: \"POST\",\n body: JSON.stringify({\n metrics,\n url: encodeURIComponent(url),\n dimensions,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n return (await response.json()) as StatsResponse;\n },\n enabled: !!url && enabled,\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getRcStatsQueryOptions() {\n return queryOptions({\n queryKey: [\"resource-credits\", \"stats\"],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"rc_api\",\n \"get_rc_stats\",\n {}\n );\n return response.rc_stats;\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { RCAPI } from \"@hiveio/dhive\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getAccountRcQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"resource-credits\", \"account\", username],\n queryFn: async () => {\n const rcClient = new RCAPI(CONFIG.hiveClient);\n return rcClient.findRCAccounts([username]);\n },\n enabled: !!username,\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GetGameStatus } from \"../types\";\n\nexport function getGameStatusCheckQueryOptions(\n username: string | undefined,\n gameType: \"spin\"\n) {\n return queryOptions({\n queryKey: [\"games\", \"status-check\", gameType, username],\n enabled: !!username,\n queryFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in status check\");\n }\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/get-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return (await response.json()) as GetGameStatus;\n },\n });\n}\n","import { CONFIG, getAccessToken, getBoundFetch } from \"@/modules/core\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { GameClaim } from \"../types\";\nimport { useRecordActivity } from \"@/modules/analytics/mutations\";\n\nexport function useGameClaim(\n username: string | undefined,\n gameType: \"spin\",\n key: string\n) {\n const { mutateAsync: recordActivity } = useRecordActivity(\n username,\n \"spin-rolled\"\n );\n\n return useMutation({\n mutationKey: [\"games\", \"post\", gameType, username],\n mutationFn: async () => {\n if (!username) {\n throw new Error(\"[SDK][Games] – anon user in game post\");\n }\n\n const fetchApi = getBoundFetch();\n const response = await fetchApi(\n CONFIG.privateApiHost + \"/private-api/post-game\",\n {\n method: \"POST\",\n body: JSON.stringify({\n game_type: gameType,\n code: getAccessToken(username),\n key,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return (await response.json()) as GameClaim;\n },\n onSuccess() {\n recordActivity();\n },\n });\n}\n","import { CONFIG } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { Communities } from \"../types\";\n\nexport function getCommunitiesQueryOptions(\n sort: string,\n query?: string,\n limit = 100,\n observer: string | undefined = undefined,\n enabled = true\n) {\n return queryOptions({\n queryKey: [\"communities\", \"list\", sort, query, limit],\n enabled,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"list_communities\",\n {\n last: \"\",\n limit,\n sort: sort === \"hot\" ? \"rank\" : sort,\n query: query ? query : null,\n observer,\n }\n );\n return (\n response\n ? sort === \"hot\"\n ? response.sort(() => Math.random() - 0.5)\n : response\n : []\n ) as Communities;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { CommunityRole } from \"../types\";\n\nexport function getCommunityContextQueryOptions(\n username: string | undefined,\n communityName: string | undefined\n) {\n return queryOptions({\n queryKey: [\"community\", \"context\", username, communityName],\n enabled: !!username && !!communityName,\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\n \"bridge\",\n \"get_community_context\",\n {\n account: username,\n name: communityName,\n }\n );\n\n return {\n role: response?.role ?? \"guest\",\n subscribed: response?.subscribed ?? false,\n } satisfies {\n role: CommunityRole;\n subscribed: boolean;\n };\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Subscription } from \"../types\";\n\n/**\n * Get list of subscribers for a community\n *\n * @param communityName - The community name (e.g., \"hive-123456\")\n */\nexport function getCommunitySubscribersQueryOptions(communityName: string) {\n return queryOptions({\n queryKey: [\"communities\", \"subscribers\", communityName],\n queryFn: async () => {\n const response = await CONFIG.hiveClient.call(\"bridge\", \"list_subscribers\", {\n community: communityName,\n });\n return (response as Subscription[] | null) ?? [];\n },\n staleTime: 60000,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { AccountNotification } from \"../types\";\n\ntype NotifPage = AccountNotification[];\ntype NotifCursor = number | null;\n\n/**\n * Get account notifications for a community (bridge API)\n *\n * @param account - The account/community name\n * @param limit - Number of notifications per page\n */\nexport function getAccountNotificationsInfiniteQueryOptions(\n account: string,\n limit: number\n) {\n return infiniteQueryOptions<NotifPage, Error, NotifPage, (string | number)[], NotifCursor>({\n queryKey: [\"communities\", \"account-notifications\", account, limit],\n initialPageParam: null as NotifCursor,\n\n queryFn: async ({ pageParam }: { pageParam: NotifCursor }) => {\n try {\n const response = await CONFIG.hiveClient.call(\"bridge\", \"account_notifications\", {\n account,\n limit,\n last_id: pageParam ?? undefined,\n });\n return (response as AccountNotification[] | null) ?? [];\n } catch {\n return [];\n }\n },\n\n getNextPageParam: (lastPage: NotifPage): NotifCursor =>\n lastPage?.length > 0 ? lastPage[lastPage.length - 1].id : null,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { RewardedCommunity } from \"../types/rewarded-community\";\n\nexport function getRewardedCommunitiesQueryOptions() {\n return queryOptions({\n queryKey: [\"communities\", \"rewarded\"],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/rewarded-communities\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch rewarded communities: ${response.status}`);\n }\n\n return response.json() as Promise<RewardedCommunity[]>;\n },\n });\n}\n","export enum ROLES {\n OWNER = \"owner\",\n ADMIN = \"admin\",\n MOD = \"mod\",\n MEMBER = \"member\",\n GUEST = \"guest\",\n MUTED = \"muted\",\n}\n\nexport const roleMap: Record<string, string[]> = {\n [ROLES.OWNER]: [\n ROLES.ADMIN,\n ROLES.MOD,\n ROLES.MEMBER,\n ROLES.GUEST,\n ROLES.MUTED,\n ],\n [ROLES.ADMIN]: [ROLES.MOD, ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n [ROLES.MOD]: [ROLES.MEMBER, ROLES.GUEST, ROLES.MUTED],\n};\n\nexport type CommunityTeam = Array<Array<string>>;\nexport type CommunityRole = (typeof ROLES)[keyof typeof ROLES]; // \"owner\" | \"member\" | ...\nexport type CommunityType = \"Topic\" | \"Journal\" | \"Council\";\n\nexport interface Community {\n about: string;\n admins?: string[];\n avatar_url: string;\n created_at: string;\n description: string;\n flag_text: string;\n id: number;\n is_nsfw: boolean;\n lang: string;\n name: string;\n num_authors: number;\n num_pending: number;\n subscribers: number;\n sum_pending: number;\n settings?: any;\n team: CommunityTeam;\n title: string;\n type_id: number;\n}\n\nexport type Communities = Community[];\n","import { CommunityRole, CommunityType, ROLES } from \"../types\";\n\nexport function getCommunityType(name: string, type_id: number): CommunityType {\n if (name.startsWith(\"hive-3\") || type_id === 3) return \"Council\";\n if (name.startsWith(\"hive-2\") || type_id === 2) return \"Journal\";\n return \"Topic\";\n}\n\nexport function getCommunityPermissions({\n communityType,\n userRole,\n subscribed,\n}: {\n communityType: CommunityType;\n userRole: CommunityRole;\n subscribed: boolean;\n}) {\n const canPost = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n if (communityType === \"Topic\") return true;\n\n // Journal & Council\n return [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD, ROLES.MEMBER].includes(\n userRole\n );\n })();\n\n const canComment = (() => {\n if (userRole === ROLES.MUTED) return false;\n\n switch (communityType) {\n case \"Topic\":\n return true;\n case \"Journal\":\n return userRole !== ROLES.GUEST || subscribed;\n case \"Council\":\n return canPost;\n }\n })();\n\n const isModerator = [ROLES.OWNER, ROLES.ADMIN, ROLES.MOD].includes(userRole);\n\n return {\n canPost,\n canComment,\n isModerator,\n };\n}\n","import { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport function getNotificationsUnreadCountQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"notifications\", \"unread\", activeUsername],\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/notifications/unread`,\n {\n method: \"POST\",\n body: JSON.stringify({ code: getAccessToken(activeUsername!) }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n const data = (await response.json()) as { count: number };\n return data.count;\n },\n enabled: !!activeUsername,\n initialData: 0,\n refetchInterval: 60000,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { NotificationFilter } from \"../enums\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\nimport { ApiNotification } from \"../types\";\n\nexport function getNotificationsInfiniteQueryOptions(\n activeUsername: string | undefined,\n filter: NotificationFilter | undefined = undefined\n) {\n return infiniteQueryOptions({\n queryKey: [\"notifications\", activeUsername, filter],\n queryFn: async ({ pageParam }) => {\n const data = {\n code: getAccessToken(activeUsername!),\n filter,\n since: pageParam,\n user: undefined,\n };\n\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/notifications\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }\n );\n\n return response.json() as Promise<ApiNotification[]>;\n },\n enabled: !!activeUsername,\n initialData: { pages: [], pageParams: [] },\n initialPageParam: \"\",\n getNextPageParam: (lastPage) => lastPage?.[lastPage.length - 1]?.id ?? \"\",\n refetchOnMount: true,\n });\n}\n","export enum NotificationFilter {\n VOTES = \"rvotes\",\n MENTIONS = \"mentions\",\n FAVORITES = \"nfavorites\",\n BOOKMARKS = \"nbookmarks\",\n FOLLOWS = \"follows\",\n REPLIES = \"replies\",\n REBLOGS = \"reblogs\",\n TRANSFERS = \"transfers\",\n DELEGATIONS = \"delegations\",\n}\n","export enum NotifyTypes {\n VOTE = 1,\n MENTION = 2,\n FOLLOW = 3,\n COMMENT = 4,\n RE_BLOG = 5,\n TRANSFERS = 6,\n FAVORITES = 13,\n BOOKMARKS = 15,\n ALLOW_NOTIFY = \"ALLOW_NOTIFY\",\n}\n\nexport const ALL_NOTIFY_TYPES = [\n NotifyTypes.VOTE,\n NotifyTypes.MENTION,\n NotifyTypes.FOLLOW,\n NotifyTypes.COMMENT,\n NotifyTypes.RE_BLOG,\n NotifyTypes.TRANSFERS,\n NotifyTypes.FAVORITES,\n NotifyTypes.BOOKMARKS,\n] as const;\n\nexport enum NotificationViewType {\n ALL = \"All\",\n UNREAD = \"Unread\",\n READ = \"Read\",\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { ApiNotificationSetting } from \"../types\";\nimport { NotifyTypes } from \"../enums\";\nimport { CONFIG, getAccessToken } from \"@/modules/core\";\n\nexport function getNotificationsSettingsQueryOptions(\n activeUsername: string | undefined\n) {\n return queryOptions({\n queryKey: [\"notifications\", \"settings\", activeUsername],\n queryFn: async () => {\n let token = activeUsername + \"-web\";\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/detail-device\",\n {\n body: JSON.stringify({\n code: getAccessToken(activeUsername!),\n username: activeUsername,\n token,\n }),\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n if (!response.ok) {\n throw new Error(`Failed to fetch notification settings: ${response.status}`);\n }\n return response.json() as Promise<ApiNotificationSetting>;\n },\n enabled: !!activeUsername,\n refetchOnMount: false,\n initialData: () => {\n const wasMutedPreviously =\n typeof window !== \"undefined\"\n ? localStorage.getItem(\"notifications\") !== \"true\"\n : false;\n return {\n status: 0,\n system: \"web\",\n allows_notify: 0,\n notify_types: wasMutedPreviously\n ? []\n : ([\n NotifyTypes.COMMENT,\n NotifyTypes.FOLLOW,\n NotifyTypes.MENTION,\n NotifyTypes.FAVORITES,\n NotifyTypes.BOOKMARKS,\n NotifyTypes.VOTE,\n NotifyTypes.RE_BLOG,\n NotifyTypes.TRANSFERS,\n ] as number[]),\n } as ApiNotificationSetting;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { Announcement } from \"../types/announcement\";\n\nexport function getAnnouncementsQueryOptions() {\n return queryOptions({\n queryKey: [\"notifications\", \"announcements\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/announcements\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch announcements: ${response.status}`);\n }\n\n const data = await response.json() as Announcement[];\n return data || [];\n },\n staleTime: 3_600_000,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Proposal } from \"../types\";\n\n/**\n * Get a single proposal by ID\n */\nexport function getProposalQueryOptions(id: number) {\n return queryOptions({\n queryKey: [\"proposals\", \"proposal\", id],\n queryFn: async () => {\n const r = await CONFIG.hiveClient.call(\"condenser_api\", \"find_proposals\", [[id]]);\n const proposal = r[0];\n\n // Determine proposal status based on dates\n if (new Date(proposal.start_date) < new Date() && new Date(proposal.end_date) >= new Date()) {\n proposal.status = \"active\";\n } else if (new Date(proposal.end_date) < new Date()) {\n proposal.status = \"expired\";\n } else {\n proposal.status = \"inactive\";\n }\n\n return proposal as Proposal;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Proposal } from \"../types\";\n\n/**\n * Get all proposals, sorted with expired proposals at the end\n */\nexport function getProposalsQueryOptions() {\n return queryOptions({\n queryKey: [\"proposals\", \"list\"],\n queryFn: async () => {\n const response = (await CONFIG.hiveClient.call(\"database_api\", \"list_proposals\", {\n start: [-1],\n limit: 500,\n order: \"by_total_votes\",\n order_direction: \"descending\",\n status: \"all\",\n })) as { proposals: Proposal[] };\n\n const proposals = response.proposals;\n const expired = proposals.filter((x) => x.status === \"expired\");\n const others = proposals.filter((x) => x.status !== \"expired\");\n\n return [...others, ...expired];\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ProposalVote } from \"../types\";\nimport { FullAccount } from \"@/modules/accounts\";\nimport { parseAccounts } from \"@/modules/accounts/utils\";\n\n// One page = array of enriched vote rows\nexport type ProposalVoteRow = {\n id: number;\n voter: string;\n voterAccount: FullAccount;\n};\n\ntype Cursor = string; // we paginate by last voter name\n\n/**\n * Get proposal votes with pagination and enriched voter account data\n *\n * @param proposalId - The proposal ID\n * @param voter - Starting voter for pagination\n * @param limit - Number of votes per page\n */\nexport function getProposalVotesInfiniteQueryOptions(\n proposalId: number,\n voter: string,\n limit: number\n) {\n return infiniteQueryOptions<ProposalVoteRow[], Error, ProposalVoteRow[], (string | number)[], Cursor>({\n queryKey: [\"proposals\", \"votes\", proposalId, voter, limit],\n initialPageParam: voter as Cursor,\n refetchOnMount: true,\n staleTime: 0, // Always refetch on mount\n\n queryFn: async ({ pageParam }: { pageParam: Cursor }) => {\n const startParam = pageParam ?? voter;\n\n const response = (await CONFIG.hiveClient.call(\"condenser_api\", \"list_proposal_votes\", [\n [proposalId, startParam],\n limit,\n \"by_proposal_voter\",\n ])) as ProposalVote[];\n\n const list = response\n .filter((x) => x.proposal?.proposal_id === proposalId)\n .map((x) => ({ id: x.id, voter: x.voter }));\n\n const rawAccounts = await CONFIG.hiveClient.database.getAccounts(list.map((l) => l.voter));\n const accounts = parseAccounts(rawAccounts);\n\n const page: ProposalVoteRow[] = list.map((i) => ({\n ...i,\n voterAccount: accounts.find((a) => i.voter === a.name)!,\n }));\n\n return page;\n },\n\n getNextPageParam: (lastPage: ProposalVoteRow[]): Cursor | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n return last?.voter ?? undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ProposalVote } from \"../types\";\n\n/**\n * Fetches ALL proposal votes for a specific user in a single query.\n * Much more efficient than querying each proposal individually.\n * Uses \"by_voter_proposal\" order to get all votes by a user.\n */\nexport function getUserProposalVotesQueryOptions(voter: string) {\n return queryOptions({\n queryKey: [\"proposals\", \"votes\", \"by-user\", voter],\n enabled: !!voter && voter !== \"\",\n staleTime: 60 * 1000, // Cache for 1 minute\n queryFn: async () => {\n if (!voter || voter === \"\") {\n return [];\n }\n\n const response = (await CONFIG.hiveClient.call(\"database_api\", \"list_proposal_votes\", {\n start: [voter],\n limit: 1000,\n order: \"by_voter_proposal\",\n order_direction: \"ascending\",\n status: \"votable\",\n })) as { proposal_votes: ProposalVote[] };\n\n // Filter to only this user's votes (API might return votes after this user alphabetically)\n const userVotes = (response.proposal_votes || []).filter((vote) => vote.voter === voter);\n\n return userVotes;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { DelegatedVestingShare } from \"../types\";\n\n/**\n * Get vesting delegations for an account\n *\n * @param username - The account username\n * @param from - Pagination start point (delegatee name)\n * @param limit - Maximum number of results (default: 50)\n */\nexport function getVestingDelegationsQueryOptions(\n username?: string,\n from?: string,\n limit = 50\n) {\n return queryOptions({\n queryKey: [\"wallet\", \"vesting-delegations\", username, from, limit],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_vesting_delegations\", [\n username,\n from,\n limit,\n ]) as Promise<DelegatedVestingShare[]>,\n enabled: !!username,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { ConversionRequest } from \"../types\";\n\n/**\n * Get HBD to HIVE conversion requests for an account\n *\n * @param account - The account username\n */\nexport function getConversionRequestsQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"conversion-requests\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_conversion_requests\", [\n account,\n ]) as Promise<ConversionRequest[]>,\n select: (data) => data.sort((a, b) => a.requestid - b.requestid),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { CollateralizedConversionRequest } from \"../types\";\n\n/**\n * Get collateralized HIVE to HBD conversion requests for an account\n *\n * @param account - The account username\n */\nexport function getCollateralizedConversionRequestsQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"collateralized-conversion-requests\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_collateralized_conversion_requests\", [\n account,\n ]) as Promise<CollateralizedConversionRequest[]>,\n select: (data) => data.sort((a, b) => a.requestid - b.requestid),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { SavingsWithdrawRequest } from \"../types\";\n\n/**\n * Get pending savings withdrawal requests for an account\n *\n * @param account - The account username\n */\nexport function getSavingsWithdrawFromQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"savings-withdraw\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_savings_withdraw_from\", [\n account,\n ]) as Promise<SavingsWithdrawRequest[]>,\n select: (data) => data.sort((a, b) => a.request_id - b.request_id),\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { WithdrawRoute } from \"../types\";\n\n/**\n * Get power down (vesting withdrawal) routes for an account\n *\n * @param account - The account username\n */\nexport function getWithdrawRoutesQueryOptions(account: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"withdraw-routes\", account],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_withdraw_routes\", [\n account,\n \"outgoing\",\n ]) as Promise<WithdrawRoute[]>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { OpenOrdersData } from \"../types\";\n\n/**\n * Get open market orders for an account\n *\n * @param user - The account username\n */\nexport function getOpenOrdersQueryOptions(user: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"open-orders\", user],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_open_orders\", [\n user,\n ]) as Promise<OpenOrdersData[]>,\n select: (data) => data.sort((a, b) => a.orderid - b.orderid),\n enabled: !!user,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { RcDirectDelegation, RcDirectDelegationsResponse } from \"../types/rc-direct-delegation\";\n\ntype RcPage = RcDirectDelegation[];\ntype RcCursor = string | null;\n\n/**\n * Get outgoing RC delegations for an account\n *\n * @param username - Account name to get delegations for\n * @param limit - Number of delegations per page\n */\nexport function getOutgoingRcDelegationsInfiniteQueryOptions(username: string, limit = 100) {\n return infiniteQueryOptions<RcPage, Error, RcPage, (string | number)[], RcCursor>({\n queryKey: [\"wallet\", \"outgoing-rc-delegations\", username, limit],\n initialPageParam: null as RcCursor,\n\n queryFn: async ({ pageParam }: { pageParam: RcCursor }) => {\n const response = await CONFIG.hiveClient\n .call(\"rc_api\", \"list_rc_direct_delegations\", {\n start: [username, pageParam ?? \"\"],\n limit,\n })\n .then((r: any) => r as RcDirectDelegationsResponse);\n\n let delegations: RcDirectDelegation[] = response.rc_direct_delegations || [];\n\n // Filter out the starting delegation when paginating\n if (pageParam) {\n delegations = delegations.filter((delegation) => delegation.to !== pageParam);\n }\n\n return delegations;\n },\n\n getNextPageParam: (lastPage: RcPage): RcCursor =>\n lastPage.length === limit ? lastPage[lastPage.length - 1].to : null,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { ReceivedVestingShare } from \"../types/received-vesting-share\";\n\nexport function getReceivedVestingSharesQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"wallet\", \"received-vesting-shares\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/received-vesting/${username}`\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch received vesting shares: ${response.status}`);\n }\n\n const data = (await response.json()) as { list: ReceivedVestingShare[] };\n return data.list;\n },\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { Witness } from \"../types\";\n\ntype WitnessPage = Witness[];\ntype WitnessCursor = string;\n\n/**\n * Get witnesses ordered by vote count (infinite scroll)\n *\n * @param limit - Number of witnesses per page\n */\nexport function getWitnessesInfiniteQueryOptions(limit: number) {\n return infiniteQueryOptions<WitnessPage, Error, WitnessPage, (string | number)[], WitnessCursor>({\n queryKey: [\"witnesses\", \"list\", limit],\n initialPageParam: \"\" as WitnessCursor,\n\n queryFn: async ({ pageParam }: { pageParam: WitnessCursor }) =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_witnesses_by_vote\", [\n pageParam,\n limit,\n ]) as Promise<Witness[]>,\n\n getNextPageParam: (lastPage: WitnessPage): WitnessCursor | undefined => {\n const last = lastPage?.[lastPage.length - 1];\n return last ? last.owner : undefined;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { OrdersData } from \"../types\";\n\n/**\n * Get the internal HIVE/HBD market order book\n *\n * @param limit - Maximum number of orders to fetch (default: 500)\n */\nexport function getOrderBookQueryOptions(limit = 500) {\n return queryOptions({\n queryKey: [\"market\", \"order-book\", limit],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_order_book\", [\n limit,\n ]) as Promise<OrdersData>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { MarketStatistics } from \"../types\";\n\n/**\n * Get HIVE/HBD market statistics from the blockchain\n */\nexport function getMarketStatisticsQueryOptions() {\n return queryOptions({\n queryKey: [\"market\", \"statistics\"],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_ticker\", []) as Promise<MarketStatistics>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { MarketCandlestickDataItem } from \"../types\";\n\n/**\n * Get HIVE/HBD market history (candlestick data)\n *\n * @param seconds - Bucket size in seconds\n * @param startDate - Start date for the data\n * @param endDate - End date for the data\n */\nexport function getMarketHistoryQueryOptions(\n seconds: number,\n startDate: Date,\n endDate: Date\n) {\n const formatDate = (date: Date) => {\n return date.toISOString().replace(/\\.\\d{3}Z$/, \"\");\n };\n\n return queryOptions({\n queryKey: [\"market\", \"history\", seconds, startDate.getTime(), endDate.getTime()],\n queryFn: () =>\n CONFIG.hiveClient.call(\"condenser_api\", \"get_market_history\", [\n seconds,\n formatDate(startDate),\n formatDate(endDate),\n ]) as Promise<MarketCandlestickDataItem[]>,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core/config\";\nimport { HiveHbdStats, MarketCandlestickDataItem, MarketStatistics } from \"../types\";\n\n/**\n * Get combined HIVE/HBD statistics including price, 24h change, and volume\n */\nexport function getHiveHbdStatsQueryOptions() {\n return queryOptions({\n queryKey: [\"market\", \"hive-hbd-stats\"],\n queryFn: async () => {\n // Get current market statistics\n const stats = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_ticker\",\n []\n )) as MarketStatistics;\n\n // Get 24h market history\n const now = new Date();\n const oneDayAgo = new Date(now.getTime() - 86400000); // 24 hours ago\n\n const formatDate = (date: Date) => {\n return date.toISOString().replace(/\\.\\d{3}Z$/, \"\");\n };\n\n const dayChange = (await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_market_history\",\n [86400, formatDate(oneDayAgo), formatDate(now)]\n )) as MarketCandlestickDataItem[];\n\n // Calculate stats\n const result: HiveHbdStats = {\n price: +stats.latest,\n close: dayChange[0] ? dayChange[0].non_hive.open / dayChange[0].hive.open : 0,\n high: dayChange[0] ? dayChange[0].non_hive.high / dayChange[0].hive.high : 0,\n low: dayChange[0] ? dayChange[0].non_hive.low / dayChange[0].hive.low : 0,\n percent: dayChange[0]\n ? 100 - ((dayChange[0].non_hive.open / dayChange[0].hive.open) * 100) / +stats.latest\n : 0,\n totalFromAsset: stats.hive_volume.split(\" \")[0],\n totalToAsset: stats.hbd_volume.split(\" \")[0],\n };\n\n return result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { MarketData } from \"../types\";\n\n/**\n * Get market chart data from CoinGecko API\n *\n * @param coin - Coin ID (e.g., \"hive\", \"bitcoin\")\n * @param vsCurrency - Currency to compare against (e.g., \"usd\", \"eur\")\n * @param fromTs - From timestamp (Unix timestamp in seconds)\n * @param toTs - To timestamp (Unix timestamp in seconds)\n */\nexport function getMarketDataQueryOptions(\n coin: string,\n vsCurrency: string,\n fromTs: string,\n toTs: string\n) {\n return queryOptions({\n queryKey: [\"market\", \"data\", coin, vsCurrency, fromTs, toTs],\n queryFn: async ({ signal }) => {\n const url = `https://api.coingecko.com/api/v3/coins/${coin}/market_chart/range?vs_currency=${vsCurrency}&from=${fromTs}&to=${toTs}`;\n\n const response = await fetch(url, { signal });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch market data: ${response.status}`);\n }\n\n return response.json() as Promise<MarketData>;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { PointTransaction } from \"../types/point-transaction\";\n\ninterface PointsResponse {\n points: string;\n unclaimed_points: string;\n}\n\nexport function getPointsQueryOptions(username?: string, filter = 0) {\n return queryOptions({\n queryKey: [\"points\", username, filter],\n queryFn: async () => {\n if (!username) {\n throw new Error(\"Get points query – username wasn't provided\");\n }\n\n const name = username.replace(\"@\", \"\");\n\n // Get points\n const pointsResponse = await fetch(CONFIG.privateApiHost + \"/private-api/points\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username: name }),\n });\n\n if (!pointsResponse.ok) {\n throw new Error(`Failed to fetch points: ${pointsResponse.status}`);\n }\n\n const points = (await pointsResponse.json()) as PointsResponse;\n\n // Get transactions\n const transactionsResponse = await fetch(\n CONFIG.privateApiHost + \"/private-api/point-list\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username: name, type: filter }),\n }\n );\n\n if (!transactionsResponse.ok) {\n throw new Error(`Failed to fetch point transactions: ${transactionsResponse.status}`);\n }\n\n const transactions = (await transactionsResponse.json()) as PointTransaction[];\n\n return {\n points: points.points,\n uPoints: points.unclaimed_points,\n transactions,\n } as const;\n },\n staleTime: 30000,\n refetchOnMount: true,\n enabled: !!username,\n });\n}\n","import { infiniteQueryOptions, queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\nexport function searchQueryOptions(\n q: string,\n sort: string,\n hideLow: string,\n since?: string,\n scroll_id?: string,\n votes?: number\n) {\n return queryOptions({\n queryKey: [\"search\", q, sort, hideLow, since, scroll_id, votes],\n queryFn: async () => {\n const data: {\n q: string;\n sort: string;\n hide_low: string;\n since?: string;\n scroll_id?: string;\n votes?: number;\n } = { q, sort, hide_low: hideLow };\n\n if (since) data.since = since;\n if (scroll_id) data.scroll_id = scroll_id;\n if (votes) data.votes = votes;\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n });\n}\n\ntype PageParam = {\n sid: string | undefined;\n hasNextPage: boolean;\n};\n\nexport function getControversialRisingInfiniteQueryOptions(\n what: string,\n tag: string,\n enabled = true\n) {\n return infiniteQueryOptions<SearchResponse, Error, SearchResponse, (string | number)[], PageParam>({\n queryKey: [\"search\", \"controversial-rising\", what, tag],\n initialPageParam: { sid: undefined, hasNextPage: true } as PageParam,\n\n queryFn: async ({ pageParam }: { pageParam: PageParam }) => {\n if (!pageParam.hasNextPage) {\n return {\n hits: 0,\n took: 0,\n results: [],\n };\n }\n\n let sinceDate: Date | undefined;\n const now = new Date();\n\n switch (tag) {\n case \"today\":\n sinceDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);\n break;\n case \"week\":\n sinceDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);\n break;\n case \"month\":\n sinceDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n break;\n case \"year\":\n sinceDate = new Date(now.getTime() - 365 * 24 * 60 * 60 * 1000);\n break;\n default:\n sinceDate = undefined;\n }\n\n const q = \"* type:post\";\n const sort = what === \"rising\" ? \"children\" : what;\n const since = sinceDate ? sinceDate.toISOString().split(\".\")[0] : undefined;\n const hideLow = \"0\";\n const votes = tag === \"today\" ? 50 : 200;\n\n const data: {\n q: string;\n sort: string;\n hide_low: string;\n since?: string;\n scroll_id?: string;\n votes?: number;\n } = { q, sort, hide_low: hideLow };\n\n if (since) data.since = since;\n if (pageParam.sid) data.scroll_id = pageParam.sid;\n if (votes) data.votes = votes;\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n\n getNextPageParam: (resp: SearchResponse): PageParam => {\n return {\n sid: resp?.scroll_id,\n hasNextPage: resp.results.length > 0,\n };\n },\n\n enabled,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\ninterface Entry {\n author: string;\n permlink: string;\n json_metadata?: {\n tags?: string[];\n };\n}\n\nfunction buildQuery(entry: Entry, retry = 3) {\n const { json_metadata, permlink } = entry;\n\n let q = \"*\";\n q += ` -dporn type:post`;\n let tags;\n\n // 3 tags and decrease until there is enough relevant posts\n if (json_metadata && json_metadata.tags && Array.isArray(json_metadata.tags)) {\n tags = json_metadata.tags\n .filter((tag) => tag && tag !== \"\")\n .filter((tag) => !tag.startsWith(\"hive-\")) // filter out communities\n .filter((_tag, ind) => ind < +retry)\n .join(\",\");\n }\n\n // check to make sure tags are not empty\n if (tags && tags.length > 0) {\n q += ` tag:${tags}`;\n } else {\n // no tags in post, try with permlink\n const fperm = permlink.split(\"-\");\n tags = fperm\n .filter((part: string) => part !== \"\")\n .filter((part: string) => !/^-?\\d+$/.test(part))\n .filter((part: string) => part.length > 2)\n .join(\",\");\n q += ` tag:${tags}`;\n }\n\n return q;\n}\n\nexport function getSimilarEntriesQueryOptions(entry: Entry) {\n const query = buildQuery(entry);\n\n return queryOptions({\n queryKey: [\"search\", \"similar-entries\", entry.author, entry.permlink, query],\n queryFn: async () => {\n const data = {\n q: query,\n sort: \"newest\",\n hide_low: \"0\",\n };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n const searchResponse = (await response.json()) as SearchResponse;\n\n const rawEntries = searchResponse.results.filter(\n (r) => r.permlink !== entry.permlink && r.tags.indexOf(\"nsfw\") === -1\n );\n\n const entries = [];\n for (const result of rawEntries) {\n if (entries.find((y) => y.author === result.author) === undefined) {\n entries.push(result);\n }\n }\n\n return entries.slice(0, 3);\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { AccountSearchResult } from \"../types/account-search-result\";\n\nexport function getSearchAccountQueryOptions(q: string, limit = 5, random = false) {\n return queryOptions({\n queryKey: [\"search\", \"account\", q, limit],\n queryFn: async () => {\n const data = { q, limit, random: +random };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-account\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to search accounts: ${response.status}`);\n }\n\n return response.json() as Promise<AccountSearchResult[]>;\n },\n enabled: !!q,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { TagSearchResult } from \"../types/tag-search-result\";\n\nexport function getSearchTopicsQueryOptions(q: string, limit = 20, random = false) {\n return queryOptions({\n queryKey: [\"search\", \"topics\", q],\n queryFn: async () => {\n const data = { q, limit, random: +random };\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-tag\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to search topics: ${response.status}`);\n }\n\n return response.json() as Promise<TagSearchResult[]>;\n },\n enabled: !!q,\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\nimport { SearchResponse } from \"../types/search-response\";\n\nexport function getSearchApiInfiniteQueryOptions(\n q: string,\n sort: string,\n hideLow: boolean,\n since?: string,\n votes?: number\n) {\n return infiniteQueryOptions({\n queryKey: [\"search\", \"api\", q, sort, hideLow, since, votes],\n queryFn: async ({ pageParam }: { pageParam: string | undefined }) => {\n interface SearchApiPayload {\n q: string;\n sort: string;\n hide_low: boolean;\n since?: string;\n scroll_id?: string;\n votes?: number;\n }\n\n const payload: SearchApiPayload = { q, sort, hide_low: hideLow };\n\n if (since) {\n payload.since = since;\n }\n if (pageParam) {\n payload.scroll_id = pageParam;\n }\n if (votes !== undefined) {\n payload.votes = votes;\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n throw new Error(`Search failed: ${response.status}`);\n }\n\n return response.json() as Promise<SearchResponse>;\n },\n initialPageParam: undefined as string | undefined,\n getNextPageParam: (lastPage: SearchResponse) => lastPage?.scroll_id,\n enabled: !!q,\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@/modules/core\";\n\nexport function getSearchPathQueryOptions(q: string) {\n return queryOptions({\n queryKey: [\"search\", \"path\", q],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/search-api/search-path\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ q }),\n });\n\n if (!response.ok) {\n throw new Error(`Search path failed: ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data?.length > 0) {\n return data as string[];\n }\n\n return [q];\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\nimport type { PromotePrice } from \"../types\";\n\nexport function getBoostPlusPricesQueryOptions(accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"boost-plus-prices\"],\n queryFn: async () => {\n if (!accessToken) {\n return [];\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/boost-plus-price\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch boost plus prices: ${response.status}`);\n }\n\n return await response.json() as PromotePrice[];\n },\n staleTime: Infinity,\n refetchOnMount: true,\n enabled: !!accessToken\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\nimport type { PromotePrice } from \"../types\";\n\nexport function getPromotePriceQueryOptions(accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"promote-price\"],\n queryFn: async () => {\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/promote-price\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch promote prices: ${response.status}`);\n }\n\n return await response.json() as PromotePrice[];\n },\n enabled: !!accessToken\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"../../core\";\n\nexport interface BoostPlusAccountPrice {\n account: string;\n expires: Date;\n}\n\nexport function getBoostPlusAccountPricesQueryOptions(account: string, accessToken: string) {\n return queryOptions({\n queryKey: [\"promotions\", \"boost-plus-accounts\", account],\n queryFn: async (): Promise<BoostPlusAccountPrice | null> => {\n if (!accessToken || !account) {\n return null;\n }\n\n const response = await fetch(CONFIG.privateApiHost + \"/private-api/boosted-plus-account\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: accessToken, account }),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch boost plus account prices: ${response.status}`);\n }\n\n const responseData = await response.json() as {\n expires: string;\n account: string;\n };\n\n return responseData\n ? {\n account: responseData.account,\n expires: new Date(responseData.expires)\n }\n : null;\n },\n enabled: !!account && !!accessToken\n });\n}\n"]}