@bazariodev/docket 0.0.0 → 1.0.0
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.
- package/CHANGELOG.md +36 -0
- package/README.md +715 -173
- package/dist/{chunk-B-SP8Od_.js → chunk-DkvWLziD.js} +3 -3
- package/dist/{chunk-B-SP8Od_.js.map → chunk-DkvWLziD.js.map} +1 -1
- package/dist/{chunk-Bvq4tF_F.cjs → chunk-ieB8yTEn.cjs} +2 -3
- package/dist/{chunk-Bvq4tF_F.cjs.map → chunk-ieB8yTEn.cjs.map} +1 -1
- package/dist/client/index.cjs +167 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +40 -0
- package/dist/client/index.d.ts +40 -0
- package/dist/client/index.js +165 -0
- package/dist/client/index.js.map +1 -0
- package/dist/constants.d.cts +2 -4
- package/dist/constants.d.ts +2 -4
- package/dist/export/index.cjs +39 -11
- package/dist/export/index.cjs.map +1 -1
- package/dist/export/index.js +39 -11
- package/dist/export/index.js.map +1 -1
- package/dist/history/index.cjs +21 -1187
- package/dist/history/index.cjs.map +1 -1
- package/dist/history/index.d.cts +10 -112
- package/dist/history/index.d.ts +10 -112
- package/dist/history/index.js +22 -1188
- package/dist/history/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/indexeddb/index.cjs +18 -7
- package/dist/indexeddb/index.cjs.map +1 -1
- package/dist/indexeddb/index.d.cts +19 -4
- package/dist/indexeddb/index.d.ts +19 -4
- package/dist/indexeddb/index.js +18 -8
- package/dist/indexeddb/index.js.map +1 -1
- package/dist/storage/contracts.d.cts +0 -4
- package/dist/storage/contracts.d.ts +0 -4
- package/dist/upload/constants.d.cts +17 -0
- package/dist/upload/constants.d.ts +17 -0
- package/dist/upload/index.cjs +246 -0
- package/dist/upload/index.cjs.map +1 -0
- package/dist/upload/index.d.cts +51 -0
- package/dist/upload/index.d.ts +51 -0
- package/dist/upload/index.js +244 -0
- package/dist/upload/index.js.map +1 -0
- package/package.json +25 -2
- package/dist/core/errors.d.cts +0 -8
- package/dist/core/errors.d.ts +0 -8
- package/dist/history/constants.d.cts +0 -35
- package/dist/history/constants.d.ts +0 -35
- package/dist/sip/constants.d.cts +0 -5
- package/dist/sip/constants.d.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/storage/constants.js","../../src/history/constants.js","../../src/history/metadata.js","../../src/history/options.js","../../src/history/session.js","../../src/history/index.js"],"sourcesContent":["export const STORE_MODES = Object.freeze({\n OPENING: 'opening',\n MEMORY: 'memory',\n PERSISTENT: 'persistent',\n FALLBACK: 'fallback',\n STOPPED: 'stopped',\n});\n\nexport const OVERFLOW_STRATEGIES = Object.freeze({\n CYCLE: 'cycle',\n ROTATE: 'rotate',\n});\n","export const HISTORY_MODES = /* @__PURE__ */ Object.freeze({\n OFF: 'off',\n MEMORY: 'memory',\n PERSISTENT: 'persistent',\n});\nexport const HISTORY_STATES = /* @__PURE__ */ Object.freeze({\n IDLE: 'idle',\n ACTIVE: 'active',\n TRANSITIONING: 'transitioning',\n BLOCKED: 'blocked',\n STALE: 'stale',\n STOPPED: 'stopped',\n});\nexport const HISTORY_ERROR_CODES = /* @__PURE__ */ Object.freeze({\n METADATA: 'metadata',\n CLEANUP: 'cleanup',\n STALE: 'stale',\n SETUP: 'setup',\n MIGRATION: 'migration',\n STOPPED: 'stopped',\n ROTATION: 'rotation',\n});\nexport const HISTORY_ERRORS = /* @__PURE__ */ Object.freeze({\n [HISTORY_ERROR_CODES.METADATA]: 'Log history metadata failed',\n [HISTORY_ERROR_CODES.CLEANUP]: 'Log history cleanup failed',\n [HISTORY_ERROR_CODES.STALE]: 'Log history stale failed',\n [HISTORY_ERROR_CODES.SETUP]: 'Log history setup failed',\n [HISTORY_ERROR_CODES.MIGRATION]: 'Log history migration failed',\n [HISTORY_ERROR_CODES.STOPPED]: 'Log history stopped failed',\n [HISTORY_ERROR_CODES.ROTATION]: 'Log history rotation failed',\n});\nexport const HISTORY_LIMITS = /* @__PURE__ */ Object.freeze({\n STARTUP_DEFAULT_MAX_SIZE_PER_AREA: 250_000,\n STARTUP_MAX_TOTAL_SIZE: 1_000_000,\n});\n","import { randomHex } from '../core/common.js';\nimport {\n HISTORY_ERROR_CODES,\n HISTORY_ERRORS,\n HISTORY_MODES,\n} from './constants.js';\n\nexport function historyError(code, cause) {\n return Object.assign(\n new Error(\n HISTORY_ERRORS[code] ?? `Log history ${code} failed`,\n cause === undefined ? undefined : { cause },\n ),\n { code },\n );\n}\n\nexport function readMetadata(storage, key, leaseKey) {\n const text = storage.getItem(key);\n if (!text) return null;\n let value;\n try {\n value = JSON.parse(text);\n } catch {\n return null;\n }\n if (\n !value ||\n value.version !== 1 ||\n !Number.isSafeInteger(value.revision) ||\n value.revision < 1 ||\n !Object.values(HISTORY_MODES).includes(value.mode) ||\n typeof value.cleanupPending !== 'boolean'\n )\n return null;\n if (value.leaseKey !== leaseKey)\n throw historyError(HISTORY_ERROR_CODES.METADATA);\n if (\n !value.loggedOut &&\n !value.ownerless &&\n (!/^[a-f0-9]{32}$/.test(value.salt) ||\n !/^[a-f0-9]{64}$/.test(value.ownerDigest))\n )\n return null;\n if (\n (value.mode !== HISTORY_MODES.PERSISTENT || value.cleanupPending) &&\n Object.hasOwn(value, 'key')\n ) {\n delete value.key;\n storage.setItem(key, JSON.stringify(value));\n }\n if (value.key && !/^[a-f0-9]{64}$/.test(value.key)) return null;\n return value;\n}\n\nexport async function digestOwner(ownerId, salt = randomHex(16)) {\n if (!globalThis.crypto?.subtle) throw historyError(HISTORY_ERROR_CODES.SETUP);\n const input = new TextEncoder().encode(\n JSON.stringify(['bazario-log-owner-v1', salt, ownerId]),\n );\n const digest = await crypto.subtle.digest('SHA-256', input);\n return {\n salt,\n ownerDigest: Array.from(new Uint8Array(digest), (byte) =>\n byte.toString(16).padStart(2, '0'),\n ).join(''),\n };\n}\n","import { assertLevel, assertStormLimit, positive } from '../core/common.js';\nimport { HISTORY_ERROR_CODES, HISTORY_MODES } from './constants.js';\nimport { historyError } from './metadata.js';\n\nconst STORE_OPTION_NAMES = Object.freeze([\n 'flushIntervalMs',\n 'maxBatchSize',\n 'maxQueuedRecords',\n 'maxQueuedSize',\n]);\n\nfunction validateStoreOptions(options, stores, lease) {\n stores.validateStoreOptions(options);\n if (lease.signal.aborted) throw historyError(HISTORY_ERROR_CODES.STOPPED);\n}\n\nexport function validateHistoryOptions(options) {\n const { lease } = options ?? {};\n if (\n !lease?.key ||\n !lease.signal ||\n lease.signal.aborted ||\n typeof lease.signal.addEventListener !== 'function'\n )\n throw new TypeError('An active application lease is required');\n if (\n !Array.isArray(options.logging?.areas) ||\n typeof options.createRedactor !== 'function'\n )\n throw new TypeError('Logging areas and createRedactor are required');\n if (Object.hasOwn(options.logging, 'createRunId'))\n throw new TypeError('Managed history controls its run IDs');\n if (Object.hasOwn(options.logging, 'isActive'))\n throw new TypeError('Managed history controls admission');\n assertStormLimit(options.logging.stormLimit);\n if (Object.hasOwn(options.persistent ?? {}, 'allowUnprotected'))\n throw new TypeError('Managed history requires protected database access');\n const areas = new Set();\n for (const area of options.logging.areas) {\n if (typeof area.id !== 'string' || !area.id || areas.has(area.id))\n throw new TypeError('Invalid history area');\n assertLevel(area.level ?? 'info');\n areas.add(area.id);\n }\n for (const nested of [options.memory, options.startup, options.persistent])\n if (\n nested &&\n (Object.hasOwn(nested, 'overflowStrategy') ||\n Object.hasOwn(nested, 'onRotate'))\n )\n throw new TypeError('Rotation options belong to history');\n validateStoreOptions(options, options.stores, lease);\n for (const nested of [\n options.memory,\n options.startup || {},\n options.persistent,\n options.persistent?.fallback,\n ])\n validateStoreOptions(nested, options.stores, lease);\n for (const name of STORE_OPTION_NAMES)\n if (options.persistent?.[name] !== undefined)\n positive(options.persistent[name], name);\n if (options.logging.maxOverrideMs !== undefined)\n positive(options.logging.maxOverrideMs, 'maxOverrideMs');\n if (\n options.databaseName !== undefined &&\n (typeof options.databaseName !== 'string' || !options.databaseName)\n )\n throw new TypeError('Invalid history database name');\n const databaseName =\n options.databaseName ?? `bazario-logging:history:${lease.key}`;\n const metadataKey = `bazario-logging:metadata:${databaseName}`;\n const requestedMode = options.initialMode ?? HISTORY_MODES.MEMORY;\n if (!Object.values(HISTORY_MODES).includes(requestedMode))\n throw new TypeError('Invalid history mode');\n return { lease, areas, databaseName, metadataKey, requestedMode };\n}\n","import { LEVELS, LOGGING_LIMITS } from '../core/constants.js';\nimport { createLogging } from '../core/hub.js';\nimport { HISTORY_ERROR_CODES } from './constants.js';\nimport { historyError } from './metadata.js';\n\nexport function createHistorySession({\n options,\n store,\n key,\n isLive,\n canControl,\n levelStorage,\n startup,\n trackCleanup,\n}) {\n const state = {\n valid: true,\n paused: false,\n store,\n key,\n startup,\n hub: null,\n session: null,\n queries: new Set(),\n };\n const live = () => state.valid && !state.paused && isLive();\n const check = () => {\n if (!live()) throw historyError(HISTORY_ERROR_CODES.STALE);\n };\n const redactor = options.createRedactor(key);\n check();\n const guardedRedactor = {\n version: redactor.version,\n limits: redactor.limits,\n };\n for (const method of [\n 'redact',\n 'redactValue',\n 'redactText',\n 'mask',\n ...(redactor.hash ? ['hash'] : []),\n ])\n guardedRedactor[method] = (...args) => {\n check();\n const result = redactor[method](...args);\n check();\n return result;\n };\n const sinks = [];\n let hub;\n try {\n if (!startup)\n sinks.push(\n ...(options.createSinks?.(Object.freeze(guardedRedactor)) ?? []),\n );\n check();\n hub = createLogging({\n ...options.logging,\n redactor: guardedRedactor,\n sinks: [store, ...sinks],\n ...(levelStorage ? { levelStorage } : {}),\n isActive: live,\n });\n } catch (failure) {\n const cleanup = Promise.allSettled(\n sinks.map(async (sink) => sink.stop?.()),\n );\n trackCleanup(cleanup);\n throw failure;\n }\n state.hub = hub;\n const logging = {};\n for (const method of ['setLevel', 'resetLevel', 'getLevels', 'setContext'])\n logging[method] = (...args) => {\n check();\n if (['setLevel', 'resetLevel'].includes(method) && !canControl())\n throw historyError(HISTORY_ERROR_CODES.STALE);\n const result = hub[method](...args);\n check();\n return result;\n };\n const guardLogger = (logger) => {\n const result = {};\n for (const level of Object.values(LEVELS))\n result[level] = (message, data) => {\n if (live()) logger[level](message, data);\n };\n result.child = (binding) => guardLogger(logger.child(binding));\n return Object.freeze(result);\n };\n const roots = new Map();\n logging.runId = hub.runId;\n logging.getLogger = (area, scope) => {\n check();\n const key = JSON.stringify([area, scope]);\n const cached = roots.get(key);\n if (cached) return cached;\n const logger = guardLogger(hub.getLogger(area, scope));\n if (roots.size < LOGGING_LIMITS.ROOT_LOGGER_CACHE_PAIRS)\n roots.set(key, logger);\n return logger;\n };\n logging.flush = async () => {\n check();\n await hub.flush();\n check();\n };\n const source = Object.freeze({\n async query(query) {\n check();\n const pending = Promise.resolve().then(() => store.query(query));\n state.queries.add(pending);\n try {\n const records = await pending;\n check();\n return records;\n } finally {\n state.queries.delete(pending);\n }\n },\n\n getStatus() {\n check();\n return store.getStatus();\n },\n });\n state.session = Object.freeze({\n logging: Object.freeze(logging),\n source,\n redactor: Object.freeze(guardedRedactor),\n });\n return state;\n}\n","import { copyBindings, randomHex, report } from '../core/common.js';\nimport {\n LEVELS,\n LOGGING_ERROR_CODES,\n LOGGING_ERROR_SOURCES,\n LOGGING_LIMITS,\n} from '../core/constants.js';\nimport { loggingError } from '../core/errors.js';\nimport { OVERFLOW_STRATEGIES, STORE_MODES } from '../storage/constants.js';\nimport {\n HISTORY_ERROR_CODES,\n HISTORY_LIMITS,\n HISTORY_MODES,\n HISTORY_STATES,\n} from './constants.js';\nimport { digestOwner, historyError, readMetadata } from './metadata.js';\nimport { validateHistoryOptions } from './options.js';\nimport { createHistorySession } from './session.js';\n\nexport function createLogHistory(options) {\n if (\n !options?.stores ||\n typeof options.stores.createMemoryStore !== 'function' ||\n typeof options.stores.createIndexedDbStore !== 'function' ||\n typeof options.stores.validateStoreOptions !== 'function' ||\n typeof options.stores.copyRecords !== 'function'\n )\n throw new TypeError('History store providers are required');\n const {\n lease,\n areas,\n databaseName,\n metadataKey,\n requestedMode: initialMode,\n } = validateHistoryOptions(options);\n if (lease.signal.aborted) throw historyError(HISTORY_ERROR_CODES.STOPPED);\n const roots = new Map();\n const retired = new Set();\n const sessions = new Set();\n let storage;\n let metadata = null;\n let requestedMode = initialMode;\n let state = HISTORY_STATES.IDLE;\n let current = null;\n let startup = null;\n let ownerId;\n let stopped = false;\n let startupEpoch = 0;\n let controlQueue = Promise.resolve();\n let stopPromise;\n let rotationBusy = false;\n let setupFailure;\n let forwarding = false;\n let rootLoggerLimitReported = false;\n const status = () =>\n Object.freeze({\n state,\n requestedMode,\n activeMode: current\n ? current.store.getStatus().mode === STORE_MODES.PERSISTENT\n ? HISTORY_MODES.PERSISTENT\n : HISTORY_MODES.MEMORY\n : HISTORY_MODES.OFF,\n cleanupPending: metadata?.cleanupPending ?? false,\n });\n\n function notify() {\n report(options.onChange, current?.session ?? null, status());\n }\n\n function error(code, cause) {\n const failure = historyError(code, cause);\n report(options.onError, failure);\n return failure;\n }\n\n function check() {\n if (stopped || lease.signal.aborted)\n throw historyError(HISTORY_ERROR_CODES.STOPPED);\n }\n\n function retire(session, discard = false) {\n if (!session) return Promise.resolve();\n session.valid = false;\n if (current === session) current = null;\n if (startup === session) startup = null;\n if (session.cleanupPromise) return session.cleanupPromise;\n const cleanup = Promise.resolve().then(async () => {\n try {\n if (!discard)\n try {\n await session.store.flush();\n } catch (failure) {\n report(\n options.onError,\n historyError(HISTORY_ERROR_CODES.SETUP, failure),\n );\n }\n try {\n await session.store.stop({ discard });\n } catch (failure) {\n if (session.store.getStatus?.()?.mode !== STORE_MODES.STOPPED)\n throw failure;\n report(\n options.onError,\n historyError(HISTORY_ERROR_CODES.SETUP, failure),\n );\n }\n try {\n await session.hub?.stop();\n } catch (failure) {\n if (session.store.getStatus?.()?.mode !== STORE_MODES.STOPPED)\n throw failure;\n report(\n options.onError,\n historyError(HISTORY_ERROR_CODES.SETUP, failure),\n );\n }\n } finally {\n await Promise.allSettled(session.queries ?? []);\n }\n });\n retired.add(cleanup);\n session.cleanupPromise = cleanup;\n cleanup.then(\n () => {\n retired.delete(cleanup);\n sessions.delete(session);\n },\n () => {\n retired.delete(cleanup);\n session.cleanupPromise = null;\n },\n );\n return cleanup;\n }\n\n function ownStore(store) {\n const session = {\n valid: false,\n discardOnStop: true,\n store,\n hub: null,\n cleanupPromise: null,\n };\n sessions.add(session);\n return session;\n }\n\n async function drainInvalidSessions() {\n await Promise.all(\n Array.from(sessions)\n .filter((session) => !session.valid)\n .map((session) => retire(session, true)),\n );\n check();\n }\n\n function discardStartup() {\n startupEpoch++;\n if (startup) void retire(startup, true);\n }\n\n function block(code, cause) {\n if (stopped) return historyError(HISTORY_ERROR_CODES.STOPPED);\n setupFailure = code;\n state = HISTORY_STATES.BLOCKED;\n discardStartup();\n for (const session of sessions) void retire(session, true);\n notify();\n return error(code, cause);\n }\n\n function read() {\n try {\n storage ??= options.storage ?? globalThis.localStorage;\n if (!storage) throw historyError(HISTORY_ERROR_CODES.METADATA);\n metadata = readMetadata(storage, metadataKey, lease.key);\n requestedMode = metadata?.mode ?? requestedMode;\n return metadata;\n } catch {\n throw block(HISTORY_ERROR_CODES.METADATA);\n }\n }\n\n function save(value) {\n check();\n const next = { ...value };\n if (\n next.mode !== HISTORY_MODES.PERSISTENT ||\n next.cleanupPending ||\n next.loggedOut\n )\n delete next.key;\n try {\n storage.setItem(metadataKey, JSON.stringify(next));\n metadata = next;\n } catch {\n throw block(HISTORY_ERROR_CODES.METADATA);\n }\n }\n\n function privateLevels(owningSession) {\n return {\n key: 'levels',\n storage: {\n getItem: () => JSON.stringify(metadata?.levels ?? {}),\n setItem(_key, text) {\n if (\n stopped ||\n lease.signal.aborted ||\n state !== HISTORY_STATES.ACTIVE ||\n current !== owningSession() ||\n !owningSession()?.valid\n )\n return;\n save({ ...metadata, levels: JSON.parse(text) });\n },\n },\n };\n }\n\n function trackCleanup(cleanup) {\n retired.add(cleanup);\n cleanup.then(() => retired.delete(cleanup));\n }\n\n function makeSession(mode, key = randomHex(32), isStartup = false) {\n let session;\n const rotationOptions = {\n overflowStrategy: isStartup\n ? OVERFLOW_STRATEGIES.CYCLE\n : options.overflowStrategy,\n isRotationEnabled: () =>\n Boolean(\n session?.valid &&\n !session.paused &&\n current === session &&\n !rotationBusy &&\n state === HISTORY_STATES.ACTIVE,\n ),\n onRotate: options.onRotate\n ? async (source) => {\n if (\n !session?.valid ||\n stopped ||\n lease.signal.aborted ||\n rotationBusy\n )\n return;\n rotationBusy = true;\n const guardedSource = {\n async query(query) {\n if (!session.valid || stopped || lease.signal.aborted)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n const result = await source.query(query);\n if (!session.valid || stopped || lease.signal.aborted)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n return result;\n },\n\n getStatus() {\n if (!session.valid)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n return source.getStatus();\n },\n };\n try {\n await options.onRotate(\n Object.freeze({\n source: Object.freeze(guardedSource),\n redactor: session.session.redactor,\n }),\n );\n } catch {\n report(\n options.onError,\n historyError(HISTORY_ERROR_CODES.ROTATION),\n );\n } finally {\n rotationBusy = false;\n }\n }\n : undefined,\n };\n let store;\n if (mode === HISTORY_MODES.PERSISTENT) {\n store = options.stores.createIndexedDbStore({\n ...options.persistent,\n ...rotationOptions,\n databaseName,\n indexedDB: options.indexedDB,\n allowUnprotected: false,\n onStatusChange: () => {\n if (session?.valid && current === session) notify();\n },\n });\n } else {\n store = options.stores.createMemoryStore({\n ...(isStartup\n ? {\n defaultMaxSizePerArea:\n HISTORY_LIMITS.STARTUP_DEFAULT_MAX_SIZE_PER_AREA,\n maxTotalSize: HISTORY_LIMITS.STARTUP_MAX_TOTAL_SIZE,\n ...options.startup,\n }\n : options.memory),\n ...rotationOptions,\n });\n }\n if (stopped || lease.signal.aborted) {\n void retire(ownStore(store), true).catch((failure) => {\n report(\n options.onError,\n historyError(HISTORY_ERROR_CODES.CLEANUP, failure),\n );\n });\n throw historyError(HISTORY_ERROR_CODES.STOPPED);\n }\n try {\n session = createHistorySession({\n options,\n store,\n key,\n startup: isStartup,\n isLive: () => !stopped && !lease.signal.aborted,\n canControl: () => isStartup || state === HISTORY_STATES.ACTIVE,\n levelStorage: isStartup ? undefined : privateLevels(() => session),\n trackCleanup,\n });\n sessions.add(session);\n return session;\n } catch (failure) {\n void retire(ownStore(store), true);\n throw block(HISTORY_ERROR_CODES.SETUP, failure);\n }\n }\n\n async function clearDisk() {\n await drainInvalidSessions();\n let cleanup;\n try {\n cleanup = ownStore(\n options.stores.createIndexedDbStore({\n ...options.persistent,\n databaseName,\n indexedDB: options.indexedDB,\n allowUnprotected: false,\n overflowStrategy: OVERFLOW_STRATEGIES.CYCLE,\n }),\n );\n check();\n await cleanup.store.clear();\n check();\n } finally {\n await retire(cleanup, true);\n }\n }\n\n async function copySession(source, destination) {\n await options.stores.copyRecords(source, {\n write(record) {\n check();\n destination.write(record);\n },\n async flush() {\n try {\n await destination.flush();\n } catch (failure) {\n if (destination.getStatus().mode !== STORE_MODES.FALLBACK)\n throw failure;\n }\n },\n });\n }\n\n async function clearAndSave(selectedOwner, mode) {\n await clearDisk();\n check();\n let key;\n try {\n if (selectedOwner && mode !== HISTORY_MODES.OFF) key = randomHex(32);\n } catch {\n throw block(HISTORY_ERROR_CODES.SETUP);\n }\n save({\n ...metadata,\n cleanupPending: false,\n ...(mode === HISTORY_MODES.PERSISTENT && key ? { key } : {}),\n });\n return key;\n }\n\n async function publish(mode, key, bufferToken, selectedOwner = ownerId) {\n check();\n if (mode === HISTORY_MODES.OFF) {\n ownerId = selectedOwner;\n state = selectedOwner ? HISTORY_STATES.ACTIVE : HISTORY_STATES.IDLE;\n notify();\n return status();\n }\n if (mode === HISTORY_MODES.PERSISTENT) await drainInvalidSessions();\n const candidate = makeSession(mode, key);\n try {\n if (startup) {\n const source = startup;\n source.paused = true;\n current = null;\n notify();\n try {\n await copySession(source.store, candidate.store);\n check();\n if (bufferToken !== startupEpoch || startup !== source)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n } catch {\n await retire(candidate, true);\n if (!stopped && source.valid && bufferToken === startupEpoch) {\n source.paused = false;\n current = source;\n state = HISTORY_STATES.IDLE;\n notify();\n }\n throw error(HISTORY_ERROR_CODES.MIGRATION);\n }\n await retire(source, true);\n }\n check();\n if (bufferToken !== startupEpoch) {\n await retire(candidate, true);\n throw historyError(HISTORY_ERROR_CODES.STALE);\n }\n current = candidate;\n ownerId = selectedOwner;\n state = HISTORY_STATES.ACTIVE;\n setupFailure = undefined;\n notify();\n return status();\n } catch (failure) {\n if (candidate !== current) await retire(candidate, true);\n throw failure;\n }\n }\n\n async function destructive(\n selectedOwner,\n ownerFields,\n mode,\n {\n reset = true,\n keepStartup = false,\n logout = false,\n remainBlocked = false,\n } = {},\n ) {\n const previous = current;\n const savedLevels = reset ? {} : (metadata?.levels ?? {});\n state = HISTORY_STATES.TRANSITIONING;\n if (previous && previous !== startup) {\n previous.valid = false;\n current = null;\n }\n if (!keepStartup) discardStartup();\n const bufferToken = startupEpoch;\n notify();\n const pending = {\n version: 1,\n leaseKey: lease.key,\n revision: (metadata?.revision ?? 0) + 1,\n mode,\n cleanupPending: true,\n loggedOut: logout || (!selectedOwner && Boolean(metadata?.loggedOut)),\n ...(selectedOwner || (!logout && ownerFields?.salt) ? ownerFields : {}),\n ...(!selectedOwner && !logout && !ownerFields?.salt\n ? { ownerless: true }\n : {}),\n levels: savedLevels,\n };\n save(pending);\n requestedMode = mode;\n if (previous && previous !== startup)\n await retire(previous, true).catch((failure) => {\n throw block(HISTORY_ERROR_CODES.CLEANUP, failure);\n });\n check();\n let clean = false;\n let key;\n try {\n key = await clearAndSave(selectedOwner, mode);\n clean = true;\n } catch (failure) {\n check();\n if (\n failure.code === HISTORY_ERROR_CODES.METADATA ||\n failure.code === HISTORY_ERROR_CODES.SETUP\n )\n throw failure;\n error(HISTORY_ERROR_CODES.CLEANUP, failure);\n }\n check();\n if (remainBlocked) {\n ownerId = selectedOwner;\n state = HISTORY_STATES.BLOCKED;\n notify();\n return status();\n }\n if (!selectedOwner || mode === HISTORY_MODES.OFF) {\n ownerId = selectedOwner;\n state = selectedOwner ? HISTORY_STATES.ACTIVE : HISTORY_STATES.IDLE;\n notify();\n return status();\n }\n return publish(\n clean ? mode : HISTORY_MODES.MEMORY,\n key,\n bufferToken,\n selectedOwner,\n );\n }\n\n async function resume(id) {\n const bufferToken = startupEpoch;\n if (state === HISTORY_STATES.ACTIVE && ownerId && ownerId !== id)\n throw error(HISTORY_ERROR_CODES.STALE);\n if (ownerId === id && state === HISTORY_STATES.ACTIVE) {\n if (metadata.cleanupPending) return retryCleanup();\n return status();\n }\n const saved = read();\n let fields;\n try {\n fields = await digestOwner(id, saved?.salt);\n } catch {\n throw block(HISTORY_ERROR_CODES.SETUP);\n }\n check();\n if (bufferToken !== startupEpoch)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n if (\n saved &&\n (saved.loggedOut ||\n (!saved.ownerless && saved.ownerDigest !== fields.ownerDigest))\n ) {\n if (!ownerId) state = HISTORY_STATES.STALE;\n notify();\n throw error(HISTORY_ERROR_CODES.STALE);\n }\n if (\n !saved ||\n saved.ownerless ||\n saved.cleanupPending ||\n saved.mode !== HISTORY_MODES.PERSISTENT ||\n !saved.key\n )\n return destructive(id, fields, requestedMode, {\n reset: false,\n keepStartup: true,\n });\n return publish(requestedMode, saved.key, startupEpoch, id);\n }\n\n async function setOwner(id) {\n if (ownerId === id && state === HISTORY_STATES.ACTIVE) return status();\n if (state === HISTORY_STATES.BLOCKED) read();\n const bufferToken = startupEpoch;\n let fields;\n try {\n fields = await digestOwner(id);\n } catch {\n throw block(HISTORY_ERROR_CODES.SETUP);\n }\n check();\n if (bufferToken !== startupEpoch)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n return destructive(id, fields, requestedMode, {\n keepStartup: Boolean(startup) && (!ownerId || ownerId === id),\n });\n }\n\n async function retryCleanup() {\n if (!metadata?.cleanupPending) return status();\n const previousState = state;\n state = HISTORY_STATES.TRANSITIONING;\n notify();\n let key;\n try {\n key = await clearAndSave(ownerId, requestedMode);\n } catch (failure) {\n check();\n if (\n failure.code === HISTORY_ERROR_CODES.METADATA ||\n failure.code === HISTORY_ERROR_CODES.SETUP\n )\n throw failure;\n state = previousState;\n notify();\n error(HISTORY_ERROR_CODES.CLEANUP, failure);\n return status();\n }\n check();\n const previous = current;\n if (previous && previous !== startup) await retire(previous, true);\n check();\n if (!ownerId || previousState === HISTORY_STATES.BLOCKED) {\n state =\n previousState === HISTORY_STATES.BLOCKED\n ? HISTORY_STATES.BLOCKED\n : HISTORY_STATES.IDLE;\n notify();\n return status();\n }\n return publish(requestedMode, key, startupEpoch, ownerId);\n }\n\n async function setMode(mode) {\n if (state === HISTORY_STATES.BLOCKED)\n throw historyError(setupFailure ?? HISTORY_ERROR_CODES.METADATA);\n if (state === HISTORY_STATES.STALE)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n if (mode === requestedMode) return status();\n if (!ownerId) {\n if (mode === HISTORY_MODES.OFF)\n return destructive(\n undefined,\n { salt: metadata?.salt, ownerDigest: metadata?.ownerDigest },\n mode,\n );\n requestedMode = mode;\n save({\n ...(metadata ?? {\n version: 1,\n leaseKey: lease.key,\n revision: 1,\n ownerless: true,\n loggedOut: false,\n cleanupPending: false,\n levels: {},\n }),\n mode,\n });\n notify();\n return status();\n }\n if (\n requestedMode === HISTORY_MODES.MEMORY &&\n mode === HISTORY_MODES.PERSISTENT &&\n !metadata.cleanupPending &&\n current\n ) {\n const previous = current;\n state = HISTORY_STATES.TRANSITIONING;\n notify();\n let candidate;\n let detach;\n try {\n await clearDisk();\n check();\n candidate = makeSession(mode, previous.key);\n detach = previous.hub.addSink(candidate.store);\n await copySession(previous.store, candidate.store);\n check();\n save({ ...metadata, mode, key: previous.key });\n requestedMode = mode;\n detach();\n previous.valid = false;\n current = candidate;\n } catch (failure) {\n detach?.();\n if (candidate)\n await retire(candidate, true).catch(() =>\n error(HISTORY_ERROR_CODES.SETUP),\n );\n if (!stopped && state !== HISTORY_STATES.BLOCKED) {\n current = previous;\n state = HISTORY_STATES.ACTIVE;\n notify();\n }\n throw failure.code === 'metadata' ||\n failure.code === HISTORY_ERROR_CODES.SETUP ||\n stopped ||\n state === HISTORY_STATES.BLOCKED\n ? failure\n : error(HISTORY_ERROR_CODES.MIGRATION);\n }\n await retire(previous, true).catch(() =>\n error(HISTORY_ERROR_CODES.CLEANUP),\n );\n check();\n state = HISTORY_STATES.ACTIVE;\n notify();\n return status();\n }\n return destructive(\n ownerId,\n { salt: metadata.salt, ownerDigest: metadata.ownerDigest },\n mode,\n { reset: mode === HISTORY_MODES.OFF },\n );\n }\n const enqueue = (action, argument, validate) => {\n if (validate && !validate(argument))\n return Promise.reject(new TypeError('Invalid history control argument'));\n if (stopped)\n return Promise.reject(historyError(HISTORY_ERROR_CODES.STOPPED));\n const operation = controlQueue.then(async () => {\n check();\n if (state === HISTORY_STATES.BLOCKED && action !== setMode)\n try {\n await drainInvalidSessions();\n } catch (failure) {\n check();\n throw error(HISTORY_ERROR_CODES.CLEANUP, failure);\n }\n return action(argument);\n });\n controlQueue = operation.catch(() => {});\n return operation;\n };\n\n function forward(area, scope, binding, invalid) {\n const logger = {};\n for (const level of Object.values(LEVELS))\n logger[level] = (message, data) => {\n const selected = current;\n if (\n forwarding ||\n !selected?.valid ||\n selected.paused ||\n stopped ||\n lease.signal.aborted\n )\n return;\n forwarding = true;\n try {\n if (invalid) throw invalid.error;\n let target = selected.session.logging.getLogger(area, scope);\n if (binding) target = target.child(binding);\n target[level](message, data);\n } catch (failure) {\n report(options.logging.onError, failure, LOGGING_ERROR_SOURCES.DATA);\n } finally {\n forwarding = false;\n }\n };\n logger.child = (child = {}) => {\n if (invalid) return forward(area, scope, binding, invalid);\n try {\n const {\n scope: childScope = binding ? binding.scope : scope,\n context = {},\n } = child;\n return forward(area, scope, {\n scope: childScope,\n context: { ...binding?.context, ...copyBindings(context) },\n });\n } catch (failure) {\n return forward(area, scope, binding, { error: failure });\n }\n };\n return Object.freeze(logger);\n }\n\n function stop() {\n if (stopPromise) return stopPromise;\n stopped = true;\n state = HISTORY_STATES.STOPPED;\n lease.signal.removeEventListener('abort', abort);\n current = null;\n const unexpected =\n lease.signal.aborted &&\n !['release', 'pagehide', 'stop'].includes(lease.signal.reason);\n discardStartup();\n for (const session of sessions)\n void retire(\n session,\n unexpected || session.startup || session.discardOnStop,\n );\n stopPromise = Promise.resolve()\n .then(async () => {\n await controlQueue;\n const cleanups = Array.from(sessions, (session) =>\n retire(\n session,\n unexpected || session.startup || session.discardOnStop,\n ),\n );\n await Promise.all([...retired, ...cleanups]);\n })\n .catch((failure) => {\n stopPromise = undefined;\n throw failure;\n });\n notify();\n return stopPromise;\n }\n\n function abort() {\n void stop().catch((failure) => error(HISTORY_ERROR_CODES.SETUP, failure));\n }\n lease.signal.addEventListener('abort', abort, { once: true });\n try {\n read();\n if (requestedMode !== HISTORY_MODES.OFF && options.startup !== false) {\n startup = makeSession(HISTORY_MODES.MEMORY, randomHex(32), true);\n current = startup;\n }\n } catch {\n if (state !== HISTORY_STATES.BLOCKED) block(HISTORY_ERROR_CODES.SETUP);\n }\n const api = Object.freeze({\n getLogger(area, scope) {\n if (!areas.has(area) || typeof scope !== 'string')\n throw new TypeError('Invalid logger area or scope');\n const key = JSON.stringify([area, scope]);\n const cached = roots.get(key);\n if (cached) return cached;\n const logger = forward(area, scope);\n if (roots.size < LOGGING_LIMITS.ROOT_LOGGER_CACHE_PAIRS) {\n roots.set(key, logger);\n return logger;\n }\n if (!rootLoggerLimitReported) {\n rootLoggerLimitReported = true;\n report(\n options.logging.onError,\n loggingError(LOGGING_ERROR_CODES.ROOT_LOGGER_CACHE_LIMIT),\n LOGGING_ERROR_SOURCES.SCOPE,\n );\n }\n return logger;\n },\n resume: (id) =>\n enqueue(\n resume,\n id,\n (value) => typeof value === 'string' && value.length > 0,\n ),\n setOwner: (id) =>\n enqueue(\n setOwner,\n id,\n (value) => typeof value === 'string' && value.length > 0,\n ),\n logout() {\n discardStartup();\n return enqueue(async () => {\n if (state === HISTORY_STATES.BLOCKED) read();\n return destructive(undefined, {}, requestedMode, { logout: true });\n });\n },\n\n setMode(mode) {\n if (mode === HISTORY_MODES.OFF) discardStartup();\n return enqueue(setMode, mode, (value) =>\n [\n HISTORY_MODES.OFF,\n HISTORY_MODES.MEMORY,\n HISTORY_MODES.PERSISTENT,\n ].includes(value),\n );\n },\n\n clear() {\n discardStartup();\n return enqueue(async () => {\n if (state === HISTORY_STATES.STALE)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n const remainBlocked = state === HISTORY_STATES.BLOCKED;\n if (remainBlocked) read();\n return destructive(\n ownerId,\n { salt: metadata?.salt, ownerDigest: metadata?.ownerDigest },\n requestedMode,\n { remainBlocked },\n );\n });\n },\n retryCleanup: () =>\n enqueue(async () => {\n if (state === HISTORY_STATES.STALE)\n throw historyError(HISTORY_ERROR_CODES.STALE);\n if (state === HISTORY_STATES.BLOCKED) read();\n return retryCleanup();\n }),\n getSession: () =>\n current?.valid && !current.paused ? current.session : null,\n getStatus: status,\n stop,\n });\n notify();\n return api;\n}\n"],"names":["randomHex","assertStormLimit","assertLevel","positive","hub","createLogging","LEVELS","LOGGING_LIMITS","report","LOGGING_ERROR_SOURCES","copyBindings","loggingError","LOGGING_ERROR_CODES"],"mappings":";;;;;;;AAAO,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AACzC,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,UAAU,EAAE,YAAY;AAC1B,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,OAAO,EAAE,SAAS;AACpB,CAAC,CAAC;;AAEK,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;AACjD,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,MAAM,EAAE,QAAQ;AAClB,CAAC,CAAC;;ACXK,MAAM,aAAa,mBAAmB,MAAM,CAAC,MAAM,CAAC;AAC3D,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,UAAU,EAAE,YAAY;AAC1B,CAAC,CAAC;AACK,MAAM,cAAc,mBAAmB,MAAM,CAAC,MAAM,CAAC;AAC5D,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,aAAa,EAAE,eAAe;AAChC,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,OAAO,EAAE,SAAS;AACpB,CAAC,CAAC;AACK,MAAM,mBAAmB,mBAAmB,MAAM,CAAC,MAAM,CAAC;AACjE,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,SAAS,EAAE,WAAW;AACxB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,QAAQ,EAAE,UAAU;AACtB,CAAC,CAAC;AACK,MAAM,cAAc,mBAAmB,MAAM,CAAC,MAAM,CAAC;AAC5D,EAAE,CAAC,mBAAmB,CAAC,QAAQ,GAAG,6BAA6B;AAC/D,EAAE,CAAC,mBAAmB,CAAC,OAAO,GAAG,4BAA4B;AAC7D,EAAE,CAAC,mBAAmB,CAAC,KAAK,GAAG,0BAA0B;AACzD,EAAE,CAAC,mBAAmB,CAAC,KAAK,GAAG,0BAA0B;AACzD,EAAE,CAAC,mBAAmB,CAAC,SAAS,GAAG,8BAA8B;AACjE,EAAE,CAAC,mBAAmB,CAAC,OAAO,GAAG,4BAA4B;AAC7D,EAAE,CAAC,mBAAmB,CAAC,QAAQ,GAAG,6BAA6B;AAC/D,CAAC,CAAC;AACK,MAAM,cAAc,mBAAmB,MAAM,CAAC,MAAM,CAAC;AAC5D,EAAE,iCAAiC,EAAE,OAAO;AAC5C,EAAE,sBAAsB,EAAE,SAAS;AACnC,CAAC,CAAC;;AC3BK,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1C,EAAE,OAAO,MAAM,CAAC,MAAM;AACtB,IAAI,IAAI,KAAK;AACb,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC;AAC1D,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;AACjD,KAAK;AACL,IAAI,EAAE,IAAI,EAAE;AACZ,GAAG;AACH;;AAEO,SAAS,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI;AACxB,EAAE,IAAI,KAAK;AACX,EAAE,IAAI;AACN,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE;AACF,IAAI,CAAC,KAAK;AACV,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;AACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC;AACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACtD,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK;AACpC;AACA,IAAI,OAAO,IAAI;AACf,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;AACjC,IAAI,MAAM,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AACpD,EAAE;AACF,IAAI,CAAC,KAAK,CAAC,SAAS;AACpB,IAAI,CAAC,KAAK,CAAC,SAAS;AACpB,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACvC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAC/C;AACA,IAAI,OAAO,IAAI;AACf,EAAE;AACF,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU,IAAI,KAAK,CAAC,cAAc;AACpE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK;AAC9B,IAAI;AACJ,IAAI,OAAO,KAAK,CAAC,GAAG;AACpB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/C,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;AACjE,EAAE,OAAO,KAAK;AACd;;AAEO,eAAe,WAAW,CAAC,OAAO,EAAE,IAAI,GAAGA,gBAAS,CAAC,EAAE,CAAC,EAAE;AACjE,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/E,EAAE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM;AACxC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;AAC7D,EAAE,OAAO;AACT,IAAI,IAAI;AACR,IAAI,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AACzD,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACd,GAAG;AACH;;AC/DA,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;AACzC,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,eAAe;AACjB,CAAC,CAAC;;AAEF,SAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;AACtD,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACtC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC3E;;AAEO,SAAS,sBAAsB,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE;AACjC,EAAE;AACF,IAAI,CAAC,KAAK,EAAE,GAAG;AACf,IAAI,CAAC,KAAK,CAAC,MAAM;AACjB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;AACxB,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK;AAC7C;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC;AAClE,EAAE;AACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1C,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK;AACtC;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC;AACxE,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC;AACnD,IAAI,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;AAC/D,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;AAChD,IAAI,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC;AAC7D,EAAEC,uBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9C,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,kBAAkB,CAAC;AACjE,IAAI,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC;AAC7E,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5C,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrE,MAAM,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC;AACjD,IAAIC,kBAAW,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;AACrC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,EAAE;AACF,EAAE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;AAC5E,IAAI;AACJ,MAAM,MAAM;AACZ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;AAChD,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;AACzC;AACA,MAAM,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC;AAC/D,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACtD,EAAE,KAAK,MAAM,MAAM,IAAI;AACvB,IAAI,OAAO,CAAC,MAAM;AAClB,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AACzB,IAAI,OAAO,CAAC,UAAU;AACtB,IAAI,OAAO,CAAC,UAAU,EAAE,QAAQ;AAChC,GAAG;AACH,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AACvD,EAAE,KAAK,MAAM,IAAI,IAAI,kBAAkB;AACvC,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,SAAS;AAChD,MAAMC,eAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAC9C,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;AACjD,IAAIA,eAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;AAC5D,EAAE;AACF,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;AACtC,KAAK,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,YAAY;AACtE;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC;AACxD,EAAE,MAAM,YAAY;AACpB,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAClE,EAAE,MAAM,WAAW,GAAG,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;AAChE,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM;AACnE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3D,IAAI,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC;AAC/C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE;AACnE;;ACvEO,SAAS,oBAAoB,CAAC;AACrC,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,GAAG;AACL,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,OAAO;AACT,EAAE,YAAY;AACd,CAAC,EAAE;AACH,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,MAAM,EAAE,KAAK;AACjB,IAAI,KAAK;AACT,IAAI,GAAG;AACP,IAAI,OAAO;AACX,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO,EAAE,IAAI,GAAG,EAAE;AACtB,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE;AAC7D,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC9D,EAAE,CAAC;AACH,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC9C,EAAE,KAAK,EAAE;AACT,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC7B,IAAI,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC3B,GAAG;AACH,EAAE,KAAK,MAAM,MAAM,IAAI;AACvB,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,MAAM;AACV,IAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACtC,GAAG;AACH,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK;AAC3C,MAAM,KAAK,EAAE;AACb,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,MAAM,KAAK,EAAE;AACb,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,EAAE,MAAM,KAAK,GAAG,EAAE;AAClB,EAAE,IAAIC,KAAG;AACT,EAAE,IAAI;AACN,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,KAAK,CAAC,IAAI;AAChB,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,OAAO;AACP,IAAI,KAAK,EAAE;AACX,IAAIA,KAAG,GAAGC,iBAAa,CAAC;AACxB,MAAM,GAAG,OAAO,CAAC,OAAO;AACxB,MAAM,QAAQ,EAAE,eAAe;AAC/B,MAAM,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;AAC9B,MAAM,IAAI,YAAY,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAC/C,MAAM,QAAQ,EAAE,IAAI;AACpB,KAAK,CAAC;AACN,EAAE,CAAC,CAAC,OAAO,OAAO,EAAE;AACpB,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;AACtC,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC9C,KAAK;AACL,IAAI,YAAY,CAAC,OAAO,CAAC;AACzB,IAAI,MAAM,OAAO;AACjB,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,GAAGD,KAAG;AACjB,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,KAAK,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC;AAC5E,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK;AACnC,MAAM,KAAK,EAAE;AACb,MAAM,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;AACtE,QAAQ,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,MAAM,GAAGA,KAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;AACzC,MAAM,KAAK,EAAE;AACb,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,EAAE,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AAClC,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAACE,gBAAM,CAAC;AAC7C,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;AACzC,QAAQ,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;AAChD,MAAM,CAAC;AACP,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,EAAE,CAAC;AACH,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,OAAO,CAAC,KAAK,GAAGF,KAAG,CAAC,KAAK;AAC3B,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,IAAI,KAAK,EAAE;AACX,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,IAAI,IAAI,MAAM,EAAE,OAAO,MAAM;AAC7B,IAAI,MAAM,MAAM,GAAG,WAAW,CAACA,KAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,IAAI,IAAI,KAAK,CAAC,IAAI,GAAGG,wBAAc,CAAC,uBAAuB;AAC3D,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5B,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;AACH,EAAE,OAAO,CAAC,KAAK,GAAG,YAAY;AAC9B,IAAI,KAAK,EAAE;AACX,IAAI,MAAMH,KAAG,CAAC,KAAK,EAAE;AACrB,IAAI,KAAK,EAAE;AACX,EAAE,CAAC;AACH,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE;AACvB,MAAM,KAAK,EAAE;AACb,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtE,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,MAAM,IAAI;AACV,QAAQ,MAAM,OAAO,GAAG,MAAM,OAAO;AACrC,QAAQ,KAAK,EAAE;AACf,QAAQ,OAAO,OAAO;AACtB,MAAM,CAAC,SAAS;AAChB,QAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACrC,MAAM;AACN,IAAI,CAAC;;AAEL,IAAI,SAAS,GAAG;AAChB,MAAM,KAAK,EAAE;AACb,MAAM,OAAO,KAAK,CAAC,SAAS,EAAE;AAC9B,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC,IAAI,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM;AACV,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;AAC5C,GAAG,CAAC;AACJ,EAAE,OAAO,KAAK;AACd;;ACjHO,SAAS,gBAAgB,CAAC,OAAO,EAAE;AAC1C,EAAE;AACF,IAAI,CAAC,OAAO,EAAE,MAAM;AACpB,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,KAAK,UAAU;AAC1D,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,KAAK,UAAU;AAC7D,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,KAAK,UAAU;AAC7D,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK;AAC1C;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;AAC/D,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,aAAa,EAAE,WAAW;AAC9B,GAAG,GAAG,sBAAsB,CAAC,OAAO,CAAC;AACrC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC3E,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE;AAC3B,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAC5B,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,QAAQ,GAAG,IAAI;AACrB,EAAE,IAAI,aAAa,GAAG,WAAW;AACjC,EAAE,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI;AACjC,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,IAAI,YAAY,GAAG,CAAC;AACtB,EAAE,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE;AACtC,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,YAAY,GAAG,KAAK;AAC1B,EAAE,IAAI,YAAY;AAClB,EAAE,IAAI,UAAU,GAAG,KAAK;AACxB,EAAE,IAAI,uBAAuB,GAAG,KAAK;AACrC,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,MAAM,KAAK;AACX,MAAM,aAAa;AACnB,MAAM,UAAU,EAAE;AAClB,UAAU,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC;AACzD,YAAY,aAAa,CAAC;AAC1B,YAAY,aAAa,CAAC;AAC1B,UAAU,aAAa,CAAC,GAAG;AAC3B,MAAM,cAAc,EAAE,QAAQ,EAAE,cAAc,IAAI,KAAK;AACvD,KAAK,CAAC;;AAEN,EAAE,SAAS,MAAM,GAAG;AACpB,IAAII,aAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,EAAE;;AAEF,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7C,IAAIA,aAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC,IAAI,OAAO,OAAO;AAClB,EAAE;;AAEF,EAAE,SAAS,KAAK,GAAG;AACnB,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;AACvC,MAAM,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrD,EAAE;;AAEF,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE;AAC1C,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,IAAI,OAAO,KAAK,OAAO,EAAE,OAAO,GAAG,IAAI;AAC3C,IAAI,IAAI,OAAO,KAAK,OAAO,EAAE,OAAO,GAAG,IAAI;AAC3C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,OAAO,OAAO,CAAC,cAAc;AAC7D,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY;AACvD,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,OAAO;AACpB,UAAU,IAAI;AACd,YAAY,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;AACvC,UAAU,CAAC,CAAC,OAAO,OAAO,EAAE;AAC5B,YAAYA,aAAM;AAClB,cAAc,OAAO,CAAC,OAAO;AAC7B,cAAc,YAAY,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9D,aAAa;AACb,UAAU;AACV,QAAQ,IAAI;AACZ,UAAU,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/C,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE;AAC1B,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,OAAO;AACvE,YAAY,MAAM,OAAO;AACzB,UAAUA,aAAM;AAChB,YAAY,OAAO,CAAC,OAAO;AAC3B,YAAY,YAAY,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5D,WAAW;AACX,QAAQ;AACR,QAAQ,IAAI;AACZ,UAAU,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AACnC,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE;AAC1B,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,OAAO;AACvE,YAAY,MAAM,OAAO;AACzB,UAAUA,aAAM;AAChB,YAAY,OAAO,CAAC,OAAO;AAC3B,YAAY,YAAY,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5D,WAAW;AACX,QAAQ;AACR,MAAM,CAAC,SAAS;AAChB,QAAQ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AACvD,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,IAAI,OAAO,CAAC,cAAc,GAAG,OAAO;AACpC,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,QAAQ,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,MAAM,CAAC;AACP,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,QAAQ,OAAO,CAAC,cAAc,GAAG,IAAI;AACrC,MAAM,CAAC;AACP,KAAK;AACL,IAAI,OAAO,OAAO;AAClB,EAAE;;AAEF,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC3B,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,aAAa,EAAE,IAAI;AACzB,MAAM,KAAK;AACX,MAAM,GAAG,EAAE,IAAI;AACf,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,IAAI,OAAO,OAAO;AAClB,EAAE;;AAEF,EAAE,eAAe,oBAAoB,GAAG;AACxC,IAAI,MAAM,OAAO,CAAC,GAAG;AACrB,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ;AACzB,SAAS,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AAC3C,SAAS,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,KAAK,EAAE;AACX,EAAE;;AAEF,EAAE,SAAS,cAAc,GAAG;AAC5B,IAAI,YAAY,EAAE;AAClB,IAAI,IAAI,OAAO,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AAC3C,EAAE;;AAEF,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9B,IAAI,IAAI,OAAO,EAAE,OAAO,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACjE,IAAI,YAAY,GAAG,IAAI;AACvB,IAAI,KAAK,GAAG,cAAc,CAAC,OAAO;AAClC,IAAI,cAAc,EAAE;AACpB,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,IAAI,MAAM,EAAE;AACZ,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,EAAE;;AAEF,EAAE,SAAS,IAAI,GAAG;AAClB,IAAI,IAAI;AACR,MAAM,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,YAAY;AAC5D,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC;AAC9D,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,IAAI,aAAa;AACrD,MAAM,OAAO,QAAQ;AACrB,IAAI,CAAC,CAAC,MAAM;AACZ,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC/C,IAAI;AACJ,EAAE;;AAEF,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;AACvB,IAAI,KAAK,EAAE;AACX,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE;AAC7B,IAAI;AACJ,MAAM,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU;AAC5C,MAAM,IAAI,CAAC,cAAc;AACzB,MAAM,IAAI,CAAC;AACX;AACA,MAAM,OAAO,IAAI,CAAC,GAAG;AACrB,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI;AACrB,IAAI,CAAC,CAAC,MAAM;AACZ,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC/C,IAAI;AACJ,EAAE;;AAEF,EAAE,SAAS,aAAa,CAAC,aAAa,EAAE;AACxC,IAAI,OAAO;AACX,MAAM,GAAG,EAAE,QAAQ;AACnB,MAAM,OAAO,EAAE;AACf,QAAQ,OAAO,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;AAC7D,QAAQ,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,UAAU;AACV,YAAY,OAAO;AACnB,YAAY,KAAK,CAAC,MAAM,CAAC,OAAO;AAChC,YAAY,KAAK,KAAK,cAAc,CAAC,MAAM;AAC3C,YAAY,OAAO,KAAK,aAAa,EAAE;AACvC,YAAY,CAAC,aAAa,EAAE,EAAE;AAC9B;AACA,YAAY;AACZ,UAAU,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACzD,QAAQ,CAAC;AACT,OAAO;AACP,KAAK;AACL,EAAE;;AAEF,EAAE,SAAS,YAAY,CAAC,OAAO,EAAE;AACjC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/C,EAAE;;AAEF,EAAE,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,GAAGR,gBAAS,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE;AACrE,IAAI,IAAI,OAAO;AACf,IAAI,MAAM,eAAe,GAAG;AAC5B,MAAM,gBAAgB,EAAE;AACxB,UAAU,mBAAmB,CAAC;AAC9B,UAAU,OAAO,CAAC,gBAAgB;AAClC,MAAM,iBAAiB,EAAE;AACzB,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,KAAK;AACxB,YAAY,CAAC,OAAO,CAAC,MAAM;AAC3B,YAAY,OAAO,KAAK,OAAO;AAC/B,YAAY,CAAC,YAAY;AACzB,YAAY,KAAK,KAAK,cAAc,CAAC,MAAM;AAC3C,SAAS;AACT,MAAM,QAAQ,EAAE,OAAO,CAAC;AACxB,UAAU,OAAO,MAAM,KAAK;AAC5B,YAAY;AACZ,cAAc,CAAC,OAAO,EAAE,KAAK;AAC7B,cAAc,OAAO;AACrB,cAAc,KAAK,CAAC,MAAM,CAAC,OAAO;AAClC,cAAc;AACd;AACA,cAAc;AACd,YAAY,YAAY,GAAG,IAAI;AAC/B,YAAY,MAAM,aAAa,GAAG;AAClC,cAAc,MAAM,KAAK,CAAC,KAAK,EAAE;AACjC,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;AACrE,kBAAkB,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/D,gBAAgB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AACxD,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;AACrE,kBAAkB,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/D,gBAAgB,OAAO,MAAM;AAC7B,cAAc,CAAC;;AAEf,cAAc,SAAS,GAAG;AAC1B,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK;AAClC,kBAAkB,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/D,gBAAgB,OAAO,MAAM,CAAC,SAAS,EAAE;AACzC,cAAc,CAAC;AACf,aAAa;AACb,YAAY,IAAI;AAChB,cAAc,MAAM,OAAO,CAAC,QAAQ;AACpC,gBAAgB,MAAM,CAAC,MAAM,CAAC;AAC9B,kBAAkB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACtD,kBAAkB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;AACpD,iBAAiB,CAAC;AAClB,eAAe;AACf,YAAY,CAAC,CAAC,MAAM;AACpB,cAAcQ,aAAM;AACpB,gBAAgB,OAAO,CAAC,OAAO;AAC/B,gBAAgB,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC1D,eAAe;AACf,YAAY,CAAC,SAAS;AACtB,cAAc,YAAY,GAAG,KAAK;AAClC,YAAY;AACZ,UAAU;AACV,UAAU,SAAS;AACnB,KAAK;AACL,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE;AAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAClD,QAAQ,GAAG,OAAO,CAAC,UAAU;AAC7B,QAAQ,GAAG,eAAe;AAC1B,QAAQ,YAAY;AACpB,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS;AACpC,QAAQ,gBAAgB,EAAE,KAAK;AAC/B,QAAQ,cAAc,EAAE,MAAM;AAC9B,UAAU,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,KAAK,OAAO,EAAE,MAAM,EAAE;AAC7D,QAAQ,CAAC;AACT,OAAO,CAAC;AACR,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC/C,QAAQ,IAAI;AACZ,YAAY;AACZ,cAAc,qBAAqB;AACnC,gBAAgB,cAAc,CAAC,iCAAiC;AAChE,cAAc,YAAY,EAAE,cAAc,CAAC,sBAAsB;AACjE,cAAc,GAAG,OAAO,CAAC,OAAO;AAChC;AACA,YAAY,OAAO,CAAC,MAAM,CAAC;AAC3B,QAAQ,GAAG,eAAe;AAC1B,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;AACzC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK;AAC5D,QAAQA,aAAM;AACd,UAAU,OAAO,CAAC,OAAO;AACzB,UAAU,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5D,SAAS;AACT,MAAM,CAAC,CAAC;AACR,MAAM,MAAM,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,oBAAoB,CAAC;AACrC,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb,QAAQ,GAAG;AACX,QAAQ,OAAO,EAAE,SAAS;AAC1B,QAAQ,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;AACvD,QAAQ,UAAU,EAAE,MAAM,SAAS,IAAI,KAAK,KAAK,cAAc,CAAC,MAAM;AACtE,QAAQ,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,OAAO,CAAC;AAC1E,QAAQ,YAAY;AACpB,OAAO,CAAC;AACR,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,MAAM,OAAO,OAAO;AACpB,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE;AACtB,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;AACxC,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;AACrD,IAAI;AACJ,EAAE;;AAEF,EAAE,eAAe,SAAS,GAAG;AAC7B,IAAI,MAAM,oBAAoB,EAAE;AAChC,IAAI,IAAI,OAAO;AACf,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,QAAQ;AACxB,QAAQ,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAC5C,UAAU,GAAG,OAAO,CAAC,UAAU;AAC/B,UAAU,YAAY;AACtB,UAAU,SAAS,EAAE,OAAO,CAAC,SAAS;AACtC,UAAU,gBAAgB,EAAE,KAAK;AACjC,UAAU,gBAAgB,EAAE,mBAAmB,CAAC,KAAK;AACrD,SAAS,CAAC;AACV,OAAO;AACP,MAAM,KAAK,EAAE;AACb,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;AACjC,MAAM,KAAK,EAAE;AACb,IAAI,CAAC,SAAS;AACd,MAAM,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AACjC,IAAI;AACJ,EAAE;;AAEF,EAAE,eAAe,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE;AAClD,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;AAC7C,MAAM,KAAK,CAAC,MAAM,EAAE;AACpB,QAAQ,KAAK,EAAE;AACf,QAAQ,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,MAAM,CAAC;AACP,MAAM,MAAM,KAAK,GAAG;AACpB,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,CAAC,KAAK,EAAE;AACnC,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE;AAC1B,UAAU,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ;AACnE,YAAY,MAAM,OAAO;AACzB,QAAQ;AACR,MAAM,CAAC;AACP,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,eAAe,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE;AACnD,IAAI,MAAM,SAAS,EAAE;AACrB,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,GAAG;AACX,IAAI,IAAI;AACR,MAAM,IAAI,aAAa,IAAI,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE,GAAG,GAAGR,gBAAS,CAAC,EAAE,CAAC;AAC1E,IAAI,CAAC,CAAC,MAAM;AACZ,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,IAAI,CAAC;AACT,MAAM,GAAG,QAAQ;AACjB,MAAM,cAAc,EAAE,KAAK;AAC3B,MAAM,IAAI,IAAI,KAAK,aAAa,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClE,KAAK,CAAC;AACN,IAAI,OAAO,GAAG;AACd,EAAE;;AAEF,EAAE,eAAe,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,GAAG,OAAO,EAAE;AAC1E,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;AACpC,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,KAAK,GAAG,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI;AACzE,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE,MAAM,oBAAoB,EAAE;AACvE,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5C,IAAI,IAAI;AACR,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,MAAM,GAAG,OAAO;AAC9B,QAAQ,MAAM,CAAC,MAAM,GAAG,IAAI;AAC5B,QAAQ,OAAO,GAAG,IAAI;AACtB,QAAQ,MAAM,EAAE;AAChB,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;AAC1D,UAAU,KAAK,EAAE;AACjB,UAAU,IAAI,WAAW,KAAK,YAAY,IAAI,OAAO,KAAK,MAAM;AAChE,YAAY,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACzD,QAAQ,CAAC,CAAC,MAAM;AAChB,UAAU,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACvC,UAAU,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,WAAW,KAAK,YAAY,EAAE;AACxE,YAAY,MAAM,CAAC,MAAM,GAAG,KAAK;AACjC,YAAY,OAAO,GAAG,MAAM;AAC5B,YAAY,KAAK,GAAG,cAAc,CAAC,IAAI;AACvC,YAAY,MAAM,EAAE;AACpB,UAAU;AACV,UAAU,MAAM,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC;AACpD,QAAQ;AACR,QAAQ,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAClC,MAAM;AACN,MAAM,KAAK,EAAE;AACb,MAAM,IAAI,WAAW,KAAK,YAAY,EAAE;AACxC,QAAQ,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACrC,QAAQ,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACrD,MAAM;AACN,MAAM,OAAO,GAAG,SAAS;AACzB,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM;AACnC,MAAM,YAAY,GAAG,SAAS;AAC9B,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE;AACtB,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AAC9D,MAAM,MAAM,OAAO;AACnB,IAAI;AACJ,EAAE;;AAEF,EAAE,eAAe,WAAW;AAC5B,IAAI,aAAa;AACjB,IAAI,WAAW;AACf,IAAI,IAAI;AACR,IAAI;AACJ,MAAM,KAAK,GAAG,IAAI;AAClB,MAAM,WAAW,GAAG,KAAK;AACzB,MAAM,MAAM,GAAG,KAAK;AACpB,MAAM,aAAa,GAAG,KAAK;AAC3B,KAAK,GAAG,EAAE;AACV,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,OAAO;AAC5B,IAAI,MAAM,WAAW,GAAG,KAAK,GAAG,EAAE,IAAI,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;AAC7D,IAAI,KAAK,GAAG,cAAc,CAAC,aAAa;AACxC,IAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC1C,MAAM,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC5B,MAAM,OAAO,GAAG,IAAI;AACpB,IAAI;AACJ,IAAI,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE;AACtC,IAAI,MAAM,WAAW,GAAG,YAAY;AACpC,IAAI,MAAM,EAAE;AACZ,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG;AACzB,MAAM,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC;AAC7C,MAAM,IAAI;AACV,MAAM,cAAc,EAAE,IAAI;AAC1B,MAAM,SAAS,EAAE,MAAM,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,IAAI,aAAa,KAAK,CAAC,MAAM,IAAI,WAAW,EAAE,IAAI,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;AAC7E,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE;AACrD,UAAU,EAAE,SAAS,EAAE,IAAI;AAC3B,UAAU,EAAE,CAAC;AACb,MAAM,MAAM,EAAE,WAAW;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,CAAC;AACjB,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO;AACxC,MAAM,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK;AACtD,QAAQ,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACzD,MAAM,CAAC,CAAC;AACR,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,KAAK,GAAG,KAAK;AACrB,IAAI,IAAI,GAAG;AACX,IAAI,IAAI;AACR,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;AACnD,MAAM,KAAK,GAAG,IAAI;AAClB,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE;AACtB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,QAAQ,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ;AACrD,QAAQ,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC;AAC7C;AACA,QAAQ,MAAM,OAAO;AACrB,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,IAAI;AACJ,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO;AACpC,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;AACtD,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,KAAK,GAAG,aAAa,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI;AACzE,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,MAAM,KAAK,GAAG,IAAI,GAAG,aAAa,CAAC,MAAM;AACzC,MAAM,GAAG;AACT,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,KAAK;AACL,EAAE;;AAEF,EAAE,eAAe,MAAM,CAAC,EAAE,EAAE;AAC5B,IAAI,MAAM,WAAW,GAAG,YAAY;AACpC,IAAI,IAAI,KAAK,KAAK,cAAc,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE;AACpE,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,MAAM,EAAE;AAC3D,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,OAAO,YAAY,EAAE;AACxD,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,IAAI,EAAE;AACxB,IAAI,IAAI,MAAM;AACd,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC;AACjD,IAAI,CAAC,CAAC,MAAM;AACZ,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,WAAW,KAAK,YAAY;AACpC,MAAM,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,IAAI;AACJ,MAAM,KAAK;AACX,OAAO,KAAK,CAAC,SAAS;AACtB,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC;AACtE,MAAM;AACN,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,cAAc,CAAC,KAAK;AAChD,MAAM,MAAM,EAAE;AACd,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI;AACJ,MAAM,CAAC,KAAK;AACZ,MAAM,KAAK,CAAC,SAAS;AACrB,MAAM,KAAK,CAAC,cAAc;AAC1B,MAAM,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU;AAC7C,MAAM,CAAC,KAAK,CAAC;AACb;AACA,MAAM,OAAO,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AACpD,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,WAAW,EAAE,IAAI;AACzB,OAAO,CAAC;AACR,IAAI,OAAO,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC;AAC9D,EAAE;;AAEF,EAAE,eAAe,QAAQ,CAAC,EAAE,EAAE;AAC9B,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,cAAc,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE;AAC1E,IAAI,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;AAChD,IAAI,MAAM,WAAW,GAAG,YAAY;AACpC,IAAI,IAAI,MAAM;AACd,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC;AACpC,IAAI,CAAC,CAAC,MAAM;AACZ,MAAM,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,IAAI;AACJ,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,WAAW,KAAK,YAAY;AACpC,MAAM,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,IAAI,OAAO,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AAClD,MAAM,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE,CAAC;AACnE,KAAK,CAAC;AACN,EAAE;;AAEF,EAAE,eAAe,YAAY,GAAG;AAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,MAAM,EAAE;AAClD,IAAI,MAAM,aAAa,GAAG,KAAK;AAC/B,IAAI,KAAK,GAAG,cAAc,CAAC,aAAa;AACxC,IAAI,MAAM,EAAE;AACZ,IAAI,IAAI,GAAG;AACX,IAAI,IAAI;AACR,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;AACtD,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE;AACtB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,QAAQ,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ;AACrD,QAAQ,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC;AAC7C;AACA,QAAQ,MAAM,OAAO;AACrB,MAAM,KAAK,GAAG,aAAa;AAC3B,MAAM,MAAM,EAAE;AACd,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACjD,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,KAAK,EAAE;AACX,IAAI,MAAM,QAAQ,GAAG,OAAO;AAC5B,IAAI,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AACtE,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,CAAC,OAAO,IAAI,aAAa,KAAK,cAAc,CAAC,OAAO,EAAE;AAC9D,MAAM,KAAK;AACX,QAAQ,aAAa,KAAK,cAAc,CAAC;AACzC,YAAY,cAAc,CAAC;AAC3B,YAAY,cAAc,CAAC,IAAI;AAC/B,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,OAAO,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC;AAC7D,EAAE;;AAEF,EAAE,eAAe,OAAO,CAAC,IAAI,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO;AACxC,MAAM,MAAM,YAAY,CAAC,YAAY,IAAI,mBAAmB,CAAC,QAAQ,CAAC;AACtE,IAAI,IAAI,KAAK,KAAK,cAAc,CAAC,KAAK;AACtC,MAAM,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,IAAI,IAAI,IAAI,KAAK,aAAa,EAAE,OAAO,MAAM,EAAE;AAC/C,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,IAAI,KAAK,aAAa,CAAC,GAAG;AACpC,QAAQ,OAAO,WAAW;AAC1B,UAAU,SAAS;AACnB,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;AACtE,UAAU,IAAI;AACd,SAAS;AACT,MAAM,aAAa,GAAG,IAAI;AAC1B,MAAM,IAAI,CAAC;AACX,QAAQ,IAAI,QAAQ,IAAI;AACxB,UAAU,OAAO,EAAE,CAAC;AACpB,UAAU,QAAQ,EAAE,KAAK,CAAC,GAAG;AAC7B,UAAU,QAAQ,EAAE,CAAC;AACrB,UAAU,SAAS,EAAE,IAAI;AACzB,UAAU,SAAS,EAAE,KAAK;AAC1B,UAAU,cAAc,EAAE,KAAK;AAC/B,UAAU,MAAM,EAAE,EAAE;AACpB,SAAS,CAAC;AACV,QAAQ,IAAI;AACZ,OAAO,CAAC;AACR,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI;AACJ,MAAM,aAAa,KAAK,aAAa,CAAC,MAAM;AAC5C,MAAM,IAAI,KAAK,aAAa,CAAC,UAAU;AACvC,MAAM,CAAC,QAAQ,CAAC,cAAc;AAC9B,MAAM;AACN,MAAM;AACN,MAAM,MAAM,QAAQ,GAAG,OAAO;AAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa;AAC1C,MAAM,MAAM,EAAE;AACd,MAAM,IAAI,SAAS;AACnB,MAAM,IAAI,MAAM;AAChB,MAAM,IAAI;AACV,QAAQ,MAAM,SAAS,EAAE;AACzB,QAAQ,KAAK,EAAE;AACf,QAAQ,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AACtD,QAAQ,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;AAC1D,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AACtD,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,MAAM,EAAE;AAChB,QAAQ,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC9B,QAAQ,OAAO,GAAG,SAAS;AAC3B,MAAM,CAAC,CAAC,OAAO,OAAO,EAAE;AACxB,QAAQ,MAAM,IAAI;AAClB,QAAQ,IAAI,SAAS;AACrB,UAAU,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC;AAC9C,YAAY,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5C,WAAW;AACX,QAAQ,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE;AAC1D,UAAU,OAAO,GAAG,QAAQ;AAC5B,UAAU,KAAK,GAAG,cAAc,CAAC,MAAM;AACvC,UAAU,MAAM,EAAE;AAClB,QAAQ;AACR,QAAQ,MAAM,OAAO,CAAC,IAAI,KAAK,UAAU;AACzC,UAAU,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,KAAK;AACpD,UAAU,OAAO;AACjB,UAAU,KAAK,KAAK,cAAc,CAAC;AACnC,YAAY;AACZ,YAAY,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAChD,MAAM;AACN,MAAM,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC;AACzC,QAAQ,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC1C,OAAO;AACP,MAAM,KAAK,EAAE;AACb,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM;AACnC,MAAM,MAAM,EAAE;AACd,MAAM,OAAO,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,OAAO,WAAW;AACtB,MAAM,OAAO;AACb,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;AAChE,MAAM,IAAI;AACV,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE;AAC3C,KAAK;AACL,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAClD,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvC,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;AAC9E,IAAI,IAAI,OAAO;AACf,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtE,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY;AACpD,MAAM,KAAK,EAAE;AACb,MAAM,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,IAAI,MAAM,KAAK,OAAO;AAChE,QAAQ,IAAI;AACZ,UAAU,MAAM,oBAAoB,EAAE;AACtC,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE;AAC1B,UAAU,KAAK,EAAE;AACjB,UAAU,MAAM,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3D,QAAQ;AACR,MAAM,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,IAAI,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,SAAS;AACpB,EAAE,CAAC;;AAEH,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAClD,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAACM,gBAAM,CAAC;AAC7C,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;AACzC,QAAQ,MAAM,QAAQ,GAAG,OAAO;AAChC,QAAQ;AACR,UAAU,UAAU;AACpB,UAAU,CAAC,QAAQ,EAAE,KAAK;AAC1B,UAAU,QAAQ,CAAC,MAAM;AACzB,UAAU,OAAO;AACjB,UAAU,KAAK,CAAC,MAAM,CAAC;AACvB;AACA,UAAU;AACV,QAAQ,UAAU,GAAG,IAAI;AACzB,QAAQ,IAAI;AACZ,UAAU,IAAI,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK;AAC1C,UAAU,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACtE,UAAU,IAAI,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AACrD,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;AACtC,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE;AAC1B,UAAUE,aAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAEC,+BAAqB,CAAC,IAAI,CAAC;AAC9E,QAAQ,CAAC,SAAS;AAClB,UAAU,UAAU,GAAG,KAAK;AAC5B,QAAQ;AACR,MAAM,CAAC;AACP,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,KAAK;AACnC,MAAM,IAAI,OAAO,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAChE,MAAM,IAAI;AACV,QAAQ,MAAM;AACd,UAAU,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,KAAK;AAC7D,UAAU,OAAO,GAAG,EAAE;AACtB,SAAS,GAAG,KAAK;AACjB,QAAQ,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;AACpC,UAAU,KAAK,EAAE,UAAU;AAC3B,UAAU,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAGC,mBAAY,CAAC,OAAO,CAAC,EAAE;AACpE,SAAS,CAAC;AACV,MAAM,CAAC,CAAC,OAAO,OAAO,EAAE;AACxB,QAAQ,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAChE,MAAM;AACN,IAAI,CAAC;AACL,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,EAAE;;AAEF,EAAE,SAAS,IAAI,GAAG;AAClB,IAAI,IAAI,WAAW,EAAE,OAAO,WAAW;AACvC,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,KAAK,GAAG,cAAc,CAAC,OAAO;AAClC,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;AACpD,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,MAAM,UAAU;AACpB,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO;AAC1B,MAAM,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACpE,IAAI,cAAc,EAAE;AACpB,IAAI,KAAK,MAAM,OAAO,IAAI,QAAQ;AAClC,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO;AACf,QAAQ,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa;AAC9D,OAAO;AACP,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO;AACjC,OAAO,IAAI,CAAC,YAAY;AACxB,QAAQ,MAAM,YAAY;AAC1B,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO;AACtD,UAAU,MAAM;AAChB,YAAY,OAAO;AACnB,YAAY,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa;AAClE,WAAW;AACX,SAAS;AACT,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACpD,MAAM,CAAC;AACP,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK;AAC1B,QAAQ,WAAW,GAAG,SAAS;AAC/B,QAAQ,MAAM,OAAO;AACrB,MAAM,CAAC,CAAC;AACR,IAAI,MAAM,EAAE;AACZ,IAAI,OAAO,WAAW;AACtB,EAAE;;AAEF,EAAE,SAAS,KAAK,GAAG;AACnB,IAAI,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7E,EAAE;AACF,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/D,EAAE,IAAI;AACN,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,aAAa,KAAK,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1E,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,EAAEV,gBAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACtE,MAAM,OAAO,GAAG,OAAO;AACvB,IAAI;AACJ,EAAE,CAAC,CAAC,MAAM;AACV,IAAI,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC1E,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;AACvD,QAAQ,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC;AAC3D,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,MAAM,IAAI,MAAM,EAAE,OAAO,MAAM;AAC/B,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAGO,wBAAc,CAAC,uBAAuB,EAAE;AAC/D,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC9B,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACpC,QAAQ,uBAAuB,GAAG,IAAI;AACtC,QAAQC,aAAM;AACd,UAAU,OAAO,CAAC,OAAO,CAAC,OAAO;AACjC,UAAUG,gBAAY,CAACC,6BAAmB,CAAC,uBAAuB,CAAC;AACnE,UAAUH,+BAAqB,CAAC,KAAK;AACrC,SAAS;AACT,MAAM;AACN,MAAM,OAAO,MAAM;AACnB,IAAI,CAAC;AACL,IAAI,MAAM,EAAE,CAAC,EAAE;AACf,MAAM,OAAO;AACb,QAAQ,MAAM;AACd,QAAQ,EAAE;AACV,QAAQ,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAChE,OAAO;AACP,IAAI,QAAQ,EAAE,CAAC,EAAE;AACjB,MAAM,OAAO;AACb,QAAQ,QAAQ;AAChB,QAAQ,EAAE;AACV,QAAQ,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAChE,OAAO;AACP,IAAI,MAAM,GAAG;AACb,MAAM,cAAc,EAAE;AACtB,MAAM,OAAO,OAAO,CAAC,YAAY;AACjC,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;AACpD,QAAQ,OAAO,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1E,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;;AAEL,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,MAAM,IAAI,IAAI,KAAK,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE;AACtD,MAAM,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK;AAC1C,QAAQ;AACR,UAAU,aAAa,CAAC,GAAG;AAC3B,UAAU,aAAa,CAAC,MAAM;AAC9B,UAAU,aAAa,CAAC,UAAU;AAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzB,OAAO;AACP,IAAI,CAAC;;AAEL,IAAI,KAAK,GAAG;AACZ,MAAM,cAAc,EAAE;AACtB,MAAM,OAAO,OAAO,CAAC,YAAY;AACjC,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,KAAK;AAC1C,UAAU,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACvD,QAAQ,MAAM,aAAa,GAAG,KAAK,KAAK,cAAc,CAAC,OAAO;AAC9D,QAAQ,IAAI,aAAa,EAAE,IAAI,EAAE;AACjC,QAAQ,OAAO,WAAW;AAC1B,UAAU,OAAO;AACjB,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;AACtE,UAAU,aAAa;AACvB,UAAU,EAAE,aAAa,EAAE;AAC3B,SAAS;AACT,MAAM,CAAC,CAAC;AACR,IAAI,CAAC;AACL,IAAI,YAAY,EAAE;AAClB,MAAM,OAAO,CAAC,YAAY;AAC1B,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,KAAK;AAC1C,UAAU,MAAM,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;AACpD,QAAQ,OAAO,YAAY,EAAE;AAC7B,MAAM,CAAC,CAAC;AACR,IAAI,UAAU,EAAE;AAChB,MAAM,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAChE,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,IAAI;AACR,GAAG,CAAC;AACJ,EAAE,MAAM,EAAE;AACV,EAAE,OAAO,GAAG;AACZ;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/history/index.js"],"sourcesContent":["import { Queue } from '@bazariodev/coordination';\nimport { positive, validateQuery } from '../core/common.js';\n\nexport function createMemoryHistory(options) {\n if (!options || typeof options !== 'object' || Array.isArray(options))\n throw new TypeError('Memory history options are required');\n const { maxRecords } = options;\n if (maxRecords === undefined) throw new TypeError('maxRecords is required');\n if (Reflect.ownKeys(options).some((key) => key !== 'maxRecords'))\n throw new TypeError('Only maxRecords is supported for memory history');\n positive(maxRecords, 'maxRecords');\n const queue = new Queue();\n return Object.freeze({\n write(record) {\n if (queue.size === maxRecords) queue.dequeue();\n queue.enqueue(record);\n },\n async query(query) {\n const matches = validateQuery(query);\n return queue.toArray().filter(matches);\n },\n clear: () => queue.clear(),\n });\n}\n"],"names":["positive","Queue","validateQuery"],"mappings":";;;;;;AAGO,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACvE,IAAI,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC;AAC9D,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;AAChC,EAAE,IAAI,UAAU,KAAK,SAAS,EAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC;AAC7E,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,YAAY,CAAC;AAClE,IAAI,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC;AAC1E,EAAEA,eAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAIC,kBAAK,EAAE;AAC3B,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE;AACpD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC;AACL,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE;AACvB,MAAM,MAAM,OAAO,GAAGC,oBAAa,CAAC,KAAK,CAAC;AAC1C,MAAM,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5C,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE;AAC9B,GAAG,CAAC;AACJ;;"}
|
package/dist/history/index.d.cts
CHANGED
|
@@ -1,113 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
KeyValueStorage,
|
|
3
|
-
Logger,
|
|
4
|
-
Logging,
|
|
5
|
-
LoggingOptions,
|
|
6
|
-
LogSink,
|
|
7
|
-
LogSource,
|
|
8
|
-
LogStore,
|
|
9
|
-
Redactor,
|
|
10
|
-
} from "../index.cjs";
|
|
11
|
-
import type { IndexedDbLogStoreOptions } from "../indexeddb/index.cjs";
|
|
12
|
-
import type {
|
|
13
|
-
CopyRecordsOptions,
|
|
14
|
-
LogOverflowStrategy,
|
|
15
|
-
MemoryLogStoreOptions,
|
|
16
|
-
} from "../storage/contracts.cjs";
|
|
17
|
-
import type {
|
|
18
|
-
HISTORY_ERROR_CODES,
|
|
19
|
-
HISTORY_MODES,
|
|
20
|
-
HISTORY_STATES,
|
|
21
|
-
} from "./constants.cjs";
|
|
1
|
+
import type { LogQuery, LogRecord } from "../index.cjs";
|
|
22
2
|
|
|
23
|
-
export type {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export type LogHistoryMode = ValueOf<typeof HISTORY_MODES>;
|
|
33
|
-
export type LogHistoryStatus = Readonly<{
|
|
34
|
-
state: ValueOf<typeof HISTORY_STATES>;
|
|
35
|
-
requestedMode: LogHistoryMode;
|
|
36
|
-
activeMode: LogHistoryMode;
|
|
37
|
-
cleanupPending: boolean;
|
|
38
|
-
}>;
|
|
39
|
-
export type LogHistoryError = Error &
|
|
40
|
-
Readonly<{ code: ValueOf<typeof HISTORY_ERROR_CODES> }>;
|
|
41
|
-
export type LogHistorySession<TArea extends string> = Readonly<{
|
|
42
|
-
logging: Omit<Logging<TArea>, 'addSink' | 'stop' | 'reloadLevels'>;
|
|
43
|
-
source: LogSource;
|
|
44
|
-
redactor: Redactor;
|
|
45
|
-
}>;
|
|
46
|
-
export type HistoryStores = Readonly<{
|
|
47
|
-
createMemoryStore: (options: MemoryLogStoreOptions) => LogStore;
|
|
48
|
-
createIndexedDbStore: (
|
|
49
|
-
options: IndexedDbLogStoreOptions &
|
|
50
|
-
Readonly<{
|
|
51
|
-
databaseName: string;
|
|
52
|
-
allowUnprotected: false;
|
|
53
|
-
isRotationEnabled?: () => boolean;
|
|
54
|
-
}>,
|
|
55
|
-
) => LogStore;
|
|
56
|
-
validateStoreOptions: (options?: MemoryLogStoreOptions) => void;
|
|
57
|
-
copyRecords: (
|
|
58
|
-
from: LogSource,
|
|
59
|
-
to: Pick<LogStore, 'write' | 'flush'>,
|
|
60
|
-
options?: CopyRecordsOptions,
|
|
61
|
-
) => Promise<void>;
|
|
62
|
-
}>;
|
|
63
|
-
export type LogHistoryOptions<TArea extends string> = Readonly<{
|
|
64
|
-
lease: LogHistoryLease;
|
|
65
|
-
logging: Omit<
|
|
66
|
-
LoggingOptions<TArea>,
|
|
67
|
-
'redactor' | 'sinks' | 'levelStorage' | 'createRunId' | 'isActive'
|
|
68
|
-
>;
|
|
69
|
-
createRedactor: (historyKey: string) => Redactor;
|
|
70
|
-
stores: HistoryStores;
|
|
71
|
-
createSinks?: (redactor: Redactor) => readonly LogSink[];
|
|
72
|
-
initialMode?: LogHistoryMode;
|
|
73
|
-
databaseName?: string;
|
|
74
|
-
overflowStrategy?: LogOverflowStrategy;
|
|
75
|
-
onRotate?: (
|
|
76
|
-
snapshot: Readonly<{ source: LogSource; redactor: Redactor }>,
|
|
77
|
-
) => void | Promise<void>;
|
|
78
|
-
memory?: Omit<MemoryLogStoreOptions, 'overflowStrategy' | 'onRotate'>;
|
|
79
|
-
startup?:
|
|
80
|
-
| Omit<MemoryLogStoreOptions, 'overflowStrategy' | 'onRotate'>
|
|
81
|
-
| false;
|
|
82
|
-
persistent?: Omit<
|
|
83
|
-
IndexedDbLogStoreOptions,
|
|
84
|
-
| 'databaseName'
|
|
85
|
-
| 'indexedDB'
|
|
86
|
-
| 'allowUnprotected'
|
|
87
|
-
| 'overflowStrategy'
|
|
88
|
-
| 'onRotate'
|
|
89
|
-
| 'isRotationEnabled'
|
|
90
|
-
>;
|
|
91
|
-
storage?: KeyValueStorage;
|
|
92
|
-
indexedDB?: IDBFactory;
|
|
93
|
-
onChange?: (
|
|
94
|
-
session: LogHistorySession<TArea> | null,
|
|
95
|
-
status: LogHistoryStatus,
|
|
96
|
-
) => void;
|
|
97
|
-
onError?: (error: LogHistoryError) => void;
|
|
98
|
-
}>;
|
|
99
|
-
export type LogHistory<TArea extends string> = Readonly<{
|
|
100
|
-
getLogger: (area: TArea, scope: string) => Logger;
|
|
101
|
-
resume: (ownerId: string) => Promise<LogHistoryStatus>;
|
|
102
|
-
setOwner: (ownerId: string) => Promise<LogHistoryStatus>;
|
|
103
|
-
logout: () => Promise<LogHistoryStatus>;
|
|
104
|
-
setMode: (mode: LogHistoryMode) => Promise<LogHistoryStatus>;
|
|
105
|
-
clear: () => Promise<LogHistoryStatus>;
|
|
106
|
-
retryCleanup: () => Promise<LogHistoryStatus>;
|
|
107
|
-
getSession: () => LogHistorySession<TArea> | null;
|
|
108
|
-
getStatus: () => LogHistoryStatus;
|
|
109
|
-
stop: () => Promise<void>;
|
|
110
|
-
}>;
|
|
111
|
-
export declare function createLogHistory<TArea extends string>(
|
|
112
|
-
options: LogHistoryOptions<TArea>,
|
|
113
|
-
): LogHistory<TArea>;
|
|
3
|
+
export type MemoryHistoryOptions = Readonly<{ maxRecords: number }>;
|
|
4
|
+
export type MemoryHistory = Readonly<{
|
|
5
|
+
write(record: LogRecord): void;
|
|
6
|
+
query(query?: LogQuery): Promise<readonly LogRecord[]>;
|
|
7
|
+
clear(): void;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function createMemoryHistory(
|
|
10
|
+
options: MemoryHistoryOptions,
|
|
11
|
+
): MemoryHistory;
|
package/dist/history/index.d.ts
CHANGED
|
@@ -1,113 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
KeyValueStorage,
|
|
3
|
-
Logger,
|
|
4
|
-
Logging,
|
|
5
|
-
LoggingOptions,
|
|
6
|
-
LogSink,
|
|
7
|
-
LogSource,
|
|
8
|
-
LogStore,
|
|
9
|
-
Redactor,
|
|
10
|
-
} from '../index.js';
|
|
11
|
-
import type { IndexedDbLogStoreOptions } from '../indexeddb/index.js';
|
|
12
|
-
import type {
|
|
13
|
-
CopyRecordsOptions,
|
|
14
|
-
LogOverflowStrategy,
|
|
15
|
-
MemoryLogStoreOptions,
|
|
16
|
-
} from '../storage/contracts.js';
|
|
17
|
-
import type {
|
|
18
|
-
HISTORY_ERROR_CODES,
|
|
19
|
-
HISTORY_MODES,
|
|
20
|
-
HISTORY_STATES,
|
|
21
|
-
} from './constants.js';
|
|
1
|
+
import type { LogQuery, LogRecord } from '../index.js';
|
|
22
2
|
|
|
23
|
-
export type {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export type LogHistoryMode = ValueOf<typeof HISTORY_MODES>;
|
|
33
|
-
export type LogHistoryStatus = Readonly<{
|
|
34
|
-
state: ValueOf<typeof HISTORY_STATES>;
|
|
35
|
-
requestedMode: LogHistoryMode;
|
|
36
|
-
activeMode: LogHistoryMode;
|
|
37
|
-
cleanupPending: boolean;
|
|
38
|
-
}>;
|
|
39
|
-
export type LogHistoryError = Error &
|
|
40
|
-
Readonly<{ code: ValueOf<typeof HISTORY_ERROR_CODES> }>;
|
|
41
|
-
export type LogHistorySession<TArea extends string> = Readonly<{
|
|
42
|
-
logging: Omit<Logging<TArea>, 'addSink' | 'stop' | 'reloadLevels'>;
|
|
43
|
-
source: LogSource;
|
|
44
|
-
redactor: Redactor;
|
|
45
|
-
}>;
|
|
46
|
-
export type HistoryStores = Readonly<{
|
|
47
|
-
createMemoryStore: (options: MemoryLogStoreOptions) => LogStore;
|
|
48
|
-
createIndexedDbStore: (
|
|
49
|
-
options: IndexedDbLogStoreOptions &
|
|
50
|
-
Readonly<{
|
|
51
|
-
databaseName: string;
|
|
52
|
-
allowUnprotected: false;
|
|
53
|
-
isRotationEnabled?: () => boolean;
|
|
54
|
-
}>,
|
|
55
|
-
) => LogStore;
|
|
56
|
-
validateStoreOptions: (options?: MemoryLogStoreOptions) => void;
|
|
57
|
-
copyRecords: (
|
|
58
|
-
from: LogSource,
|
|
59
|
-
to: Pick<LogStore, 'write' | 'flush'>,
|
|
60
|
-
options?: CopyRecordsOptions,
|
|
61
|
-
) => Promise<void>;
|
|
62
|
-
}>;
|
|
63
|
-
export type LogHistoryOptions<TArea extends string> = Readonly<{
|
|
64
|
-
lease: LogHistoryLease;
|
|
65
|
-
logging: Omit<
|
|
66
|
-
LoggingOptions<TArea>,
|
|
67
|
-
'redactor' | 'sinks' | 'levelStorage' | 'createRunId' | 'isActive'
|
|
68
|
-
>;
|
|
69
|
-
createRedactor: (historyKey: string) => Redactor;
|
|
70
|
-
stores: HistoryStores;
|
|
71
|
-
createSinks?: (redactor: Redactor) => readonly LogSink[];
|
|
72
|
-
initialMode?: LogHistoryMode;
|
|
73
|
-
databaseName?: string;
|
|
74
|
-
overflowStrategy?: LogOverflowStrategy;
|
|
75
|
-
onRotate?: (
|
|
76
|
-
snapshot: Readonly<{ source: LogSource; redactor: Redactor }>,
|
|
77
|
-
) => void | Promise<void>;
|
|
78
|
-
memory?: Omit<MemoryLogStoreOptions, 'overflowStrategy' | 'onRotate'>;
|
|
79
|
-
startup?:
|
|
80
|
-
| Omit<MemoryLogStoreOptions, 'overflowStrategy' | 'onRotate'>
|
|
81
|
-
| false;
|
|
82
|
-
persistent?: Omit<
|
|
83
|
-
IndexedDbLogStoreOptions,
|
|
84
|
-
| 'databaseName'
|
|
85
|
-
| 'indexedDB'
|
|
86
|
-
| 'allowUnprotected'
|
|
87
|
-
| 'overflowStrategy'
|
|
88
|
-
| 'onRotate'
|
|
89
|
-
| 'isRotationEnabled'
|
|
90
|
-
>;
|
|
91
|
-
storage?: KeyValueStorage;
|
|
92
|
-
indexedDB?: IDBFactory;
|
|
93
|
-
onChange?: (
|
|
94
|
-
session: LogHistorySession<TArea> | null,
|
|
95
|
-
status: LogHistoryStatus,
|
|
96
|
-
) => void;
|
|
97
|
-
onError?: (error: LogHistoryError) => void;
|
|
98
|
-
}>;
|
|
99
|
-
export type LogHistory<TArea extends string> = Readonly<{
|
|
100
|
-
getLogger: (area: TArea, scope: string) => Logger;
|
|
101
|
-
resume: (ownerId: string) => Promise<LogHistoryStatus>;
|
|
102
|
-
setOwner: (ownerId: string) => Promise<LogHistoryStatus>;
|
|
103
|
-
logout: () => Promise<LogHistoryStatus>;
|
|
104
|
-
setMode: (mode: LogHistoryMode) => Promise<LogHistoryStatus>;
|
|
105
|
-
clear: () => Promise<LogHistoryStatus>;
|
|
106
|
-
retryCleanup: () => Promise<LogHistoryStatus>;
|
|
107
|
-
getSession: () => LogHistorySession<TArea> | null;
|
|
108
|
-
getStatus: () => LogHistoryStatus;
|
|
109
|
-
stop: () => Promise<void>;
|
|
110
|
-
}>;
|
|
111
|
-
export declare function createLogHistory<TArea extends string>(
|
|
112
|
-
options: LogHistoryOptions<TArea>,
|
|
113
|
-
): LogHistory<TArea>;
|
|
3
|
+
export type MemoryHistoryOptions = Readonly<{ maxRecords: number }>;
|
|
4
|
+
export type MemoryHistory = Readonly<{
|
|
5
|
+
write(record: LogRecord): void;
|
|
6
|
+
query(query?: LogQuery): Promise<readonly LogRecord[]>;
|
|
7
|
+
clear(): void;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function createMemoryHistory(
|
|
10
|
+
options: MemoryHistoryOptions,
|
|
11
|
+
): MemoryHistory;
|