screw-up 1.27.0 → 1.28.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["module","exports"],"sources":["../node_modules/async-primitives/dist/index.mjs","../src/generated/packageMetadata.ts","../node_modules/json5/dist/index.js","../node_modules/dayjs/dayjs.min.js","../src/internal.ts","../src/fast-tags.ts","../src/git-operations.ts","../src/analyzer.ts","../src/default-import-fix.ts","../src/metadata-file.ts","../src/vite-plugin.ts","../src/index.ts"],"sourcesContent":["/*!\n * name: async-primitives\n * version: 1.5.0\n * description: A collection of primitive functions for asynchronous operations\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/async-primitives.git\n * git.commit.hash: cd35465b7e9b9945049186e7eaeecc0bfba65766\n */\nconst __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst toAbortError = (reason) => {\n if (reason instanceof Error) {\n return reason;\n }\n if (typeof reason === \"string\") {\n return new Error(reason);\n }\n return new Error(\"Operation aborted\");\n};\nconst onAbort = (signal, callback) => {\n if (!signal) {\n return __NOOP_RELEASABLE;\n }\n if (signal.aborted) {\n try {\n callback(toAbortError(signal.reason));\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n return __NOOP_RELEASABLE;\n }\n let abortHandler;\n abortHandler = () => {\n if (abortHandler) {\n const reason = signal.reason;\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n try {\n callback(toAbortError(reason));\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n }\n };\n const release = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n }\n };\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n const handle = {\n release,\n [Symbol.dispose]: release\n };\n return handle;\n};\nconst delay = (msec, signal) => {\n if (signal) {\n if (signal.aborted) {\n throw new Error(\"Delay was aborted\");\n }\n return new Promise((resolve, reject) => {\n const abortHandle = onAbort(signal, () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Delay was aborted\"));\n });\n const timeoutId = setTimeout(() => {\n abortHandle.release();\n resolve();\n }, msec);\n });\n } else {\n return new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n }\n};\nconst defer = (fn) => {\n if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n setTimeout(fn, 0);\n }\n};\nconst ABORTED_ERROR$2 = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createMutex = (maxConsecutiveCalls = 20) => {\n let isLocked = false;\n const queue = [];\n let count = 0;\n const processQueue = () => {\n var _a;\n if (isLocked || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$2());\n scheduleNextProcess();\n return;\n }\n isLocked = true;\n const lockHandle = createLockHandle(releaseLock);\n item.resolve(lockHandle);\n };\n const scheduleNextProcess = () => {\n count++;\n if (count >= maxConsecutiveCalls) {\n count = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseLock = () => {\n if (!isLocked) {\n return;\n }\n isLocked = false;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const lock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$2();\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$2());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n lock,\n waiter: {\n wait: lock\n },\n get isLocked() {\n return isLocked;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst createDeferred = (signal) => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const disposer = onAbort(signal, () => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n _reject(new Error(\"Deferred aborted\"));\n }\n });\n return {\n // The promise that resolves to the result\n promise,\n // Resolve the promise with a result\n resolve: (value) => {\n const _resolve = resolve;\n if (_resolve) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _resolve(value);\n }\n },\n // Reject the promise with an error\n reject: (error) => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _reject(error);\n }\n }\n };\n};\nconst __NOOP_DUMMY_HANDLE = {\n get isActive() {\n return false;\n },\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst createConditional = () => {\n const waiters = [];\n const trigger = () => {\n if (waiters.length >= 1) {\n waiters.shift().resolve();\n }\n };\n const wait = async (signal) => {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createManuallyConditional = (initialState) => {\n const waiters = [];\n let raised = initialState != null ? initialState : false;\n const trigger = () => {\n raised = false;\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve();\n raised = false;\n }\n };\n const raise = () => {\n while (waiters.length >= 1) {\n raised = true;\n waiters.shift().resolve();\n }\n raised = true;\n };\n const drop = () => {\n raised = false;\n };\n const wait = async (signal) => {\n if (raised) {\n return __NOOP_DUMMY_HANDLE;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n raise,\n drop,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createDeferredGenerator = (options) => {\n const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n const signal = options == null ? void 0 : options.signal;\n const queue = [];\n const arrived = createManuallyConditional();\n const canReserve = maxItemReserved ? createManuallyConditional(true) : void 0;\n const generator = (async function* () {\n while (true) {\n while (true) {\n const item = queue.shift();\n if (maxItemReserved && queue.length === maxItemReserved - 1) {\n canReserve.raise();\n }\n if (!item) {\n break;\n }\n switch (item.kind) {\n // Yield return a value\n case \"value\":\n yield item.value;\n break;\n // Completed, exit the generator\n case \"completed\":\n return;\n // Error, throw an error\n case \"error\":\n throw item.error;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Deferred generator aborted\");\n }\n }\n arrived.drop();\n try {\n await arrived.wait(signal);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n })();\n const enqueue = async (item, signal2) => {\n while (true) {\n if (!maxItemReserved || queue.length < maxItemReserved) {\n const remains = queue.push(item);\n if (remains === 1) {\n arrived.raise();\n }\n if (remains === maxItemReserved) {\n canReserve.drop();\n }\n break;\n }\n try {\n await canReserve.wait(signal2);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n };\n return {\n // The async generator that yields values\n generator,\n // Yield a value to the generator\n yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n // Complete the generator (equivalent to return)\n return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n // Throw an error to the generator\n throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n };\n};\nconst createLogicalContext = (id) => {\n return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n const previousLogicalContext = currentLogicalContext;\n currentLogicalContext = adjustment.contextToUse;\n try {\n return callback.call(thisArg, ...args);\n } finally {\n adjustment.contextAfter = currentLogicalContext;\n currentLogicalContext = previousLogicalContext;\n }\n};\nlet isPrepared = false;\nconst prepare = () => {\n if (isPrepared) {\n return;\n }\n isPrepared = true;\n if (typeof globalThis.setTimeout !== \"undefined\") {\n const __setTimeout = globalThis.setTimeout;\n globalThis.setTimeout = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setTimeout(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.setInterval !== \"undefined\") {\n const __setInterval = globalThis.setInterval;\n globalThis.setInterval = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setInterval(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.queueMicrotask !== \"undefined\") {\n const __queueMicrotask = globalThis.queueMicrotask;\n globalThis.queueMicrotask = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __queueMicrotask(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0);\n });\n };\n }\n if (typeof globalThis.setImmediate !== \"undefined\") {\n const __setImmediate = globalThis.setImmediate;\n globalThis.setImmediate = ((callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setImmediate(\n (...callbackArgs) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...callbackArgs);\n },\n ...args\n );\n });\n }\n if (typeof process !== \"undefined\" && process.nextTick) {\n const __nextTick = process.nextTick;\n process.nextTick = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __nextTick(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...args);\n });\n };\n }\n if (typeof Promise !== \"undefined\") {\n const __then = Promise.prototype.then;\n const __catch = Promise.prototype.catch;\n const __finally = Promise.prototype.finally;\n Promise.prototype.then = function(onFulfilled, onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __then.call(\n this,\n onFulfilled ? (value) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFulfilled, void 0, value);\n } : void 0,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.catch = function(onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __catch.call(\n this,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.finally = function(onFinally) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __finally.call(\n this,\n onFinally ? () => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFinally, void 0);\n } : void 0\n );\n return resultPromise;\n };\n }\n if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n const __elementAddEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n const __requestAnimationFrame = globalThis.requestAnimationFrame;\n globalThis.requestAnimationFrame = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __requestAnimationFrame((time) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, time);\n });\n };\n }\n if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n const __XMLHttpRequest = globalThis.XMLHttpRequest;\n globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n constructor() {\n super();\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onreadystatechange\",\n \"onloadstart\",\n \"onprogress\",\n \"onabort\",\n \"onerror\",\n \"onload\",\n \"ontimeout\",\n \"onloadend\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.WebSocket !== \"undefined\") {\n const __WebSocket = globalThis.WebSocket;\n globalThis.WebSocket = class extends __WebSocket {\n constructor(url, protocols) {\n super(url, protocols);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onopen\",\n \"onmessage\",\n \"onerror\",\n \"onclose\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MutationObserver !== \"undefined\") {\n const __MutationObserver = globalThis.MutationObserver;\n globalThis.MutationObserver = class extends __MutationObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (mutations, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(\n adjustment,\n callback,\n void 0,\n mutations,\n observer\n );\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.ResizeObserver !== \"undefined\") {\n const __ResizeObserver = globalThis.ResizeObserver;\n globalThis.ResizeObserver = class extends __ResizeObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n const __IntersectionObserver = globalThis.IntersectionObserver;\n globalThis.IntersectionObserver = class extends __IntersectionObserver {\n constructor(callback, options) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback, options);\n }\n };\n }\n if (typeof globalThis.Worker !== \"undefined\") {\n const __Worker = globalThis.Worker;\n globalThis.Worker = class extends __Worker {\n constructor(scriptURL, options) {\n super(scriptURL, options);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onmessage\",\n \"onmessageerror\",\n \"onerror\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MessagePort !== \"undefined\") {\n const __MessagePort = globalThis.MessagePort;\n const createMessagePortWrapper = (originalPort) => {\n const _userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(originalPort, prop, {\n get: () => _userHandlers.get(prop) || null,\n set: (newHandler) => {\n _userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, wrappedHandler);\n }\n } else {\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, null);\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n const originalAddEventListener = originalPort.addEventListener;\n originalPort.addEventListener = function(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return originalAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n return originalPort;\n };\n if (typeof globalThis.MessageChannel !== \"undefined\") {\n const __MessageChannel = globalThis.MessageChannel;\n globalThis.MessageChannel = class extends __MessageChannel {\n constructor() {\n super();\n createMessagePortWrapper(this.port1);\n createMessagePortWrapper(this.port2);\n }\n };\n }\n }\n};\nconst setLogicalContextValue = (key, value) => {\n prepare();\n if (value !== void 0) {\n currentLogicalContext.data.set(key, value);\n } else {\n currentLogicalContext.data.delete(key);\n }\n};\nconst getLogicalContextValue = (key) => {\n prepare();\n return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n const previousLogicalContext = currentLogicalContext;\n setCurrentLogicalContext(\n createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`))\n );\n try {\n return handler();\n } finally {\n setCurrentLogicalContext(previousLogicalContext);\n }\n};\nconst getCurrentLogicalContextId = () => {\n prepare();\n return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n const key = Symbol(`async-local-${crypto.randomUUID()}`);\n return {\n setValue: (value) => {\n setLogicalContextValue(key, value);\n },\n getValue: () => {\n return getLogicalContextValue(key);\n }\n };\n};\nconst ABORTED_ERROR$1 = () => new Error(\"Semaphore acquisition was aborted\");\nconst INVALID_COUNT_ERROR = () => new Error(\"Semaphore count must be greater than 0\");\nconst createSemaphoreHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createSemaphore = (count, maxConsecutiveCalls = 20) => {\n if (count < 1) {\n throw INVALID_COUNT_ERROR();\n }\n let availableCount = count;\n const queue = [];\n let consecutiveCallCount = 0;\n const processQueue = () => {\n var _a;\n while (availableCount > 0 && queue.length > 0) {\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$1());\n continue;\n }\n availableCount--;\n const semaphoreHandle = createSemaphoreHandle(releaseSemaphore);\n item.resolve(semaphoreHandle);\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseSemaphore = () => {\n availableCount++;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const acquire = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$1();\n }\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$1());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n acquire,\n waiter: {\n wait: acquire\n },\n get availableCount() {\n return availableCount;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createReadLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createWriteLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nfunction createReaderWriterLock(optionsOrMaxCalls) {\n var _a, _b;\n let policy = \"write-preferring\";\n let maxConsecutiveCalls = 20;\n if (typeof optionsOrMaxCalls === \"number\") {\n maxConsecutiveCalls = optionsOrMaxCalls;\n } else if (optionsOrMaxCalls) {\n policy = (_a = optionsOrMaxCalls.policy) != null ? _a : \"write-preferring\";\n maxConsecutiveCalls = (_b = optionsOrMaxCalls.maxConsecutiveCalls) != null ? _b : 20;\n }\n let currentReaders = 0;\n let hasWriter = false;\n const readQueue = [];\n const writeQueue = [];\n let consecutiveCallCount = 0;\n const processQueues = () => {\n var _a2, _b2, _c, _d;\n if (policy === \"write-preferring\") {\n if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_a2 = item.signal) == null ? void 0 : _a2.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n } else if (!hasWriter && writeQueue.length === 0 && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_b2 = item.signal) == null ? void 0 : _b2.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n }\n } else {\n if (!hasWriter && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_c = item.signal) == null ? void 0 : _c.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n } else if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_d = item.signal) == null ? void 0 : _d.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n }\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueues);\n } else {\n processQueues();\n }\n };\n const releaseReadLock = () => {\n if (currentReaders > 0) {\n currentReaders--;\n if (currentReaders === 0) {\n scheduleNextProcess();\n }\n }\n };\n const releaseWriteLock = () => {\n if (hasWriter) {\n hasWriter = false;\n scheduleNextProcess();\n }\n };\n const removeFromReadQueue = (item) => {\n const index = readQueue.indexOf(item);\n if (index !== -1) {\n readQueue.splice(index, 1);\n }\n };\n const removeFromWriteQueue = (item) => {\n const index = writeQueue.indexOf(item);\n if (index !== -1) {\n writeQueue.splice(index, 1);\n }\n };\n const readLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromReadQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n readQueue.push(queueItem);\n processQueues();\n });\n } else {\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n readQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const writeLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromWriteQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n writeQueue.push(queueItem);\n processQueues();\n });\n } else {\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n writeQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const readWaiter = {\n wait: readLock\n };\n const writeWaiter = {\n wait: writeLock\n };\n return {\n readLock,\n writeLock,\n readWaiter,\n writeWaiter,\n get currentReaders() {\n return currentReaders;\n },\n get hasWriter() {\n return hasWriter;\n },\n get pendingReadersCount() {\n return readQueue.length;\n },\n get pendingWritersCount() {\n return writeQueue.length;\n }\n };\n}\nexport {\n createAsyncLocal,\n createMutex as createAsyncLock,\n createConditional,\n createDeferred,\n createDeferredGenerator,\n createManuallyConditional,\n createManuallyConditional as createManuallySignal,\n createMutex,\n createReaderWriterLock,\n createSemaphore,\n createConditional as createSignal,\n defer,\n delay,\n getCurrentLogicalContextId,\n getLogicalContextValue,\n onAbort,\n runOnNewLogicalContext,\n setLogicalContextValue\n};\n//# sourceMappingURL=index.mjs.map\n","// @ts-nocheck\n// This file is auto-generated by screw-up plugin\n// Do not edit manually\n\nexport const name = \"screw-up\";\nexport const version = \"1.27.0\";\nexport const description = \"Simply package metadata inserter on Vite plugin\";\nexport const author = \"Kouji Matsui (@kekyo@mi.kekyo.net)\";\nexport const license = \"MIT\";\nexport const repository_url = \"https://github.com/kekyo/screw-up.git\";\nexport const git_commit_hash = \"eb1634007fc12b0ddd13928d7688758bdfe32624\";\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.JSON5 = factory());\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, join } from 'path';\nimport { glob } from 'glob';\nimport JSON5 from 'json5';\nimport dayjs from 'dayjs';\nimport { PackageMetadata } from './types';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Logger interface\n */\nexport interface Logger {\n /**\n * Log an debug message\n * @param msg - The message to log\n */\n readonly debug: (msg: string) => void;\n /**\n * Log an info message\n * @param msg - The message to log\n */\n readonly info: (msg: string) => void;\n /**\n * Log a warning message\n * @param msg - The message to log\n */\n readonly warn: (msg: string) => void;\n /**\n * Log an error message\n * @param msg - The message to log\n */\n readonly error: (msg: string) => void;\n}\n\n/**\n * Default console logger implementation\n * @param prefix - Log prefix\n * @param driver - Console logging driver instance\n */\nexport const createConsoleLogger = (prefix?: string, driver?: any): Logger => {\n const d = driver?.debug ?? (() => {});\n const i = driver?.info ?? globalThis.console.info;\n const w = driver?.warn ?? globalThis.console.warn;\n const e = driver?.error ?? globalThis.console.error;\n if (prefix) {\n return {\n debug: (msg: string) => d(`[${prefix}]: ${msg}`),\n info: (msg: string) => i(`[${prefix}]: ${msg}`),\n warn: (msg: string) => w(`[${prefix}]: ${msg}`),\n error: (msg: string) => e(`[${prefix}]: ${msg}`),\n };\n } else {\n return {\n debug: (msg: string) => d(`${msg}`),\n info: (msg: string) => i(`${msg}`),\n warn: (msg: string) => w(`${msg}`),\n error: (msg: string) => e(`${msg}`),\n };\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Result of package resolution with source tracking\n * @template T - Type of the package metadata\n */\nexport interface PackageResolutionResult<T> {\n readonly metadata: T;\n readonly sourceMap: Map<string, string>;\n}\n\n/**\n * Workspace sibling project information\n */\nexport interface WorkspaceSibling {\n readonly name: string;\n readonly version: string;\n readonly path: string;\n}\n\nconst collectStringArray = (value: unknown): string[] | undefined => {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entries = value.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n\n return entries.length > 0 ? entries : undefined;\n};\n\nconst resolveWorkspacePatternsFromPackageJson = (\n packageJson: any\n): string[] | undefined => {\n const directPatterns = collectStringArray(packageJson?.workspaces);\n if (directPatterns) {\n return directPatterns;\n }\n\n return collectStringArray(packageJson?.workspaces?.packages);\n};\n\nconst parseYamlScalar = (value: string): string | undefined => {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n try {\n const parsed = JSON5.parse(trimmed);\n return typeof parsed === 'string' ? parsed : undefined;\n } catch {\n const commentIndex = trimmed.indexOf(' #');\n const withoutComment =\n commentIndex >= 0 ? trimmed.slice(0, commentIndex).trim() : trimmed;\n return withoutComment || undefined;\n }\n};\n\nconst parsePnpmWorkspacePatterns = (content: string): string[] => {\n const patterns: string[] = [];\n const lines = content.split(/\\r?\\n/);\n\n let inPackagesSection = false;\n let packagesIndent = -1;\n\n for (const rawLine of lines) {\n const line = rawLine.replace(/\\t/g, ' ');\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const indent = line.length - line.trimStart().length;\n if (!inPackagesSection) {\n const match = trimmed.match(/^packages\\s*:\\s*(.*)$/);\n if (!match) {\n continue;\n }\n\n const remaining = match[1].trim();\n if (remaining) {\n const parsed = JSON5.parse(remaining);\n if (Array.isArray(parsed)) {\n const inlinePatterns = parsed.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n patterns.push(...inlinePatterns);\n }\n break;\n }\n\n inPackagesSection = true;\n packagesIndent = indent;\n continue;\n }\n\n if (indent <= packagesIndent && !trimmed.startsWith('-')) {\n break;\n }\n\n const match = trimmed.match(/^-\\s*(.+)$/);\n if (!match) {\n continue;\n }\n\n const pattern = parseYamlScalar(match[1]);\n if (pattern) {\n patterns.push(pattern);\n }\n }\n\n return patterns;\n};\n\nconst resolveWorkspacePatterns = async (\n workspaceRoot: string,\n logger: Logger\n): Promise<string[]> => {\n try {\n const rootPackageJsonPath = join(workspaceRoot, 'package.json');\n if (existsSync(rootPackageJsonPath)) {\n const content = await readFile(rootPackageJsonPath, 'utf-8');\n const rootPackageJson = JSON5.parse(content);\n const workspacePatterns =\n resolveWorkspacePatternsFromPackageJson(rootPackageJson);\n if (workspacePatterns?.length) {\n return workspacePatterns;\n }\n }\n\n const pnpmWorkspacePath = join(workspaceRoot, 'pnpm-workspace.yaml');\n if (!existsSync(pnpmWorkspacePath)) {\n return [];\n }\n\n const pnpmWorkspaceContent = await readFile(pnpmWorkspacePath, 'utf-8');\n return parsePnpmWorkspacePatterns(pnpmWorkspaceContent);\n } catch (error) {\n logger.warn(\n `Failed to resolve workspace patterns from ${workspaceRoot}: ${error}`\n );\n return [];\n }\n};\n\n/**\n * Recursively flatten an object into dot-notation key-value pairs\n * @param obj - Object to flatten\n * @param prefix - Current key prefix\n * @param map - Store key-value entries into this\n */\nconst flattenObject = (obj: any, prefix: string, map: PackageMetadata) => {\n for (const [key, value] of Object.entries(obj)) {\n if (!value) continue;\n const fullKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'string') {\n map[fullKey] = value;\n } else if (Array.isArray(value)) {\n map[fullKey] = value.map((v) => String(v)).join(',');\n } else if (typeof value === 'object') {\n // Recursively flatten nested objects\n flattenObject(value, fullKey, map);\n } else {\n // Convert other types to string\n map[fullKey] = String(value);\n }\n }\n};\n\n/**\n * Find workspace root by looking for workspace configuration files\n * @param startPath - Starting directory path\n * @param logger - Logger instance\n * @returns Promise resolving to workspace root path or undefined if not found\n */\nexport const findWorkspaceRoot = async (\n startPath: string,\n logger: Logger\n): Promise<string | undefined> => {\n let currentPath = startPath;\n\n while (currentPath !== dirname(currentPath)) {\n const packageJsonPath = join(currentPath, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON5.parse(content);\n\n // Check for workspace configurations\n if (\n packageJson.workspaces ||\n existsSync(join(currentPath, 'pnpm-workspace.yaml')) ||\n existsSync(join(currentPath, 'lerna.json'))\n ) {\n return currentPath;\n }\n } catch (error) {\n logger.warn(\n `Failed to parse package.json at ${packageJsonPath}: ${error}`\n );\n }\n }\n\n currentPath = dirname(currentPath);\n }\n\n return undefined;\n};\n\n/**\n * Collect workspace sibling projects\n * @param workspaceRoot - Workspace root directory\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)\n */\nexport const collectWorkspaceSiblings = async (\n workspaceRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<Map<string, WorkspaceSibling>> => {\n const siblings = new Map<string, WorkspaceSibling>();\n\n try {\n const workspacePatterns = await resolveWorkspacePatterns(\n workspaceRoot,\n logger\n );\n if (workspacePatterns.length <= 0) {\n return siblings;\n }\n\n // Find all workspace directories\n const workspaceDirs = new Set<string>();\n for (const pattern of workspacePatterns) {\n const matches = await glob(pattern, {\n cwd: workspaceRoot,\n });\n matches.forEach((match) => workspaceDirs.add(match));\n }\n\n // Read package.json from each workspace directory\n for (const workspaceDir of workspaceDirs) {\n const packageJsonPath = join(workspaceRoot, workspaceDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packagePath = join(workspaceRoot, workspaceDir);\n\n // Use resolveRawPackageJsonObject to get the resolved version with Git tag consideration\n const resolvedPackage = await resolveRawPackageJsonObject(\n packagePath,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n const packageJson = resolvedPackage.metadata;\n\n if (packageJson.name && packageJson.version) {\n siblings.set(packageJson.name, {\n name: packageJson.name,\n version: packageJson.version,\n path: packagePath,\n });\n }\n } catch (error) {\n logger.warn(\n `Failed to resolve package.json from ${packageJsonPath}: ${error}`\n );\n }\n }\n }\n } catch (error) {\n logger.warn(\n `Failed to collect workspace siblings from ${workspaceRoot}: ${error}`\n );\n }\n\n return siblings;\n};\n\n/**\n * Replace \"*\" wildcards in peerDependencies with actual workspace sibling versions\n * @param packageJson - Package.json object to modify\n * @param siblings - Map of workspace sibling projects\n * @param versionPrefix - Version prefix to add (e.g., \"^\", \"~\", \"\")\n * @returns Modified package.json object\n */\nexport const replacePeerDependenciesWildcards = (\n packageJson: any,\n siblings: Map<string, WorkspaceSibling>,\n versionPrefix: string\n): any => {\n // Deep clone the package.json to avoid modifying the original\n const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));\n\n if (\n !modifiedPackageJson.peerDependencies ||\n typeof modifiedPackageJson.peerDependencies !== 'object'\n ) {\n return modifiedPackageJson;\n }\n\n // Process each peer dependency\n for (const [depName, depVersion] of Object.entries(\n modifiedPackageJson.peerDependencies\n )) {\n if (depVersion === '*' && siblings.has(depName)) {\n const sibling = siblings.get(depName)!;\n modifiedPackageJson.peerDependencies[depName] =\n `${versionPrefix}${sibling.version}`;\n }\n }\n\n return modifiedPackageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Merge package metadata with inheritance (child overrides parent)\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package metadata\n * @param childMetadata - Child package metadata\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @returns Merged package metadata\n */\nexport const mergePackageMetadata = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n sourceMap: Map<string, string>,\n parentMetadata: PackageMetadata,\n childMetadata: PackageMetadata,\n parentSourceDir: string,\n childSourceDir: string,\n _repositoryPath: string\n): Promise<PackageMetadata> => {\n // Fetch git metadata\n const metadata = await fetchGitMetadata();\n\n const merged: PackageMetadata = {};\n flattenObject(metadata, '', merged);\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && metadata.version) {\n merged.version = metadata.version;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n/**\n * Merge raw package.json objects with inheritance (child overrides parent)\n * Only inherits package metadata fields, not project-specific configurations\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package object\n * @param childMetadata - Child package object\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @param repositoryPath - Path to Git repository root\n * @returns Merged package object with only metadata fields\n */\nconst mergeRawPackageJson = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n sourceMap: Map<string, string>,\n parentMetadata: any,\n childMetadata: any,\n parentSourceDir: string,\n childSourceDir: string,\n repositoryPath: string\n): Promise<any> => {\n // Fetch git metadata\n const gitMetadata = await fetchGitMetadata();\n const merged = { ...gitMetadata };\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n if (inheritableFields.has(key)) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && gitMetadata.version) {\n merged.version = gitMetadata.version;\n sourceMap.set('version', repositoryPath); // Mark as Git-sourced\n }\n\n if (!merged.version) {\n merged.version = '0.0.1';\n const gitInfo =\n typeof merged.git === 'object' && merged.git !== null ? merged.git : {};\n gitInfo.version = gitInfo.version ?? merged.version;\n gitInfo.commit = gitInfo.commit ?? {\n hash: 'unknown',\n shortHash: 'unknown',\n };\n gitInfo.tags = gitInfo.tags ?? [];\n gitInfo.branches = gitInfo.branches ?? [];\n merged.git = gitInfo;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param logger - Logger instance\n * @param readPackageMetadataFn - Function to read package metadata\n * @param mergePackageMetadataFn - Function to merge package metadata\n * @returns Promise resolving to resolved package metadata\n */\nconst resolvePackageMetadataT = async <T>(\n projectRoot: string,\n logger: Logger,\n readPackageMetadataFn: (path: string) => Promise<T>,\n mergePackageMetadataFn: (\n a: T,\n b: T,\n aDir: string,\n bDir: string,\n repositoryPath: string\n ) => Promise<T>\n): Promise<T> => {\n const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);\n\n if (!workspaceRoot) {\n // No workspace, just read local package.json\n const localPackagePath = join(projectRoot, 'package.json');\n const localMetadata = await readPackageMetadataFn(localPackagePath);\n return mergePackageMetadataFn(\n {} as T,\n localMetadata,\n '', // dummy\n projectRoot,\n projectRoot\n );\n }\n\n const projectPackagePath = join(projectRoot, 'package.json');\n\n // Start with root package metadata\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const metadata = await readPackageMetadataFn(rootPackagePath);\n\n // If current project is not the root, merge with project-specific metadata\n if (\n projectPackagePath !== rootPackagePath &&\n existsSync(projectPackagePath)\n ) {\n const projectMetadata = await readPackageMetadataFn(projectPackagePath);\n return mergePackageMetadataFn(\n metadata,\n projectMetadata,\n workspaceRoot,\n projectRoot,\n projectRoot\n );\n } else {\n return mergePackageMetadataFn(\n {} as T,\n metadata,\n '', // dummy\n workspaceRoot,\n projectRoot\n );\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Read and parse package.json file\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to package metadata\n */\nconst readPackageMetadata = async (\n logger: Logger,\n packagePath: string\n): Promise<PackageMetadata> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n const json = JSON5.parse(content);\n const map: PackageMetadata = {};\n flattenObject(json, '', map);\n return map;\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n return {};\n }\n};\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param logger - Logger instance\n * @returns Promise resolving to resolved package metadata\n */\nexport const resolvePackageMetadata = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n logger: Logger\n): Promise<PackageResolutionResult<PackageMetadata>> => {\n const sourceMap = new Map<string, string>();\n const metadata = await resolvePackageMetadataT<PackageMetadata>(\n projectRoot,\n logger,\n readPackageMetadata.bind(undefined, logger),\n mergePackageMetadata.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n sourceMap\n )\n );\n\n return {\n metadata,\n sourceMap,\n };\n};\n\n/**\n * Read and parse package.json file without flattening\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to raw package object\n */\nconst readRawPackageJson = async (\n logger: Logger,\n packagePath: string,\n ignoreNotExist: boolean = false\n): Promise<any> => {\n if (ignoreNotExist && !existsSync(packagePath)) {\n return {};\n }\n try {\n const content = await readFile(packagePath, 'utf-8');\n return JSON5.parse(content);\n } catch (error) {\n if (ignoreNotExist && (error as any)?.code === 'ENOENT') {\n return {};\n }\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n throw error;\n }\n};\n\n/**\n * Resolve raw package.json for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to resolved raw package.json object with source tracking\n */\nexport const resolveRawPackageJsonObject = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger,\n ignoreNotExist: boolean = false\n): Promise<PackageResolutionResult<any>> => {\n const sourceMap = new Map<string, string>();\n const readRawPackageJsonFn = async (packagePath: string) =>\n readRawPackageJson(logger, packagePath, ignoreNotExist);\n const packageJson = await resolvePackageMetadataT<any>(\n projectRoot,\n logger,\n readRawPackageJsonFn,\n mergeRawPackageJson.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n sourceMap\n )\n );\n\n return {\n metadata: packageJson,\n sourceMap,\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { readdir, readFile, stat } from 'fs/promises';\nimport { isAbsolute, join } from 'path';\nimport type { Logger } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Fast tag listing implementation that reads tags directly from filesystem\n * instead of using isomorphic-git's `listTags`\n */\n\n/**\n * Parse packed-refs file to extract tags\n * @param packedRefsPath - Path to packed-refs file\n * @returns Array of tag names\n */\nconst parsePackedRefs = async (packedRefsPath: string): Promise<string[]> => {\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n const tags: string[] = [];\n\n for (const line of lines) {\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Format: <hash> refs/tags/<tagname>\n const match = line.match(/^[0-9a-f]{40}\\s+refs\\/tags\\/(.+)$/);\n if (match) {\n // Handle peeled tags (annotated tags) marked with ^{}\n const tagName = match[1];\n if (!tagName.endsWith('^{}')) {\n tags.push(tagName);\n }\n }\n }\n\n return tags;\n } catch (error) {\n // packed-refs might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Read loose tag refs from refs/tags directory\n * @param refsTagsPath - Path to refs/tags directory\n * @returns Array of tag names\n */\nconst readLooseTags = async (refsTagsPath: string): Promise<string[]> => {\n try {\n const entries = await readdir(refsTagsPath, { withFileTypes: true });\n const tags: string[] = [];\n\n for (const entry of entries) {\n if (entry.isFile()) {\n tags.push(entry.name);\n }\n }\n\n return tags;\n } catch (error) {\n // refs/tags might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Fast implementation of listTags that reads directly from filesystem\n * @param repoPath - Repository path\n * @returns Array of all tag names\n */\nexport const listTagsFast = async (repoPath: string): Promise<string[]> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n // Read the actual git dir location from .git file\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Read tags from both packed-refs and loose refs\n const [packedTags, looseTags] = await Promise.all([\n parsePackedRefs(join(actualGitDir, 'packed-refs')),\n readLooseTags(join(actualGitDir, 'refs', 'tags')),\n ]);\n\n // Combine and deduplicate tags\n const allTags = new Set<string>([...packedTags, ...looseTags]);\n\n // Sort tags for consistent output (matching git.listTags behavior)\n return Array.from(allTags).sort();\n};\n\n/**\n * Get hash for a specific tag by reading refs directly\n * @param repoPath - Repository path\n * @param tagName - Name of the tag\n * @returns The SHA-1 hash the tag points to, or null if not found\n */\nexport const resolveTagFast = async (\n repoPath: string,\n tagName: string\n): Promise<string | null> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // First try loose ref\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n return hash.trim();\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then try packed-refs\n const packedRefsPath = join(actualGitDir, 'packed-refs');\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Check if this line is for our tag\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && match[2] === tagName) {\n // Check if next line is a peeled ref (^{})\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // Return the peeled ref (points directly to commit)\n return lines[i + 1].substring(1, 41);\n }\n // Return the tag object hash\n return match[1];\n }\n }\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n return null;\n};\n\n/**\n * Batch resolve multiple tags for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to hash\n */\nexport const resolveTagsBatch = async (\n repoPath: string,\n tagNames: string[]\n): Promise<Map<string, string>> => {\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, string>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n // Check for peeled ref\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n result.set(match[2], lines[i + 1].substring(1, 41));\n } else {\n result.set(match[2], match[1]);\n }\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n result.set(tagName, hash.trim());\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n\n return result;\n};\n\n/**\n * Batch resolve multiple tags with their commit hashes for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to {oid, commitOid}\n */\nexport const resolveTagsBatchWithCommit = async (\n repoPath: string,\n tagNames: string[],\n logger: Logger\n): Promise<Map<string, { oid: string; commitOid: string }>> => {\n const startTime = Date.now();\n\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, { oid: string; commitOid: string }>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n const packedRefsStart = Date.now();\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n const tagName = match[2];\n const oid = match[1];\n\n // Check for peeled ref on next line\n let commitOid = oid; // Default: assume lightweight tag\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // This is an annotated tag, next line has the commit\n commitOid = lines[i + 1].substring(1, 41);\n }\n\n result.set(tagName, { oid, commitOid });\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n logger.debug(\n `[fast-tags] read packed-refs: ${Date.now() - packedRefsStart}ms`\n );\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n if (remainingTags.length > 0) {\n const looseRefsStart = Date.now();\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n const oid = hash.trim();\n\n // Check if this is an annotated tag by reading the object type\n let commitOid = oid;\n try {\n // Use git cat-file to check object type\n const { execSync } = require('child_process');\n const objectType = execSync(\n `git -C \"${repoPath}\" cat-file -t ${oid}`,\n { encoding: 'utf-8' }\n ).trim();\n\n if (objectType === 'tag') {\n // It's an annotated tag, extract the commit it points to\n const tagContent = execSync(\n `git -C \"${repoPath}\" cat-file -p ${oid}`,\n { encoding: 'utf-8' }\n );\n const objectMatch = tagContent.match(/^object ([0-9a-f]{40})$/m);\n if (objectMatch) {\n commitOid = objectMatch[1];\n }\n }\n } catch (error) {\n // If git cat-file fails, assume it's a lightweight tag\n logger.debug(\n `[fast-tags] Could not determine object type for ${tagName}: ${error}`\n );\n }\n\n result.set(tagName, { oid, commitOid });\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n logger.debug(\n `[fast-tags] read loose refs: ${Date.now() - looseRefsStart}ms`\n );\n }\n\n const totalTime = Date.now() - startTime;\n logger.debug(`[fast-tags] resolveTagsBatchWithCommit total: ${totalTime}ms`);\n logger.debug(`[fast-tags] Resolved ${result.size}/${tagNames.length} tags`);\n\n return result;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport fs from 'fs/promises';\nimport git from 'isomorphic-git';\nimport type { TagInfo, Version } from './analyzer';\nimport type { Logger } from './internal.js';\nimport {\n listTagsFast,\n resolveTagsBatch,\n resolveTagsBatchWithCommit,\n} from './fast-tags.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Git operations for tag management\n * Handles all Git interactions\n */\n\n/**\n * Tag with OID information\n */\nexport interface TagWithOid {\n name: string;\n oid: string; // The OID this tag points to (could be tag object or commit)\n targetCommit?: string; // The commit this tag ultimately points to (resolved from annotated tags)\n}\n\n/**\n * Get all tags with their OIDs\n * @param repoPath - Repository path\n * @returns Array of tags with OID information\n */\nexport const getAllTagsWithOids = async (\n repoPath: string\n): Promise<TagWithOid[]> => {\n const tags = await listTagsFast(repoPath);\n const tagHashes = await resolveTagsBatch(repoPath, tags);\n\n const result: TagWithOid[] = [];\n for (const [tagName, oid] of tagHashes.entries()) {\n result.push({ name: tagName, oid });\n }\n\n return result;\n};\n\n/**\n * Resolve tag OID to commit hash\n * @param repoPath - Repository path\n * @param tagOid - Tag OID\n * @returns Commit hash this tag points to\n */\nexport const resolveTagToCommit = async (\n repoPath: string,\n tagOid: string\n): Promise<string> => {\n try {\n // Try to read as annotated tag\n const tagObject = await git.readTag({\n fs,\n dir: repoPath,\n oid: tagOid,\n });\n\n if (tagObject?.tag?.object) {\n // Annotated tag - return the commit it points to\n return tagObject.tag.object;\n }\n } catch {\n // Not an annotated tag, must be lightweight\n }\n\n // Lightweight tag - OID is the commit\n return tagOid;\n};\n\n/**\n * Get tag information for specific tags\n * @param repoPath - Repository path\n * @param tagNames - Tag names to get information for\n * @param parseVersion - Function to parse version from tag name\n * @returns Array of TagInfo\n */\nexport const getTagsInfo = async (\n repoPath: string,\n tagNames: string[],\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<TagInfo[]> => {\n const startTime = Date.now();\n const result: TagInfo[] = [];\n\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n\n for (const tagName of tagNames) {\n const data = tagData.get(tagName);\n if (!data) {\n logger.warn(`[git-ops] Tag ${tagName} not found`);\n continue;\n }\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n result.push({\n name: tagName,\n hash: commitOid,\n version,\n });\n }\n\n logger.debug(`[git-ops] getTagsInfo: ${Date.now() - startTime}ms`);\n logger.debug(\n `[git-ops] Got info for ${result.length}/${tagNames.length} tags`\n );\n\n return result;\n};\n\n/**\n * Build complete tag cache from repository\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @returns Map of commit hash to TagInfo array\n */\nexport const buildCompleteTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<Map<string, TagInfo[]>> => {\n const totalStart = Date.now();\n const cache = new Map<string, TagInfo[]>();\n\n const listStart = Date.now();\n const tags = await listTagsFast(repoPath);\n logger.debug(`[git-ops] listTagsFast: ${Date.now() - listStart}ms`);\n logger.debug(`[git-ops] Found ${tags.length} tags`);\n\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tags, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit: ${Date.now() - resolveStart}ms`\n );\n\n const buildStart = Date.now();\n for (const tagName of tags) {\n const data = tagData.get(tagName);\n if (!data) continue;\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n const tagInfo: TagInfo = {\n name: tagName,\n hash: commitOid,\n version,\n };\n\n if (!cache.has(commitOid)) {\n cache.set(commitOid, []);\n }\n cache.get(commitOid)!.push(tagInfo);\n }\n logger.debug(`[git-ops] build cache map: ${Date.now() - buildStart}ms`);\n\n // Sort tags by name for each commit to ensure consistent ordering\n const sortStart = Date.now();\n for (const tags of cache.values()) {\n tags.sort((a, b) => a.name.localeCompare(b.name));\n }\n logger.debug(`[git-ops] sort tags: ${Date.now() - sortStart}ms`);\n\n logger.debug(\n `[git-ops] buildCompleteTagCache total: ${Date.now() - totalStart}ms`\n );\n logger.debug(`[git-ops] Built cache with ${cache.size} unique commits`);\n\n return cache;\n};\n\n/**\n * Check if a tag has moved to a different commit\n * @param repoPath - Repository path\n * @param tagName - Tag name\n * @param cachedCommit - Commit hash from cache\n * @returns True if tag has moved\n */\nexport const hasTagMoved = async (\n repoPath: string,\n tagName: string,\n cachedCommit: string\n): Promise<boolean> => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const currentCommit = await resolveTagToCommit(repoPath, oid);\n return currentCommit !== cachedCommit;\n } catch {\n // Tag doesn't exist anymore\n return true;\n }\n};\n\n/**\n * Find modified tags (tags that point to different commits)\n * @param repoPath - Repository path\n * @param tagNames - Tag names to check\n * @param cache - Current cache\n * @returns Array of modified tag names\n */\nexport const findModifiedTags = async (\n repoPath: string,\n tagNames: string[],\n cache: Map<string, TagInfo[]>,\n logger: Logger\n): Promise<string[]> => {\n const totalStart = Date.now();\n const modified: string[] = [];\n\n // Batch resolve all tags at once with commit hashes\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit in findModified: ${Date.now() - resolveStart}ms`\n );\n\n const checkStart = Date.now();\n // Process each tag\n for (const tagName of tagNames) {\n // Find tag in cache\n let cachedCommit: string | undefined;\n for (const [commit, tags] of cache.entries()) {\n const tag = tags.find((t) => t.name === tagName);\n if (tag) {\n cachedCommit = commit;\n break;\n }\n }\n\n if (cachedCommit) {\n const data = tagData.get(tagName);\n if (!data) {\n // Tag doesn't exist anymore\n modified.push(tagName);\n } else {\n const { commitOid } = data;\n if (commitOid !== cachedCommit) {\n modified.push(tagName);\n }\n }\n }\n }\n logger.debug(`[git-ops] check modified tags: ${Date.now() - checkStart}ms`);\n\n logger.debug(\n `[git-ops] findModifiedTags total: ${Date.now() - totalStart}ms`\n );\n logger.debug(\n `[git-ops] Found ${modified.length} modified tags out of ${tagNames.length}`\n );\n\n return modified;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport * as git from 'isomorphic-git';\nimport fs from 'fs/promises';\nimport dayjs from 'dayjs';\nimport { GitMetadata } from './types.js';\nimport { Logger } from './internal.js';\nimport { buildCompleteTagCache } from './git-operations.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Ported from: https://github.com/kekyo/RelaxVersioner/blob/master/RelaxVersioner.Core/Analyzer.cs\n\n/**\n * Version information\n */\nexport interface Version {\n major: number;\n minor?: number;\n build?: number;\n revision?: number;\n original: string;\n}\n\n/**\n * Primitive commit information\n */\ninterface CommitInfo {\n hash: string;\n shortHash: string;\n date: string;\n message: string;\n parents: string[];\n}\n\n/**\n * Tag information\n */\nexport interface TagInfo {\n name: string;\n hash: string;\n version: Version | undefined;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parse and validate a version component\n * @param value - The string value to parse\n * @returns The parsed number or undefined if invalid (negative or > 65535)\n */\nconst parseVersionComponent = (value: string): number | undefined => {\n const num = parseInt(value, 10);\n return num < 0 || num > 65535 ? undefined : num;\n};\n\n/**\n * Parse a version tag name\n * @param tagName - The version tag name\n * @returns The parsed version or undefined if the tag name is invalid\n */\nconst parseVersion = (tagName: string): Version | undefined => {\n // Remove common prefix 'v'.\n const cleanTag = tagName.replace(/^v/i, '');\n\n // Match version pattern: major.minor[.build[.revision]].\n const versionRegex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:\\.(\\d+))?$/;\n const match = cleanTag.match(versionRegex);\n\n if (!match) {\n return undefined;\n }\n\n const major = parseVersionComponent(match[1]);\n if (major === undefined) {\n return undefined;\n }\n\n const version: Version = {\n major,\n original: tagName,\n };\n\n if (match[2] !== undefined) {\n const minor = parseVersionComponent(match[2]);\n if (minor === undefined) {\n return undefined;\n }\n version.minor = minor;\n }\n if (match[3] !== undefined) {\n const build = parseVersionComponent(match[3]);\n if (build === undefined) {\n return undefined;\n }\n version.build = build;\n }\n if (match[4] !== undefined) {\n const revision = parseVersionComponent(match[4]);\n if (revision === undefined) {\n return undefined;\n }\n version.revision = revision;\n }\n\n return version;\n};\n\n/**\n * Check if a version is valid\n * @param version - The version to check\n * @returns True if the version is valid, false otherwise\n */\nconst isValidVersion = (version: Version): boolean => {\n // At least major component and optionally minor\n return (\n version.major >= 0 && (version.minor === undefined || version.minor >= 0)\n );\n};\n\n/**\n * Compare two versions\n * @param a - The first version\n * @param b - The second version\n * @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal\n */\nconst compareVersions = (a: Version, b: Version): number => {\n // Compare major\n if (a.major !== b.major) return b.major - a.major;\n\n // Compare minor (treat undefined as 0)\n const aMinor = a.minor ?? 0;\n const bMinor = b.minor ?? 0;\n if (aMinor !== bMinor) return bMinor - aMinor;\n\n // Compare build (treat undefined as 0)\n const aBuild = a.build ?? 0;\n const bBuild = b.build ?? 0;\n if (aBuild !== bBuild) return bBuild - aBuild;\n\n // Compare revision (treat undefined as 0)\n const aRevision = a.revision ?? 0;\n const bRevision = b.revision ?? 0;\n if (aRevision !== bRevision) return bRevision - aRevision;\n\n return 0;\n};\n\n/**\n * Increment the last version component\n * @param version - The version to increment\n * @returns The incremented version\n */\nconst incrementLastVersionComponent = (version: Version): Version => {\n // Increment the rightmost existing component\n if (version.revision !== undefined) {\n return { ...version, revision: version.revision + 1 };\n }\n if (version.build !== undefined) {\n return { ...version, build: version.build + 1 };\n }\n if (version.minor !== undefined) {\n return { ...version, minor: version.minor + 1 };\n }\n\n // If only major exists, increment major\n return {\n ...version,\n major: version.major + 1,\n original: `${version.major + 1}`,\n };\n};\n\n/**\n * Format a version\n * @param version - The version to format\n * @returns The formatted version\n */\nconst formatVersion = (version: Version): string => {\n let result = `${version.major}`;\n\n if (version.minor !== undefined) {\n result += `.${version.minor}`;\n\n if (version.build !== undefined) {\n result += `.${version.build}`;\n\n if (version.revision !== undefined) {\n result += `.${version.revision}`;\n }\n }\n }\n\n return result;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get a commit by hash\n * @param repositoryPath - Local Git repository directory\n * @param hash - The hash of the commit\n * @returns The commit or undefined if the commit is not found\n */\nconst getCommit = async (\n repositoryPath: string,\n hash: string\n): Promise<CommitInfo | undefined> => {\n try {\n const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get the current commit\n * @param repositoryPath - Local Git repository directory\n * @returns The current commit or undefined if the current commit is not found\n */\nconst getCurrentCommit = async (\n repositoryPath: string\n): Promise<CommitInfo | undefined> => {\n try {\n const currentOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: 'HEAD',\n });\n const commit = await git.readCommit({\n fs,\n dir: repositoryPath,\n oid: currentOid,\n });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get related tags from commit map\n * @param commitToTags - Map of commit hash to tags\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsFromMap = (\n commitToTags: Map<string, TagInfo[]>,\n commitHash: string\n): TagInfo[] => {\n return commitToTags.get(commitHash) || [];\n};\n\n// Removed: getRelatedTags and getRelatedTagsForVersioning functions are no longer needed as we use the commit map directly\n\n/**\n * Get the commit related branch name.\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The commit related branch name or undefined if not found\n */\nconst getRelatedBranches = async (\n repositoryPath: string,\n commitHash: string\n): Promise<string[]> => {\n try {\n const branches = await git.listBranches({ fs, dir: repositoryPath });\n const relatedBranches: string[] = [];\n\n for (const branch of branches) {\n try {\n // Check if the branch HEAD points to the specified commit\n const branchOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: branch,\n });\n if (branchOid === commitHash) {\n relatedBranches.push(branch);\n }\n } catch {\n // Skip branches that can't be resolved\n }\n }\n\n return relatedBranches;\n } catch {\n return [];\n }\n};\n\n/**\n * Check if the repository has modified files (following RelaxVersioner logic).\n * Checks for staged files, unstaged files, and untracked files (respecting .gitignore).\n * @param repositoryPath - Local Git repository directory\n * @returns Modified files\n */\nconst getModifiedFiles = async (\n repositoryPath: string\n): Promise<git.StatusRow[]> => {\n try {\n const status = await git.statusMatrix({ fs, dir: repositoryPath });\n // statusMatrix returns [filepath, headStatus, workdirStatus, stageStatus]\n // headStatus: 0=absent, 1=present\n // workdirStatus: 0=absent, 1=present, 2=modified\n // stageStatus: 0=absent, 1=present, 2=modified, 3=added\n // By default, ignored files are excluded (ignored: false)\n return status.filter(\n ([, head, workdir, stage]) =>\n workdir === 2 || // modified in working directory (unstaged)\n stage === 2 || // modified in stage (staged)\n stage === 3 || // added to stage (staged)\n (head === 1 && workdir === 0) || // deleted from working directory\n (head === 0 && workdir === 1) // untracked files (respecting .gitignore)\n );\n } catch {\n return [];\n }\n};\n\nconst formatModifiedFile = (modifiedFile: git.StatusRow) => {\n return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Scheduled commit\n */\ninterface ScheduledCommit {\n commit: CommitInfo;\n parents: CommitInfo[];\n}\n\n/**\n * Lookup version label recursively core analyzer\n * @param cwd - The directory to check\n * @param commit - The commit to lookup\n * @param reachedCommits - The map of reached commits\n * @param commitToTags - Map of commit hash to tags for performance\n * @returns The version or undefined if no version is found\n */\nconst lookupVersionLabelRecursive = async (\n cwd: string,\n commit: CommitInfo,\n reachedCommits: Map<string, Version>,\n commitToTags: Map<string, TagInfo[]>\n): Promise<Version | undefined> => {\n // Scheduled commit analysis stack\n const scheduledStack: ScheduledCommit[] = [];\n\n let version: Version = { major: 0, minor: 0, build: 1, original: '0.0.1' };\n let currentCommit = commit;\n\n // Trace back to the parent commit repeatedly with the following conditions:\n // * If the commit has already been reached, get its version.\n // * If there is a recognizable version string in the tag, get its version.\n // * If the parent commit does not exist, get the default version.\n // * If other than the above, push the commit on the stack for later processing in reverse order.\n while (true) {\n // If the commit has already been reached, get its version.\n if (reachedCommits.has(currentCommit.hash)) {\n version = reachedCommits.get(currentCommit.hash)!;\n break;\n }\n\n // Detected mostly larger version tag.\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n const versionCandidates = relatedTags\n .filter((tag) => tag.version && isValidVersion(tag.version))\n .filter((tag) => tag.version!.minor !== undefined) // \"1.2\" or more.\n .sort((a, b) => compareVersions(a.version!, b.version!));\n if (versionCandidates.length >= 1) {\n // Found version tags, use the highest version\n version = versionCandidates[0].version!;\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Get parent commits\n let parentCommits: CommitInfo[] = [];\n try {\n const commitObj = await git.readCommit({\n fs,\n dir: cwd,\n oid: currentCommit.hash,\n });\n const parentHashes = commitObj.commit.parent || [];\n parentCommits = (\n await Promise.all(\n parentHashes.map((parentHash) => getCommit(cwd, parentHash))\n )\n ).filter((ci) => ci !== undefined);\n } catch {\n // If we can't get parent information, use default version\n }\n if (parentCommits.length === 0) {\n // No parents, this is the root commit\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Schedule this commit for later processing\n scheduledStack.push({ commit: currentCommit, parents: parentCommits });\n\n // Move to the first parent (primary branch)\n currentCommit = parentCommits[0];\n }\n\n // As long as there are commits stacked on the stack,\n // retrieve a commit from the stack, and if there is more than one parent commit for that commit:\n // * Recursively get versions from parent commits other than the primary one.\n // * Compare the versions obtained and store the largest version.\n // * Increment the version and make it the version of the current commit.\n while (scheduledStack.length >= 1) {\n const scheduled = scheduledStack.pop()!;\n const { commit: scheduledCommit, parents } = scheduled;\n\n // Handle merge commits (multiple parents)\n if (parents.length >= 2) {\n // Check alternate parent commits (feature branches)\n for (let index = 1; index < parents.length; index++) {\n const alternateParentVersion = await lookupVersionLabelRecursive(\n cwd,\n parents[index],\n reachedCommits,\n commitToTags\n );\n if (\n alternateParentVersion &&\n compareVersions(alternateParentVersion, version) < 0\n ) {\n // Use higher version from alternate parent\n version = alternateParentVersion;\n }\n }\n }\n\n // Increment version for this commit\n version = incrementLastVersionComponent(version);\n reachedCommits.set(scheduledCommit.hash, version);\n }\n\n return version;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get default Git metadata from local repository.\n * @param repositoryPath - Local Git repository directory\n * @param checkWorkingDirectoryStatus - Check working directory status to increase version\n * @param logger - Logger instance\n * @returns The metadata object with git metadata\n */\nconst getGitMetadata = async (\n repositoryPath: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n const startTime = Date.now();\n const metadata: any = {};\n\n // Try to find git root directory from the given path\n let gitRootPath: string;\n try {\n gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });\n } catch {\n // No git repository found\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n try {\n // Get current commit\n const currentCommit = await getCurrentCommit(gitRootPath);\n if (!currentCommit) {\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n // Build tag map directly\n const buildStart = Date.now();\n const commitToTags = await buildCompleteTagCache(\n gitRootPath,\n (tagName: string) => {\n const version = parseVersion(tagName);\n return version && isValidVersion(version) ? version : undefined;\n },\n logger\n );\n logger.debug(\n `[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`\n );\n logger.debug(`Built tag map with ${commitToTags.size} commits`);\n\n // Initialize reached commits cache\n const reachedCommits = new Map<string, Version>();\n\n // Lookup version\n let version = await lookupVersionLabelRecursive(\n gitRootPath,\n currentCommit,\n reachedCommits,\n commitToTags\n );\n\n // Set git metadata into 'git' key\n const gitMetadata: GitMetadata = { tags: [], branches: [] };\n metadata.git = gitMetadata;\n\n if (version) {\n // Check for working directory changes and increment version if needed\n if (checkWorkingDirectoryStatus) {\n const modifiedFiles = await getModifiedFiles(gitRootPath);\n if (modifiedFiles.length >= 1) {\n const newVersion = incrementLastVersionComponent(version);\n logger.debug(\n `Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(', ')}]`\n );\n version = newVersion;\n }\n }\n\n const gitVersion = formatVersion(version);\n gitMetadata.version = gitVersion;\n metadata.version = gitVersion; // Fallback default version metadata\n }\n\n // Set commit information\n gitMetadata.commit = {\n hash: currentCommit.hash,\n shortHash: currentCommit.shortHash,\n date: dayjs(currentCommit.date).format('YYYY-MM-DDTHH:mm:ssZ'),\n message: currentCommit.message,\n };\n\n // Try to find the actual tag name if it exists\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n gitMetadata.tags = relatedTags.map((tag) => tag.name);\n\n // Get branch information\n const relatedBranches = await getRelatedBranches(\n gitRootPath,\n currentCommit.hash\n );\n gitMetadata.branches = relatedBranches;\n } catch (error) {\n // If any error occurs, return empty metadata\n logger.warn(`Failed to extract git metadata: ${error}`);\n }\n\n logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);\n return metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get cached Git metadata fetcher function\n * @param targetDir - Target directory to resolve Git metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param logger - Logger\n * @returns Git metadata fetcher function\n */\nexport const getFetchGitMetadata = (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n let cachedMetadata: any;\n return async () => {\n if (!cachedMetadata) {\n cachedMetadata = await getGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n }\n return cachedMetadata;\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { createHash } from 'crypto';\nimport { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, extname, join } from 'path';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport type ModuleInteropKind = 'cjs' | 'esm' | 'unresolvable' | 'unknown';\n\nconst importConditions = ['import', 'node', 'default'] as const;\n\nconst stripQuery = (id: string): string => {\n const queryIndex = id.indexOf('?');\n return queryIndex === -1 ? id : id.slice(0, queryIndex);\n};\n\nconst isBareSpecifier = (specifier: string): boolean => {\n if (!specifier) {\n return false;\n }\n if (specifier.startsWith('.')) {\n return false;\n }\n if (specifier.startsWith('/') || specifier.startsWith('\\\\')) {\n return false;\n }\n if (specifier.startsWith('node:')) {\n return false;\n }\n if (specifier.includes(':')) {\n return false;\n }\n return true;\n};\n\nconst parsePackageName = (\n specifier: string\n): { packageName: string; subpath: string } => {\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/');\n if (parts.length >= 2) {\n return {\n packageName: `${parts[0]}/${parts[1]}`,\n subpath: parts.slice(2).join('/'),\n };\n }\n }\n const [packageName, ...rest] = specifier.split('/');\n return { packageName, subpath: rest.join('/') };\n};\n\nconst findPackageJsonPath = (\n packageName: string,\n importerDir: string\n): string | undefined => {\n let current = importerDir;\n while (true) {\n const candidate = join(\n current,\n 'node_modules',\n packageName,\n 'package.json'\n );\n if (existsSync(candidate)) {\n return candidate;\n }\n const parent = dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n};\n\nconst readPackageJson = async (\n packageJsonPath: string\n): Promise<Record<string, unknown> | undefined> => {\n try {\n const raw = await readFile(packageJsonPath, 'utf8');\n const parsed = JSON.parse(raw);\n if (parsed && typeof parsed === 'object') {\n return parsed as Record<string, unknown>;\n }\n } catch {\n return undefined;\n }\n return undefined;\n};\n\nconst resolveExportTarget = (\n target: unknown,\n subpath: string,\n conditions: readonly string[]\n): string | undefined => {\n if (typeof target === 'string') {\n if (subpath && subpath !== '.') {\n return undefined;\n }\n return target;\n }\n if (Array.isArray(target)) {\n for (const entry of target) {\n const resolved = resolveExportTarget(entry, subpath, conditions);\n if (resolved) {\n return resolved;\n }\n }\n return undefined;\n }\n if (!target || typeof target !== 'object') {\n return undefined;\n }\n\n const record = target as Record<string, unknown>;\n const keys = Object.keys(record);\n const hasSubpathMap = keys.some((key) => key.startsWith('.'));\n\n if (hasSubpathMap) {\n const subpathKey =\n subpath === '' || subpath === '.'\n ? '.'\n : subpath.startsWith('./')\n ? subpath\n : `./${subpath}`;\n if (!(subpathKey in record)) {\n return undefined;\n }\n return resolveExportTarget(record[subpathKey], '.', conditions);\n }\n\n for (const condition of conditions) {\n if (condition in record) {\n const resolved = resolveExportTarget(\n record[condition],\n subpath,\n conditions\n );\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return undefined;\n};\n\nconst inferModuleKindFromPath = (\n targetPath: string,\n packageType: string | undefined\n): ModuleInteropKind => {\n const ext = extname(targetPath);\n if (ext === '.mjs') {\n return 'esm';\n }\n if (ext === '.cjs') {\n return 'cjs';\n }\n if (ext === '.js' || ext === '') {\n return packageType === 'module' ? 'esm' : 'cjs';\n }\n return packageType === 'module' ? 'esm' : 'cjs';\n};\n\nconst resolveModuleKindFromPackage = (\n packageJson: Record<string, unknown>,\n subpath: string\n): ModuleInteropKind => {\n const packageType =\n typeof packageJson.type === 'string' ? packageJson.type : undefined;\n if (packageJson.exports !== undefined) {\n const resolved = resolveExportTarget(\n packageJson.exports,\n subpath,\n importConditions\n );\n if (!resolved) {\n return 'unresolvable';\n }\n return inferModuleKindFromPath(resolved, packageType);\n }\n\n if (subpath) {\n return inferModuleKindFromPath(subpath, packageType);\n }\n\n const main =\n typeof packageJson.main === 'string' ? packageJson.main : 'index.js';\n return inferModuleKindFromPath(main, packageType);\n};\n\nexport const createNodeModuleKindResolver = () => {\n const packageJsonCache = new Map<string, Record<string, unknown> | null>();\n const resolveCache = new Map<string, ModuleInteropKind>();\n\n return async (\n specifier: string,\n importer: string\n ): Promise<ModuleInteropKind> => {\n if (!isBareSpecifier(specifier)) {\n return 'unknown';\n }\n\n const importerPath = stripQuery(importer);\n const importerDir = dirname(importerPath);\n const { packageName, subpath } = parsePackageName(specifier);\n const packageJsonPath = findPackageJsonPath(packageName, importerDir);\n if (!packageJsonPath) {\n return 'unknown';\n }\n\n const cacheKey = `${packageJsonPath}:${subpath}`;\n const cached = resolveCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n let packageJson = packageJsonCache.get(packageJsonPath);\n if (packageJson === undefined) {\n packageJson = (await readPackageJson(packageJsonPath)) ?? null;\n packageJsonCache.set(packageJsonPath, packageJson);\n }\n if (!packageJson) {\n resolveCache.set(cacheKey, 'unknown');\n return 'unknown';\n }\n\n const resolved = resolveModuleKindFromPackage(packageJson, subpath);\n resolveCache.set(cacheKey, resolved);\n return resolved;\n };\n};\n\nexport const scanHasDefaultImport = (\n ts: typeof import('typescript'),\n code: string\n): boolean => {\n const scanner = ts.createScanner(\n ts.ScriptTarget.ESNext,\n true,\n ts.LanguageVariant.Standard,\n code\n );\n let token = scanner.scan();\n while (token !== ts.SyntaxKind.EndOfFileToken) {\n if (token === ts.SyntaxKind.ImportKeyword) {\n const next = scanner.scan();\n if (next === ts.SyntaxKind.OpenParenToken) {\n token = scanner.scan();\n continue;\n }\n if (\n next === ts.SyntaxKind.Identifier ||\n next === ts.SyntaxKind.TypeKeyword\n ) {\n return true;\n }\n }\n token = scanner.scan();\n }\n return false;\n};\n\n// This feature is implemented in a somewhat tricky two-step process:\n//\n// Vite's `transform()` is responsible for formatting the code sent to the subsequent 'rollup.'\n// While it enables various code transformations, at this stage, it does not distinguish whether the target code is intended for CJS or ESM.\n// This is because 'rollup' handles that distinction later, and `transform()` performs a single optimization to format the common code base.\n// However, the default import fixup must distinguish between CJS and ESM.\n//\n// Therefore, in Step 1, we always insert `__resolveDefaultExport` as a commonly used function.\n// Within it, we reference a global flag name derived from the source file path and\n// insert `globalThis.__screwUpIsInCJS_<id> = false;` as a placeholder.\n// This allows `renderChunk()` (Step 2) to flip it to `true` only for CJS output chunks,\n// while keeping the code length stable.\n//\n// We avoid performing all processing in the `renderChunk()` because at that stage, we would be referencing post-transpiled code.\n// This prevents the use of a simple replacement process and carries the risk of code transformation failure.\n\nconst cjsInteropGlobalFlagPrefix = '__screwUpIsInCJS_';\nconst cjsInteropIdLength = 12;\nconst cjsInteropGlobalFlagAssignmentPattern = new RegExp(\n `\\\\bglobalThis\\\\.${cjsInteropGlobalFlagPrefix}[0-9a-f]+\\\\s*=\\\\s*false\\\\b`,\n 'g'\n);\n\nconst createCjsInteropHelperId = (seed: string): string => {\n const hash = createHash('sha256').update(seed).digest('hex');\n return hash.slice(0, cjsInteropIdLength);\n};\n\nconst buildHelperFunctionSource = (helperId: string): string => `\nglobalThis.${cjsInteropGlobalFlagPrefix}${helperId} = false;\nfunction __resolveDefaultExport<T>(module: T | { default?: T }, isESM: boolean): T {\n const __isInCJS =\n typeof globalThis !== 'undefined' &&\n (globalThis as any).${cjsInteropGlobalFlagPrefix}${helperId} === true;\n const maybe = module as { default?: T };\n const hasDefault = !!(maybe && typeof maybe === 'object' && 'default' in maybe);\n const unwrapNamespaceDefault = (value: unknown): unknown => {\n if (!value || typeof value !== 'object') {\n return value;\n }\n const inner = value as any;\n const isModule =\n inner.__esModule === true ||\n (typeof Symbol !== 'undefined' &&\n (inner as any)[Symbol.toStringTag] === 'Module');\n if (isModule && 'default' in inner) {\n return inner.default;\n }\n return value;\n };\n const resolvedDefault = hasDefault\n ? unwrapNamespaceDefault((maybe as any).default)\n : undefined;\n\n if (__isInCJS) {\n return hasDefault ? ((resolvedDefault as T) ?? (module as T)) : (module as T);\n }\n\n if (isESM) {\n if (hasDefault) {\n return resolvedDefault as T;\n }\n throw new Error('Default export not found.');\n }\n\n return hasDefault ? ((resolvedDefault as T) ?? (module as T)) : (module as T);\n}`;\n\nexport const injectCjsInteropFlag = (\n code: string\n): { code: string; changed: boolean } => {\n let changed = false;\n const nextCode = code.replace(\n cjsInteropGlobalFlagAssignmentPattern,\n (match) => {\n changed = true;\n // Preserve length to keep sourcemaps stable without remapping.\n return match.replace(/\\bfalse\\b/, 'true ');\n }\n );\n return { code: nextCode, changed };\n};\n\nconst hasResolveDefaultExport = (\n ts: typeof import('typescript'),\n sourceFile: import('typescript').SourceFile\n): boolean => {\n return sourceFile.statements.some((statement) => {\n if (ts.isFunctionDeclaration(statement)) {\n return statement.name?.text === '__resolveDefaultExport';\n }\n if (ts.isVariableStatement(statement)) {\n return statement.declarationList.declarations.some((declaration) => {\n return (\n ts.isIdentifier(declaration.name) &&\n declaration.name.text === '__resolveDefaultExport'\n );\n });\n }\n if (ts.isImportDeclaration(statement)) {\n const importClause = statement.importClause;\n if (!importClause) {\n return false;\n }\n if (importClause.name?.text === '__resolveDefaultExport') {\n return true;\n }\n if (importClause.namedBindings) {\n if (ts.isNamespaceImport(importClause.namedBindings)) {\n return (\n importClause.namedBindings.name.text === '__resolveDefaultExport'\n );\n }\n if (ts.isNamedImports(importClause.namedBindings)) {\n return importClause.namedBindings.elements.some(\n (element) =>\n element.name.text === '__resolveDefaultExport' ||\n element.propertyName?.text === '__resolveDefaultExport'\n );\n }\n }\n }\n return false;\n });\n};\n\nconst isTypeOnlyImportClause = (\n ts: typeof import('typescript'),\n importClause: import('typescript').ImportClause\n): boolean => {\n const phaseModifier = (importClause as { phaseModifier?: number })\n .phaseModifier;\n if (phaseModifier !== undefined) {\n return phaseModifier === ts.SyntaxKind.TypeKeyword;\n }\n return Boolean((importClause as { isTypeOnly?: boolean }).isTypeOnly);\n};\n\nconst getScriptKind = (\n ts: typeof import('typescript'),\n id: string\n): import('typescript').ScriptKind => {\n if (id.endsWith('.tsx')) {\n return ts.ScriptKind.TSX;\n }\n if (id.endsWith('.jsx')) {\n return ts.ScriptKind.JSX;\n }\n if (id.endsWith('.mts')) {\n const mts = (ts.ScriptKind as unknown as Record<string, number>)['MTS'];\n return mts ?? ts.ScriptKind.TS;\n }\n if (id.endsWith('.cts')) {\n const cts = (ts.ScriptKind as unknown as Record<string, number>)['CTS'];\n return cts ?? ts.ScriptKind.TS;\n }\n if (id.endsWith('.ts')) {\n return ts.ScriptKind.TS;\n }\n if (id.endsWith('.mjs')) {\n return ts.ScriptKind.JS;\n }\n if (id.endsWith('.cjs')) {\n return ts.ScriptKind.JS;\n }\n return ts.ScriptKind.JS;\n};\n\nconst formatModuleSpecifier = (specifier: string): string => {\n const escaped = specifier.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n return `'${escaped}'`;\n};\n\nconst buildNamedImport = (\n moduleName: string,\n namedBindings: import('typescript').NamedImports\n): string => {\n const elements = namedBindings.elements\n .map((specifier) => {\n const alias = specifier.propertyName\n ? `${specifier.propertyName.text} as ${specifier.name.text}`\n : specifier.name.text;\n return specifier.isTypeOnly ? `type ${alias}` : alias;\n })\n .join(', ');\n return `import { ${elements} } from ${formatModuleSpecifier(moduleName)};`;\n};\n\nexport const transformDefaultImports = async (\n ts: typeof import('typescript'),\n code: string,\n id: string,\n resolveModuleKind: (\n specifier: string,\n importer: string\n ) => Promise<ModuleInteropKind>\n): Promise<{ code: string; changed: boolean }> => {\n const normalizedId = stripQuery(id);\n const sourceFile = ts.createSourceFile(\n normalizedId,\n code,\n ts.ScriptTarget.ESNext,\n false,\n getScriptKind(ts, normalizedId)\n );\n\n const edits: Array<{ start: number; end: number; text: string }> = [];\n let needsHelper = false;\n const helperPresent = hasResolveDefaultExport(ts, sourceFile);\n let namespaceIndex = 0;\n\n const usedNamespace = (base: string): string => {\n let candidate = `${base}${namespaceIndex}`;\n while (code.includes(candidate)) {\n namespaceIndex += 1;\n candidate = `${base}${namespaceIndex}`;\n }\n namespaceIndex += 1;\n return candidate;\n };\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) {\n continue;\n }\n const importClause = statement.importClause;\n if (!importClause || !importClause.name) {\n continue;\n }\n if (isTypeOnlyImportClause(ts, importClause)) {\n continue;\n }\n if (!ts.isStringLiteral(statement.moduleSpecifier)) {\n continue;\n }\n const moduleName = statement.moduleSpecifier.text;\n const moduleKind = await resolveModuleKind(moduleName, normalizedId);\n if (moduleKind === 'unknown' || moduleKind === 'unresolvable') {\n continue;\n }\n const isESM = moduleKind === 'esm';\n const isCJS = moduleKind === 'cjs';\n\n const defaultName = importClause.name.text;\n const replacementImports: string[] = [];\n let namespaceName: string | undefined;\n let defaultImportName: string | undefined;\n\n if (\n importClause.namedBindings &&\n ts.isNamespaceImport(importClause.namedBindings)\n ) {\n namespaceName = importClause.namedBindings.name.text;\n replacementImports.push(\n `import * as ${namespaceName} from ${formatModuleSpecifier(moduleName)};`\n );\n } else if (isCJS) {\n defaultImportName = usedNamespace('__screwUpDefaultImportModule');\n replacementImports.push(\n `import ${defaultImportName} from ${formatModuleSpecifier(moduleName)};`\n );\n if (\n importClause.namedBindings &&\n ts.isNamedImports(importClause.namedBindings)\n ) {\n replacementImports.push(\n buildNamedImport(moduleName, importClause.namedBindings)\n );\n }\n } else {\n namespaceName = usedNamespace('__screwUpDefaultImportModule');\n replacementImports.push(\n `import * as ${namespaceName} from ${formatModuleSpecifier(moduleName)};`\n );\n if (\n importClause.namedBindings &&\n ts.isNamedImports(importClause.namedBindings)\n ) {\n replacementImports.push(\n buildNamedImport(moduleName, importClause.namedBindings)\n );\n }\n }\n\n const interopSource = namespaceName ?? defaultImportName;\n const replacement =\n `${replacementImports.join('\\n')}\\n` +\n `const ${defaultName} = __resolveDefaultExport(${interopSource}, ${isESM});`;\n\n edits.push({\n start: statement.getStart(sourceFile),\n end: statement.getEnd(),\n text: replacement,\n });\n needsHelper = true;\n }\n\n if (edits.length === 0) {\n return { code, changed: false };\n }\n\n if (needsHelper && !helperPresent) {\n const importStatements = sourceFile.statements.filter(\n ts.isImportDeclaration\n );\n const lastImport = importStatements[importStatements.length - 1];\n if (lastImport) {\n const newline = code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const helperId = createCjsInteropHelperId(normalizedId);\n edits.push({\n start: lastImport.getEnd(),\n end: lastImport.getEnd(),\n text: `${newline}${buildHelperFunctionSource(helperId)}${newline}`,\n });\n }\n }\n\n edits.sort((a, b) => b.start - a.start);\n let nextCode = code;\n for (const edit of edits) {\n nextCode =\n nextCode.slice(0, edit.start) + edit.text + nextCode.slice(edit.end);\n }\n\n return { code: nextCode, changed: true };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { existsSync } from 'fs';\nimport { mkdir, readFile, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { Logger } from './internal';\nimport { PackageMetadata } from './types';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nexport const generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const lines: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\nexport const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string,\n logger: Logger\n): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n};\n\nexport const ensureMetadataGitignore = async (\n metadataSourcePath: string,\n logger: Logger\n): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport type {\n NormalizedOutputOptions,\n OutputAsset,\n OutputChunk,\n OutputOptions,\n} from 'rolldown';\nimport { readFile, writeFile, readdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { createMutex } from 'async-primitives';\n\nimport { git_commit_hash, name, version } from './generated/packageMetadata';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\nimport {\n createNodeModuleKindResolver,\n injectCjsInteropFlag,\n scanHasDefaultImport,\n transformDefaultImports,\n} from './default-import-fix';\nimport {\n ensureMetadataGitignore,\n generateMetadataFileContent,\n writeFileIfChanged,\n} from './metadata-file';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const parts: string[] = [];\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n\n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n\n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Split a leading shebang from content, keeping the shebang line with newline.\n */\nconst splitShebang = (content: string): { shebang: string; rest: string } => {\n if (!content.startsWith('#!')) {\n return { shebang: '', rest: content };\n }\n const newlineIndex = content.indexOf('\\n');\n if (newlineIndex === -1) {\n return { shebang: `${content}\\n`, rest: '' };\n }\n return {\n shebang: content.slice(0, newlineIndex + 1),\n rest: content.slice(newlineIndex + 1),\n };\n};\n\n/**\n * Adds a trailing newline to the banner text when needed so subsequent\n * concatenations do not collapse onto the last line.\n */\nconst ensureTrailingNewline = (value: string, newline: string): string =>\n value.endsWith(newline) ? value : value + newline;\n\n/**\n * Merge screw-up's metadata banner with an existing Rollup banner, keeping any\n * shebang line at the very top and preventing duplicate metadata blocks.\n */\nconst mergeBanners = (\n currentBanner: string,\n existingBanner: string\n): string => {\n if (!currentBanner) {\n return existingBanner;\n }\n if (!existingBanner) {\n return currentBanner;\n }\n\n if (existingBanner.includes(currentBanner)) {\n return existingBanner;\n }\n\n // Preserve shebang at the very top while sliding the metadata banner underneath it.\n const shebangMatch = existingBanner.match(/^(#![^\\r\\n]*)(\\r?\\n)?([\\s\\S]*)$/);\n if (shebangMatch) {\n const [, shebangLine, newlineSeq = '\\n', rest = ''] = shebangMatch;\n if (rest.startsWith(currentBanner)) {\n return existingBanner;\n }\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n if (rest.length === 0) {\n return `${shebangLine}${newlineSeq}${currentWithNewline}`;\n }\n return `${shebangLine}${newlineSeq}${currentWithNewline}${rest}`;\n }\n\n // Default path: prepend metadata banner before the previous banner content.\n const newlineSeq = existingBanner.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n return `${currentWithNewline}${existingBanner}`;\n};\n\n/**\n * Count how many newline characters exist in the banner block.\n * The result equals the line delta that needs to be applied to sourcemaps.\n */\nconst countInsertedLines = (bannerWithTrailingNewline: string): number => {\n return bannerWithTrailingNewline.split('\\n').length - 1;\n};\n\n/**\n * Convert asset payloads to UTF-8 strings to simplify sourcemap adjustments.\n */\nconst stringifyAssetSource = (source: string | Uint8Array): string =>\n typeof source === 'string' ? source : Buffer.from(source).toString('utf-8');\n\n/**\n * Prepend the specified number of empty lines to a sourcemap by adding semicolons\n * at the beginning of the VLQ mappings string.\n * @returns Updated sourcemap JSON string, or undefined if no change is needed.\n */\nconst applyLineOffsetToSourceMap = (\n source: string | Uint8Array,\n lineOffset: number\n): string | undefined => {\n if (lineOffset <= 0) {\n return undefined;\n }\n\n const original = stringifyAssetSource(source);\n let map: any;\n try {\n map = JSON.parse(original);\n } catch {\n return undefined;\n }\n\n if (!map || typeof map.mappings !== 'string') {\n return undefined;\n }\n\n const prefix = ';'.repeat(lineOffset);\n if (map.mappings.startsWith(prefix)) {\n return undefined;\n }\n\n map.mappings = prefix + map.mappings;\n const serialized = JSON.stringify(map);\n return original.endsWith('\\n') ? `${serialized}\\n` : serialized;\n};\n\n/**\n * Prepend empty lines to sourcemap objects for chunk outputs.\n */\nconst applyLineOffsetToSourceMapObject = (\n map: any,\n lineOffset: number\n): void => {\n if (!map || lineOffset <= 0 || typeof map.mappings !== 'string') {\n return;\n }\n const prefix = ';'.repeat(lineOffset);\n if (map.mappings.startsWith(prefix)) {\n return;\n }\n map.mappings = prefix + map.mappings;\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n fixDefaultImport = true,\n outputKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true,\n } = options;\n\n const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));\n const generateMetadataSourceLocker = createMutex();\n const resolveModuleKind = createNodeModuleKindResolver();\n let typescriptPromise:\n | Promise<typeof import('typescript') | undefined>\n | undefined;\n\n const loggerPrefix = `${name}-vite`;\n let logger = createConsoleLogger(loggerPrefix);\n let banner = '';\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n const loadTypeScript = async () => {\n if (!typescriptPromise) {\n typescriptPromise = import('typescript').catch(() => undefined);\n }\n return typescriptPromise;\n };\n\n const resolveOutputBanner = async (\n outputOptions: NormalizedOutputOptions,\n chunk: OutputChunk\n ): Promise<string> => {\n const outputBanner = outputOptions.banner;\n if (typeof outputBanner === 'function') {\n const resolved = await outputBanner(chunk);\n return resolved ?? banner ?? '';\n }\n return outputBanner ?? banner ?? '';\n };\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFiles = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFileContent(\n metadata,\n outputMetadataKeys\n );\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file',\n logger\n );\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten = await ensureMetadataGitignore(\n metadataSourcePath,\n logger\n );\n if (gitignoreWritten) {\n logger.info(\n `generateMetadataSourceFile: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n return metadataWritten;\n }\n return false;\n };\n\n // Generate dummy metadata TypeScript file with empty string values\n const generateMetadataFileFromKeys = async (keys: readonly string[]) => {\n if (outputMetadataFile) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Only generate if file doesn't exist (don't overwrite existing files)\n if (!existsSync(metadataSourcePath)) {\n // Create dummy metadata with empty strings for all keys\n const dummyMetadata: any = {};\n keys.forEach((key) => {\n dummyMetadata[key] = '[Require first build]';\n });\n const dummyContent = generateMetadataFileContent(dummyMetadata, keys);\n return await writeFileIfChanged(\n metadataSourcePath,\n dummyContent,\n 'dummy metadata source file',\n logger\n );\n }\n }\n return false;\n };\n\n return {\n name: 'screw-up',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Plugin starting\n applyToEnvironment: async (penv) => {\n // Prime metadata generation once so dependent files are ready immediately\n logger.info(`${version}-${git_commit_hash}: Started.`);\n\n // Partial (but maybe exact) project root\n projectRoot = penv.config.root;\n\n // Generate dummy metadata source file to prevent import errors on initial build\n if (\n projectRoot &&\n (await generateMetadataFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n\n return true;\n },\n // Build configuration phase\n config: (config) => {\n // When banner injection is disabled, leave rollup output untouched\n if (!insertMetadataBanner) {\n return;\n }\n\n config.build ??= {};\n const rolldownOptions = (config.build.rolldownOptions ??= {});\n // Normalize rollup outputs to an array so we can inject a banner even when empty\n const ensureOutputs = (): OutputOptions[] => {\n // Consumer already supplied an array of outputs (possibly empty)\n if (Array.isArray(rolldownOptions.output)) {\n const outputs = rolldownOptions.output as OutputOptions[];\n // Array exists but contains no entry yet; create one lazily\n if (outputs.length === 0) {\n const output: OutputOptions = {};\n outputs.push(output);\n return outputs;\n }\n outputs.forEach((output, index) => {\n // Array slot is nullish (user emptied it); replace with object to keep consistent\n if (!output) {\n outputs[index] = {};\n }\n });\n return outputs;\n }\n\n // Single output object was provided; wrap it to unify processing\n if (rolldownOptions.output) {\n return [rolldownOptions.output as OutputOptions];\n }\n\n // No output specified at all; create placeholder so banner hook can run\n const output: OutputOptions = {};\n rolldownOptions.output = output;\n return [output];\n };\n\n const outputs = ensureOutputs();\n\n outputs.forEach((output) => {\n const previousBanner = output.banner;\n // Preserve any existing banner configuration and append ours later in order\n const resolvePreviousBanner = async (chunk: any) => {\n // User provided banner as function; resolve it per chunk for compatibility\n if (typeof previousBanner === 'function') {\n const resolved = await previousBanner(chunk);\n return resolved ?? '';\n }\n return previousBanner ?? '';\n };\n\n output.banner = async (chunk: any) => {\n const existingBanner = await resolvePreviousBanner(chunk);\n const currentBanner = banner ?? '';\n return mergeBanners(currentBanner, existingBanner);\n };\n });\n },\n transform: async (code, id) => {\n if (!fixDefaultImport || !id || id.includes('\\0')) {\n return;\n }\n const cleanId = id.split('?')[0];\n if (cleanId.includes('node_modules')) {\n return;\n }\n if (\n cleanId.endsWith('.d.ts') ||\n cleanId.endsWith('.d.mts') ||\n cleanId.endsWith('.d.cts')\n ) {\n return;\n }\n if (!/\\.(?:[cm]?[jt]sx?|[cm]js)$/.test(cleanId)) {\n return;\n }\n\n const ts = await loadTypeScript();\n if (!ts) {\n return;\n }\n const hasDefaultImport = scanHasDefaultImport(ts, code);\n if (cleanId.includes('/src/') || cleanId.includes('\\\\src\\\\')) {\n logger.debug(\n `[fixDefaultImport] scan ${cleanId}: ${\n hasDefaultImport ? 'hit' : 'miss'\n }`\n );\n }\n if (!hasDefaultImport) {\n return;\n }\n\n const result = await transformDefaultImports(\n ts,\n code,\n cleanId,\n resolveModuleKind\n );\n if (result.changed) {\n return {\n code: result.code,\n map: null,\n };\n }\n },\n // Configuration resolved phase\n configResolved: async (config) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n // Enable debug logging for performance analysis\n const tempEnableLogging = true;\n\n // Save project root\n projectRoot = config.root;\n if (tempEnableLogging || config?.logger) {\n logger = createConsoleLogger(loggerPrefix, config.logger);\n } else if (config?.customLogger) {\n logger = createConsoleLogger(loggerPrefix, config.customLogger);\n }\n\n logger.debug(`configResolved: Started.`);\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot,\n checkWorkingDirectoryStatus,\n logger\n );\n // Refresh banner string and generated files before TypeScript compilation kicks in\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configResolved: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configResolved: Exited.`);\n l.release();\n }\n },\n // Server hook\n configureServer: async (server) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configureServer: Started.`);\n\n // Exclude generated metadata file from watcher to prevent infinite loop\n // Metadata file output is enabled and watcher is present; unwatch to avoid churn\n if (outputMetadataFile && server.watcher) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Use unwatch to exclude the file from being watched\n server.watcher.unwatch(metadataSourcePath);\n logger.debug(\n `configureServer: Excluded from watcher: ${outputMetadataFilePath}`\n );\n }\n\n // Rebuild banner metadata on dev server startup to keep values fresh\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configureServer: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configureServer: Exited.`);\n l.release();\n }\n },\n // Build start phase\n buildStart: async () => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`buildStart: Started.`);\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `buildStart: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`buildStart: Exited.`);\n l.release();\n }\n },\n renderChunk: (code, chunk, outputOptions) => {\n if (!fixDefaultImport || outputOptions.format !== 'cjs') {\n return null;\n }\n const result = injectCjsInteropFlag(code);\n if (!result.changed) {\n return null;\n }\n return { code: result.code, map: null };\n },\n // Generate bundle phase\n generateBundle: {\n order: 'post',\n handler: async (_outputOptions, bundle) => {\n // Rolldown applies JS chunk banners natively, so only patch assets that\n // are emitted outside that path (for example declaration files).\n if (insertMetadataBanner) {\n let assetCount = 0;\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (\n // Only treat assets that match filters; JS chunks already handled via rollup banner\n chunk.type === 'asset' &&\n assetFiltersRegex.some((filter) => filter.test(fileName))\n ) {\n if (typeof chunk.source === 'string') {\n // Assets are not covered by rollup banner injection, so prepend manually\n const bannerBlock = `${banner}\\n`;\n // Insert banner while preserving shebang semantics and capture line delta for maps\n chunk.source = insertBannerHeader(chunk.source, bannerBlock); // insert more blank line\n const lineOffset = countInsertedLines(bannerBlock);\n\n const mapFileName = `${fileName}.map`;\n const mapAsset = bundle[mapFileName] as OutputAsset | undefined;\n if (\n mapAsset &&\n mapAsset.type === 'asset' &&\n mapAsset.source !== undefined\n ) {\n // Rewrite the sourcemap mappings so declaration lines still map back correctly\n const adjusted = applyLineOffsetToSourceMap(\n mapAsset.source,\n lineOffset\n );\n if (adjusted !== undefined) {\n mapAsset.source = adjusted;\n }\n }\n assetCount++;\n }\n }\n }\n if (assetCount >= 1) {\n logger.debug(\n `generateBundle: Banner header inserted: ${assetCount} file(s)`\n );\n }\n }\n },\n },\n // Write bundle phase\n writeBundle: async (options) => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n let count = 0;\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n // Apply banner only to filtered assets in post-write stage\n if (assetFiltersRegex.some((filter) => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n // Backfill banners onto assets emitted by other plugins as well\n const bannerBlock = `${banner}\\n`;\n await writeFile(\n filePath,\n insertBannerHeader(content, bannerBlock)\n );\n\n const lineOffset = countInsertedLines(bannerBlock);\n const mapPath = `${filePath}.map`;\n try {\n const mapContent = await readFile(mapPath, 'utf-8');\n // Align existing .d.ts.map files so consumer toolchains see accurate positions\n const adjusted = applyLineOffsetToSourceMap(\n mapContent,\n lineOffset\n );\n if (adjusted !== undefined) {\n await writeFile(mapPath, adjusted);\n }\n } catch {\n // Declarations without sourcemap can be safely ignored\n }\n count++;\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n if (count >= 1) {\n logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n },\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { screwUp } from './vite-plugin';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Expose screw-up Vite plugin\n\nexport * from './types';\nexport default screwUp;\n"],"x_google_ignoreList":[0,2,3],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["module","exports"],"sources":["../node_modules/async-primitives/dist/index.mjs","../src/generated/packageMetadata.ts","../node_modules/json5/dist/index.js","../node_modules/dayjs/dayjs.min.js","../src/internal.ts","../src/fast-tags.ts","../src/git-operations.ts","../src/analyzer.ts","../src/default-import-fix.ts","../src/metadata-file.ts","../src/vite-plugin.ts","../src/index.ts"],"sourcesContent":["/*!\n * name: async-primitives\n * version: 1.5.0\n * description: A collection of primitive functions for asynchronous operations\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/async-primitives.git\n * git.commit.hash: cd35465b7e9b9945049186e7eaeecc0bfba65766\n */\nconst __NOOP_HANDLER = () => {\n};\nconst __NOOP_RELEASABLE = {\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst toAbortError = (reason) => {\n if (reason instanceof Error) {\n return reason;\n }\n if (typeof reason === \"string\") {\n return new Error(reason);\n }\n return new Error(\"Operation aborted\");\n};\nconst onAbort = (signal, callback) => {\n if (!signal) {\n return __NOOP_RELEASABLE;\n }\n if (signal.aborted) {\n try {\n callback(toAbortError(signal.reason));\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n return __NOOP_RELEASABLE;\n }\n let abortHandler;\n abortHandler = () => {\n if (abortHandler) {\n const reason = signal.reason;\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n try {\n callback(toAbortError(reason));\n } catch (error) {\n console.warn(\"AbortHook callback error: \", error);\n }\n }\n };\n const release = () => {\n if (abortHandler) {\n signal.removeEventListener(\"abort\", abortHandler);\n abortHandler = void 0;\n }\n };\n signal.addEventListener(\"abort\", abortHandler, { once: true });\n const handle = {\n release,\n [Symbol.dispose]: release\n };\n return handle;\n};\nconst delay = (msec, signal) => {\n if (signal) {\n if (signal.aborted) {\n throw new Error(\"Delay was aborted\");\n }\n return new Promise((resolve, reject) => {\n const abortHandle = onAbort(signal, () => {\n clearTimeout(timeoutId);\n reject(new Error(\"Delay was aborted\"));\n });\n const timeoutId = setTimeout(() => {\n abortHandle.release();\n resolve();\n }, msec);\n });\n } else {\n return new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n }\n};\nconst defer = (fn) => {\n if (typeof setImmediate === \"function\") {\n setImmediate(fn);\n } else {\n setTimeout(fn, 0);\n }\n};\nconst ABORTED_ERROR$2 = () => new Error(\"Lock acquisition was aborted\");\nconst createLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createMutex = (maxConsecutiveCalls = 20) => {\n let isLocked = false;\n const queue = [];\n let count = 0;\n const processQueue = () => {\n var _a;\n if (isLocked || queue.length === 0) {\n return;\n }\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$2());\n scheduleNextProcess();\n return;\n }\n isLocked = true;\n const lockHandle = createLockHandle(releaseLock);\n item.resolve(lockHandle);\n };\n const scheduleNextProcess = () => {\n count++;\n if (count >= maxConsecutiveCalls) {\n count = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseLock = () => {\n if (!isLocked) {\n return;\n }\n isLocked = false;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const lock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$2();\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$2());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n lock,\n waiter: {\n wait: lock\n },\n get isLocked() {\n return isLocked;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst createDeferred = (signal) => {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n const disposer = onAbort(signal, () => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n _reject(new Error(\"Deferred aborted\"));\n }\n });\n return {\n // The promise that resolves to the result\n promise,\n // Resolve the promise with a result\n resolve: (value) => {\n const _resolve = resolve;\n if (_resolve) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _resolve(value);\n }\n },\n // Reject the promise with an error\n reject: (error) => {\n const _reject = reject;\n if (_reject) {\n resolve = void 0;\n reject = void 0;\n disposer.release();\n _reject(error);\n }\n }\n };\n};\nconst __NOOP_DUMMY_HANDLE = {\n get isActive() {\n return false;\n },\n release: __NOOP_HANDLER,\n [Symbol.dispose]: __NOOP_HANDLER\n};\nconst createConditional = () => {\n const waiters = [];\n const trigger = () => {\n if (waiters.length >= 1) {\n waiters.shift().resolve();\n }\n };\n const wait = async (signal) => {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createManuallyConditional = (initialState) => {\n const waiters = [];\n let raised = initialState != null ? initialState : false;\n const trigger = () => {\n raised = false;\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve();\n raised = false;\n }\n };\n const raise = () => {\n while (waiters.length >= 1) {\n raised = true;\n waiters.shift().resolve();\n }\n raised = true;\n };\n const drop = () => {\n raised = false;\n };\n const wait = async (signal) => {\n if (raised) {\n return __NOOP_DUMMY_HANDLE;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Conditional aborted\");\n }\n const waiter = createDeferred();\n waiters.push(waiter);\n const disposer = onAbort(signal, () => {\n waiters.splice(waiters.indexOf(waiter), 1);\n waiter.reject(new Error(\"Conditional aborted\"));\n });\n try {\n await waiter.promise;\n } finally {\n disposer.release();\n }\n return __NOOP_DUMMY_HANDLE;\n };\n const result = {\n trigger,\n raise,\n drop,\n wait,\n waiter: {\n wait\n }\n };\n return result;\n};\nconst createDeferredGenerator = (options) => {\n const maxItemReserved = options == null ? void 0 : options.maxItemReserved;\n const signal = options == null ? void 0 : options.signal;\n const queue = [];\n const arrived = createManuallyConditional();\n const canReserve = maxItemReserved ? createManuallyConditional(true) : void 0;\n const generator = (async function* () {\n while (true) {\n while (true) {\n const item = queue.shift();\n if (maxItemReserved && queue.length === maxItemReserved - 1) {\n canReserve.raise();\n }\n if (!item) {\n break;\n }\n switch (item.kind) {\n // Yield return a value\n case \"value\":\n yield item.value;\n break;\n // Completed, exit the generator\n case \"completed\":\n return;\n // Error, throw an error\n case \"error\":\n throw item.error;\n }\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Deferred generator aborted\");\n }\n }\n arrived.drop();\n try {\n await arrived.wait(signal);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n })();\n const enqueue = async (item, signal2) => {\n while (true) {\n if (!maxItemReserved || queue.length < maxItemReserved) {\n const remains = queue.push(item);\n if (remains === 1) {\n arrived.raise();\n }\n if (remains === maxItemReserved) {\n canReserve.drop();\n }\n break;\n }\n try {\n await canReserve.wait(signal2);\n } catch (error) {\n if (error instanceof Error && error.message === \"Conditional aborted\") {\n error.message = \"Deferred generator aborted\";\n }\n throw error;\n }\n }\n };\n return {\n // The async generator that yields values\n generator,\n // Yield a value to the generator\n yield: (value, signal2) => enqueue({ kind: \"value\", value }, signal2),\n // Complete the generator (equivalent to return)\n return: (signal2) => enqueue({ kind: \"completed\" }, signal2),\n // Throw an error to the generator\n throw: (error, signal2) => enqueue({ kind: \"error\", error }, signal2)\n };\n};\nconst createLogicalContext = (id) => {\n return { id, data: /* @__PURE__ */ new Map() };\n};\nlet currentLogicalContext = createLogicalContext(Symbol(\"[root]\"));\nconst setCurrentLogicalContext = (context) => {\n currentLogicalContext = context;\n};\nconst trampoline = (adjustment, callback, thisArg, ...args) => {\n const previousLogicalContext = currentLogicalContext;\n currentLogicalContext = adjustment.contextToUse;\n try {\n return callback.call(thisArg, ...args);\n } finally {\n adjustment.contextAfter = currentLogicalContext;\n currentLogicalContext = previousLogicalContext;\n }\n};\nlet isPrepared = false;\nconst prepare = () => {\n if (isPrepared) {\n return;\n }\n isPrepared = true;\n if (typeof globalThis.setTimeout !== \"undefined\") {\n const __setTimeout = globalThis.setTimeout;\n globalThis.setTimeout = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setTimeout(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.setInterval !== \"undefined\") {\n const __setInterval = globalThis.setInterval;\n globalThis.setInterval = ((handler, timeout, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setInterval(\n (...args2) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, handler, void 0, ...args2);\n },\n timeout,\n ...args\n );\n });\n }\n if (typeof globalThis.queueMicrotask !== \"undefined\") {\n const __queueMicrotask = globalThis.queueMicrotask;\n globalThis.queueMicrotask = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __queueMicrotask(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0);\n });\n };\n }\n if (typeof globalThis.setImmediate !== \"undefined\") {\n const __setImmediate = globalThis.setImmediate;\n globalThis.setImmediate = ((callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __setImmediate(\n (...callbackArgs) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...callbackArgs);\n },\n ...args\n );\n });\n }\n if (typeof process !== \"undefined\" && process.nextTick) {\n const __nextTick = process.nextTick;\n process.nextTick = (callback, ...args) => {\n const capturedLogicalContext = currentLogicalContext;\n return __nextTick(() => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n trampoline(adjustment, callback, void 0, ...args);\n });\n };\n }\n if (typeof Promise !== \"undefined\") {\n const __then = Promise.prototype.then;\n const __catch = Promise.prototype.catch;\n const __finally = Promise.prototype.finally;\n Promise.prototype.then = function(onFulfilled, onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __then.call(\n this,\n onFulfilled ? (value) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFulfilled, void 0, value);\n } : void 0,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.catch = function(onRejected) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __catch.call(\n this,\n onRejected ? (reason) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onRejected, void 0, reason);\n } : void 0\n );\n return resultPromise;\n };\n Promise.prototype.finally = function(onFinally) {\n const capturedLogicalContext = currentLogicalContext;\n const resultPromise = __finally.call(\n this,\n onFinally ? () => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, onFinally, void 0);\n } : void 0\n );\n return resultPromise;\n };\n }\n if (typeof EventTarget !== \"undefined\" && EventTarget.prototype && EventTarget.prototype.addEventListener) {\n const __eventTargetAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __eventTargetAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __eventTargetAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof Element !== \"undefined\" && Element.prototype && Element.prototype.addEventListener) {\n const __elementAddEventListener = Element.prototype.addEventListener;\n Element.prototype.addEventListener = function(type, listener, options) {\n if (listener === null || listener === void 0) {\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return __elementAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return __elementAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n };\n }\n if (typeof globalThis.requestAnimationFrame !== \"undefined\") {\n const __requestAnimationFrame = globalThis.requestAnimationFrame;\n globalThis.requestAnimationFrame = (callback) => {\n const capturedLogicalContext = currentLogicalContext;\n return __requestAnimationFrame((time) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, time);\n });\n };\n }\n if (typeof globalThis.XMLHttpRequest !== \"undefined\") {\n const __XMLHttpRequest = globalThis.XMLHttpRequest;\n globalThis.XMLHttpRequest = class extends __XMLHttpRequest {\n constructor() {\n super();\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onreadystatechange\",\n \"onloadstart\",\n \"onprogress\",\n \"onabort\",\n \"onerror\",\n \"onload\",\n \"ontimeout\",\n \"onloadend\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.WebSocket !== \"undefined\") {\n const __WebSocket = globalThis.WebSocket;\n globalThis.WebSocket = class extends __WebSocket {\n constructor(url, protocols) {\n super(url, protocols);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onopen\",\n \"onmessage\",\n \"onerror\",\n \"onclose\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MutationObserver !== \"undefined\") {\n const __MutationObserver = globalThis.MutationObserver;\n globalThis.MutationObserver = class extends __MutationObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (mutations, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(\n adjustment,\n callback,\n void 0,\n mutations,\n observer\n );\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.ResizeObserver !== \"undefined\") {\n const __ResizeObserver = globalThis.ResizeObserver;\n globalThis.ResizeObserver = class extends __ResizeObserver {\n constructor(callback) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback);\n }\n };\n }\n if (typeof globalThis.IntersectionObserver !== \"undefined\") {\n const __IntersectionObserver = globalThis.IntersectionObserver;\n globalThis.IntersectionObserver = class extends __IntersectionObserver {\n constructor(callback, options) {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedCallback = (entries, observer) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, callback, void 0, entries, observer);\n };\n super(wrappedCallback, options);\n }\n };\n }\n if (typeof globalThis.Worker !== \"undefined\") {\n const __Worker = globalThis.Worker;\n globalThis.Worker = class extends __Worker {\n constructor(scriptURL, options) {\n super(scriptURL, options);\n this._userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\n \"onmessage\",\n \"onmessageerror\",\n \"onerror\"\n ];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(this, prop, {\n get: () => this._userHandlers.get(prop) || null,\n set: (newHandler) => {\n this._userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, wrappedHandler);\n } else {\n this[`_${prop}`] = wrappedHandler;\n }\n } else {\n const parentProto = Object.getPrototypeOf(\n Object.getPrototypeOf(this)\n );\n const descriptor = Object.getOwnPropertyDescriptor(\n parentProto,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(this, null);\n } else {\n this[`_${prop}`] = null;\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n }\n addEventListener(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return super.addEventListener(type, listener, options);\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return super.addEventListener(type, wrappedListener, options);\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return super.addEventListener(type, wrappedListener, options);\n }\n return super.addEventListener(type, listener, options);\n }\n };\n }\n if (typeof globalThis.MessagePort !== \"undefined\") {\n const __MessagePort = globalThis.MessagePort;\n const createMessagePortWrapper = (originalPort) => {\n const _userHandlers = /* @__PURE__ */ new Map();\n const eventHandlerProperties = [\"onmessage\", \"onmessageerror\"];\n eventHandlerProperties.forEach((prop) => {\n Object.defineProperty(originalPort, prop, {\n get: () => _userHandlers.get(prop) || null,\n set: (newHandler) => {\n _userHandlers.set(prop, newHandler);\n if (newHandler && typeof newHandler === \"function\") {\n const capturedLogicalContext = currentLogicalContext;\n const wrappedHandler = function(event) {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, newHandler, this, event);\n };\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, wrappedHandler);\n }\n } else {\n const descriptor = Object.getOwnPropertyDescriptor(\n __MessagePort.prototype,\n prop\n );\n if (descriptor && descriptor.set) {\n descriptor.set.call(originalPort, null);\n }\n }\n },\n configurable: true,\n enumerable: true\n });\n });\n const originalAddEventListener = originalPort.addEventListener;\n originalPort.addEventListener = function(type, listener, options) {\n const capturedLogicalContext = currentLogicalContext;\n if (!listener) {\n return originalAddEventListener.call(\n this,\n type,\n listener,\n options\n );\n }\n if (typeof listener === \"function\") {\n const wrappedListener = (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, listener, event.currentTarget, event);\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n } else if (typeof listener === \"object\" && \"handleEvent\" in listener) {\n const wrappedListener = {\n handleEvent: (event) => {\n const adjustment = {\n contextToUse: capturedLogicalContext\n };\n return trampoline(adjustment, () => listener.handleEvent(event));\n }\n };\n return originalAddEventListener.call(\n this,\n type,\n wrappedListener,\n options\n );\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n return originalPort;\n };\n if (typeof globalThis.MessageChannel !== \"undefined\") {\n const __MessageChannel = globalThis.MessageChannel;\n globalThis.MessageChannel = class extends __MessageChannel {\n constructor() {\n super();\n createMessagePortWrapper(this.port1);\n createMessagePortWrapper(this.port2);\n }\n };\n }\n }\n};\nconst setLogicalContextValue = (key, value) => {\n prepare();\n if (value !== void 0) {\n currentLogicalContext.data.set(key, value);\n } else {\n currentLogicalContext.data.delete(key);\n }\n};\nconst getLogicalContextValue = (key) => {\n prepare();\n return currentLogicalContext.data.get(key);\n};\nconst runOnNewLogicalContext = (prefix, handler) => {\n const previousLogicalContext = currentLogicalContext;\n setCurrentLogicalContext(\n createLogicalContext(Symbol(`${prefix}-${crypto.randomUUID()}`))\n );\n try {\n return handler();\n } finally {\n setCurrentLogicalContext(previousLogicalContext);\n }\n};\nconst getCurrentLogicalContextId = () => {\n prepare();\n return currentLogicalContext.id;\n};\nconst createAsyncLocal = () => {\n const key = Symbol(`async-local-${crypto.randomUUID()}`);\n return {\n setValue: (value) => {\n setLogicalContextValue(key, value);\n },\n getValue: () => {\n return getLogicalContextValue(key);\n }\n };\n};\nconst ABORTED_ERROR$1 = () => new Error(\"Semaphore acquisition was aborted\");\nconst INVALID_COUNT_ERROR = () => new Error(\"Semaphore count must be greater than 0\");\nconst createSemaphoreHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createSemaphore = (count, maxConsecutiveCalls = 20) => {\n if (count < 1) {\n throw INVALID_COUNT_ERROR();\n }\n let availableCount = count;\n const queue = [];\n let consecutiveCallCount = 0;\n const processQueue = () => {\n var _a;\n while (availableCount > 0 && queue.length > 0) {\n const item = queue.shift();\n if ((_a = item.signal) == null ? void 0 : _a.aborted) {\n item.reject(ABORTED_ERROR$1());\n continue;\n }\n availableCount--;\n const semaphoreHandle = createSemaphoreHandle(releaseSemaphore);\n item.resolve(semaphoreHandle);\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueue);\n } else {\n processQueue();\n }\n };\n const releaseSemaphore = () => {\n availableCount++;\n scheduleNextProcess();\n };\n const removeFromQueue = (item) => {\n const index = queue.indexOf(item);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n };\n const acquire = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR$1();\n }\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromQueue(queueItem);\n reject(ABORTED_ERROR$1());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n queue.push(queueItem);\n processQueue();\n });\n } else {\n if (availableCount > 0) {\n availableCount--;\n return createSemaphoreHandle(releaseSemaphore);\n }\n return new Promise((resolve, reject) => {\n queue.push({\n resolve,\n reject\n });\n processQueue();\n });\n }\n };\n const result = {\n acquire,\n waiter: {\n wait: acquire\n },\n get availableCount() {\n return availableCount;\n },\n get pendingCount() {\n return queue.length;\n }\n };\n return result;\n};\nconst ABORTED_ERROR = () => new Error(\"Lock acquisition was aborted\");\nconst createReadLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nconst createWriteLockHandle = (releaseCallback) => {\n let isActive = true;\n const release = () => {\n if (!isActive) {\n return;\n }\n isActive = false;\n releaseCallback();\n };\n return {\n get isActive() {\n return isActive;\n },\n release,\n [Symbol.dispose]: release\n };\n};\nfunction createReaderWriterLock(optionsOrMaxCalls) {\n var _a, _b;\n let policy = \"write-preferring\";\n let maxConsecutiveCalls = 20;\n if (typeof optionsOrMaxCalls === \"number\") {\n maxConsecutiveCalls = optionsOrMaxCalls;\n } else if (optionsOrMaxCalls) {\n policy = (_a = optionsOrMaxCalls.policy) != null ? _a : \"write-preferring\";\n maxConsecutiveCalls = (_b = optionsOrMaxCalls.maxConsecutiveCalls) != null ? _b : 20;\n }\n let currentReaders = 0;\n let hasWriter = false;\n const readQueue = [];\n const writeQueue = [];\n let consecutiveCallCount = 0;\n const processQueues = () => {\n var _a2, _b2, _c, _d;\n if (policy === \"write-preferring\") {\n if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_a2 = item.signal) == null ? void 0 : _a2.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n } else if (!hasWriter && writeQueue.length === 0 && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_b2 = item.signal) == null ? void 0 : _b2.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n }\n } else {\n if (!hasWriter && readQueue.length > 0) {\n const readersToProcess = [];\n while (readQueue.length > 0) {\n const item = readQueue.shift();\n if ((_c = item.signal) == null ? void 0 : _c.aborted) {\n item.reject(ABORTED_ERROR());\n } else {\n readersToProcess.push(item);\n }\n }\n for (const item of readersToProcess) {\n currentReaders++;\n const readLockHandle = createReadLockHandle(releaseReadLock);\n item.resolve(readLockHandle);\n }\n } else if (!hasWriter && currentReaders === 0 && writeQueue.length > 0) {\n const item = writeQueue.shift();\n if ((_d = item.signal) == null ? void 0 : _d.aborted) {\n item.reject(ABORTED_ERROR());\n scheduleNextProcess();\n return;\n }\n hasWriter = true;\n const writeLockHandle = createWriteLockHandle(releaseWriteLock);\n item.resolve(writeLockHandle);\n }\n }\n };\n const scheduleNextProcess = () => {\n consecutiveCallCount++;\n if (consecutiveCallCount >= maxConsecutiveCalls) {\n consecutiveCallCount = 0;\n defer(processQueues);\n } else {\n processQueues();\n }\n };\n const releaseReadLock = () => {\n if (currentReaders > 0) {\n currentReaders--;\n if (currentReaders === 0) {\n scheduleNextProcess();\n }\n }\n };\n const releaseWriteLock = () => {\n if (hasWriter) {\n hasWriter = false;\n scheduleNextProcess();\n }\n };\n const removeFromReadQueue = (item) => {\n const index = readQueue.indexOf(item);\n if (index !== -1) {\n readQueue.splice(index, 1);\n }\n };\n const removeFromWriteQueue = (item) => {\n const index = writeQueue.indexOf(item);\n if (index !== -1) {\n writeQueue.splice(index, 1);\n }\n };\n const readLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromReadQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n readQueue.push(queueItem);\n processQueues();\n });\n } else {\n const canAcquireImmediately = policy === \"read-preferring\" ? !hasWriter : !hasWriter && writeQueue.length === 0;\n if (canAcquireImmediately) {\n currentReaders++;\n return createReadLockHandle(releaseReadLock);\n }\n return new Promise((resolve, reject) => {\n readQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const writeLock = async (signal) => {\n if (signal) {\n if (signal.aborted) {\n throw ABORTED_ERROR();\n }\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n const queueItem = {\n resolve: void 0,\n reject: void 0,\n signal\n };\n const abortHandle = onAbort(signal, () => {\n removeFromWriteQueue(queueItem);\n reject(ABORTED_ERROR());\n });\n queueItem.resolve = (handle) => {\n abortHandle.release();\n resolve(handle);\n };\n queueItem.reject = (error) => {\n abortHandle.release();\n reject(error);\n };\n writeQueue.push(queueItem);\n processQueues();\n });\n } else {\n if (!hasWriter && currentReaders === 0) {\n hasWriter = true;\n return createWriteLockHandle(releaseWriteLock);\n }\n return new Promise((resolve, reject) => {\n writeQueue.push({\n resolve,\n reject\n });\n processQueues();\n });\n }\n };\n const readWaiter = {\n wait: readLock\n };\n const writeWaiter = {\n wait: writeLock\n };\n return {\n readLock,\n writeLock,\n readWaiter,\n writeWaiter,\n get currentReaders() {\n return currentReaders;\n },\n get hasWriter() {\n return hasWriter;\n },\n get pendingReadersCount() {\n return readQueue.length;\n },\n get pendingWritersCount() {\n return writeQueue.length;\n }\n };\n}\nexport {\n createAsyncLocal,\n createMutex as createAsyncLock,\n createConditional,\n createDeferred,\n createDeferredGenerator,\n createManuallyConditional,\n createManuallyConditional as createManuallySignal,\n createMutex,\n createReaderWriterLock,\n createSemaphore,\n createConditional as createSignal,\n defer,\n delay,\n getCurrentLogicalContextId,\n getLogicalContextValue,\n onAbort,\n runOnNewLogicalContext,\n setLogicalContextValue\n};\n//# sourceMappingURL=index.mjs.map\n","// @ts-nocheck\n// This file is auto-generated by screw-up plugin\n// Do not edit manually\n\nexport const name = \"screw-up\";\nexport const version = \"1.28.0\";\nexport const description = \"Simply package metadata inserter on Vite plugin\";\nexport const author = \"Kouji Matsui (@kekyo@mi.kekyo.net)\";\nexport const license = \"MIT\";\nexport const repository_url = \"https://github.com/kekyo/screw-up.git\";\nexport const git_commit_hash = \"4bc8c338f32ab8ed9bbf0b9ad0ba4166d584be65\";\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.JSON5 = factory());\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, join } from 'path';\nimport { glob } from 'glob';\nimport JSON5 from 'json5';\nimport dayjs from 'dayjs';\nimport { PackageMetadata } from './types';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Logger interface\n */\nexport interface Logger {\n /**\n * Log an debug message\n * @param msg - The message to log\n */\n readonly debug: (msg: string) => void;\n /**\n * Log an info message\n * @param msg - The message to log\n */\n readonly info: (msg: string) => void;\n /**\n * Log a warning message\n * @param msg - The message to log\n */\n readonly warn: (msg: string) => void;\n /**\n * Log an error message\n * @param msg - The message to log\n */\n readonly error: (msg: string) => void;\n}\n\n/**\n * Default console logger implementation\n * @param prefix - Log prefix\n * @param driver - Console logging driver instance\n */\nexport const createConsoleLogger = (prefix?: string, driver?: any): Logger => {\n const d = driver?.debug ?? (() => {});\n const i = driver?.info ?? globalThis.console.info;\n const w = driver?.warn ?? globalThis.console.warn;\n const e = driver?.error ?? globalThis.console.error;\n if (prefix) {\n return {\n debug: (msg: string) => d(`[${prefix}]: ${msg}`),\n info: (msg: string) => i(`[${prefix}]: ${msg}`),\n warn: (msg: string) => w(`[${prefix}]: ${msg}`),\n error: (msg: string) => e(`[${prefix}]: ${msg}`),\n };\n } else {\n return {\n debug: (msg: string) => d(`${msg}`),\n info: (msg: string) => i(`${msg}`),\n warn: (msg: string) => w(`${msg}`),\n error: (msg: string) => e(`${msg}`),\n };\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Result of package resolution with source tracking\n * @template T - Type of the package metadata\n */\nexport interface PackageResolutionResult<T> {\n readonly metadata: T;\n readonly sourceMap: Map<string, string>;\n}\n\n/**\n * Workspace sibling project information\n */\nexport interface WorkspaceSibling {\n readonly name: string;\n readonly version: string;\n readonly path: string;\n}\n\nconst collectStringArray = (value: unknown): string[] | undefined => {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entries = value.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n\n return entries.length > 0 ? entries : undefined;\n};\n\nconst resolveWorkspacePatternsFromPackageJson = (\n packageJson: any\n): string[] | undefined => {\n const directPatterns = collectStringArray(packageJson?.workspaces);\n if (directPatterns) {\n return directPatterns;\n }\n\n return collectStringArray(packageJson?.workspaces?.packages);\n};\n\nconst parseYamlScalar = (value: string): string | undefined => {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n try {\n const parsed = JSON5.parse(trimmed);\n return typeof parsed === 'string' ? parsed : undefined;\n } catch {\n const commentIndex = trimmed.indexOf(' #');\n const withoutComment =\n commentIndex >= 0 ? trimmed.slice(0, commentIndex).trim() : trimmed;\n return withoutComment || undefined;\n }\n};\n\nconst parsePnpmWorkspacePatterns = (content: string): string[] => {\n const patterns: string[] = [];\n const lines = content.split(/\\r?\\n/);\n\n let inPackagesSection = false;\n let packagesIndent = -1;\n\n for (const rawLine of lines) {\n const line = rawLine.replace(/\\t/g, ' ');\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const indent = line.length - line.trimStart().length;\n if (!inPackagesSection) {\n const match = trimmed.match(/^packages\\s*:\\s*(.*)$/);\n if (!match) {\n continue;\n }\n\n const remaining = match[1].trim();\n if (remaining) {\n const parsed = JSON5.parse(remaining);\n if (Array.isArray(parsed)) {\n const inlinePatterns = parsed.filter(\n (entry: unknown): entry is string => typeof entry === 'string'\n );\n patterns.push(...inlinePatterns);\n }\n break;\n }\n\n inPackagesSection = true;\n packagesIndent = indent;\n continue;\n }\n\n if (indent <= packagesIndent && !trimmed.startsWith('-')) {\n break;\n }\n\n const match = trimmed.match(/^-\\s*(.+)$/);\n if (!match) {\n continue;\n }\n\n const pattern = parseYamlScalar(match[1]);\n if (pattern) {\n patterns.push(pattern);\n }\n }\n\n return patterns;\n};\n\nconst resolveWorkspacePatterns = async (\n workspaceRoot: string,\n logger: Logger\n): Promise<string[]> => {\n try {\n const rootPackageJsonPath = join(workspaceRoot, 'package.json');\n if (existsSync(rootPackageJsonPath)) {\n const content = await readFile(rootPackageJsonPath, 'utf-8');\n const rootPackageJson = JSON5.parse(content);\n const workspacePatterns =\n resolveWorkspacePatternsFromPackageJson(rootPackageJson);\n if (workspacePatterns?.length) {\n return workspacePatterns;\n }\n }\n\n const pnpmWorkspacePath = join(workspaceRoot, 'pnpm-workspace.yaml');\n if (!existsSync(pnpmWorkspacePath)) {\n return [];\n }\n\n const pnpmWorkspaceContent = await readFile(pnpmWorkspacePath, 'utf-8');\n return parsePnpmWorkspacePatterns(pnpmWorkspaceContent);\n } catch (error) {\n logger.warn(\n `Failed to resolve workspace patterns from ${workspaceRoot}: ${error}`\n );\n return [];\n }\n};\n\n/**\n * Recursively flatten an object into dot-notation key-value pairs\n * @param obj - Object to flatten\n * @param prefix - Current key prefix\n * @param map - Store key-value entries into this\n */\nconst flattenObject = (obj: any, prefix: string, map: PackageMetadata) => {\n for (const [key, value] of Object.entries(obj)) {\n if (!value) continue;\n const fullKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'string') {\n map[fullKey] = value;\n } else if (Array.isArray(value)) {\n map[fullKey] = value.map((v) => String(v)).join(',');\n } else if (typeof value === 'object') {\n // Recursively flatten nested objects\n flattenObject(value, fullKey, map);\n } else {\n // Convert other types to string\n map[fullKey] = String(value);\n }\n }\n};\n\n/**\n * Find workspace root by looking for workspace configuration files\n * @param startPath - Starting directory path\n * @param logger - Logger instance\n * @returns Promise resolving to workspace root path or undefined if not found\n */\nexport const findWorkspaceRoot = async (\n startPath: string,\n logger: Logger\n): Promise<string | undefined> => {\n let currentPath = startPath;\n\n while (currentPath !== dirname(currentPath)) {\n const packageJsonPath = join(currentPath, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON5.parse(content);\n\n // Check for workspace configurations\n if (\n packageJson.workspaces ||\n existsSync(join(currentPath, 'pnpm-workspace.yaml')) ||\n existsSync(join(currentPath, 'lerna.json'))\n ) {\n return currentPath;\n }\n } catch (error) {\n logger.warn(\n `Failed to parse package.json at ${packageJsonPath}: ${error}`\n );\n }\n }\n\n currentPath = dirname(currentPath);\n }\n\n return undefined;\n};\n\n/**\n * Collect workspace sibling projects\n * @param workspaceRoot - Workspace root directory\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)\n */\nexport const collectWorkspaceSiblings = async (\n workspaceRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger\n): Promise<Map<string, WorkspaceSibling>> => {\n const siblings = new Map<string, WorkspaceSibling>();\n\n try {\n const workspacePatterns = await resolveWorkspacePatterns(\n workspaceRoot,\n logger\n );\n if (workspacePatterns.length <= 0) {\n return siblings;\n }\n\n // Find all workspace directories\n const workspaceDirs = new Set<string>();\n for (const pattern of workspacePatterns) {\n const matches = await glob(pattern, {\n cwd: workspaceRoot,\n });\n matches.forEach((match) => workspaceDirs.add(match));\n }\n\n // Read package.json from each workspace directory\n for (const workspaceDir of workspaceDirs) {\n const packageJsonPath = join(workspaceRoot, workspaceDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packagePath = join(workspaceRoot, workspaceDir);\n\n // Use resolveRawPackageJsonObject to get the resolved version with Git tag consideration\n const resolvedPackage = await resolveRawPackageJsonObject(\n packagePath,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n logger\n );\n\n const packageJson = resolvedPackage.metadata;\n\n if (packageJson.name && packageJson.version) {\n siblings.set(packageJson.name, {\n name: packageJson.name,\n version: packageJson.version,\n path: packagePath,\n });\n }\n } catch (error) {\n logger.warn(\n `Failed to resolve package.json from ${packageJsonPath}: ${error}`\n );\n }\n }\n }\n } catch (error) {\n logger.warn(\n `Failed to collect workspace siblings from ${workspaceRoot}: ${error}`\n );\n }\n\n return siblings;\n};\n\n/**\n * Replace \"*\" wildcards in peerDependencies with actual workspace sibling versions\n * @param packageJson - Package.json object to modify\n * @param siblings - Map of workspace sibling projects\n * @param versionPrefix - Version prefix to add (e.g., \"^\", \"~\", \"\")\n * @returns Modified package.json object\n */\nexport const replacePeerDependenciesWildcards = (\n packageJson: any,\n siblings: Map<string, WorkspaceSibling>,\n versionPrefix: string\n): any => {\n // Deep clone the package.json to avoid modifying the original\n const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));\n\n if (\n !modifiedPackageJson.peerDependencies ||\n typeof modifiedPackageJson.peerDependencies !== 'object'\n ) {\n return modifiedPackageJson;\n }\n\n // Process each peer dependency\n for (const [depName, depVersion] of Object.entries(\n modifiedPackageJson.peerDependencies\n )) {\n if (depVersion === '*' && siblings.has(depName)) {\n const sibling = siblings.get(depName)!;\n modifiedPackageJson.peerDependencies[depName] =\n `${versionPrefix}${sibling.version}`;\n }\n }\n\n return modifiedPackageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Merge package metadata with inheritance (child overrides parent)\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package metadata\n * @param childMetadata - Child package metadata\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @returns Merged package metadata\n */\nexport const mergePackageMetadata = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n sourceMap: Map<string, string>,\n parentMetadata: PackageMetadata,\n childMetadata: PackageMetadata,\n parentSourceDir: string,\n childSourceDir: string,\n _repositoryPath: string\n): Promise<PackageMetadata> => {\n // Fetch git metadata\n const metadata = await fetchGitMetadata();\n\n const merged: PackageMetadata = {};\n flattenObject(metadata, '', merged);\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && metadata.version) {\n merged.version = metadata.version;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n/**\n * Merge raw package.json objects with inheritance (child overrides parent)\n * Only inherits package metadata fields, not project-specific configurations\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param sourceMap - Map to track field sources\n * @param parentMetadata - Parent package object\n * @param childMetadata - Child package object\n * @param parentSourceDir - Parent package.json directory (for source tracking)\n * @param childSourceDir - Child package.json directory (for source tracking)\n * @param repositoryPath - Path to Git repository root\n * @returns Merged package object with only metadata fields\n */\nconst mergeRawPackageJson = async (\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n sourceMap: Map<string, string>,\n parentMetadata: any,\n childMetadata: any,\n parentSourceDir: string,\n childSourceDir: string,\n repositoryPath: string\n): Promise<any> => {\n // Fetch git metadata\n const gitMetadata = await fetchGitMetadata();\n const merged = { ...gitMetadata };\n\n // Start with parent metadata\n for (const key in parentMetadata) {\n if (inheritableFields.has(key)) {\n const value = parentMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, parentSourceDir);\n }\n }\n }\n\n // Override with child metadata\n for (const key in childMetadata) {\n const value = childMetadata[key];\n if (value !== undefined) {\n merged[key] = value;\n sourceMap.set(key, childSourceDir);\n }\n }\n\n // Always override version from Git if enabled (new default behavior)\n if (alwaysOverrideVersionFromGit && gitMetadata.version) {\n merged.version = gitMetadata.version;\n sourceMap.set('version', repositoryPath); // Mark as Git-sourced\n }\n\n if (!merged.version) {\n merged.version = '0.0.1';\n const gitInfo =\n typeof merged.git === 'object' && merged.git !== null ? merged.git : {};\n gitInfo.version = gitInfo.version ?? merged.version;\n gitInfo.commit = gitInfo.commit ?? {\n hash: 'unknown',\n shortHash: 'unknown',\n };\n gitInfo.tags = gitInfo.tags ?? [];\n gitInfo.branches = gitInfo.branches ?? [];\n merged.git = gitInfo;\n }\n\n merged.buildDate = dayjs().format();\n\n return merged;\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param logger - Logger instance\n * @param readPackageMetadataFn - Function to read package metadata\n * @param mergePackageMetadataFn - Function to merge package metadata\n * @returns Promise resolving to resolved package metadata\n */\nconst resolvePackageMetadataT = async <T>(\n projectRoot: string,\n logger: Logger,\n readPackageMetadataFn: (path: string) => Promise<T>,\n mergePackageMetadataFn: (\n a: T,\n b: T,\n aDir: string,\n bDir: string,\n repositoryPath: string\n ) => Promise<T>\n): Promise<T> => {\n const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);\n\n if (!workspaceRoot) {\n // No workspace, just read local package.json\n const localPackagePath = join(projectRoot, 'package.json');\n const localMetadata = await readPackageMetadataFn(localPackagePath);\n return mergePackageMetadataFn(\n {} as T,\n localMetadata,\n '', // dummy\n projectRoot,\n projectRoot\n );\n }\n\n const projectPackagePath = join(projectRoot, 'package.json');\n\n // Start with root package metadata\n const rootPackagePath = join(workspaceRoot, 'package.json');\n const metadata = await readPackageMetadataFn(rootPackagePath);\n\n // If current project is not the root, merge with project-specific metadata\n if (\n projectPackagePath !== rootPackagePath &&\n existsSync(projectPackagePath)\n ) {\n const projectMetadata = await readPackageMetadataFn(projectPackagePath);\n return mergePackageMetadataFn(\n metadata,\n projectMetadata,\n workspaceRoot,\n projectRoot,\n projectRoot\n );\n } else {\n return mergePackageMetadataFn(\n {} as T,\n metadata,\n '', // dummy\n workspaceRoot,\n projectRoot\n );\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Read and parse package.json file\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to package metadata\n */\nconst readPackageMetadata = async (\n logger: Logger,\n packagePath: string\n): Promise<PackageMetadata> => {\n try {\n const content = await readFile(packagePath, 'utf-8');\n const json = JSON5.parse(content);\n const map: PackageMetadata = {};\n flattenObject(json, '', map);\n return map;\n } catch (error) {\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n return {};\n }\n};\n\n/**\n * Resolve package metadata for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param logger - Logger instance\n * @returns Promise resolving to resolved package metadata\n */\nexport const resolvePackageMetadata = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n logger: Logger\n): Promise<PackageResolutionResult<PackageMetadata>> => {\n const sourceMap = new Map<string, string>();\n const metadata = await resolvePackageMetadataT<PackageMetadata>(\n projectRoot,\n logger,\n readPackageMetadata.bind(undefined, logger),\n mergePackageMetadata.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n sourceMap\n )\n );\n\n return {\n metadata,\n sourceMap,\n };\n};\n\n/**\n * Read and parse package.json file without flattening\n * @param logger - Logger instance\n * @param packagePath - Path to package.json\n * @returns Promise resolving to raw package object\n */\nconst readRawPackageJson = async (\n logger: Logger,\n packagePath: string,\n ignoreNotExist: boolean = false\n): Promise<any> => {\n if (ignoreNotExist && !existsSync(packagePath)) {\n return {};\n }\n try {\n const content = await readFile(packagePath, 'utf-8');\n return JSON5.parse(content);\n } catch (error) {\n if (ignoreNotExist && (error as any)?.code === 'ENOENT') {\n return {};\n }\n logger.error(`Failed to read package.json from ${packagePath}: ${error}`);\n throw error;\n }\n};\n\n/**\n * Resolve raw package.json for current project with workspace inheritance\n * @param projectRoot - Current project root\n * @param fetchGitMetadata - Git metadata fetcher\n * @param alwaysOverrideVersionFromGit - Always override version from Git\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param logger - Logger instance\n * @returns Promise resolving to resolved raw package.json object with source tracking\n */\nexport const resolveRawPackageJsonObject = async (\n projectRoot: string,\n fetchGitMetadata: () => Promise<any>,\n alwaysOverrideVersionFromGit: boolean,\n inheritableFields: Set<string>,\n logger: Logger,\n ignoreNotExist: boolean = false\n): Promise<PackageResolutionResult<any>> => {\n const sourceMap = new Map<string, string>();\n const readRawPackageJsonFn = async (packagePath: string) =>\n readRawPackageJson(logger, packagePath, ignoreNotExist);\n const packageJson = await resolvePackageMetadataT<any>(\n projectRoot,\n logger,\n readRawPackageJsonFn,\n mergeRawPackageJson.bind(\n undefined,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n inheritableFields,\n sourceMap\n )\n );\n\n return {\n metadata: packageJson,\n sourceMap,\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { readdir, readFile, stat } from 'fs/promises';\nimport { isAbsolute, join } from 'path';\nimport type { Logger } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Fast tag listing implementation that reads tags directly from filesystem\n * instead of using isomorphic-git's `listTags`\n */\n\n/**\n * Parse packed-refs file to extract tags\n * @param packedRefsPath - Path to packed-refs file\n * @returns Array of tag names\n */\nconst parsePackedRefs = async (packedRefsPath: string): Promise<string[]> => {\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n const tags: string[] = [];\n\n for (const line of lines) {\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Format: <hash> refs/tags/<tagname>\n const match = line.match(/^[0-9a-f]{40}\\s+refs\\/tags\\/(.+)$/);\n if (match) {\n // Handle peeled tags (annotated tags) marked with ^{}\n const tagName = match[1];\n if (!tagName.endsWith('^{}')) {\n tags.push(tagName);\n }\n }\n }\n\n return tags;\n } catch (error) {\n // packed-refs might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Read loose tag refs from refs/tags directory\n * @param refsTagsPath - Path to refs/tags directory\n * @returns Array of tag names\n */\nconst readLooseTags = async (refsTagsPath: string): Promise<string[]> => {\n try {\n const entries = await readdir(refsTagsPath, { withFileTypes: true });\n const tags: string[] = [];\n\n for (const entry of entries) {\n if (entry.isFile()) {\n tags.push(entry.name);\n }\n }\n\n return tags;\n } catch (error) {\n // refs/tags might not exist, which is fine\n if ((error as any).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n};\n\n/**\n * Fast implementation of listTags that reads directly from filesystem\n * @param repoPath - Repository path\n * @returns Array of all tag names\n */\nexport const listTagsFast = async (repoPath: string): Promise<string[]> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n // Read the actual git dir location from .git file\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Read tags from both packed-refs and loose refs\n const [packedTags, looseTags] = await Promise.all([\n parsePackedRefs(join(actualGitDir, 'packed-refs')),\n readLooseTags(join(actualGitDir, 'refs', 'tags')),\n ]);\n\n // Combine and deduplicate tags\n const allTags = new Set<string>([...packedTags, ...looseTags]);\n\n // Sort tags for consistent output (matching git.listTags behavior)\n return Array.from(allTags).sort();\n};\n\n/**\n * Get hash for a specific tag by reading refs directly\n * @param repoPath - Repository path\n * @param tagName - Name of the tag\n * @returns The SHA-1 hash the tag points to, or null if not found\n */\nexport const resolveTagFast = async (\n repoPath: string,\n tagName: string\n): Promise<string | null> => {\n const gitDir = join(repoPath, '.git');\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // First try loose ref\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n return hash.trim();\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then try packed-refs\n const packedRefsPath = join(actualGitDir, 'packed-refs');\n try {\n const content = await readFile(packedRefsPath, 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Skip comments and empty lines\n if (line.startsWith('#') || !line.trim()) continue;\n\n // Check if this line is for our tag\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && match[2] === tagName) {\n // Check if next line is a peeled ref (^{})\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // Return the peeled ref (points directly to commit)\n return lines[i + 1].substring(1, 41);\n }\n // Return the tag object hash\n return match[1];\n }\n }\n } catch (error) {\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n return null;\n};\n\n/**\n * Batch resolve multiple tags for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to hash\n */\nexport const resolveTagsBatch = async (\n repoPath: string,\n tagNames: string[]\n): Promise<Map<string, string>> => {\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, string>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n // Check for peeled ref\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n result.set(match[2], lines[i + 1].substring(1, 41));\n } else {\n result.set(match[2], match[1]);\n }\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n result.set(tagName, hash.trim());\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n\n return result;\n};\n\n/**\n * Batch resolve multiple tags with their commit hashes for better performance\n * @param repoPath - Repository path\n * @param tagNames - Array of tag names to resolve\n * @returns Map of tag name to {oid, commitOid}\n */\nexport const resolveTagsBatchWithCommit = async (\n repoPath: string,\n tagNames: string[],\n logger: Logger\n): Promise<Map<string, { oid: string; commitOid: string }>> => {\n const startTime = Date.now();\n\n const gitDir = join(repoPath, '.git');\n const result = new Map<string, { oid: string; commitOid: string }>();\n\n // Check if .git is a file (submodule or worktree)\n const gitStat = await stat(gitDir).catch(() => null);\n let actualGitDir = gitDir;\n\n if (gitStat?.isFile()) {\n const content = await readFile(gitDir, 'utf-8');\n const match = content.match(/^gitdir:\\s*(.+)$/m);\n if (match) {\n actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);\n }\n }\n\n // Create a set for faster lookup\n const tagSet = new Set(tagNames);\n\n // First, read all packed refs in one go\n const packedRefsStart = Date.now();\n try {\n const content = await readFile(join(actualGitDir, 'packed-refs'), 'utf-8');\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (line.startsWith('#') || !line.trim()) continue;\n\n const match = line.match(/^([0-9a-f]{40})\\s+refs\\/tags\\/(.+)$/);\n if (match && tagSet.has(match[2])) {\n const tagName = match[2];\n const oid = match[1];\n\n // Check for peeled ref on next line\n let commitOid = oid; // Default: assume lightweight tag\n if (i + 1 < lines.length && lines[i + 1].startsWith('^')) {\n // This is an annotated tag, next line has the commit\n commitOid = lines[i + 1].substring(1, 41);\n }\n\n result.set(tagName, { oid, commitOid });\n }\n }\n } catch (error) {\n // packed-refs might not exist\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n logger.debug(\n `[fast-tags] read packed-refs: ${Date.now() - packedRefsStart}ms`\n );\n\n // Then check loose refs for tags not found in packed-refs\n const remainingTags = tagNames.filter((tag) => !result.has(tag));\n\n if (remainingTags.length > 0) {\n const looseRefsStart = Date.now();\n await Promise.all(\n remainingTags.map(async (tagName) => {\n const looseRefPath = join(actualGitDir, 'refs', 'tags', tagName);\n try {\n const hash = await readFile(looseRefPath, 'utf-8');\n const oid = hash.trim();\n\n // Check if this is an annotated tag by reading the object type\n let commitOid = oid;\n try {\n // Use git cat-file to check object type\n const { execSync } = require('child_process');\n const objectType = execSync(\n `git -C \"${repoPath}\" cat-file -t ${oid}`,\n { encoding: 'utf-8' }\n ).trim();\n\n if (objectType === 'tag') {\n // It's an annotated tag, extract the commit it points to\n const tagContent = execSync(\n `git -C \"${repoPath}\" cat-file -p ${oid}`,\n { encoding: 'utf-8' }\n );\n const objectMatch = tagContent.match(/^object ([0-9a-f]{40})$/m);\n if (objectMatch) {\n commitOid = objectMatch[1];\n }\n }\n } catch (error) {\n // If git cat-file fails, assume it's a lightweight tag\n logger.debug(\n `[fast-tags] Could not determine object type for ${tagName}: ${error}`\n );\n }\n\n result.set(tagName, { oid, commitOid });\n } catch (error) {\n // Tag doesn't exist as loose ref either\n if ((error as any).code !== 'ENOENT') {\n throw error;\n }\n }\n })\n );\n logger.debug(\n `[fast-tags] read loose refs: ${Date.now() - looseRefsStart}ms`\n );\n }\n\n const totalTime = Date.now() - startTime;\n logger.debug(`[fast-tags] resolveTagsBatchWithCommit total: ${totalTime}ms`);\n logger.debug(`[fast-tags] Resolved ${result.size}/${tagNames.length} tags`);\n\n return result;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport fs from 'fs/promises';\nimport git from 'isomorphic-git';\nimport type { TagInfo, Version } from './analyzer';\nimport type { Logger } from './internal.js';\nimport {\n listTagsFast,\n resolveTagsBatch,\n resolveTagsBatchWithCommit,\n} from './fast-tags.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Git operations for tag management\n * Handles all Git interactions\n */\n\n/**\n * Tag with OID information\n */\nexport interface TagWithOid {\n name: string;\n oid: string; // The OID this tag points to (could be tag object or commit)\n targetCommit?: string; // The commit this tag ultimately points to (resolved from annotated tags)\n}\n\n/**\n * Get all tags with their OIDs\n * @param repoPath - Repository path\n * @returns Array of tags with OID information\n */\nexport const getAllTagsWithOids = async (\n repoPath: string\n): Promise<TagWithOid[]> => {\n const tags = await listTagsFast(repoPath);\n const tagHashes = await resolveTagsBatch(repoPath, tags);\n\n const result: TagWithOid[] = [];\n for (const [tagName, oid] of tagHashes.entries()) {\n result.push({ name: tagName, oid });\n }\n\n return result;\n};\n\n/**\n * Resolve tag OID to commit hash\n * @param repoPath - Repository path\n * @param tagOid - Tag OID\n * @returns Commit hash this tag points to\n */\nexport const resolveTagToCommit = async (\n repoPath: string,\n tagOid: string\n): Promise<string> => {\n try {\n // Try to read as annotated tag\n const tagObject = await git.readTag({\n fs,\n dir: repoPath,\n oid: tagOid,\n });\n\n if (tagObject?.tag?.object) {\n // Annotated tag - return the commit it points to\n return tagObject.tag.object;\n }\n } catch {\n // Not an annotated tag, must be lightweight\n }\n\n // Lightweight tag - OID is the commit\n return tagOid;\n};\n\n/**\n * Get tag information for specific tags\n * @param repoPath - Repository path\n * @param tagNames - Tag names to get information for\n * @param parseVersion - Function to parse version from tag name\n * @returns Array of TagInfo\n */\nexport const getTagsInfo = async (\n repoPath: string,\n tagNames: string[],\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<TagInfo[]> => {\n const startTime = Date.now();\n const result: TagInfo[] = [];\n\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n\n for (const tagName of tagNames) {\n const data = tagData.get(tagName);\n if (!data) {\n logger.warn(`[git-ops] Tag ${tagName} not found`);\n continue;\n }\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n result.push({\n name: tagName,\n hash: commitOid,\n version,\n });\n }\n\n logger.debug(`[git-ops] getTagsInfo: ${Date.now() - startTime}ms`);\n logger.debug(\n `[git-ops] Got info for ${result.length}/${tagNames.length} tags`\n );\n\n return result;\n};\n\n/**\n * Build complete tag cache from repository\n * @param repoPath - Repository path\n * @param parseVersion - Function to parse version from tag name\n * @returns Map of commit hash to TagInfo array\n */\nexport const buildCompleteTagCache = async (\n repoPath: string,\n parseVersion: (tagName: string) => Version | undefined,\n logger: Logger\n): Promise<Map<string, TagInfo[]>> => {\n const totalStart = Date.now();\n const cache = new Map<string, TagInfo[]>();\n\n const listStart = Date.now();\n const tags = await listTagsFast(repoPath);\n logger.debug(`[git-ops] listTagsFast: ${Date.now() - listStart}ms`);\n logger.debug(`[git-ops] Found ${tags.length} tags`);\n\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tags, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit: ${Date.now() - resolveStart}ms`\n );\n\n const buildStart = Date.now();\n for (const tagName of tags) {\n const data = tagData.get(tagName);\n if (!data) continue;\n\n const { commitOid } = data;\n const version = parseVersion(tagName);\n\n const tagInfo: TagInfo = {\n name: tagName,\n hash: commitOid,\n version,\n };\n\n if (!cache.has(commitOid)) {\n cache.set(commitOid, []);\n }\n cache.get(commitOid)!.push(tagInfo);\n }\n logger.debug(`[git-ops] build cache map: ${Date.now() - buildStart}ms`);\n\n // Sort tags by name for each commit to ensure consistent ordering\n const sortStart = Date.now();\n for (const tags of cache.values()) {\n tags.sort((a, b) => a.name.localeCompare(b.name));\n }\n logger.debug(`[git-ops] sort tags: ${Date.now() - sortStart}ms`);\n\n logger.debug(\n `[git-ops] buildCompleteTagCache total: ${Date.now() - totalStart}ms`\n );\n logger.debug(`[git-ops] Built cache with ${cache.size} unique commits`);\n\n return cache;\n};\n\n/**\n * Check if a tag has moved to a different commit\n * @param repoPath - Repository path\n * @param tagName - Tag name\n * @param cachedCommit - Commit hash from cache\n * @returns True if tag has moved\n */\nexport const hasTagMoved = async (\n repoPath: string,\n tagName: string,\n cachedCommit: string\n): Promise<boolean> => {\n try {\n const oid = await git.resolveRef({\n fs,\n dir: repoPath,\n ref: `refs/tags/${tagName}`,\n });\n\n const currentCommit = await resolveTagToCommit(repoPath, oid);\n return currentCommit !== cachedCommit;\n } catch {\n // Tag doesn't exist anymore\n return true;\n }\n};\n\n/**\n * Find modified tags (tags that point to different commits)\n * @param repoPath - Repository path\n * @param tagNames - Tag names to check\n * @param cache - Current cache\n * @returns Array of modified tag names\n */\nexport const findModifiedTags = async (\n repoPath: string,\n tagNames: string[],\n cache: Map<string, TagInfo[]>,\n logger: Logger\n): Promise<string[]> => {\n const totalStart = Date.now();\n const modified: string[] = [];\n\n // Batch resolve all tags at once with commit hashes\n const resolveStart = Date.now();\n const tagData = await resolveTagsBatchWithCommit(repoPath, tagNames, logger);\n logger.debug(\n `[git-ops] resolveTagsBatchWithCommit in findModified: ${Date.now() - resolveStart}ms`\n );\n\n const checkStart = Date.now();\n // Process each tag\n for (const tagName of tagNames) {\n // Find tag in cache\n let cachedCommit: string | undefined;\n for (const [commit, tags] of cache.entries()) {\n const tag = tags.find((t) => t.name === tagName);\n if (tag) {\n cachedCommit = commit;\n break;\n }\n }\n\n if (cachedCommit) {\n const data = tagData.get(tagName);\n if (!data) {\n // Tag doesn't exist anymore\n modified.push(tagName);\n } else {\n const { commitOid } = data;\n if (commitOid !== cachedCommit) {\n modified.push(tagName);\n }\n }\n }\n }\n logger.debug(`[git-ops] check modified tags: ${Date.now() - checkStart}ms`);\n\n logger.debug(\n `[git-ops] findModifiedTags total: ${Date.now() - totalStart}ms`\n );\n logger.debug(\n `[git-ops] Found ${modified.length} modified tags out of ${tagNames.length}`\n );\n\n return modified;\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport * as git from 'isomorphic-git';\nimport fs from 'fs/promises';\nimport dayjs from 'dayjs';\nimport { GitMetadata } from './types.js';\nimport { Logger } from './internal.js';\nimport { buildCompleteTagCache } from './git-operations.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Ported from: https://github.com/kekyo/RelaxVersioner/blob/master/RelaxVersioner.Core/Analyzer.cs\n\n/**\n * Version information\n */\nexport interface Version {\n major: number;\n minor?: number;\n build?: number;\n revision?: number;\n original: string;\n}\n\n/**\n * Primitive commit information\n */\ninterface CommitInfo {\n hash: string;\n shortHash: string;\n date: string;\n message: string;\n parents: string[];\n}\n\n/**\n * Tag information\n */\nexport interface TagInfo {\n name: string;\n hash: string;\n version: Version | undefined;\n}\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Parse and validate a version component\n * @param value - The string value to parse\n * @returns The parsed number or undefined if invalid (negative or > 65535)\n */\nconst parseVersionComponent = (value: string): number | undefined => {\n const num = parseInt(value, 10);\n return num < 0 || num > 65535 ? undefined : num;\n};\n\n/**\n * Parse a version tag name\n * @param tagName - The version tag name\n * @returns The parsed version or undefined if the tag name is invalid\n */\nconst parseVersion = (tagName: string): Version | undefined => {\n // Remove common prefix 'v'.\n const cleanTag = tagName.replace(/^v/i, '');\n\n // Match version pattern: major.minor[.build[.revision]].\n const versionRegex = /^(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:\\.(\\d+))?$/;\n const match = cleanTag.match(versionRegex);\n\n if (!match) {\n return undefined;\n }\n\n const major = parseVersionComponent(match[1]);\n if (major === undefined) {\n return undefined;\n }\n\n const version: Version = {\n major,\n original: tagName,\n };\n\n if (match[2] !== undefined) {\n const minor = parseVersionComponent(match[2]);\n if (minor === undefined) {\n return undefined;\n }\n version.minor = minor;\n }\n if (match[3] !== undefined) {\n const build = parseVersionComponent(match[3]);\n if (build === undefined) {\n return undefined;\n }\n version.build = build;\n }\n if (match[4] !== undefined) {\n const revision = parseVersionComponent(match[4]);\n if (revision === undefined) {\n return undefined;\n }\n version.revision = revision;\n }\n\n return version;\n};\n\n/**\n * Check if a version is valid\n * @param version - The version to check\n * @returns True if the version is valid, false otherwise\n */\nconst isValidVersion = (version: Version): boolean => {\n // At least major component and optionally minor\n return (\n version.major >= 0 && (version.minor === undefined || version.minor >= 0)\n );\n};\n\n/**\n * Compare two versions\n * @param a - The first version\n * @param b - The second version\n * @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal\n */\nconst compareVersions = (a: Version, b: Version): number => {\n // Compare major\n if (a.major !== b.major) return b.major - a.major;\n\n // Compare minor (treat undefined as 0)\n const aMinor = a.minor ?? 0;\n const bMinor = b.minor ?? 0;\n if (aMinor !== bMinor) return bMinor - aMinor;\n\n // Compare build (treat undefined as 0)\n const aBuild = a.build ?? 0;\n const bBuild = b.build ?? 0;\n if (aBuild !== bBuild) return bBuild - aBuild;\n\n // Compare revision (treat undefined as 0)\n const aRevision = a.revision ?? 0;\n const bRevision = b.revision ?? 0;\n if (aRevision !== bRevision) return bRevision - aRevision;\n\n return 0;\n};\n\n/**\n * Increment the last version component\n * @param version - The version to increment\n * @returns The incremented version\n */\nconst incrementLastVersionComponent = (version: Version): Version => {\n // Increment the rightmost existing component\n if (version.revision !== undefined) {\n return { ...version, revision: version.revision + 1 };\n }\n if (version.build !== undefined) {\n return { ...version, build: version.build + 1 };\n }\n if (version.minor !== undefined) {\n return { ...version, minor: version.minor + 1 };\n }\n\n // If only major exists, increment major\n return {\n ...version,\n major: version.major + 1,\n original: `${version.major + 1}`,\n };\n};\n\n/**\n * Format a version\n * @param version - The version to format\n * @returns The formatted version\n */\nconst formatVersion = (version: Version): string => {\n let result = `${version.major}`;\n\n if (version.minor !== undefined) {\n result += `.${version.minor}`;\n\n if (version.build !== undefined) {\n result += `.${version.build}`;\n\n if (version.revision !== undefined) {\n result += `.${version.revision}`;\n }\n }\n }\n\n return result;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get a commit by hash\n * @param repositoryPath - Local Git repository directory\n * @param hash - The hash of the commit\n * @returns The commit or undefined if the commit is not found\n */\nconst getCommit = async (\n repositoryPath: string,\n hash: string\n): Promise<CommitInfo | undefined> => {\n try {\n const commit = await git.readCommit({ fs, dir: repositoryPath, oid: hash });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get the current commit\n * @param repositoryPath - Local Git repository directory\n * @returns The current commit or undefined if the current commit is not found\n */\nconst getCurrentCommit = async (\n repositoryPath: string\n): Promise<CommitInfo | undefined> => {\n try {\n const currentOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: 'HEAD',\n });\n const commit = await git.readCommit({\n fs,\n dir: repositoryPath,\n oid: currentOid,\n });\n\n return {\n hash: commit.oid,\n shortHash: commit.oid.substring(0, 7),\n date: new Date(commit.commit.author.timestamp * 1000).toISOString(),\n message: commit.commit.message.trim(),\n parents: commit.commit.parent || [],\n };\n } catch {\n return undefined;\n }\n};\n\n/**\n * Get related tags from commit map\n * @param commitToTags - Map of commit hash to tags\n * @param commitHash - The hash of the commit\n * @returns The related tags or an empty array if no tags are found\n */\nconst getRelatedTagsFromMap = (\n commitToTags: Map<string, TagInfo[]>,\n commitHash: string\n): TagInfo[] => {\n return commitToTags.get(commitHash) || [];\n};\n\n// Removed: getRelatedTags and getRelatedTagsForVersioning functions are no longer needed as we use the commit map directly\n\n/**\n * Get the commit related branch name.\n * @param repositoryPath - Local Git repository directory\n * @param commitHash - The hash of the commit\n * @returns The commit related branch name or undefined if not found\n */\nconst getRelatedBranches = async (\n repositoryPath: string,\n commitHash: string\n): Promise<string[]> => {\n try {\n const branches = await git.listBranches({ fs, dir: repositoryPath });\n const relatedBranches: string[] = [];\n\n for (const branch of branches) {\n try {\n // Check if the branch HEAD points to the specified commit\n const branchOid = await git.resolveRef({\n fs,\n dir: repositoryPath,\n ref: branch,\n });\n if (branchOid === commitHash) {\n relatedBranches.push(branch);\n }\n } catch {\n // Skip branches that can't be resolved\n }\n }\n\n return relatedBranches;\n } catch {\n return [];\n }\n};\n\n/**\n * Check if the repository has modified files (following RelaxVersioner logic).\n * Checks for staged files, unstaged files, and untracked files (respecting .gitignore).\n * @param repositoryPath - Local Git repository directory\n * @returns Modified files\n */\nconst getModifiedFiles = async (\n repositoryPath: string\n): Promise<git.StatusRow[]> => {\n try {\n const status = await git.statusMatrix({ fs, dir: repositoryPath });\n // statusMatrix returns [filepath, headStatus, workdirStatus, stageStatus]\n // headStatus: 0=absent, 1=present\n // workdirStatus: 0=absent, 1=present, 2=modified\n // stageStatus: 0=absent, 1=present, 2=modified, 3=added\n // By default, ignored files are excluded (ignored: false)\n return status.filter(\n ([, head, workdir, stage]) =>\n workdir === 2 || // modified in working directory (unstaged)\n stage === 2 || // modified in stage (staged)\n stage === 3 || // added to stage (staged)\n (head === 1 && workdir === 0) || // deleted from working directory\n (head === 0 && workdir === 1) // untracked files (respecting .gitignore)\n );\n } catch {\n return [];\n }\n};\n\nconst formatModifiedFile = (modifiedFile: git.StatusRow) => {\n return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Scheduled commit\n */\ninterface ScheduledCommit {\n commit: CommitInfo;\n parents: CommitInfo[];\n}\n\n/**\n * Lookup version label recursively core analyzer\n * @param cwd - The directory to check\n * @param commit - The commit to lookup\n * @param reachedCommits - The map of reached commits\n * @param commitToTags - Map of commit hash to tags for performance\n * @returns The version or undefined if no version is found\n */\nconst lookupVersionLabelRecursive = async (\n cwd: string,\n commit: CommitInfo,\n reachedCommits: Map<string, Version>,\n commitToTags: Map<string, TagInfo[]>\n): Promise<Version | undefined> => {\n // Scheduled commit analysis stack\n const scheduledStack: ScheduledCommit[] = [];\n\n let version: Version = { major: 0, minor: 0, build: 1, original: '0.0.1' };\n let currentCommit = commit;\n\n // Trace back to the parent commit repeatedly with the following conditions:\n // * If the commit has already been reached, get its version.\n // * If there is a recognizable version string in the tag, get its version.\n // * If the parent commit does not exist, get the default version.\n // * If other than the above, push the commit on the stack for later processing in reverse order.\n while (true) {\n // If the commit has already been reached, get its version.\n if (reachedCommits.has(currentCommit.hash)) {\n version = reachedCommits.get(currentCommit.hash)!;\n break;\n }\n\n // Detected mostly larger version tag.\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n const versionCandidates = relatedTags\n .filter((tag) => tag.version && isValidVersion(tag.version))\n .filter((tag) => tag.version!.minor !== undefined) // \"1.2\" or more.\n .sort((a, b) => compareVersions(a.version!, b.version!));\n if (versionCandidates.length >= 1) {\n // Found version tags, use the highest version\n version = versionCandidates[0].version!;\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Get parent commits\n let parentCommits: CommitInfo[] = [];\n try {\n const commitObj = await git.readCommit({\n fs,\n dir: cwd,\n oid: currentCommit.hash,\n });\n const parentHashes = commitObj.commit.parent || [];\n parentCommits = (\n await Promise.all(\n parentHashes.map((parentHash) => getCommit(cwd, parentHash))\n )\n ).filter((ci) => ci !== undefined);\n } catch {\n // If we can't get parent information, use default version\n }\n if (parentCommits.length === 0) {\n // No parents, this is the root commit\n reachedCommits.set(currentCommit.hash, version);\n break;\n }\n\n // Schedule this commit for later processing\n scheduledStack.push({ commit: currentCommit, parents: parentCommits });\n\n // Move to the first parent (primary branch)\n currentCommit = parentCommits[0];\n }\n\n // As long as there are commits stacked on the stack,\n // retrieve a commit from the stack, and if there is more than one parent commit for that commit:\n // * Recursively get versions from parent commits other than the primary one.\n // * Compare the versions obtained and store the largest version.\n // * Increment the version and make it the version of the current commit.\n while (scheduledStack.length >= 1) {\n const scheduled = scheduledStack.pop()!;\n const { commit: scheduledCommit, parents } = scheduled;\n\n // Handle merge commits (multiple parents)\n if (parents.length >= 2) {\n // Check alternate parent commits (feature branches)\n for (let index = 1; index < parents.length; index++) {\n const alternateParentVersion = await lookupVersionLabelRecursive(\n cwd,\n parents[index],\n reachedCommits,\n commitToTags\n );\n if (\n alternateParentVersion &&\n compareVersions(alternateParentVersion, version) < 0\n ) {\n // Use higher version from alternate parent\n version = alternateParentVersion;\n }\n }\n }\n\n // Increment version for this commit\n version = incrementLastVersionComponent(version);\n reachedCommits.set(scheduledCommit.hash, version);\n }\n\n return version;\n};\n\n/////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get default Git metadata from local repository.\n * @param repositoryPath - Local Git repository directory\n * @param checkWorkingDirectoryStatus - Check working directory status to increase version\n * @param logger - Logger instance\n * @returns The metadata object with git metadata\n */\nconst getGitMetadata = async (\n repositoryPath: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n const startTime = Date.now();\n const metadata: any = {};\n\n // Try to find git root directory from the given path\n let gitRootPath: string;\n try {\n gitRootPath = await git.findRoot({ fs, filepath: repositoryPath });\n } catch {\n // No git repository found\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n try {\n // Get current commit\n const currentCommit = await getCurrentCommit(gitRootPath);\n if (!currentCommit) {\n logger.debug(\n `[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`\n );\n return metadata;\n }\n\n // Build tag map directly\n const buildStart = Date.now();\n const commitToTags = await buildCompleteTagCache(\n gitRootPath,\n (tagName: string) => {\n const version = parseVersion(tagName);\n return version && isValidVersion(version) ? version : undefined;\n },\n logger\n );\n logger.debug(\n `[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`\n );\n logger.debug(`Built tag map with ${commitToTags.size} commits`);\n\n // Initialize reached commits cache\n const reachedCommits = new Map<string, Version>();\n\n // Lookup version\n let version = await lookupVersionLabelRecursive(\n gitRootPath,\n currentCommit,\n reachedCommits,\n commitToTags\n );\n\n // Set git metadata into 'git' key\n const gitMetadata: GitMetadata = { tags: [], branches: [] };\n metadata.git = gitMetadata;\n\n if (version) {\n // Check for working directory changes and increment version if needed\n if (checkWorkingDirectoryStatus) {\n const modifiedFiles = await getModifiedFiles(gitRootPath);\n if (modifiedFiles.length >= 1) {\n const newVersion = incrementLastVersionComponent(version);\n logger.debug(\n `Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(', ')}]`\n );\n version = newVersion;\n }\n }\n\n const gitVersion = formatVersion(version);\n gitMetadata.version = gitVersion;\n metadata.version = gitVersion; // Fallback default version metadata\n }\n\n // Set commit information\n gitMetadata.commit = {\n hash: currentCommit.hash,\n shortHash: currentCommit.shortHash,\n date: dayjs(currentCommit.date).format('YYYY-MM-DDTHH:mm:ssZ'),\n message: currentCommit.message,\n };\n\n // Try to find the actual tag name if it exists\n const relatedTags = getRelatedTagsFromMap(commitToTags, currentCommit.hash);\n gitMetadata.tags = relatedTags.map((tag) => tag.name);\n\n // Get branch information\n const relatedBranches = await getRelatedBranches(\n gitRootPath,\n currentCommit.hash\n );\n gitMetadata.branches = relatedBranches;\n } catch (error) {\n // If any error occurs, return empty metadata\n logger.warn(`Failed to extract git metadata: ${error}`);\n }\n\n logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);\n return metadata;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Get cached Git metadata fetcher function\n * @param targetDir - Target directory to resolve Git metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param logger - Logger\n * @returns Git metadata fetcher function\n */\nexport const getFetchGitMetadata = (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n logger: Logger\n) => {\n let cachedMetadata: any;\n return async () => {\n if (!cachedMetadata) {\n cachedMetadata = await getGitMetadata(\n targetDir,\n checkWorkingDirectoryStatus,\n logger\n );\n }\n return cachedMetadata;\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { createHash } from 'crypto';\nimport { existsSync } from 'fs';\nimport { readFile } from 'fs/promises';\nimport { dirname, extname, join } from 'path';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport type ModuleInteropKind = 'cjs' | 'esm' | 'unresolvable' | 'unknown';\n\nconst importConditions = ['import', 'node', 'default'] as const;\n\nconst stripQuery = (id: string): string => {\n const queryIndex = id.indexOf('?');\n return queryIndex === -1 ? id : id.slice(0, queryIndex);\n};\n\nconst isBareSpecifier = (specifier: string): boolean => {\n if (!specifier) {\n return false;\n }\n if (specifier.startsWith('.')) {\n return false;\n }\n if (specifier.startsWith('/') || specifier.startsWith('\\\\')) {\n return false;\n }\n if (specifier.startsWith('node:')) {\n return false;\n }\n if (specifier.includes(':')) {\n return false;\n }\n return true;\n};\n\nconst parsePackageName = (\n specifier: string\n): { packageName: string; subpath: string } => {\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/');\n if (parts.length >= 2) {\n return {\n packageName: `${parts[0]}/${parts[1]}`,\n subpath: parts.slice(2).join('/'),\n };\n }\n }\n const [packageName, ...rest] = specifier.split('/');\n return { packageName, subpath: rest.join('/') };\n};\n\nconst findPackageJsonPath = (\n packageName: string,\n importerDir: string\n): string | undefined => {\n let current = importerDir;\n while (true) {\n const candidate = join(\n current,\n 'node_modules',\n packageName,\n 'package.json'\n );\n if (existsSync(candidate)) {\n return candidate;\n }\n const parent = dirname(current);\n if (parent === current) {\n return undefined;\n }\n current = parent;\n }\n};\n\nconst readPackageJson = async (\n packageJsonPath: string\n): Promise<Record<string, unknown> | undefined> => {\n try {\n const raw = await readFile(packageJsonPath, 'utf8');\n const parsed = JSON.parse(raw);\n if (parsed && typeof parsed === 'object') {\n return parsed as Record<string, unknown>;\n }\n } catch {\n return undefined;\n }\n return undefined;\n};\n\nconst resolveExportTarget = (\n target: unknown,\n subpath: string,\n conditions: readonly string[]\n): string | undefined => {\n if (typeof target === 'string') {\n if (subpath && subpath !== '.') {\n return undefined;\n }\n return target;\n }\n if (Array.isArray(target)) {\n for (const entry of target) {\n const resolved = resolveExportTarget(entry, subpath, conditions);\n if (resolved) {\n return resolved;\n }\n }\n return undefined;\n }\n if (!target || typeof target !== 'object') {\n return undefined;\n }\n\n const record = target as Record<string, unknown>;\n const keys = Object.keys(record);\n const hasSubpathMap = keys.some((key) => key.startsWith('.'));\n\n if (hasSubpathMap) {\n const subpathKey =\n subpath === '' || subpath === '.'\n ? '.'\n : subpath.startsWith('./')\n ? subpath\n : `./${subpath}`;\n if (!(subpathKey in record)) {\n return undefined;\n }\n return resolveExportTarget(record[subpathKey], '.', conditions);\n }\n\n for (const condition of conditions) {\n if (condition in record) {\n const resolved = resolveExportTarget(\n record[condition],\n subpath,\n conditions\n );\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return undefined;\n};\n\nconst inferModuleKindFromPath = (\n targetPath: string,\n packageType: string | undefined\n): ModuleInteropKind => {\n const ext = extname(targetPath);\n if (ext === '.mjs') {\n return 'esm';\n }\n if (ext === '.cjs') {\n return 'cjs';\n }\n if (ext === '.js' || ext === '') {\n return packageType === 'module' ? 'esm' : 'cjs';\n }\n return packageType === 'module' ? 'esm' : 'cjs';\n};\n\nconst resolveModuleKindFromPackage = (\n packageJson: Record<string, unknown>,\n subpath: string\n): ModuleInteropKind => {\n const packageType =\n typeof packageJson.type === 'string' ? packageJson.type : undefined;\n if (packageJson.exports !== undefined) {\n const resolved = resolveExportTarget(\n packageJson.exports,\n subpath,\n importConditions\n );\n if (!resolved) {\n return 'unresolvable';\n }\n return inferModuleKindFromPath(resolved, packageType);\n }\n\n if (subpath) {\n return inferModuleKindFromPath(subpath, packageType);\n }\n\n const main =\n typeof packageJson.main === 'string' ? packageJson.main : 'index.js';\n return inferModuleKindFromPath(main, packageType);\n};\n\nexport const createNodeModuleKindResolver = () => {\n const packageJsonCache = new Map<string, Record<string, unknown> | null>();\n const resolveCache = new Map<string, ModuleInteropKind>();\n\n return async (\n specifier: string,\n importer: string\n ): Promise<ModuleInteropKind> => {\n if (!isBareSpecifier(specifier)) {\n return 'unknown';\n }\n\n const importerPath = stripQuery(importer);\n const importerDir = dirname(importerPath);\n const { packageName, subpath } = parsePackageName(specifier);\n const packageJsonPath = findPackageJsonPath(packageName, importerDir);\n if (!packageJsonPath) {\n return 'unknown';\n }\n\n const cacheKey = `${packageJsonPath}:${subpath}`;\n const cached = resolveCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n let packageJson = packageJsonCache.get(packageJsonPath);\n if (packageJson === undefined) {\n packageJson = (await readPackageJson(packageJsonPath)) ?? null;\n packageJsonCache.set(packageJsonPath, packageJson);\n }\n if (!packageJson) {\n resolveCache.set(cacheKey, 'unknown');\n return 'unknown';\n }\n\n const resolved = resolveModuleKindFromPackage(packageJson, subpath);\n resolveCache.set(cacheKey, resolved);\n return resolved;\n };\n};\n\nexport const scanHasDefaultImport = (\n ts: typeof import('typescript'),\n code: string\n): boolean => {\n const scanner = ts.createScanner(\n ts.ScriptTarget.ESNext,\n true,\n ts.LanguageVariant.Standard,\n code\n );\n let token = scanner.scan();\n while (token !== ts.SyntaxKind.EndOfFileToken) {\n if (token === ts.SyntaxKind.ImportKeyword) {\n const next = scanner.scan();\n if (next === ts.SyntaxKind.OpenParenToken) {\n token = scanner.scan();\n continue;\n }\n if (\n next === ts.SyntaxKind.Identifier ||\n next === ts.SyntaxKind.TypeKeyword\n ) {\n return true;\n }\n }\n token = scanner.scan();\n }\n return false;\n};\n\n// This feature is implemented in a somewhat tricky two-step process:\n//\n// Vite's `transform()` is responsible for formatting the code sent to the subsequent 'rollup.'\n// While it enables various code transformations, at this stage, it does not distinguish whether the target code is intended for CJS or ESM.\n// This is because 'rollup' handles that distinction later, and `transform()` performs a single optimization to format the common code base.\n// However, the default import fixup must distinguish between CJS and ESM.\n//\n// Therefore, in Step 1, we always insert `__resolveDefaultExport` as a commonly used function.\n// Within it, we reference a global flag name derived from the source file path and\n// insert `globalThis.__screwUpIsInCJS_<id> = false;` as a placeholder.\n// This allows `renderChunk()` (Step 2) to flip it to `true` only for CJS output chunks,\n// while keeping the code length stable.\n//\n// We avoid performing all processing in the `renderChunk()` because at that stage, we would be referencing post-transpiled code.\n// This prevents the use of a simple replacement process and carries the risk of code transformation failure.\n\nconst cjsInteropGlobalFlagPrefix = '__screwUpIsInCJS_';\nconst cjsInteropIdLength = 12;\nconst cjsInteropGlobalFlagAssignmentPattern = new RegExp(\n `\\\\bglobalThis\\\\.${cjsInteropGlobalFlagPrefix}[0-9a-f]+\\\\s*=\\\\s*false\\\\b`,\n 'g'\n);\n\nconst createCjsInteropHelperId = (seed: string): string => {\n const hash = createHash('sha256').update(seed).digest('hex');\n return hash.slice(0, cjsInteropIdLength);\n};\n\nconst buildHelperFunctionSource = (helperId: string): string => `\nglobalThis.${cjsInteropGlobalFlagPrefix}${helperId} = false;\nfunction __resolveDefaultExport<T>(module: T | { default?: T }, isESM: boolean): T {\n const __isInCJS =\n typeof globalThis !== 'undefined' &&\n (globalThis as any).${cjsInteropGlobalFlagPrefix}${helperId} === true;\n const maybe = module as { default?: T };\n const hasDefault = !!(maybe && typeof maybe === 'object' && 'default' in maybe);\n const unwrapNamespaceDefault = (value: unknown): unknown => {\n if (!value || typeof value !== 'object') {\n return value;\n }\n const inner = value as any;\n const isModule =\n inner.__esModule === true ||\n (typeof Symbol !== 'undefined' &&\n (inner as any)[Symbol.toStringTag] === 'Module');\n if (isModule && 'default' in inner) {\n return inner.default;\n }\n return value;\n };\n const resolvedDefault = hasDefault\n ? unwrapNamespaceDefault((maybe as any).default)\n : undefined;\n\n if (__isInCJS) {\n return hasDefault ? ((resolvedDefault as T) ?? (module as T)) : (module as T);\n }\n\n if (isESM) {\n if (hasDefault) {\n return resolvedDefault as T;\n }\n throw new Error('Default export not found.');\n }\n\n return hasDefault ? ((resolvedDefault as T) ?? (module as T)) : (module as T);\n}`;\n\nexport const injectCjsInteropFlag = (\n code: string\n): { code: string; changed: boolean } => {\n let changed = false;\n const nextCode = code.replace(\n cjsInteropGlobalFlagAssignmentPattern,\n (match) => {\n changed = true;\n // Preserve length to keep sourcemaps stable without remapping.\n return match.replace(/\\bfalse\\b/, 'true ');\n }\n );\n return { code: nextCode, changed };\n};\n\nconst hasResolveDefaultExport = (\n ts: typeof import('typescript'),\n sourceFile: import('typescript').SourceFile\n): boolean => {\n return sourceFile.statements.some((statement) => {\n if (ts.isFunctionDeclaration(statement)) {\n return statement.name?.text === '__resolveDefaultExport';\n }\n if (ts.isVariableStatement(statement)) {\n return statement.declarationList.declarations.some((declaration) => {\n return (\n ts.isIdentifier(declaration.name) &&\n declaration.name.text === '__resolveDefaultExport'\n );\n });\n }\n if (ts.isImportDeclaration(statement)) {\n const importClause = statement.importClause;\n if (!importClause) {\n return false;\n }\n if (importClause.name?.text === '__resolveDefaultExport') {\n return true;\n }\n if (importClause.namedBindings) {\n if (ts.isNamespaceImport(importClause.namedBindings)) {\n return (\n importClause.namedBindings.name.text === '__resolveDefaultExport'\n );\n }\n if (ts.isNamedImports(importClause.namedBindings)) {\n return importClause.namedBindings.elements.some(\n (element) =>\n element.name.text === '__resolveDefaultExport' ||\n element.propertyName?.text === '__resolveDefaultExport'\n );\n }\n }\n }\n return false;\n });\n};\n\nconst isTypeOnlyImportClause = (\n ts: typeof import('typescript'),\n importClause: import('typescript').ImportClause\n): boolean => {\n const phaseModifier = (importClause as { phaseModifier?: number })\n .phaseModifier;\n if (phaseModifier !== undefined) {\n return phaseModifier === ts.SyntaxKind.TypeKeyword;\n }\n return Boolean((importClause as { isTypeOnly?: boolean }).isTypeOnly);\n};\n\nconst getScriptKind = (\n ts: typeof import('typescript'),\n id: string\n): import('typescript').ScriptKind => {\n if (id.endsWith('.tsx')) {\n return ts.ScriptKind.TSX;\n }\n if (id.endsWith('.jsx')) {\n return ts.ScriptKind.JSX;\n }\n if (id.endsWith('.mts')) {\n const mts = (ts.ScriptKind as unknown as Record<string, number>)['MTS'];\n return mts ?? ts.ScriptKind.TS;\n }\n if (id.endsWith('.cts')) {\n const cts = (ts.ScriptKind as unknown as Record<string, number>)['CTS'];\n return cts ?? ts.ScriptKind.TS;\n }\n if (id.endsWith('.ts')) {\n return ts.ScriptKind.TS;\n }\n if (id.endsWith('.mjs')) {\n return ts.ScriptKind.JS;\n }\n if (id.endsWith('.cjs')) {\n return ts.ScriptKind.JS;\n }\n return ts.ScriptKind.JS;\n};\n\nconst formatModuleSpecifier = (specifier: string): string => {\n const escaped = specifier.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n return `'${escaped}'`;\n};\n\nconst buildNamedImport = (\n moduleName: string,\n namedBindings: import('typescript').NamedImports\n): string => {\n const elements = namedBindings.elements\n .map((specifier) => {\n const alias = specifier.propertyName\n ? `${specifier.propertyName.text} as ${specifier.name.text}`\n : specifier.name.text;\n return specifier.isTypeOnly ? `type ${alias}` : alias;\n })\n .join(', ');\n return `import { ${elements} } from ${formatModuleSpecifier(moduleName)};`;\n};\n\nexport const transformDefaultImports = async (\n ts: typeof import('typescript'),\n code: string,\n id: string,\n resolveModuleKind: (\n specifier: string,\n importer: string\n ) => Promise<ModuleInteropKind>\n): Promise<{ code: string; changed: boolean }> => {\n const normalizedId = stripQuery(id);\n const sourceFile = ts.createSourceFile(\n normalizedId,\n code,\n ts.ScriptTarget.ESNext,\n false,\n getScriptKind(ts, normalizedId)\n );\n\n const edits: Array<{ start: number; end: number; text: string }> = [];\n let needsHelper = false;\n const helperPresent = hasResolveDefaultExport(ts, sourceFile);\n let namespaceIndex = 0;\n\n const usedNamespace = (base: string): string => {\n let candidate = `${base}${namespaceIndex}`;\n while (code.includes(candidate)) {\n namespaceIndex += 1;\n candidate = `${base}${namespaceIndex}`;\n }\n namespaceIndex += 1;\n return candidate;\n };\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement)) {\n continue;\n }\n const importClause = statement.importClause;\n if (!importClause || !importClause.name) {\n continue;\n }\n if (isTypeOnlyImportClause(ts, importClause)) {\n continue;\n }\n if (!ts.isStringLiteral(statement.moduleSpecifier)) {\n continue;\n }\n const moduleName = statement.moduleSpecifier.text;\n const moduleKind = await resolveModuleKind(moduleName, normalizedId);\n if (moduleKind === 'unknown' || moduleKind === 'unresolvable') {\n continue;\n }\n const isESM = moduleKind === 'esm';\n const isCJS = moduleKind === 'cjs';\n\n const defaultName = importClause.name.text;\n const replacementImports: string[] = [];\n let namespaceName: string | undefined;\n let defaultImportName: string | undefined;\n\n if (\n importClause.namedBindings &&\n ts.isNamespaceImport(importClause.namedBindings)\n ) {\n namespaceName = importClause.namedBindings.name.text;\n replacementImports.push(\n `import * as ${namespaceName} from ${formatModuleSpecifier(moduleName)};`\n );\n } else if (isCJS) {\n defaultImportName = usedNamespace('__screwUpDefaultImportModule');\n replacementImports.push(\n `import ${defaultImportName} from ${formatModuleSpecifier(moduleName)};`\n );\n if (\n importClause.namedBindings &&\n ts.isNamedImports(importClause.namedBindings)\n ) {\n replacementImports.push(\n buildNamedImport(moduleName, importClause.namedBindings)\n );\n }\n } else {\n namespaceName = usedNamespace('__screwUpDefaultImportModule');\n replacementImports.push(\n `import * as ${namespaceName} from ${formatModuleSpecifier(moduleName)};`\n );\n if (\n importClause.namedBindings &&\n ts.isNamedImports(importClause.namedBindings)\n ) {\n replacementImports.push(\n buildNamedImport(moduleName, importClause.namedBindings)\n );\n }\n }\n\n const interopSource = namespaceName ?? defaultImportName;\n const replacement =\n `${replacementImports.join('\\n')}\\n` +\n `const ${defaultName} = __resolveDefaultExport(${interopSource}, ${isESM});`;\n\n edits.push({\n start: statement.getStart(sourceFile),\n end: statement.getEnd(),\n text: replacement,\n });\n needsHelper = true;\n }\n\n if (edits.length === 0) {\n return { code, changed: false };\n }\n\n if (needsHelper && !helperPresent) {\n const importStatements = sourceFile.statements.filter(\n ts.isImportDeclaration\n );\n const lastImport = importStatements[importStatements.length - 1];\n if (lastImport) {\n const newline = code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const helperId = createCjsInteropHelperId(normalizedId);\n edits.push({\n start: lastImport.getEnd(),\n end: lastImport.getEnd(),\n text: `${newline}${buildHelperFunctionSource(helperId)}${newline}`,\n });\n }\n }\n\n edits.sort((a, b) => b.start - a.start);\n let nextCode = code;\n for (const edit of edits) {\n nextCode =\n nextCode.slice(0, edit.start) + edit.text + nextCode.slice(edit.end);\n }\n\n return { code: nextCode, changed: true };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { existsSync } from 'fs';\nimport { mkdir, readFile, writeFile } from 'fs/promises';\nimport { basename, dirname, join } from 'path';\nimport { Logger } from './internal';\nimport { PackageMetadata } from './types';\n\n// We use async I/O except 'existsSync', because 'exists' will throw an error if the file does not exist.\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nexport const generateMetadataFileContent = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const lines: string[] = [];\n\n lines.push('// @ts-nocheck');\n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n\n lines.push('');\n\n return lines.join('\\n');\n};\n\nexport const writeFileIfChanged = async (\n filePath: string,\n content: string,\n description: string,\n logger: Logger\n): Promise<boolean> => {\n try {\n // Check if file exists and compare content\n let shouldWrite = !existsSync(filePath);\n if (!shouldWrite) {\n try {\n const existingContent = await readFile(filePath, 'utf-8');\n shouldWrite = existingContent !== content;\n } catch {\n // File doesn't exist or couldn't read, we should write it\n shouldWrite = true;\n }\n }\n\n if (shouldWrite) {\n // Ensure directory exists\n await mkdir(dirname(filePath), { recursive: true });\n // Write file only if content has changed\n await writeFile(filePath, content);\n return true;\n } else {\n // File content is the same, no need to write\n return false;\n }\n } catch (error) {\n logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);\n return false;\n }\n};\n\nexport const ensureMetadataGitignore = async (\n metadataSourcePath: string,\n logger: Logger\n): Promise<boolean> => {\n const metadataDirectory = dirname(metadataSourcePath);\n const gitignorePath = join(metadataDirectory, '.gitignore');\n\n if (existsSync(gitignorePath)) {\n return false;\n }\n\n try {\n await mkdir(metadataDirectory, { recursive: true });\n const metadataFileName = basename(metadataSourcePath);\n const gitignoreContent = `# Auto-generated by screw-up plugin\\n${metadataFileName}\\n`;\n await writeFile(gitignorePath, gitignoreContent);\n return true;\n } catch (error) {\n logger.warn(\n `Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`\n );\n return false;\n }\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport type {\n NormalizedOutputOptions,\n OutputAsset,\n OutputChunk,\n OutputOptions,\n} from 'rolldown';\nimport { readFile, writeFile, readdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { createMutex } from 'async-primitives';\n\nimport { git_commit_hash, name, version } from './generated/packageMetadata';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\nimport {\n createNodeModuleKindResolver,\n injectCjsInteropFlag,\n scanHasDefaultImport,\n transformDefaultImports,\n} from './default-import-fix';\nimport {\n ensureMetadataGitignore,\n generateMetadataFileContent,\n writeFileIfChanged,\n} from './metadata-file';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (\n metadata: PackageMetadata,\n outputKeys: readonly string[]\n): string => {\n const parts: string[] = [];\n\n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n\n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n\n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Split a leading shebang from content, keeping the shebang line with newline.\n */\nconst splitShebang = (content: string): { shebang: string; rest: string } => {\n if (!content.startsWith('#!')) {\n return { shebang: '', rest: content };\n }\n const newlineIndex = content.indexOf('\\n');\n if (newlineIndex === -1) {\n return { shebang: `${content}\\n`, rest: '' };\n }\n return {\n shebang: content.slice(0, newlineIndex + 1),\n rest: content.slice(newlineIndex + 1),\n };\n};\n\n/**\n * Adds a trailing newline to the banner text when needed so subsequent\n * concatenations do not collapse onto the last line.\n */\nconst ensureTrailingNewline = (value: string, newline: string): string =>\n value.endsWith(newline) ? value : value + newline;\n\n/**\n * Merge screw-up's metadata banner with an existing Rollup banner, keeping any\n * shebang line at the very top and preventing duplicate metadata blocks.\n */\nconst mergeBanners = (\n currentBanner: string,\n existingBanner: string\n): string => {\n if (!currentBanner) {\n return existingBanner;\n }\n if (!existingBanner) {\n return currentBanner;\n }\n\n if (existingBanner.includes(currentBanner)) {\n return existingBanner;\n }\n\n // Preserve shebang at the very top while sliding the metadata banner underneath it.\n const shebangMatch = existingBanner.match(/^(#![^\\r\\n]*)(\\r?\\n)?([\\s\\S]*)$/);\n if (shebangMatch) {\n const [, shebangLine, newlineSeq = '\\n', rest = ''] = shebangMatch;\n if (rest.startsWith(currentBanner)) {\n return existingBanner;\n }\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n if (rest.length === 0) {\n return `${shebangLine}${newlineSeq}${currentWithNewline}`;\n }\n return `${shebangLine}${newlineSeq}${currentWithNewline}${rest}`;\n }\n\n // Default path: prepend metadata banner before the previous banner content.\n const newlineSeq = existingBanner.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const currentWithNewline = ensureTrailingNewline(currentBanner, newlineSeq);\n return `${currentWithNewline}${existingBanner}`;\n};\n\n/**\n * Count how many newline characters exist in the banner block.\n * The result equals the line delta that needs to be applied to sourcemaps.\n */\nconst countInsertedLines = (bannerWithTrailingNewline: string): number => {\n return bannerWithTrailingNewline.split('\\n').length - 1;\n};\n\n/**\n * Convert asset payloads to UTF-8 strings to simplify sourcemap adjustments.\n */\nconst stringifyAssetSource = (source: string | Uint8Array): string =>\n typeof source === 'string' ? source : Buffer.from(source).toString('utf-8');\n\n/**\n * Prepend the specified number of empty lines to a sourcemap by adding semicolons\n * at the beginning of the VLQ mappings string.\n * @returns Updated sourcemap JSON string, or undefined if no change is needed.\n */\nconst applyLineOffsetToSourceMap = (\n source: string | Uint8Array,\n lineOffset: number\n): string | undefined => {\n if (lineOffset <= 0) {\n return undefined;\n }\n\n const original = stringifyAssetSource(source);\n let map: any;\n try {\n map = JSON.parse(original);\n } catch {\n return undefined;\n }\n\n if (!map || typeof map.mappings !== 'string') {\n return undefined;\n }\n\n const prefix = ';'.repeat(lineOffset);\n if (map.mappings.startsWith(prefix)) {\n return undefined;\n }\n\n map.mappings = prefix + map.mappings;\n const serialized = JSON.stringify(map);\n return original.endsWith('\\n') ? `${serialized}\\n` : serialized;\n};\n\n/**\n * Prepend empty lines to sourcemap objects for chunk outputs.\n */\nconst applyLineOffsetToSourceMapObject = (\n map: any,\n lineOffset: number\n): void => {\n if (!map || lineOffset <= 0 || typeof map.mappings !== 'string') {\n return;\n }\n const prefix = ';'.repeat(lineOffset);\n if (map.mappings.startsWith(prefix)) {\n return;\n }\n map.mappings = prefix + map.mappings;\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n fixDefaultImport = true,\n outputKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataKeys = [\n 'name',\n 'version',\n 'description',\n 'author',\n 'license',\n 'repository.url',\n 'git.commit.hash',\n ],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true,\n } = options;\n\n const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));\n const generateMetadataSourceLocker = createMutex();\n const resolveModuleKind = createNodeModuleKindResolver();\n let typescriptPromise:\n | Promise<typeof import('typescript') | undefined>\n | undefined;\n\n const loggerPrefix = `${name}-vite`;\n let logger = createConsoleLogger(loggerPrefix);\n let banner = '';\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n const loadTypeScript = async () => {\n if (!typescriptPromise) {\n typescriptPromise = import('typescript').catch(() => undefined);\n }\n return typescriptPromise;\n };\n\n const resolveOutputBanner = async (\n outputOptions: NormalizedOutputOptions,\n chunk: OutputChunk\n ): Promise<string> => {\n const outputBanner = outputOptions.banner;\n if (typeof outputBanner === 'function') {\n const resolved = await outputBanner(chunk);\n return resolved ?? banner ?? '';\n }\n return outputBanner ?? banner ?? '';\n };\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFiles = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot,\n fetchGitMetadata,\n alwaysOverrideVersionFromGit,\n logger\n );\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFileContent(\n metadata,\n outputMetadataKeys\n );\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n const metadataWritten = await writeFileIfChanged(\n metadataSourcePath,\n metadataSourceContent,\n 'metadata source file',\n logger\n );\n if (existsSync(metadataSourcePath)) {\n const gitignoreWritten = await ensureMetadataGitignore(\n metadataSourcePath,\n logger\n );\n if (gitignoreWritten) {\n logger.info(\n `generateMetadataSourceFile: .gitignore is generated: ${join(\n dirname(outputMetadataFilePath),\n '.gitignore'\n )}`\n );\n }\n }\n return metadataWritten;\n }\n return false;\n };\n\n // Generate dummy metadata TypeScript file with empty string values\n const generateMetadataFileFromKeys = async (keys: readonly string[]) => {\n if (outputMetadataFile) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Only generate if file doesn't exist (don't overwrite existing files)\n if (!existsSync(metadataSourcePath)) {\n // Create dummy metadata with empty strings for all keys\n const dummyMetadata: any = {};\n keys.forEach((key) => {\n dummyMetadata[key] = '[Require first build]';\n });\n const dummyContent = generateMetadataFileContent(dummyMetadata, keys);\n return await writeFileIfChanged(\n metadataSourcePath,\n dummyContent,\n 'dummy metadata source file',\n logger\n );\n }\n }\n return false;\n };\n\n return {\n name: 'screw-up',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Plugin starting\n applyToEnvironment: async (penv) => {\n // Prime metadata generation once so dependent files are ready immediately\n logger.info(`${version}-${git_commit_hash}: Started.`);\n\n // Partial (but maybe exact) project root\n projectRoot = penv.config.root;\n\n // Generate dummy metadata source file to prevent import errors on initial build\n if (\n projectRoot &&\n (await generateMetadataFileFromKeys(outputMetadataKeys))\n ) {\n logger.info(\n `applyToEnvironment: Dummy metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n\n return true;\n },\n // Build configuration phase\n config: (config) => {\n // When banner injection is disabled, leave rollup output untouched\n if (!insertMetadataBanner) {\n return;\n }\n\n config.build ??= {};\n const rolldownOptions = (config.build.rolldownOptions ??= {});\n // Normalize rollup outputs to an array so we can inject a banner even when empty\n const ensureOutputs = (): OutputOptions[] => {\n // Consumer already supplied an array of outputs (possibly empty)\n if (Array.isArray(rolldownOptions.output)) {\n const outputs = rolldownOptions.output as OutputOptions[];\n // Array exists but contains no entry yet; create one lazily\n if (outputs.length === 0) {\n const output: OutputOptions = {};\n outputs.push(output);\n return outputs;\n }\n outputs.forEach((output, index) => {\n // Array slot is nullish (user emptied it); replace with object to keep consistent\n if (!output) {\n outputs[index] = {};\n }\n });\n return outputs;\n }\n\n // Single output object was provided; wrap it to unify processing\n if (rolldownOptions.output) {\n return [rolldownOptions.output as OutputOptions];\n }\n\n // No output specified at all; create placeholder so banner hook can run\n const output: OutputOptions = {};\n rolldownOptions.output = output;\n return [output];\n };\n\n const outputs = ensureOutputs();\n\n outputs.forEach((output) => {\n const previousBanner = output.banner;\n // Preserve any existing banner configuration and append ours later in order\n const resolvePreviousBanner = async (chunk: any) => {\n // User provided banner as function; resolve it per chunk for compatibility\n if (typeof previousBanner === 'function') {\n const resolved = await previousBanner(chunk);\n return resolved ?? '';\n }\n return previousBanner ?? '';\n };\n\n output.banner = async (chunk: any) => {\n const existingBanner = await resolvePreviousBanner(chunk);\n const currentBanner = banner ?? '';\n return mergeBanners(currentBanner, existingBanner);\n };\n });\n },\n transform: async (code, id) => {\n if (!fixDefaultImport || !id || id.includes('\\0')) {\n return;\n }\n const cleanId = id.split('?')[0];\n if (cleanId.includes('node_modules')) {\n return;\n }\n if (\n cleanId.endsWith('.d.ts') ||\n cleanId.endsWith('.d.mts') ||\n cleanId.endsWith('.d.cts')\n ) {\n return;\n }\n if (!/\\.(?:[cm]?[jt]sx?|[cm]js)$/.test(cleanId)) {\n return;\n }\n\n const ts = await loadTypeScript();\n if (!ts) {\n return;\n }\n const hasDefaultImport = scanHasDefaultImport(ts, code);\n if (cleanId.includes('/src/') || cleanId.includes('\\\\src\\\\')) {\n logger.debug(\n `[fixDefaultImport] scan ${cleanId}: ${\n hasDefaultImport ? 'hit' : 'miss'\n }`\n );\n }\n if (!hasDefaultImport) {\n return;\n }\n\n const result = await transformDefaultImports(\n ts,\n code,\n cleanId,\n resolveModuleKind\n );\n if (result.changed) {\n return {\n code: result.code,\n map: null,\n };\n }\n },\n // Configuration resolved phase\n configResolved: async (config) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n // Enable debug logging for performance analysis\n const tempEnableLogging = true;\n\n // Save project root\n projectRoot = config.root;\n if (tempEnableLogging || config?.logger) {\n logger = createConsoleLogger(loggerPrefix, config.logger);\n } else if (config?.customLogger) {\n logger = createConsoleLogger(loggerPrefix, config.customLogger);\n }\n\n logger.debug(`configResolved: Started.`);\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot,\n checkWorkingDirectoryStatus,\n logger\n );\n // Refresh banner string and generated files before TypeScript compilation kicks in\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configResolved: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configResolved: Exited.`);\n l.release();\n }\n },\n // Server hook\n configureServer: async (server) => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`configureServer: Started.`);\n\n // Exclude generated metadata file from watcher to prevent infinite loop\n // Metadata file output is enabled and watcher is present; unwatch to avoid churn\n if (outputMetadataFile && server.watcher) {\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n // Use unwatch to exclude the file from being watched\n server.watcher.unwatch(metadataSourcePath);\n logger.debug(\n `configureServer: Excluded from watcher: ${outputMetadataFilePath}`\n );\n }\n\n // Rebuild banner metadata on dev server startup to keep values fresh\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `configureServer: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`configureServer: Exited.`);\n l.release();\n }\n },\n // Build start phase\n buildStart: async () => {\n // Avoid race conditions.\n const l = await generateMetadataSourceLocker.lock();\n try {\n logger.debug(`buildStart: Started.`);\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n if (await generateMetadataSourceFiles()) {\n logger.info(\n `buildStart: Metadata source file is generated: ${outputMetadataFilePath}`\n );\n }\n } finally {\n logger.debug(`buildStart: Exited.`);\n l.release();\n }\n },\n renderChunk: (code, chunk, outputOptions) => {\n if (!fixDefaultImport || outputOptions.format !== 'cjs') {\n return null;\n }\n const result = injectCjsInteropFlag(code);\n if (!result.changed) {\n return null;\n }\n return { code: result.code, map: null };\n },\n // Generate bundle phase\n generateBundle: {\n order: 'post',\n handler: async (_outputOptions, bundle) => {\n // Rolldown applies JS chunk banners natively, so only patch assets that\n // are emitted outside that path (for example declaration files).\n if (insertMetadataBanner) {\n let assetCount = 0;\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (\n // Only treat assets that match filters; JS chunks already handled via rollup banner\n chunk.type === 'asset' &&\n assetFiltersRegex.some((filter) => filter.test(fileName))\n ) {\n if (typeof chunk.source === 'string') {\n // Assets are not covered by rollup banner injection, so prepend manually\n const bannerBlock = `${banner}\\n`;\n // Insert banner while preserving shebang semantics and capture line delta for maps\n chunk.source = insertBannerHeader(chunk.source, bannerBlock); // insert more blank line\n const lineOffset = countInsertedLines(bannerBlock);\n\n const mapFileName = `${fileName}.map`;\n const mapAsset = bundle[mapFileName] as OutputAsset | undefined;\n if (\n mapAsset &&\n mapAsset.type === 'asset' &&\n mapAsset.source !== undefined\n ) {\n // Rewrite the sourcemap mappings so declaration lines still map back correctly\n const adjusted = applyLineOffsetToSourceMap(\n mapAsset.source,\n lineOffset\n );\n if (adjusted !== undefined) {\n mapAsset.source = adjusted;\n }\n }\n assetCount++;\n }\n }\n }\n if (assetCount >= 1) {\n logger.debug(\n `generateBundle: Banner header inserted: ${assetCount} file(s)`\n );\n }\n }\n },\n },\n // Write bundle phase\n writeBundle: async (options) => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n let count = 0;\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n // Apply banner only to filtered assets in post-write stage\n if (assetFiltersRegex.some((filter) => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n // Backfill banners onto assets emitted by other plugins as well\n const bannerBlock = `${banner}\\n`;\n await writeFile(\n filePath,\n insertBannerHeader(content, bannerBlock)\n );\n\n const lineOffset = countInsertedLines(bannerBlock);\n const mapPath = `${filePath}.map`;\n try {\n const mapContent = await readFile(mapPath, 'utf-8');\n // Align existing .d.ts.map files so consumer toolchains see accurate positions\n const adjusted = applyLineOffsetToSourceMap(\n mapContent,\n lineOffset\n );\n if (adjusted !== undefined) {\n await writeFile(mapPath, adjusted);\n }\n } catch {\n // Declarations without sourcemap can be safely ignored\n }\n count++;\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n if (count >= 1) {\n logger.debug(`writeBundle: Banner header inserted: ${count} file(s)`);\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n },\n };\n};\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { screwUp } from './vite-plugin';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n// Expose screw-up Vite plugin\n\nexport * from './types';\nexport default screwUp;\n"],"x_google_ignoreList":[0,2,3],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,uBAAuB;AAE7B,IAAM,oBAAoB;CACxB,SAAS;EACR,OAAO,UAAU;CACnB;AACD,IAAM,gBAAgB,WAAW;AAC/B,KAAI,kBAAkB,MACpB,QAAO;AAET,KAAI,OAAO,WAAW,SACpB,QAAO,IAAI,MAAM,OAAO;AAE1B,wBAAO,IAAI,MAAM,oBAAoB;;AAEvC,IAAM,WAAW,QAAQ,aAAa;AACpC,KAAI,CAAC,OACH,QAAO;AAET,KAAI,OAAO,SAAS;AAClB,MAAI;AACF,YAAS,aAAa,OAAO,OAAO,CAAC;WAC9B,OAAO;AACd,WAAQ,KAAK,8BAA8B,MAAM;;AAEnD,SAAO;;CAET,IAAI,qBACiB;AACnB,MAAI,cAAc;GAChB,MAAM,SAAS,OAAO;AACtB,UAAO,oBAAoB,SAAS,aAAa;AACjD,kBAAe,KAAK;AACpB,OAAI;AACF,aAAS,aAAa,OAAO,CAAC;YACvB,OAAO;AACd,YAAQ,KAAK,8BAA8B,MAAM;;;;CAIvD,MAAM,gBAAgB;AACpB,MAAI,cAAc;AAChB,UAAO,oBAAoB,SAAS,aAAa;AACjD,kBAAe,KAAK;;;AAGxB,QAAO,iBAAiB,SAAS,cAAc,EAAE,MAAM,MAAM,CAAC;AAK9D,QAJe;EACb;GACC,OAAO,UAAU;EACnB;;AAwBH,IAAM,SAAS,OAAO;AACpB,KAAI,OAAO,iBAAiB,WAC1B,cAAa,GAAG;KAEhB,YAAW,IAAI,EAAE;;AAGrB,IAAM,wCAAwB,IAAI,MAAM,+BAA+B;AACvE,IAAM,oBAAoB,oBAAoB;CAC5C,IAAI,WAAW;CACf,MAAM,gBAAgB;AACpB,MAAI,CAAC,SACH;AAEF,aAAW;AACX,mBAAiB;;AAEnB,QAAO;EACL,IAAI,WAAW;AACb,UAAO;;EAET;GACC,OAAO,UAAU;EACnB;;AAEH,IAAM,eAAe,sBAAsB,OAAO;CAChD,IAAI,WAAW;CACf,MAAM,QAAQ,EAAE;CAChB,IAAI,QAAQ;CACZ,MAAM,qBAAqB;EACzB,IAAI;AACJ,MAAI,YAAY,MAAM,WAAW,EAC/B;EAEF,MAAM,OAAO,MAAM,OAAO;AAC1B,OAAK,KAAK,KAAK,WAAW,OAAO,KAAK,IAAI,GAAG,SAAS;AACpD,QAAK,OAAO,iBAAiB,CAAC;AAC9B,wBAAqB;AACrB;;AAEF,aAAW;EACX,MAAM,aAAa,iBAAiB,YAAY;AAChD,OAAK,QAAQ,WAAW;;CAE1B,MAAM,4BAA4B;AAChC;AACA,MAAI,SAAS,qBAAqB;AAChC,WAAQ;AACR,SAAM,aAAa;QAEnB,eAAc;;CAGlB,MAAM,oBAAoB;AACxB,MAAI,CAAC,SACH;AAEF,aAAW;AACX,uBAAqB;;CAEvB,MAAM,mBAAmB,SAAS;EAChC,MAAM,QAAQ,MAAM,QAAQ,KAAK;AACjC,MAAI,UAAU,GACZ,OAAM,OAAO,OAAO,EAAE;;CAG1B,MAAM,OAAO,OAAO,WAAW;AAC7B,MAAI,QAAQ;AACV,OAAI,OAAO,QACT,OAAM,iBAAiB;AAEzB,UAAO,IAAI,SAAS,SAAS,WAAW;IACtC,MAAM,YAAY;KAChB,SAAS,KAAK;KACd,QAAQ,KAAK;KACb;KACD;IACD,MAAM,cAAc,QAAQ,cAAc;AACxC,qBAAgB,UAAU;AAC1B,YAAO,iBAAiB,CAAC;MACzB;AACF,cAAU,WAAW,WAAW;AAC9B,iBAAY,SAAS;AACrB,aAAQ,OAAO;;AAEjB,cAAU,UAAU,UAAU;AAC5B,iBAAY,SAAS;AACrB,YAAO,MAAM;;AAEf,UAAM,KAAK,UAAU;AACrB,kBAAc;KACd;QAEF,QAAO,IAAI,SAAS,SAAS,WAAW;AACtC,SAAM,KAAK;IACT;IACA;IACD,CAAC;AACF,iBAAc;IACd;;AAeN,QAZe;EACb;EACA,QAAQ,EACN,MAAM,MACP;EACD,IAAI,WAAW;AACb,UAAO;;EAET,IAAI,eAAe;AACjB,UAAO,MAAM;;EAEhB;;AAmNH,IAAM,wBAAwB,OAAO;AACnC,QAAO;EAAE;EAAI,sBAAsB,IAAI,KAAK;EAAE;;AAEpB,qBAAqB,OAAO,SAAS,CAAC;;;ACtZlE,IAAa,OAAO;AACpB,IAAa,UAAU;AAKvB,IAAa,kBAAkB;;;;ACV/B,EAAC,SAAU,QAAQ,SAAS;AAC3B,SAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,SAAS,GACzF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,QAAQ,GAC3D,OAAO,QAAQ,SAAS;cACjB,WAAY;AAAE;EAEtB,SAAS,qBAAqB,IAAI,UAAQ;AACzC,UAAO,WAAS,EAAE,SAAS,EAAE,EAAE,EAAE,GAAGA,UAAQA,SAAO,QAAQ,EAAEA,SAAO;;EAGrE,IAAI,UAAU,qBAAqB,SAAU,UAAQ;GAErD,IAAI,SAAS,SAAO,UAAU,OAAO,UAAU,eAAe,OAAO,QAAQ,OACzE,SAAS,OAAO,QAAQ,eAAe,KAAK,QAAQ,OAAO,OAE3D,SAAS,cAAc,EAAE;AAC7B,OAAI,OAAO,OAAO,SAAY,OAAM;IAClC;EAEF,IAAI,QAAQ,qBAAqB,SAAU,UAAQ;GACnD,IAAI,OAAO,SAAO,UAAU,EAAE,SAAS,SAAS;AAChD,OAAI,OAAO,OAAO,SAAY,OAAM;IAClC;AACY,QAAM;EAEpB,IAAI,YAAY,SAAU,IAAI;AAC5B,UAAO,OAAO,OAAO,WAAW,OAAO,OAAO,OAAO,OAAO;;EAG9D,IAAI,YAAY,SAAU,IAAI;AAC5B,OAAI,CAAC,UAAU,GAAG,CAAI,OAAM,UAAU,KAAK,qBAAqB;AAChE,UAAO;;EAGT,IAAI,SAAS,SAAU,MAAM;AAC3B,OAAI;AACF,WAAO,CAAC,CAAC,MAAM;YACR,GAAG;AACV,WAAO;;;EAKX,IAAI,eAAe,CAAC,OAAO,WAAY;AACrC,UAAO,OAAO,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,WAAY;AAAE,WAAO;MAAM,CAAC,CAAC,KAAK;IAC/E;EAEF,IAAI,WAAW,QAAQ;EAEvB,IAAI,KAAK,UAAU,SAAS,IAAI,UAAU,SAAS,cAAc;EACjE,IAAI,aAAa,SAAU,IAAI;AAC7B,UAAO,KAAK,SAAS,cAAc,GAAG,GAAG,EAAE;;EAG7C,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,WAAY;AACvD,UAAO,OAAO,eAAe,WAAW,MAAM,EAAE,KAAK,EAAE,KAAK,WAAY;AAAE,WAAO;MAAM,CAAC,CAAC,KAAK;IAC9F;EAMF,IAAI,eAAe,SAAU,IAAI,GAAG;AAClC,OAAI,CAAC,UAAU,GAAG,CAAI,QAAO;GAC7B,IAAI,IAAI;AACR,OAAI,KAAK,QAAQ,KAAK,GAAG,aAAa,cAAc,CAAC,UAAU,MAAM,GAAG,KAAK,GAAG,CAAC,CAAI,QAAO;AAC5F,OAAI,QAAQ,KAAK,GAAG,YAAY,cAAc,CAAC,UAAU,MAAM,GAAG,KAAK,GAAG,CAAC,CAAI,QAAO;AACtF,OAAI,CAAC,KAAK,QAAQ,KAAK,GAAG,aAAa,cAAc,CAAC,UAAU,MAAM,GAAG,KAAK,GAAG,CAAC,CAAI,QAAO;AAC7F,SAAM,UAAU,0CAA0C;;EAG5D,IAAI,KAAK,OAAO;EAchB,IAAI,YAAY,EACf,GAbO,eAAe,OAAO,iBAAiB,SAAS,eAAe,GAAG,GAAG,YAAY;AACvF,aAAU,EAAE;AACZ,OAAI,aAAa,GAAG,KAAK;AACzB,aAAU,WAAW;AACrB,OAAI,cAAiB,KAAI;AACvB,WAAO,GAAG,GAAG,GAAG,WAAW;YACpB,GAAG;AACZ,OAAI,SAAS,cAAc,SAAS,WAAc,OAAM,UAAU,2BAA2B;AAC7F,OAAI,WAAW,WAAc,GAAE,KAAK,WAAW;AAC/C,UAAO;KAKR;EAED,IAAI,gBAAgB,SAAU,QAAQ,OAAO;AAC3C,UAAO;IACL,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACd;IACR;;EAGH,IAAI,QAAQ,eAAe,SAAU,QAAQ,KAAK,OAAO;AACvD,UAAO,UAAU,EAAE,QAAQ,KAAK,cAAc,GAAG,MAAM,CAAC;MACtD,SAAU,QAAQ,KAAK,OAAO;AAChC,UAAO,OAAO;AACd,UAAO;;EAGT,IAAI,iBAAiB,EAAE,CAAC;EACxB,IAAI,OAAO,SAAU,IAAI,KAAK;AAC5B,UAAO,eAAe,KAAK,IAAI,IAAI;;EAGrC,IAAI,KAAK;EACT,IAAI,KAAK,KAAK,QAAQ;EACtB,IAAI,OAAO,SAAU,KAAK;AACxB,UAAO,UAAU,OAAO,QAAQ,KAAA,IAAY,KAAK,KAAK,OAAO,EAAE,KAAK,IAAI,SAAS,GAAG,CAAC;;EAGvF,IAAI,WAAW;EAef,IAAI,oBAbU,qBAAqB,SAAU,UAAQ;GACrD,IAAI,SAAS;GACb,IAAI,QAAQ,QAAQ,YAAY,QAAQ,UAAU,EAAE;AAEpD,IAAC,SAAO,UAAU,SAAU,KAAK,OAAO;AACtC,WAAO,MAAM,SAAS,MAAM,OAAO,UAAU,KAAA,IAAY,QAAQ,EAAE;MAClE,YAAY,EAAE,CAAC,CAAC,KAAK;IACtB,SAAS,MAAM;IACf,MAAM,WAAW,SAAS;IAC1B,WAAW;IACZ,CAAC;IACA,CAE8B,6BAA6B,SAAS,SAAS;EAE/E,IAAI,YAAY,qBAAqB,SAAU,UAAQ;GACvD,IAAI,MAAM,KAAK,MAAM;GAErB,IAAI,YAAY;GAChB,IAAI,OAAO,KAAK,mBAAmB,MAAM,UAAU;AAEnD,SAAM,gBAAgB,SAAU,IAAI;AAClC,WAAO,kBAAkB,KAAK,GAAG;;AAGnC,IAAC,SAAO,UAAU,SAAU,GAAG,KAAK,KAAK,MAAM;IAC7C,IAAI,aAAa,OAAO,OAAO;AAC/B,QAAI,WAAc,MAAK,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI;AAC9D,QAAI,EAAE,SAAS,IAAO;AACtB,QAAI,WAAc,MAAK,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC;AACjG,QAAI,MAAM,QACR,GAAE,OAAO;aACA,CAAC,MAAM;AAChB,YAAO,EAAE;AACT,WAAM,GAAG,KAAK,IAAI;eACT,EAAE,KACX,GAAE,OAAO;QAET,OAAM,GAAG,KAAK,IAAI;MAGnB,SAAS,WAAW,WAAW,SAAS,WAAW;AACpD,WAAO,OAAO,QAAQ,cAAc,KAAK,QAAQ,kBAAkB,KAAK,KAAK;KAC7E;IACA;EAEF,IAAI,aAAa,SAAU,IAAI;AAC7B,OAAI,OAAO,MAAM,WAAc,OAAM,UAAU,KAAK,sBAAsB;AAC1E,UAAO;;EAKT,IAAI,OAAO,SAAU,IAAI,MAAM,QAAQ;AACrC,cAAW,GAAG;AACd,OAAI,SAAS,KAAA,EAAa,QAAO;AACjC,WAAQ,QAAR;IACE,KAAK,EAAG,QAAO,SAAU,GAAG;AAC1B,YAAO,GAAG,KAAK,MAAM,EAAE;;IAEzB,KAAK,EAAG,QAAO,SAAU,GAAG,GAAG;AAC7B,YAAO,GAAG,KAAK,MAAM,GAAG,EAAE;;IAE5B,KAAK,EAAG,QAAO,SAAU,GAAG,GAAG,GAAG;AAChC,YAAO,GAAG,KAAK,MAAM,GAAG,GAAG,EAAE;;;AAGjC,UAAO,WAAyB;AAC9B,WAAO,GAAG,MAAM,MAAM,UAAU;;;EAIpC,IAAI,YAAY;EAEhB,IAAI,UAAU,SAAU,MAAM,MAAM,QAAQ;GAC1C,IAAI,YAAY,OAAO,QAAQ;GAC/B,IAAI,YAAY,OAAO,QAAQ;GAC/B,IAAI,YAAY,OAAO,QAAQ;GAC/B,IAAI,WAAW,OAAO,QAAQ;GAC9B,IAAI,UAAU,OAAO,QAAQ;GAC7B,IAAI,SAAS,YAAY,UAAU,YAAY,QAAQ,UAAU,QAAQ,QAAQ,EAAE,KAAK,QAAQ,SAAS,EAAE,EAAE;GAC7G,IAAIC,YAAU,YAAY,QAAQ,MAAM,UAAU,MAAM,QAAQ,EAAE;GAClE,IAAI,WAAWA,UAAQ,eAAe,UAAQ,aAAa,EAAE;GAC7D,IAAI,KAAK,KAAK,KAAK;AACnB,OAAI,UAAa,UAAS;AAC1B,QAAK,OAAO,QAAQ;AAElB,UAAM,CAAC,aAAa,UAAU,OAAO,SAAS,KAAA;AAE9C,WAAO,MAAM,SAAS,QAAQ;AAE9B,UAAM,WAAW,MAAM,KAAK,KAAK,QAAQ,GAAG,YAAY,OAAO,OAAO,aAAa,KAAK,SAAS,MAAM,IAAI,GAAG;AAE9G,QAAI,OAAU,WAAU,QAAQ,KAAK,KAAK,OAAO,QAAQ,EAAE;AAE3D,QAAIA,UAAQ,QAAQ,IAAO,OAAMA,WAAS,KAAK,IAAI;AACnD,QAAI,YAAY,SAAS,QAAQ,IAAO,UAAS,OAAO;;;AAG5D,UAAQ,OAAO;AAEf,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI;EACZ,IAAI,UAAU;EAGd,IAAI,OAAO,KAAK;EAChB,IAAI,QAAQ,KAAK;EACjB,IAAI,aAAa,SAAU,IAAI;AAC7B,UAAO,MAAM,KAAK,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,QAAQ,MAAM,GAAG;;EAI1D,IAAI,WAAW,SAAU,IAAI;AAC3B,OAAI,MAAM,KAAA,EAAa,OAAM,UAAU,2BAA2B,GAAG;AACrE,UAAO;;EAKT,IAAI,YAAY,SAAU,WAAW;AACnC,UAAO,SAAU,MAAM,KAAK;IAC1B,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC;IAC9B,IAAI,IAAI,WAAW,IAAI;IACvB,IAAI,IAAI,EAAE;IACV,IAAI,GAAG;AACP,QAAI,IAAI,KAAK,KAAK,EAAK,QAAO,YAAY,KAAK,KAAA;AAC/C,QAAI,EAAE,WAAW,EAAE;AACnB,WAAO,IAAI,SAAU,IAAI,SAAU,IAAI,MAAM,MAAM,IAAI,EAAE,WAAW,IAAI,EAAE,IAAI,SAAU,IAAI,QACxF,YAAY,EAAE,OAAO,EAAE,GAAG,IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,IAAI,SAAU,OAAO,IAAI,SAAU;;;EAI5E,IAAI,MAAM,UAAU,MAAM;AAC1B,UAAQ,QAAQ,GAAG,UAAU,EAE3B,aAAa,SAAS,YAAY,KAAK;AACrC,UAAO,IAAI,MAAM,IAAI;KAExB,CAAC;AAEgB,QAAM,OAAO;EAE/B,IAAI,MAAM,KAAK;EACf,IAAI,MAAM,KAAK;EACf,IAAI,mBAAmB,SAAU,OAAO,QAAQ;AAC9C,WAAQ,WAAW,MAAM;AACzB,UAAO,QAAQ,IAAI,IAAI,QAAQ,QAAQ,EAAE,GAAG,IAAI,OAAO,OAAO;;EAGhE,IAAI,eAAe,OAAO;EAC1B,IAAI,iBAAiB,OAAO;AAG5B,UAAQ,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,kBAAkB,eAAe,UAAU,IAAI,UAAU,EAE1F,eAAe,SAAS,cAAc,GAAG;GACvC,IAAI,cAAc;GAElB,IAAI,MAAM,EAAE;GACZ,IAAI,OAAO,UAAU;GACrB,IAAI,IAAI;GACR,IAAI;AACJ,UAAO,OAAO,GAAG;AACf,WAAO,CAAC,YAAY;AACpB,QAAI,iBAAiB,MAAM,QAAS,KAAK,KAAQ,OAAM,WAAW,OAAO,6BAA6B;AACtG,QAAI,KAAK,OAAO,QACZ,aAAa,KAAK,GAClB,eAAe,QAAQ,UAAY,MAAM,OAAQ,OAAO,OAAQ,MAAO,CAC1E;;AACD,UAAO,IAAI,KAAK,GAAG;KAExB,CAAC;AAEkB,QAAM,OAAO;EAOjC,IAAI,UAAU;GACb,iBALqB;GAMrB,UALc;GAMd,aALiB;GAMjB;EAED,IAAI,OAAO;GACP,kBAAkB,SAAS,iBAAkB,GAAG;AAC5C,WAAO,OAAO,MAAM,YAAY,QAAQ,gBAAgB,KAAK,EAAE;;GAGnE,eAAe,SAAS,cAAe,GAAG;AACtC,WAAO,OAAO,MAAM,aACf,KAAK,OAAO,KAAK,OACrB,KAAK,OAAO,KAAK,OACjB,MAAM,OAAS,MAAM,OACtB,QAAQ,SAAS,KAAK,EAAE;;GAI5B,kBAAkB,SAAS,iBAAkB,GAAG;AAC5C,WAAO,OAAO,MAAM,aACf,KAAK,OAAO,KAAK,OACrB,KAAK,OAAO,KAAK,OACjB,KAAK,OAAO,KAAK,OACjB,MAAM,OAAS,MAAM,OACrB,MAAM,OAAc,MAAM,OAC3B,QAAQ,YAAY,KAAK,EAAE;;GAI/B,SAAS,SAAS,QAAS,GAAG;AAC1B,WAAO,OAAO,MAAM,YAAY,QAAQ,KAAK,EAAE;;GAGnD,YAAY,SAAS,WAAY,GAAG;AAChC,WAAO,OAAO,MAAM,YAAY,cAAc,KAAK,EAAE;;GAE5D;EAED,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EAEJ,IAAI,QAAQ,SAAS,MAAO,MAAM,SAAS;AACvC,YAAS,OAAO,KAAK;AACrB,gBAAa;AACb,WAAQ,EAAE;AACV,SAAM;AACN,UAAO;AACP,YAAS;AACT,WAAQ,KAAA;AACR,SAAM,KAAA;AACN,UAAO,KAAA;AAEP,MAAG;AACC,YAAQ,KAAK;AAOb,gBAAY,aAAa;YACpB,MAAM,SAAS;AAExB,OAAI,OAAO,YAAY,WACnB,QAAO,YAAY,EAAC,IAAI,MAAK,EAAE,IAAI,QAAQ;AAG/C,UAAO;;EAGX,SAAS,YAAa,QAAQ,MAAM,SAAS;GACzC,IAAI,QAAQ,OAAO;AACnB,OAAI,SAAS,QAAQ,OAAO,UAAU,SAClC,KAAI,MAAM,QAAQ,MAAM,CACpB,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;IACnC,IAAI,MAAM,OAAO,EAAE;IACnB,IAAI,cAAc,YAAY,OAAO,KAAK,QAAQ;AAClD,QAAI,gBAAgB,KAAA,EAChB,QAAO,MAAM;QAEb,QAAO,eAAe,OAAO,KAAK;KAC9B,OAAO;KACP,UAAU;KACV,YAAY;KACZ,cAAc;KACjB,CAAC;;OAIV,MAAK,IAAI,SAAS,OAAO;IACrB,IAAI,gBAAgB,YAAY,OAAO,OAAO,QAAQ;AACtD,QAAI,kBAAkB,KAAA,EAClB,QAAO,MAAM;QAEb,QAAO,eAAe,OAAO,OAAO;KAChC,OAAO;KACP,UAAU;KACV,YAAY;KACZ,cAAc;KACjB,CAAC;;AAMlB,UAAO,QAAQ,KAAK,QAAQ,MAAM,MAAM;;EAG5C,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EAEJ,SAAS,MAAO;AACZ,cAAW;AACX,YAAS;AACT,iBAAc;AACd,UAAO;AAEP,YAAS;AACL,QAAI,MAAM;IAOV,IAAI,QAAQ,UAAU,WAAW;AACjC,QAAI,MACA,QAAO;;;EAKnB,SAAS,OAAQ;AACb,OAAI,OAAO,KACP,QAAO,OAAO,cAAc,OAAO,YAAY,IAAI,CAAC;;EAI5D,SAAS,OAAQ;GACb,IAAI,IAAI,MAAM;AAEd,OAAI,MAAM,MAAM;AACZ;AACA,aAAS;cACF,EACP,WAAU,EAAE;OAEZ;AAGJ,OAAI,EACA,QAAO,EAAE;AAGb,UAAO;;EAGX,IAAI,YAAY;GACZ,SAAS,SAAS,YAAa;AAC3B,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACD,YAAM;AACN;KAEJ,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK,KAAA;AACD,YAAM;AACN,aAAO,SAAS,MAAM;;AAG1B,QAAI,KAAK,iBAAiB,EAAE,EAAE;AAC1B,WAAM;AACN;;AAQJ,WAAO,UAAU,aAAa;;GAGlC,SAAS,SAAS,UAAW;AACzB,YAAQ,GAAR;KACA,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK;AACD,YAAM;AACN,iBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,kBAAkB,SAAS,mBAAoB;AAC3C,YAAQ,GAAR;KACA,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK,KAAA,EACD,OAAM,YAAY,MAAM,CAAC;;AAG7B,UAAM;;GAGV,0BAA0B,SAAS,2BAA4B;AAC3D,YAAQ,GAAR;KACA,KAAK;AACD,YAAM;AACN;KAEJ,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK,KAAA,EACD,OAAM,YAAY,MAAM,CAAC;;AAG7B,UAAM;AACN,eAAW;;GAGf,mBAAmB,SAAS,oBAAqB;AAC7C,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK,KAAA;AACD,YAAM;AACN,aAAO,SAAS,MAAM;;AAG1B,UAAM;;GAGV,OAAO,SAAS,QAAS;AACrB,YAAQ,GAAR;KACA,KAAK;KACL,KAAK,IACD,QAAO,SAAS,cAAc,MAAM,CAAC;KAEzC,KAAK;AACD,YAAM;AACN,cAAQ,MAAM;AACd,aAAO,SAAS,QAAQ,KAAK;KAEjC,KAAK;AACD,YAAM;AACN,cAAQ,MAAM;AACd,aAAO,SAAS,WAAW,KAAK;KAEpC,KAAK;AACD,YAAM;AACN,cAAQ,OAAO;AACf,aAAO,SAAS,WAAW,MAAM;KAErC,KAAK;KACL,KAAK;AACD,UAAI,MAAM,KAAK,IACX,QAAO;AAGX,iBAAW;AACX;KAEJ,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;AACD,YAAM;AACN,cAAQ,UAAU;AAClB,aAAO,SAAS,WAAW,SAAS;KAExC,KAAK;AACD,YAAM;AACN,cAAQ,KAAK;AACb,aAAO,SAAS,WAAW,IAAI;KAEnC,KAAK;KACL,KAAK;AACD,oBAAe,MAAM,KAAK;AAC1B,eAAS;AACT,iBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,2BAA2B,SAAS,4BAA6B;AAC7D,QAAI,MAAM,IACN,OAAM,YAAY,MAAM,CAAC;AAG7B,UAAM;IACN,IAAI,IAAI,eAAe;AACvB,YAAQ,GAAR;KACA,KAAK;KACL,KAAK,IACD;KAEJ;AACI,UAAI,CAAC,KAAK,cAAc,EAAE,CACtB,OAAM,mBAAmB;AAG7B;;AAGJ,cAAU;AACV,eAAW;;GAGf,gBAAgB,SAAS,iBAAkB;AACvC,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB;KAEJ,KAAK;AACD,YAAM;AACN,iBAAW;AACX;;AAGJ,QAAI,KAAK,iBAAiB,EAAE,EAAE;AAC1B,eAAU,MAAM;AAChB;;AAGJ,WAAO,SAAS,cAAc,OAAO;;GAGzC,sBAAsB,SAAS,uBAAwB;AACnD,QAAI,MAAM,IACN,OAAM,YAAY,MAAM,CAAC;AAG7B,UAAM;IACN,IAAI,IAAI,eAAe;AACvB,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK,IACD;KAEJ;AACI,UAAI,CAAC,KAAK,iBAAiB,EAAE,CACzB,OAAM,mBAAmB;AAG7B;;AAGJ,cAAU;AACV,eAAW;;GAGf,MAAM,SAAS,SAAU;AACrB,YAAQ,GAAR;KACA,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;AACD,YAAM;AACN,cAAQ,UAAU;AAClB,aAAO,SAAS,WAAW,OAAO,SAAS;KAE/C,KAAK;AACD,YAAM;AACN,cAAQ,KAAK;AACb,aAAO,SAAS,WAAW,IAAI;;AAGnC,UAAM,YAAY,MAAM,CAAC;;GAG7B,MAAM,SAAS,OAAQ;AACnB,YAAQ,GAAR;KACA,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;KAEJ,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;KAEJ,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;;AAGJ,WAAO,SAAS,WAAW,OAAO,EAAE;;GAGxC,gBAAgB,SAAS,iBAAkB;AACvC,YAAQ,GAAR;KACA,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;KAEJ,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;;AAGJ,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB;;AAGJ,WAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC;;GAGrD,qBAAqB,SAAS,sBAAuB;AACjD,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,cAAc,SAAS,eAAgB;AACnC,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;;AAGJ,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,WAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC;;GAGrD,iBAAiB,SAAS,kBAAmB;AACzC,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;;AAGJ,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB;;AAGJ,WAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC;;GAGrD,iBAAiB,SAAS,kBAAmB;AACzC,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;AACD,gBAAU,MAAM;AAChB,iBAAW;AACX;;AAGJ,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,qBAAqB,SAAS,sBAAuB;AACjD,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,wBAAwB,SAAS,yBAA0B;AACvD,QAAI,KAAK,QAAQ,EAAE,EAAE;AACjB,eAAU,MAAM;AAChB;;AAGJ,WAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC;;GAGrD,aAAa,SAAS,cAAe;AACjC,QAAI,KAAK,WAAW,EAAE,EAAE;AACpB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,oBAAoB,SAAS,qBAAsB;AAC/C,QAAI,KAAK,WAAW,EAAE,EAAE;AACpB,eAAU,MAAM;AAChB;;AAGJ,WAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC;;GAGrD,QAAQ,SAAS,SAAU;AACvB,YAAQ,GAAR;KACA,KAAK;AACD,YAAM;AACN,gBAAU,QAAQ;AAClB;KAEJ,KAAK;AACD,UAAI,aAAa;AACb,aAAM;AACN,cAAO,SAAS,UAAU,OAAO;;AAGrC,gBAAU,MAAM;AAChB;KAEJ,KAAK;AACD,UAAI,CAAC,aAAa;AACd,aAAM;AACN,cAAO,SAAS,UAAU,OAAO;;AAGrC,gBAAU,MAAM;AAChB;KAEJ,KAAK;KACL,KAAK,KACD,OAAM,YAAY,MAAM,CAAC;KAE7B,KAAK;KACL,KAAK;AACD,oBAAc,EAAE;AAChB;KAEJ,KAAK,KAAA,EACD,OAAM,YAAY,MAAM,CAAC;;AAG7B,cAAU,MAAM;;GAGpB,OAAO,SAAS,QAAS;AACrB,YAAQ,GAAR;KACA,KAAK;KACL,KAAK,IACD,QAAO,SAAS,cAAc,MAAM,CAAC;;AAOzC,eAAW;;GAGf,oBAAoB,SAAS,qBAAsB;AAC/C,YAAQ,GAAR;KACA,KAAK;KACL,KAAK;AACD,eAAS,MAAM;AACf,iBAAW;AACX;KAEJ,KAAK;AACD,YAAM;AACN,iBAAW;AACX;KAEJ,KAAK,IACD,QAAO,SAAS,cAAc,MAAM,CAAC;KAEzC,KAAK;KACL,KAAK;AACD,oBAAe,MAAM,KAAK;AAC1B,iBAAW;AACX;;AAGJ,QAAI,KAAK,cAAc,EAAE,EAAE;AACvB,eAAU,MAAM;AAChB,gBAAW;AACX;;AAGJ,UAAM,YAAY,MAAM,CAAC;;GAG7B,mBAAmB,SAAS,oBAAqB;AAC7C,QAAI,MAAM,IACN,QAAO,SAAS,cAAc,MAAM,CAAC;AAGzC,UAAM,YAAY,MAAM,CAAC;;GAG7B,qBAAqB,SAAS,sBAAuB;AACjD,eAAW;;GAGf,oBAAoB,SAAS,qBAAsB;AAC/C,YAAQ,GAAR;KACA,KAAK;KACL,KAAK,IACD,QAAO,SAAS,cAAc,MAAM,CAAC;;AAGzC,UAAM,YAAY,MAAM,CAAC;;GAG7B,kBAAkB,SAAS,mBAAoB;AAC3C,QAAI,MAAM,IACN,QAAO,SAAS,cAAc,MAAM,CAAC;AAGzC,eAAW;;GAGf,iBAAiB,SAAS,kBAAmB;AACzC,YAAQ,GAAR;KACA,KAAK;KACL,KAAK,IACD,QAAO,SAAS,cAAc,MAAM,CAAC;;AAGzC,UAAM,YAAY,MAAM,CAAC;;GAG7B,KAAK,SAAS,MAAO;AAOjB,UAAM,YAAY,MAAM,CAAC;;GAEhC;EAED,SAAS,SAAU,MAAM,OAAO;AAC5B,UAAO;IACG;IACC;IACD;IACE;IACX;;EAGL,SAAS,QAAS,GAAG;AACjB,QAAK,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;IAC/C,IAAI,IAAI,KAAK;AAIb,QAFQ,MAAM,KAEJ,EACN,OAAM,YAAY,MAAM,CAAC;AAG7B,UAAM;;;EAId,SAAS,SAAU;AAEf,WADQ,MAAM,EACd;IACA,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,SAAI,KAAK,QAAQ,MAAM,CAAC,CACpB,OAAM,YAAY,MAAM,CAAC;AAG7B,YAAO;IAEX,KAAK;AACD,WAAM;AACN,YAAO,WAAW;IAEtB,KAAK;AACD,WAAM;AACN,YAAO,eAAe;IAE1B,KAAK;IACL,KAAK;IACL,KAAK;AACD,WAAM;AACN,YAAO;IAEX,KAAK;AACD,WAAM;AACN,SAAI,MAAM,KAAK,KACX,OAAM;AAGV,YAAO;IAEX,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,IACD,OAAM,YAAY,MAAM,CAAC;IAE7B,KAAK,KAAA,EACD,OAAM,YAAY,MAAM,CAAC;;AAG7B,UAAO,MAAM;;EAGjB,SAAS,YAAa;GAClB,IAAI,SAAS;GACb,IAAI,IAAI,MAAM;AAEd,OAAI,CAAC,KAAK,WAAW,EAAE,CACnB,OAAM,YAAY,MAAM,CAAC;AAG7B,aAAU,MAAM;AAEhB,OAAI,MAAM;AACV,OAAI,CAAC,KAAK,WAAW,EAAE,CACnB,OAAM,YAAY,MAAM,CAAC;AAG7B,aAAU,MAAM;AAEhB,UAAO,OAAO,cAAc,SAAS,QAAQ,GAAG,CAAC;;EAGrD,SAAS,gBAAiB;GACtB,IAAI,SAAS;GACb,IAAI,QAAQ;AAEZ,UAAO,UAAU,GAAG;IAChB,IAAI,IAAI,MAAM;AACd,QAAI,CAAC,KAAK,WAAW,EAAE,CACnB,OAAM,YAAY,MAAM,CAAC;AAG7B,cAAU,MAAM;;AAGpB,UAAO,OAAO,cAAc,SAAS,QAAQ,GAAG,CAAC;;EAGrD,IAAI,cAAc;GACd,OAAO,SAAS,QAAS;AACrB,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,UAAM;;GAGV,oBAAoB,SAAS,qBAAsB;AAC/C,YAAQ,MAAM,MAAd;KACA,KAAK;KACL,KAAK;AACD,YAAM,MAAM;AACZ,mBAAa;AACb;KAEJ,KAAK;AAMD,WAAK;AACL;KAEJ,KAAK,MACD,OAAM,YAAY;;;GAO1B,mBAAmB,SAAS,oBAAqB;AAM7C,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,iBAAa;;GAGjB,qBAAqB,SAAS,sBAAuB;AACjD,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,UAAM;;GAGV,kBAAkB,SAAS,mBAAoB;AAC3C,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,QAAI,MAAM,SAAS,gBAAgB,MAAM,UAAU,KAAK;AACpD,UAAK;AACL;;AAGJ,UAAM;;GAGV,oBAAoB,SAAS,qBAAsB;AAM/C,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,YAAQ,MAAM,OAAd;KACA,KAAK;AACD,mBAAa;AACb;KAEJ,KAAK,IACD,MAAK;;;GAOb,iBAAiB,SAAS,kBAAmB;AAMzC,QAAI,MAAM,SAAS,MACf,OAAM,YAAY;AAGtB,YAAQ,MAAM,OAAd;KACA,KAAK;AACD,mBAAa;AACb;KAEJ,KAAK,IACD,MAAK;;;GAOb,KAAK,SAAS,MAAO;GAMxB;EAED,SAAS,OAAQ;GACb,IAAI;AAEJ,WAAQ,MAAM,MAAd;IACA,KAAK;AACD,aAAQ,MAAM,OAAd;MACA,KAAK;AACD,eAAQ,EAAE;AACV;MAEJ,KAAK;AACD,eAAQ,EAAE;AACV;;AAGJ;IAEJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACD,aAAQ,MAAM;AACd;;AAOJ,OAAI,SAAS,KAAA,EACT,QAAO;QACJ;IACH,IAAI,SAAS,MAAM,MAAM,SAAS;AAClC,QAAI,MAAM,QAAQ,OAAO,CACrB,QAAO,KAAK,MAAM;QAElB,QAAO,eAAe,QAAQ,KAAK;KACxB;KACP,UAAU;KACV,YAAY;KACZ,cAAc;KACjB,CAAC;;AAIV,OAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAC7C,UAAM,KAAK,MAAM;AAEjB,QAAI,MAAM,QAAQ,MAAM,CACpB,cAAa;QAEb,cAAa;UAEd;IACH,IAAI,UAAU,MAAM,MAAM,SAAS;AACnC,QAAI,WAAW,KACX,cAAa;aACN,MAAM,QAAQ,QAAQ,CAC7B,cAAa;QAEb,cAAa;;;EAKzB,SAAS,MAAO;AACZ,SAAM,KAAK;GAEX,IAAI,UAAU,MAAM,MAAM,SAAS;AACnC,OAAI,WAAW,KACX,cAAa;YACN,MAAM,QAAQ,QAAQ,CAC7B,cAAa;OAEb,cAAa;;EAcrB,SAAS,YAAa,GAAG;AACrB,OAAI,MAAM,KAAA,EACN,QAAO,YAAa,oCAAoC,OAAO,MAAM,OAAQ;AAGjF,UAAO,YAAa,+BAAgC,WAAW,EAAE,GAAI,UAAU,OAAO,MAAM,OAAQ;;EAGxG,SAAS,aAAc;AACnB,UAAO,YAAa,oCAAoC,OAAO,MAAM,OAAQ;;EAajF,SAAS,oBAAqB;AAC1B,aAAU;AACV,UAAO,YAAa,4CAA4C,OAAO,MAAM,OAAQ;;EAGzF,SAAS,cAAe,GAAG;AACvB,WAAQ,KAAM,aAAc,WAAW,EAAE,GAAI,0DAA2D;;EAG5G,SAAS,WAAY,GAAG;GACpB,IAAI,eAAe;IACf,KAAK;IACL,MAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACb;AAED,OAAI,aAAa,GACb,QAAO,aAAa;AAGxB,OAAI,IAAI,KAAK;IACT,IAAI,YAAY,EAAE,WAAW,EAAE,CAAC,SAAS,GAAG;AAC5C,WAAO,SAAS,OAAO,WAAW,UAAU,UAAU,OAAO;;AAGjE,UAAO;;EAGX,SAAS,YAAa,SAAS;GAC3B,IAAI,MAAM,IAAI,YAAY,QAAQ;AAClC,OAAI,aAAa;AACjB,OAAI,eAAe;AACnB,UAAO;;AAoRX,SATY;GACD;GACP,WA1QY,SAAS,UAAW,OAAO,UAAU,OAAO;IACxD,IAAI,QAAQ,EAAE;IACd,IAAI,SAAS;IACb,IAAI;IACJ,IAAI;IACJ,IAAI,MAAM;IACV,IAAI;AAEJ,QACI,YAAY,QACZ,OAAO,aAAa,YACpB,CAAC,MAAM,QAAQ,SAAS,EAC1B;AACE,aAAQ,SAAS;AACjB,aAAQ,SAAS;AACjB,gBAAW,SAAS;;AAGxB,QAAI,OAAO,aAAa,WACpB,gBAAe;aACR,MAAM,QAAQ,SAAS,EAAE;AAChC,oBAAe,EAAE;AACjB,UAAK,IAAI,IAAI,GAAG,OAAO,UAAU,IAAI,KAAK,QAAQ,KAAK,GAAG;MACtD,IAAI,IAAI,KAAK;MAEb,IAAI,OAAQ,KAAK;AAEjB,UAAI,OAAO,MAAM,SACb,QAAO;eAEP,OAAO,MAAM,YACb,aAAa,UACb,aAAa,OAEb,QAAO,OAAO,EAAE;AAGpB,UAAI,SAAS,KAAA,KAAa,aAAa,QAAQ,KAAK,GAAG,EACnD,cAAa,KAAK,KAAK;;;AAKnC,QAAI,iBAAiB,OACjB,SAAQ,OAAO,MAAM;aACd,iBAAiB,OACxB,SAAQ,OAAO,MAAM;AAGzB,QAAI,OAAO,UAAU;SACb,QAAQ,GAAG;AACX,cAAQ,KAAK,IAAI,IAAI,KAAK,MAAM,MAAM,CAAC;AACvC,YAAM,aAAa,OAAO,GAAG,MAAM;;eAEhC,OAAO,UAAU,SACxB,OAAM,MAAM,OAAO,GAAG,GAAG;AAG7B,WAAO,kBAAkB,IAAI,EAAC,IAAI,OAAM,CAAC;IAEzC,SAAS,kBAAmB,KAAK,QAAQ;KACrC,IAAI,QAAQ,OAAO;AACnB,SAAI,SAAS;UACL,OAAO,MAAM,YAAY,WACzB,SAAQ,MAAM,QAAQ,IAAI;eACnB,OAAO,MAAM,WAAW,WAC/B,SAAQ,MAAM,OAAO,IAAI;;AAIjC,SAAI,aACA,SAAQ,aAAa,KAAK,QAAQ,KAAK,MAAM;AAGjD,SAAI,iBAAiB,OACjB,SAAQ,OAAO,MAAM;cACd,iBAAiB,OACxB,SAAQ,OAAO,MAAM;cACd,iBAAiB,QACxB,SAAQ,MAAM,SAAS;AAG3B,aAAQ,OAAR;MACA,KAAK,KAAM,QAAO;MAClB,KAAK,KAAM,QAAO;MAClB,KAAK,MAAO,QAAO;;AAGnB,SAAI,OAAO,UAAU,SACjB,QAAO,YAAY,OAAO,MAAM;AAGpC,SAAI,OAAO,UAAU,SACjB,QAAO,OAAO,MAAM;AAGxB,SAAI,OAAO,UAAU,SACjB,QAAO,MAAM,QAAQ,MAAM,GAAG,eAAe,MAAM,GAAG,gBAAgB,MAAM;;IAMpF,SAAS,YAAa,OAAO;KACzB,IAAI,SAAS;MACT,KAAK;MACL,MAAK;MACR;KAED,IAAI,eAAe;MACf,KAAK;MACL,MAAK;MACL,MAAM;MACN,MAAM;MACN,MAAM;MACN,MAAM;MACN,MAAM;MACN,KAAM;MACN,MAAM;MACN,MAAM;MACN,UAAU;MACV,UAAU;MACb;KAED,IAAI,UAAU;AAEd,UAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;MACnC,IAAI,IAAI,MAAM;AACd,cAAQ,GAAR;OACA,KAAK;OACL,KAAK;AACD,eAAO;AACP,mBAAW;AACX;OAEJ,KAAK,KACD,KAAI,KAAK,QAAQ,MAAM,IAAI,GAAG,EAAE;AAC5B,mBAAW;AACX;;;AAIR,UAAI,aAAa,IAAI;AACjB,kBAAW,aAAa;AACxB;;AAGJ,UAAI,IAAI,KAAK;OACT,IAAI,YAAY,EAAE,WAAW,EAAE,CAAC,SAAS,GAAG;AAC5C,kBAAW,SAAS,OAAO,WAAW,UAAU,UAAU,OAAO;AACjE;;AAGJ,iBAAW;;KAGf,IAAI,YAAY,SAAS,OAAO,KAAK,OAAO,CAAC,OAAO,SAAU,GAAG,GAAG;AAAE,aAAQ,OAAO,KAAK,OAAO,KAAM,IAAI;OAAK;AAEhH,eAAU,QAAQ,QAAQ,IAAI,OAAO,WAAW,IAAI,EAAE,aAAa,WAAW;AAE9E,YAAO,YAAY,UAAU;;IAGjC,SAAS,gBAAiB,OAAO;AAC7B,SAAI,MAAM,QAAQ,MAAM,IAAI,EACxB,OAAM,UAAU,yCAAyC;AAG7D,WAAM,KAAK,MAAM;KAEjB,IAAI,WAAW;AACf,cAAS,SAAS;KAElB,IAAI,OAAO,gBAAgB,OAAO,KAAK,MAAM;KAC7C,IAAI,UAAU,EAAE;AAChB,UAAK,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;MAClD,IAAI,MAAM,KAAK;MAEf,IAAI,iBAAiB,kBAAkB,KAAK,MAAM;AAClD,UAAI,mBAAmB,KAAA,GAAW;OAC9B,IAAI,SAAS,aAAa,IAAI,GAAG;AACjC,WAAI,QAAQ,GACR,WAAU;AAEd,iBAAU;AACV,eAAQ,KAAK,OAAO;;;KAI5B,IAAI;AACJ,SAAI,QAAQ,WAAW,EACnB,SAAQ;UACL;MACH,IAAI;AACJ,UAAI,QAAQ,IAAI;AACZ,oBAAa,QAAQ,KAAK,IAAI;AAC9B,eAAQ,MAAM,aAAa;aACxB;OACH,IAAI,YAAY,QAAQ;AACxB,oBAAa,QAAQ,KAAK,UAAU;AACpC,eAAQ,QAAQ,SAAS,aAAa,QAAQ,WAAW;;;AAIjE,WAAM,KAAK;AACX,cAAS;AACT,YAAO;;IAGX,SAAS,aAAc,KAAK;AACxB,SAAI,IAAI,WAAW,EACf,QAAO,YAAY,KAAK,KAAK;KAGjC,IAAI,YAAY,OAAO,cAAc,IAAI,YAAY,EAAE,CAAC;AACxD,SAAI,CAAC,KAAK,cAAc,UAAU,CAC9B,QAAO,YAAY,KAAK,KAAK;AAGjC,UAAK,IAAI,IAAI,UAAU,QAAQ,IAAI,IAAI,QAAQ,IAC3C,KAAI,CAAC,KAAK,iBAAiB,OAAO,cAAc,IAAI,YAAY,EAAE,CAAC,CAAC,CAChE,QAAO,YAAY,KAAK,KAAK;AAIrC,YAAO;;IAGX,SAAS,eAAgB,OAAO;AAC5B,SAAI,MAAM,QAAQ,MAAM,IAAI,EACxB,OAAM,UAAU,yCAAyC;AAG7D,WAAM,KAAK,MAAM;KAEjB,IAAI,WAAW;AACf,cAAS,SAAS;KAElB,IAAI,UAAU,EAAE;AAChB,UAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;MACnC,IAAI,iBAAiB,kBAAkB,OAAO,EAAE,EAAE,MAAM;AACxD,cAAQ,KAAM,mBAAmB,KAAA,IAAa,iBAAiB,OAAO;;KAG1E,IAAI;AACJ,SAAI,QAAQ,WAAW,EACnB,SAAQ;cAEJ,QAAQ,GAER,SAAQ,MADS,QAAQ,KAAK,IAAI,GACP;UACxB;MACH,IAAI,YAAY,QAAQ;MACxB,IAAI,eAAe,QAAQ,KAAK,UAAU;AAC1C,cAAQ,QAAQ,SAAS,eAAe,QAAQ,WAAW;;AAInE,WAAM,KAAK;AACX,cAAS;AACT,YAAO;;;GAOd;IAQC;;;;;ACxsDH,EAAC,SAAS,GAAE,GAAE;AAAC,cAAU,OAAO,WAAS,eAAa,OAAO,SAAO,OAAO,UAAQ,GAAG,GAAC,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,EAAE,GAAC,CAAC,IAAE,eAAa,OAAO,aAAW,aAAW,KAAG,MAAM,QAAM,GAAG;cAAQ,WAAU;AAAC;EAAa,IAAI,IAAE,KAAI,IAAE,KAAI,IAAE,MAAK,IAAE,eAAc,IAAE,UAAS,IAAE,UAAS,IAAE,QAAO,IAAE,OAAM,IAAE,QAAO,IAAE,SAAQ,IAAE,WAAU,IAAE,QAAO,IAAE,QAAO,IAAE,gBAAe,IAAE,8FAA6F,IAAE,uFAAsF,IAAE;GAAC,MAAK;GAAK,UAAS,2DAA2D,MAAM,IAAI;GAAC,QAAO,wFAAwF,MAAM,IAAI;GAAC,SAAQ,SAAS,GAAE;IAAC,IAAI,IAAE;KAAC;KAAK;KAAK;KAAK;KAAK,EAAC,IAAE,IAAE;AAAI,WAAM,MAAI,KAAG,GAAG,IAAE,MAAI,OAAK,EAAE,MAAI,EAAE,MAAI;;GAAK,EAAC,IAAE,SAAS,GAAE,GAAE,GAAE;GAAC,IAAI,IAAE,OAAO,EAAE;AAAC,UAAM,CAAC,KAAG,EAAE,UAAQ,IAAE,IAAE,KAAG,MAAM,IAAE,IAAE,EAAE,OAAO,CAAC,KAAK,EAAE,GAAC;KAAG,IAAE;GAAC,GAAE;GAAE,GAAE,SAAS,GAAE;IAAC,IAAI,IAAE,CAAC,EAAE,WAAW,EAAC,IAAE,KAAK,IAAI,EAAE,EAAC,IAAE,KAAK,MAAM,IAAE,GAAG,EAAC,IAAE,IAAE;AAAG,YAAO,KAAG,IAAE,MAAI,OAAK,EAAE,GAAE,GAAE,IAAI,GAAC,MAAI,EAAE,GAAE,GAAE,IAAI;;GAAE,GAAE,SAAS,EAAE,GAAE,GAAE;AAAC,QAAG,EAAE,MAAM,GAAC,EAAE,MAAM,CAAC,QAAM,CAAC,EAAE,GAAE,EAAE;IAAC,IAAI,IAAE,MAAI,EAAE,MAAM,GAAC,EAAE,MAAM,KAAG,EAAE,OAAO,GAAC,EAAE,OAAO,GAAE,IAAE,EAAE,OAAO,CAAC,IAAI,GAAE,EAAE,EAAC,IAAE,IAAE,IAAE,GAAE,IAAE,EAAE,OAAO,CAAC,IAAI,KAAG,IAAE,KAAG,IAAG,EAAE;AAAC,WAAM,EAAE,EAAE,KAAG,IAAE,MAAI,IAAE,IAAE,IAAE,IAAE,OAAK;;GAAI,GAAE,SAAS,GAAE;AAAC,WAAO,IAAE,IAAE,KAAK,KAAK,EAAE,IAAE,IAAE,KAAK,MAAM,EAAE;;GAAE,GAAE,SAAS,GAAE;AAAC,WAAM;KAAC,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,GAAE;KAAE,IAAG;KAAE,GAAE;KAAE,CAAC,MAAI,OAAO,KAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,MAAK,GAAG;;GAAE,GAAE,SAAS,GAAE;AAAC,WAAO,KAAK,MAAI;;GAAG,EAAC,IAAE,MAAK,IAAE,EAAE;AAAC,IAAE,KAAG;EAAE,IAAI,IAAE,kBAAiB,IAAE,SAAS,GAAE;AAAC,UAAO,aAAa,KAAG,EAAE,CAAC,KAAG,CAAC,EAAE;KAAK,IAAE,SAAS,EAAE,GAAE,GAAE,GAAE;GAAC,IAAI;AAAE,OAAG,CAAC,EAAE,QAAO;AAAE,OAAG,YAAU,OAAO,GAAE;IAAC,IAAI,IAAE,EAAE,aAAa;AAAC,MAAE,OAAK,IAAE,IAAG,MAAI,EAAE,KAAG,GAAE,IAAE;IAAG,IAAI,IAAE,EAAE,MAAM,IAAI;AAAC,QAAG,CAAC,KAAG,EAAE,SAAO,EAAE,QAAO,EAAE,EAAE,GAAG;UAAK;IAAC,IAAI,IAAE,EAAE;AAAK,MAAE,KAAG,GAAE,IAAE;;AAAE,UAAM,CAAC,KAAG,MAAI,IAAE,IAAG,KAAG,CAAC,KAAG;KAAG,IAAE,SAAS,GAAE,GAAE;AAAC,OAAG,EAAE,EAAE,CAAC,QAAO,EAAE,OAAO;GAAC,IAAI,IAAE,YAAU,OAAO,IAAE,IAAE,EAAE;AAAC,UAAO,EAAE,OAAK,GAAE,EAAE,OAAK,WAAU,IAAI,EAAE,EAAE;KAAE,IAAE;AAAE,IAAE,IAAE,GAAE,EAAE,IAAE,GAAE,EAAE,IAAE,SAAS,GAAE,GAAE;AAAC,UAAO,EAAE,GAAE;IAAC,QAAO,EAAE;IAAG,KAAI,EAAE;IAAG,GAAE,EAAE;IAAG,SAAQ,EAAE;IAAQ,CAAC;;EAAE,IAAI,IAAE,WAAU;GAAC,SAAS,EAAE,GAAE;AAAC,SAAK,KAAG,EAAE,EAAE,QAAO,MAAK,CAAC,EAAE,EAAC,KAAK,MAAM,EAAE,EAAC,KAAK,KAAG,KAAK,MAAI,EAAE,KAAG,EAAE,EAAC,KAAK,KAAG,CAAC;;GAAE,IAAI,IAAE,EAAE;AAAU,UAAO,EAAE,QAAM,SAAS,GAAE;AAAC,SAAK,KAAG,SAAS,GAAE;KAAC,IAAI,IAAE,EAAE,MAAK,IAAE,EAAE;AAAI,SAAG,SAAO,EAAE,wBAAO,IAAI,KAAK,IAAI;AAAC,SAAG,EAAE,EAAE,EAAE,CAAC,wBAAO,IAAI,MAAI;AAAC,SAAG,aAAa,KAAK,QAAO,IAAI,KAAK,EAAE;AAAC,SAAG,YAAU,OAAO,KAAG,CAAC,MAAM,KAAK,EAAE,EAAC;MAAC,IAAI,IAAE,EAAE,MAAM,EAAE;AAAC,UAAG,GAAE;OAAC,IAAI,IAAE,EAAE,KAAG,KAAG,GAAE,KAAG,EAAE,MAAI,KAAK,UAAU,GAAE,EAAE;AAAC,cAAO,IAAE,IAAI,KAAK,KAAK,IAAI,EAAE,IAAG,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE,CAAC,GAAC,IAAI,KAAK,EAAE,IAAG,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE,MAAI,GAAE,EAAE;;;AAAE,YAAO,IAAI,KAAK,EAAE;MAAE,EAAE,EAAC,KAAK,MAAM;MAAE,EAAE,OAAK,WAAU;IAAC,IAAI,IAAE,KAAK;AAAG,SAAK,KAAG,EAAE,aAAa,EAAC,KAAK,KAAG,EAAE,UAAU,EAAC,KAAK,KAAG,EAAE,SAAS,EAAC,KAAK,KAAG,EAAE,QAAQ,EAAC,KAAK,KAAG,EAAE,UAAU,EAAC,KAAK,KAAG,EAAE,YAAY,EAAC,KAAK,KAAG,EAAE,YAAY,EAAC,KAAK,MAAI,EAAE,iBAAiB;MAAE,EAAE,SAAO,WAAU;AAAC,WAAO;MAAG,EAAE,UAAQ,WAAU;AAAC,WAAM,EAAE,KAAK,GAAG,UAAU,KAAG;MAAI,EAAE,SAAO,SAAS,GAAE,GAAE;IAAC,IAAI,IAAE,EAAE,EAAE;AAAC,WAAO,KAAK,QAAQ,EAAE,IAAE,KAAG,KAAG,KAAK,MAAM,EAAE;MAAE,EAAE,UAAQ,SAAS,GAAE,GAAE;AAAC,WAAO,EAAE,EAAE,GAAC,KAAK,QAAQ,EAAE;MAAE,EAAE,WAAS,SAAS,GAAE,GAAE;AAAC,WAAO,KAAK,MAAM,EAAE,GAAC,EAAE,EAAE;MAAE,EAAE,KAAG,SAAS,GAAE,GAAE,GAAE;AAAC,WAAO,EAAE,EAAE,EAAE,GAAC,KAAK,KAAG,KAAK,IAAI,GAAE,EAAE;MAAE,EAAE,OAAK,WAAU;AAAC,WAAO,KAAK,MAAM,KAAK,SAAS,GAAC,IAAI;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,GAAG,SAAS;MAAE,EAAE,UAAQ,SAAS,GAAE,GAAE;IAAC,IAAI,IAAE,MAAK,IAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAE,GAAE,IAAE,EAAE,EAAE,EAAE,EAAC,IAAE,SAAS,GAAE,GAAE;KAAC,IAAI,IAAE,EAAE,EAAE,EAAE,KAAG,KAAK,IAAI,EAAE,IAAG,GAAE,EAAE,GAAC,IAAI,KAAK,EAAE,IAAG,GAAE,EAAE,EAAC,EAAE;AAAC,YAAO,IAAE,IAAE,EAAE,MAAM,EAAE;OAAE,IAAE,SAAS,GAAE,GAAE;AAAC,YAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,OAAO,IAAI,GAAE,IAAE;MAAC;MAAE;MAAE;MAAE;MAAE,GAAC;MAAC;MAAG;MAAG;MAAG;MAAI,EAAE,MAAM,EAAE,CAAC,EAAC,EAAE;OAAE,IAAE,KAAK,IAAG,IAAE,KAAK,IAAG,IAAE,KAAK,IAAG,IAAE,SAAO,KAAK,KAAG,QAAM;AAAI,YAAO,GAAP;KAAU,KAAK,EAAE,QAAO,IAAE,EAAE,GAAE,EAAE,GAAC,EAAE,IAAG,GAAG;KAAC,KAAK,EAAE,QAAO,IAAE,EAAE,GAAE,EAAE,GAAC,EAAE,GAAE,IAAE,EAAE;KAAC,KAAK;MAAE,IAAI,IAAE,KAAK,SAAS,CAAC,aAAW,GAAE,KAAG,IAAE,IAAE,IAAE,IAAE,KAAG;AAAE,aAAO,EAAE,IAAE,IAAE,IAAE,KAAG,IAAE,IAAG,EAAE;KAAC,KAAK;KAAE,KAAK,EAAE,QAAO,EAAE,IAAE,SAAQ,EAAE;KAAC,KAAK,EAAE,QAAO,EAAE,IAAE,WAAU,EAAE;KAAC,KAAK,EAAE,QAAO,EAAE,IAAE,WAAU,EAAE;KAAC,KAAK,EAAE,QAAO,EAAE,IAAE,gBAAe,EAAE;KAAC,QAAQ,QAAO,KAAK,OAAO;;MAAG,EAAE,QAAM,SAAS,GAAE;AAAC,WAAO,KAAK,QAAQ,GAAE,CAAC,EAAE;MAAE,EAAE,OAAK,SAAS,GAAE,GAAE;IAAC,IAAI,GAAE,IAAE,EAAE,EAAE,EAAE,EAAC,IAAE,SAAO,KAAK,KAAG,QAAM,KAAI,KAAG,IAAE,EAAE,EAAC,EAAE,KAAG,IAAE,QAAO,EAAE,KAAG,IAAE,QAAO,EAAE,KAAG,IAAE,SAAQ,EAAE,KAAG,IAAE,YAAW,EAAE,KAAG,IAAE,SAAQ,EAAE,KAAG,IAAE,WAAU,EAAE,KAAG,IAAE,WAAU,EAAE,KAAG,IAAE,gBAAe,GAAG,IAAG,IAAE,MAAI,IAAE,KAAK,MAAI,IAAE,KAAK,MAAI;AAAE,QAAG,MAAI,KAAG,MAAI,GAAE;KAAC,IAAI,IAAE,KAAK,OAAO,CAAC,IAAI,GAAE,EAAE;AAAC,OAAE,GAAG,GAAG,EAAE,EAAC,EAAE,MAAM,EAAC,KAAK,KAAG,EAAE,IAAI,GAAE,KAAK,IAAI,KAAK,IAAG,EAAE,aAAa,CAAC,CAAC,CAAC;UAAQ,MAAG,KAAK,GAAG,GAAG,EAAE;AAAC,WAAO,KAAK,MAAM,EAAC;MAAM,EAAE,MAAI,SAAS,GAAE,GAAE;AAAC,WAAO,KAAK,OAAO,CAAC,KAAK,GAAE,EAAE;MAAE,EAAE,MAAI,SAAS,GAAE;AAAC,WAAO,KAAK,EAAE,EAAE,EAAE,GAAG;MAAE,EAAE,MAAI,SAAS,GAAE,GAAE;IAAC,IAAI,GAAE,IAAE;AAAK,QAAE,OAAO,EAAE;IAAC,IAAI,IAAE,EAAE,EAAE,EAAE,EAAC,IAAE,SAAS,GAAE;KAAC,IAAI,IAAE,EAAE,EAAE;AAAC,YAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAC,KAAK,MAAM,IAAE,EAAE,CAAC,EAAC,EAAE;;AAAE,QAAG,MAAI,EAAE,QAAO,KAAK,IAAI,GAAE,KAAK,KAAG,EAAE;AAAC,QAAG,MAAI,EAAE,QAAO,KAAK,IAAI,GAAE,KAAK,KAAG,EAAE;AAAC,QAAG,MAAI,EAAE,QAAO,EAAE,EAAE;AAAC,QAAG,MAAI,EAAE,QAAO,EAAE,EAAE;IAAC,IAAI,KAAG,IAAE,EAAE,EAAC,EAAE,KAAG,GAAE,EAAE,KAAG,GAAE,EAAE,KAAG,GAAE,GAAG,MAAI,GAAE,IAAE,KAAK,GAAG,SAAS,GAAC,IAAE;AAAE,WAAO,EAAE,EAAE,GAAE,KAAK;MAAE,EAAE,WAAS,SAAS,GAAE,GAAE;AAAC,WAAO,KAAK,IAAI,KAAG,GAAE,EAAE;MAAE,EAAE,SAAO,SAAS,GAAE;IAAC,IAAI,IAAE,MAAK,IAAE,KAAK,SAAS;AAAC,QAAG,CAAC,KAAK,SAAS,CAAC,QAAO,EAAE,eAAa;IAAE,IAAI,IAAE,KAAG,wBAAuB,IAAE,EAAE,EAAE,KAAK,EAAC,IAAE,KAAK,IAAG,IAAE,KAAK,IAAG,IAAE,KAAK,IAAG,IAAE,EAAE,UAAS,IAAE,EAAE,QAAO,IAAE,EAAE,UAAS,IAAE,SAAS,GAAE,GAAE,GAAE,GAAE;AAAC,YAAO,MAAI,EAAE,MAAI,EAAE,GAAE,EAAE,KAAG,EAAE,GAAG,MAAM,GAAE,EAAE;OAAE,IAAE,SAAS,GAAE;AAAC,YAAO,EAAE,EAAE,IAAE,MAAI,IAAG,GAAE,IAAI;OAAE,IAAE,KAAG,SAAS,GAAE,GAAE,GAAE;KAAC,IAAI,IAAE,IAAE,KAAG,OAAK;AAAK,YAAO,IAAE,EAAE,aAAa,GAAC;;AAAG,WAAO,EAAE,QAAQ,IAAG,SAAS,GAAE,GAAE;AAAC,YAAO,KAAG,SAAS,GAAE;AAAC,cAAO,GAAP;OAAU,KAAI,KAAK,QAAO,OAAO,EAAE,GAAG,CAAC,MAAM,GAAG;OAAC,KAAI,OAAO,QAAO,EAAE,EAAE,EAAE,IAAG,GAAE,IAAI;OAAC,KAAI,IAAI,QAAO,IAAE;OAAE,KAAI,KAAK,QAAO,EAAE,EAAE,IAAE,GAAE,GAAE,IAAI;OAAC,KAAI,MAAM,QAAO,EAAE,EAAE,aAAY,GAAE,GAAE,EAAE;OAAC,KAAI,OAAO,QAAO,EAAE,GAAE,EAAE;OAAC,KAAI,IAAI,QAAO,EAAE;OAAG,KAAI,KAAK,QAAO,EAAE,EAAE,EAAE,IAAG,GAAE,IAAI;OAAC,KAAI,IAAI,QAAO,OAAO,EAAE,GAAG;OAAC,KAAI,KAAK,QAAO,EAAE,EAAE,aAAY,EAAE,IAAG,GAAE,EAAE;OAAC,KAAI,MAAM,QAAO,EAAE,EAAE,eAAc,EAAE,IAAG,GAAE,EAAE;OAAC,KAAI,OAAO,QAAO,EAAE,EAAE;OAAI,KAAI,IAAI,QAAO,OAAO,EAAE;OAAC,KAAI,KAAK,QAAO,EAAE,EAAE,GAAE,GAAE,IAAI;OAAC,KAAI,IAAI,QAAO,EAAE,EAAE;OAAC,KAAI,KAAK,QAAO,EAAE,EAAE;OAAC,KAAI,IAAI,QAAO,EAAE,GAAE,GAAE,CAAC,EAAE;OAAC,KAAI,IAAI,QAAO,EAAE,GAAE,GAAE,CAAC,EAAE;OAAC,KAAI,IAAI,QAAO,OAAO,EAAE;OAAC,KAAI,KAAK,QAAO,EAAE,EAAE,GAAE,GAAE,IAAI;OAAC,KAAI,IAAI,QAAO,OAAO,EAAE,GAAG;OAAC,KAAI,KAAK,QAAO,EAAE,EAAE,EAAE,IAAG,GAAE,IAAI;OAAC,KAAI,MAAM,QAAO,EAAE,EAAE,EAAE,KAAI,GAAE,IAAI;OAAC,KAAI,IAAI,QAAO;;AAAE,aAAO;OAAM,EAAE,IAAE,EAAE,QAAQ,KAAI,GAAG;OAAG;MAAE,EAAE,YAAU,WAAU;AAAC,WAAO,KAAG,CAAC,KAAK,MAAM,KAAK,GAAG,mBAAmB,GAAC,GAAG;MAAE,EAAE,OAAK,SAAS,GAAE,GAAE,GAAE;IAAC,IAAI,GAAE,IAAE,MAAK,IAAE,EAAE,EAAE,EAAE,EAAC,IAAE,EAAE,EAAE,EAAC,KAAG,EAAE,WAAW,GAAC,KAAK,WAAW,IAAE,GAAE,IAAE,OAAK,GAAE,IAAE,WAAU;AAAC,YAAO,EAAE,EAAE,GAAE,EAAE;;AAAE,YAAO,GAAP;KAAU,KAAK;AAAE,UAAE,GAAG,GAAC;AAAG;KAAM,KAAK;AAAE,UAAE,GAAG;AAAC;KAAM,KAAK;AAAE,UAAE,GAAG,GAAC;AAAE;KAAM,KAAK;AAAE,WAAG,IAAE,KAAG;AAAO;KAAM,KAAK;AAAE,WAAG,IAAE,KAAG;AAAM;KAAM,KAAK;AAAE,UAAE,IAAE;AAAE;KAAM,KAAK;AAAE,UAAE,IAAE;AAAE;KAAM,KAAK;AAAE,UAAE,IAAE;AAAE;KAAM,QAAQ,KAAE;;AAAE,WAAO,IAAE,IAAE,EAAE,EAAE,EAAE;MAAE,EAAE,cAAY,WAAU;AAAC,WAAO,KAAK,MAAM,EAAE,CAAC;MAAI,EAAE,UAAQ,WAAU;AAAC,WAAO,EAAE,KAAK;MAAK,EAAE,SAAO,SAAS,GAAE,GAAE;AAAC,QAAG,CAAC,EAAE,QAAO,KAAK;IAAG,IAAI,IAAE,KAAK,OAAO,EAAC,IAAE,EAAE,GAAE,GAAE,CAAC,EAAE;AAAC,WAAO,MAAI,EAAE,KAAG,IAAG;MAAG,EAAE,QAAM,WAAU;AAAC,WAAO,EAAE,EAAE,KAAK,IAAG,KAAK;MAAE,EAAE,SAAO,WAAU;AAAC,WAAO,IAAI,KAAK,KAAK,SAAS,CAAC;MAAE,EAAE,SAAO,WAAU;AAAC,WAAO,KAAK,SAAS,GAAC,KAAK,aAAa,GAAC;MAAM,EAAE,cAAY,WAAU;AAAC,WAAO,KAAK,GAAG,aAAa;MAAE,EAAE,WAAS,WAAU;AAAC,WAAO,KAAK,GAAG,aAAa;MAAE;KAAI,EAAC,IAAE,EAAE;AAAU,SAAO,EAAE,YAAU,GAAE;GAAC,CAAC,OAAM,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,MAAK,EAAE;GAAC,CAAC,SAAS,SAAS,GAAE;AAAC,KAAE,EAAE,MAAI,SAAS,GAAE;AAAC,WAAO,KAAK,GAAG,GAAE,EAAE,IAAG,EAAE,GAAG;;KAAI,EAAC,EAAE,SAAO,SAAS,GAAE,GAAE;AAAC,UAAO,EAAE,OAAK,EAAE,GAAE,GAAE,EAAE,EAAC,EAAE,KAAG,CAAC,IAAG;KAAG,EAAE,SAAO,GAAE,EAAE,UAAQ,GAAE,EAAE,OAAK,SAAS,GAAE;AAAC,UAAO,EAAE,MAAI,EAAE;KAAE,EAAE,KAAG,EAAE,IAAG,EAAE,KAAG,GAAE,EAAE,IAAE,EAAE,EAAC;IAAI;;;;;;ACUv/N,IAAM,QAAO,yBAAY,YAAA,SAAA,MAAA;;AAKzB,WAAW,gCAAgC;;CAEzC,MAAA,YACC,OAAO,eAAA,eACR,WAAA,kCAAA;CACF,MAAO,QAAS;CACd,MAAE,aAAA,CAAA,EAAA,SAAA,OAAA,UAAA,YAAA,aAAA;CACF,MAAM,0BAAU,UAAA;AACd,MAAE,CAAA,SAAY,OAAI,UAAW,SAC7B,QAAA;EAEA,MAAA,QAAA;AAKA,OAHE,MAAM,eAAU,QAClB,OAAA,WAAA,eACF,MAAqB,OAAO,iBAAQ,aAClC,aAAA,MACC,QAAM,MAAQ;AAEf,SAAA;;CAEF,MAAE,kBAAA,aACC,uBAAa,MAAA,QAAA,GACZ,KAAA;AAEJ,KAAA,UACF,QAAA,aAAA,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAA,SAAA;AAGE,KAAC,OAAQ;AACP,MAAA,WACA,QAAM;AAEV,QAAO,IAAM,MAAA,4BAAgC;;AAG3C,QAAO,aAAe,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAuB,SAAI;;;;;;;AAuCnD,IAAM,uBAA6B,QAAkB,WAAgB;;CACnE,MAAK,KAAA,gBAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAK,OAAQ,WAAA,QAAA,kBAAA,KAAA,IAAA,uBAAS;CAC3B,MAAE,KAAA,eAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAO,OAAS,UAAA,QAAA,iBAAA,KAAA,IAAA,eAAA,WAAA,QAAA;CAClB,MAAA,KAAA,eAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAA,OAAA,UAAA,QAAA,iBAAA,KAAA,IAAA,eAAA,WAAA,QAAA;;AAEA,KAAA,OACE,QAAO;EACR,QAAA,QAAA,EAAA,IAAA,OAAA,KAAA,MAAA;;EAED,OAAO,QAAoB,EAAC,IAAA,OAAU,KAAA,MAAS;EAChD,QAAA,QAAA,EAAA,IAAA,OAAA,KAAA,MAAA;;KAGC,QAAA;EACC,QAAW,QAAa,EAAA,GAAA,MAAA;EACzB,OAAM,QAAiB,EAAA,GAAA,MAAA;EACnB,OAAA,QAAgB,EAAA,GAAA,MAAA;EAClB,QAAO,QAAc,EAAA,GAAA,MAAA;EACvB;;;;;;;;AA6JF,IAAM,iBAAe,KAAK,QAAoB,QAAM;AAClD,MAAK,MAAG,CAAA,KAAA,UAAA,OAAA,QAAA,IAAA,EAAA;AACN,MAAI,CAAC,MAAO;EACZ,MAAI,UAAA,SAAA,GAAA,OAAA,GAAA,QAAA;AACJ,MAAI,OAAO,UAAO,SAChB,KAAE,WAAW;WACR,MAAU,QAAM,MAAQ,CAC7B,KAAG,WAAA,MAAA,KAAA,MAAA,OAAA,EAAA,CAAA,CAAA,KAAA,IAAA;WACH,OAAA,UAAA,SAAA,eAAA,OAAA,SAAA,IAAA;;;;;;;;;;AAgBN,IAAY,oBAAqB,OAC/B,WACF,WACuB;CACrB,IAAA,cAAkB;AAElB,QAAA,iBAAA,GAAA,KAAA,SAA8B,YAAA,EAAA;EAC9B,MAAQ,mBAAA,GAAA,KAAA,MAAA,aAAA,eAAA;AAER,OAAA,GAAA,GAAA,YAAiB,gBAAgB,CAAA,KAAA;GAE7B,MAAA,UAAA,OAAA,GAAA,YAAA,UAAA,iBAAA,QAAA;AAID,OAHuB,MAAE,MAAM,QAAA,CAI5B,eAAA,GAAA,GAAA,aAAA,GAAA,KAAA,MACa,aAAA,sBAAA,CAAA,KAAA,GAAA,GAAA,aAAA,GAAA,KAAA,MACjB,aAAA,aAAA,CAAA,CAEG,QAAS;WAED,OAAO;AAChB,UAAM,KACJ,mCAAkB,gBAAA,IAAA,QAClB;;AAIJ,iBAAA,GAAA,KAAA,SAAqB,YAAU;;;;;;;;;;;;;;AAoInC,IAAC,uBAAA,OAAA,kBAEC,8BACA,WACA,gBACA,eACA,iBACA,gBACA,oBACyB;CAEzB,MAAE,WAAM,MAAe,kBAAkB;CAEzC,MAAE,SAA8B,EAAC;AACjC,eAAU,UAAc,IAAC,OAAO;AAGhC,MAAA,MAAA,OAAkB,gBAAc;EAChC,MAAA,QAAA,eAA8B;AAC9B,MAAA,UAAA,KAAA,GAAuB;AACvB,UAAW,OAAI;AACf,aAAc,IAAE,KAAG,gBAAA;;;AAKnB,MAAC,MAAQ,OAAQ,eAAA;EACf,MAAM,QAAK,cAAA;AACb,MAAM,UAAA,KAAA,GAAoB;AAC1B,UAAM,OAAY;;;;AAMlB,KAAI,gCAAyB,SAAA,QAC3B,QAAI,UAAa,SAAM;AAGzB,QAAE,YAAA,SAAA,CAAA,QAAA;;;;;;;;;;;AAyFJ,IAAM,0BAAa,OACjB,aACA,QACA,uBACA,2BAOG;CACH,MAAA,gBAAA,MAAA,kBAAA,aAAA,OAAA;oBAMC,QAAQ,uBACP,EAAA,EAFF,MAAA,uBAAA,GAAA,KAAA,MAAA,aAAA,eAAA,CAAA,EAIE,IACF,aACI,YACJ;CAGA,MAAI,sBAAA,GAAA,KAAA,MAAA,aAAA,eAAA;CAGJ,MAAE,mBAAA,GAAA,KAAA,MAA2B,eAAI,eAAA;CACjC,MAAE,WAAc,MAAO,sBAAO,gBAAA;AAG9B,KACE,uBAAS,oBAAA,GAAA,GAAA,YACX,mBAAA,CAGA,QAAA,uBACC,UAAA,MAAA,sBAAA,mBAAA,EAEC,eACA,aACA,YACA;KAEJ,QAAO,uBACL,EAAA,EACA,UACA,IACA,eACC,YACD;;;;;;;;iCAaA,QACA,gBACW;AACX,KAAC;EACF,MAAA,UAAA,OAAA,GAAA,YAAA,UAAA,aAAA,QAAA;;EAEC,MAAA,MAAA,EAAA;AACC,gBAAe,MAAA,IAAQ,IAAK;AAC3B,SAAM;UACA,OAAA;AACN,SAAO,MAAC,oCAAiC,YAAA,IAAA,QAAA;AAC3C,SAAA,EAAA;;;;;;;;;;;AAYF,IAAW,yBAAO,OAChB,aACA,kBACA,8BACA,WACa;CACb,MAAA,4BAAA,IAAA,KAAA;AAaA,QAAA;EACA,UAbD,MAAA,wBAAA,aAEC,QACC,oBAAoB,KAAK,KAAA,GAAY,OAAO,EAC3C,qBAAoB,KACpB,KAAA,GACA,kBACA,8BACA,UACA,CACF;EAIA;EACA;;;;;;;;;;;;;AC5pBF,IAAM,kBAAkB,OAAO,mBAA8C;AAC3E,KAAI;EAEF,MAAM,SADU,OAAA,GAAA,YAAA,UAAe,gBAAgB,QAAQ,EACjC,MAAM,KAAK;EACjC,MAAM,OAAiB,EAAE;AAEzB,OAAK,MAAM,QAAQ,OAAO;AAExB,OAAI,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,MAAM,CAAE;GAG1C,MAAM,QAAQ,KAAK,MAAM,oCAAoC;AAC7D,OAAI,OAAO;IAET,MAAM,UAAU,MAAM;AACtB,QAAI,CAAC,QAAQ,SAAS,MAAM,CAC1B,MAAK,KAAK,QAAQ;;;AAKxB,SAAO;UACA,OAAO;AAEd,MAAK,MAAc,SAAS,SAC1B,QAAO,EAAE;AAEX,QAAM;;;;;;;;AASV,IAAM,gBAAgB,OAAO,iBAA4C;AACvE,KAAI;EACF,MAAM,UAAU,OAAA,GAAA,YAAA,SAAc,cAAc,EAAE,eAAe,MAAM,CAAC;EACpE,MAAM,OAAiB,EAAE;AAEzB,OAAK,MAAM,SAAS,QAClB,KAAI,MAAM,QAAQ,CAChB,MAAK,KAAK,MAAM,KAAK;AAIzB,SAAO;UACA,OAAO;AAEd,MAAK,MAAc,SAAS,SAC1B,QAAO,EAAE;AAEX,QAAM;;;;;;;;AASV,IAAa,eAAe,OAAO,aAAwC;CACzE,MAAM,UAAA,GAAA,KAAA,MAAc,UAAU,OAAO;CAGrC,MAAM,UAAU,OAAA,GAAA,YAAA,MAAW,OAAO,CAAC,YAAY,KAAK;CACpD,IAAI,eAAe;AAEnB,KAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAI,QAAS,QAAQ,EAAE;EAGrB,MAAM,SADU,OAAA,GAAA,YAAA,UAAe,QAAQ,QAAQ,EACzB,MAAM,oBAAoB;AAChD,MAAI,MACF,iBAAA,GAAA,KAAA,YAA0B,MAAM,GAAG,GAAG,MAAM,MAAA,GAAA,KAAA,MAAU,UAAU,MAAM,GAAG;;CAK7E,MAAM,CAAC,YAAY,aAAa,MAAM,QAAQ,IAAI,CAChD,iBAAA,GAAA,KAAA,MAAqB,cAAc,cAAc,CAAC,EAClD,eAAA,GAAA,KAAA,MAAmB,cAAc,QAAQ,OAAO,CAAC,CAClD,CAAC;CAGF,MAAM,UAAU,IAAI,IAAY,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAG9D,QAAO,MAAM,KAAK,QAAQ,CAAC,MAAM;;;;;;;;AAyJnC,IAAa,6BAA6B,OACxC,UACA,UACA,WAC6D;CAC7D,MAAM,YAAY,KAAK,KAAK;CAE5B,MAAM,UAAA,GAAA,KAAA,MAAc,UAAU,OAAO;CACrC,MAAM,yBAAS,IAAI,KAAiD;CAGpE,MAAM,UAAU,OAAA,GAAA,YAAA,MAAW,OAAO,CAAC,YAAY,KAAK;CACpD,IAAI,eAAe;AAEnB,KAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAI,QAAS,QAAQ,EAAE;EAErB,MAAM,SADU,OAAA,GAAA,YAAA,UAAe,QAAQ,QAAQ,EACzB,MAAM,oBAAoB;AAChD,MAAI,MACF,iBAAA,GAAA,KAAA,YAA0B,MAAM,GAAG,GAAG,MAAM,MAAA,GAAA,KAAA,MAAU,UAAU,MAAM,GAAG;;CAK7E,MAAM,SAAS,IAAI,IAAI,SAAS;CAGhC,MAAM,kBAAkB,KAAK,KAAK;AAClC,KAAI;EAEF,MAAM,SADU,OAAA,GAAA,YAAA,WAAA,GAAA,KAAA,MAAoB,cAAc,cAAc,EAAE,QAAQ,EACpD,MAAM,KAAK;AAEjC,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;GACrC,MAAM,OAAO,MAAM;AAEnB,OAAI,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,MAAM,CAAE;GAE1C,MAAM,QAAQ,KAAK,MAAM,sCAAsC;AAC/D,OAAI,SAAS,OAAO,IAAI,MAAM,GAAG,EAAE;IACjC,MAAM,UAAU,MAAM;IACtB,MAAM,MAAM,MAAM;IAGlB,IAAI,YAAY;AAChB,QAAI,IAAI,IAAI,MAAM,UAAU,MAAM,IAAI,GAAG,WAAW,IAAI,CAEtD,aAAY,MAAM,IAAI,GAAG,UAAU,GAAG,GAAG;AAG3C,WAAO,IAAI,SAAS;KAAE;KAAK;KAAW,CAAC;;;UAGpC,OAAO;AAEd,MAAK,MAAc,SAAS,SAC1B,OAAM;;AAGV,QAAO,MACL,iCAAiC,KAAK,KAAK,GAAG,gBAAgB,IAC/D;CAGD,MAAM,gBAAgB,SAAS,QAAQ,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC;AAEhE,KAAI,cAAc,SAAS,GAAG;EAC5B,MAAM,iBAAiB,KAAK,KAAK;AACjC,QAAM,QAAQ,IACZ,cAAc,IAAI,OAAO,YAAY;GACnC,MAAM,gBAAA,GAAA,KAAA,MAAoB,cAAc,QAAQ,QAAQ,QAAQ;AAChE,OAAI;IAEF,MAAM,OADO,OAAA,GAAA,YAAA,UAAe,cAAc,QAAQ,EACjC,MAAM;IAGvB,IAAI,YAAY;AAChB,QAAI;KAEF,MAAM,EAAE,aAAa,QAAQ,gBAAgB;AAM7C,SALmB,SACjB,WAAW,SAAS,gBAAgB,OACpC,EAAE,UAAU,SAAS,CACtB,CAAC,MAAM,KAEW,OAAO;MAMxB,MAAM,cAJa,SACjB,WAAW,SAAS,gBAAgB,OACpC,EAAE,UAAU,SAAS,CACtB,CAC8B,MAAM,2BAA2B;AAChE,UAAI,YACF,aAAY,YAAY;;aAGrB,OAAO;AAEd,YAAO,MACL,mDAAmD,QAAQ,IAAI,QAChE;;AAGH,WAAO,IAAI,SAAS;KAAE;KAAK;KAAW,CAAC;YAChC,OAAO;AAEd,QAAK,MAAc,SAAS,SAC1B,OAAM;;IAGV,CACH;AACD,SAAO,MACL,gCAAgC,KAAK,KAAK,GAAG,eAAe,IAC7D;;CAGH,MAAM,YAAY,KAAK,KAAK,GAAG;AAC/B,QAAO,MAAM,iDAAiD,UAAU,IAAI;AAC5E,QAAO,MAAM,wBAAwB,OAAO,KAAK,GAAG,SAAS,OAAO,OAAO;AAE3E,QAAO;;ACtXG,yBAAqB,eAAA,SAAiB,MAAA;;AAUlD,SAAE,yBAAA,QAAA,OAAA;CACA,MAAK,YACJ,OAAQ,eAAQ,eACjB,WAAA,kCAAA;;CAEA,MAAA,aAAA,CAAA,EAAA,SAAA,OAAA,UAAA,YAAA,aAAA;CACA,MAAK,0BAAS,UAAA;AACd,MAAA,CAAA,SAAA,OAAA,UAAA,SACI,QAAC;EAEL,MAAK,QAAW;AAKf,OAHH,MAAA,eAAA,QAAA,OAAA,WAAA,eAEE,MAAA,OAAA,iBAAA,aACkB,aAAO,MACvB,QAAM,MAAS;AAEjB,SAAA;;CAEA,MAAA,kBAAU,aACT,uBAAyB,MAAA,QAAA,GAC1B,KAAA;eAGA,QAAM,aAAkB,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAO,SAAA;AAG/B,KAAA,OAAA;iBAEA,QAAO;;;AAKP,QAAO,aAAY,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAW,SAAA;;;;;;;;AAsHhC,IAAQ,wBAAsB,OAC5B,UACA,cACA,WACoC;;CAEpC,MAAM,wBAAM,IAAA,KAAA;CAEZ,MAAC,YAAA,KAAA,KAAA;CACD,MAAM,OAAO,MAAM,aAAW,SAAW;;AAEzC,QAAO,MAAK,mBAAA,KAAA,OAAA,OAAA;;CAGZ,MAAA,UAAA,MAAA,2BAAA,UAAA,MAAA,OAAA;AACA,QAAO,MACL,yCAA4B,KAAA,KAAA,GAAA,aAAA,IAC7B;CAED,MAAE,aAAgB,KAAI,KAAI;AAC1B,MAAA,MAAA,WAAA,MAAA;EACF,MAAO,OAAM,QAAY,IAAE,QAAM;AAC/B,MAAA,CAAA,KAAU;EAEV,MAAA,EAAA,cAAc;EAGZ,MAAM,UAAgB;GACpB,MAAE;GACF,MAAK;GACL,SALc,aAAG,QAAA;GAMlB;AAED,MAAA,CAAK,MAAC,IAAA,UAAgB,CACtB,OAAO,IAAA,WAAgB,EAAE,CAAA;AAEzB,QAAM,IAAC,UAAa,CAAC,KAAA,QAAA;;AAEvB,QAAA,MAAA,8BAAA,KAAA,KAAA,GAAA,WAAA,IAAA;CAGA,MAAA,YAAA,KAAA,KAAA;AACA,MAAK,MAAC,QAAa,MAAM,QAAM,CAC7B,MAAK,MAAC,GAAQ,MAAG,EAAA,KAAU,cAAC,EAAA,KAAA,CAAA;AAE9B,QAAO,MAAM,wBAAW,KAAA,KAAA,GAAA,UAAA,IAAA;AAExB,QAAA,MACF,0CAAsC,KAAA,KAAA,GAAA,WAAA,IACpC;AACA,QAAA,MAAU,8BAAQ,MAAA,KAAA,iBAAA;AAElB,QAAO;;;;ACtNT,IAAM,QAAG,uBAA4B,iBAAA,SAAG,MAAA;;AAMxC,SAAS,uBAA0B,QAA0B,OAAsB;mBAEjF,OAAA,eAAA,eACC,WAAQ,kCAAA;CACT,MAAA,QAAA;CACF,MAAO,aAAU,CAAA,EAAO,SAAC,OAAA,UAAA,YAAA,aAAA;CACvB,MAAM,0BAAO,UAAA;AACb,MAAM,CAAC,SAAO,OAAA,UAAA,SACd,QAAQ;EAER,MAAQ,QAAQ;AAKhB,OAAA,MAAA,eAAA,QAFA,OAAA,WAAA,eACC,MAAiB,OAAA,iBAAA,aAClB,aAAA,MACF,QAAU,MAAA;AAER,SAAS;;CAET,MAAA,kBAAe,aACf,uBAAiB,MAAA,QAAA,GACnB,KAAA;AAEE,KAAA,UACC,QAAI,aAAA,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAA,SAAA;AAGL,KAAI,OAAE;AACN,MAAM,WACN,QAAS;;;AAKT,QAAA,aAAA,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAA,SAAA;;;;;;;AA8CF,IAAM,yBAAuB,UAAA;CAC3B,MAAI,MAAO,SAAS,OAAA,GAAA;AACpB,QAAE,MAAA,KAAA,MAAA,QAAA,KAAA,IAAA;;;;;;;AAQJ,IAAI,gBAAkB,YAAS;CAM7B,MAAA,QAAA,QAAA,QAAA,OAAA,GAAA,CAAA,MAAA,8CAAA;AAEA,KAAE,CAAA,MACA;CAGF,MAAM,QAAM,sBAAoB,MAAU,GAAC;AAC3C,KAAA,UAAO,KAAA,EACL;;EAIF;EACC,UAAW;EACX;AAED,KAAE,MAAQ,OAAE,KAAA,GAAgB;EAC5B,MAAA,QAAA,sBAAA,MAAA,GAAA;AACF,MAAM,UAAA,KAAA,EACD;;;AAIH,KAAA,MAAM,OAAW,KAAA,GAAU;EAC3B,MAAM,QAAU,sBAAW,MAAA,GAAA;AACzB,MAAE,UAAW,KAAA,EAAA;AAGf,UAAM,QAAW;;AAEjB,KAAI,MAAM,OAAK,KAAA,GAAQ;;AAErB,MAAC,aAAgB,KAAA,EACnB;AAEE,UAAE,WAAc;;AAGnB,QAAA;;;;;;;AAQD,IAAK,kBAAc,YAAmB;AAEpC,QACA,QAAA,SAAA,MAAA,QAAA,UAAA,KAAA,KAAA,QAAA,SAAA;;;;;;;;AAUF,IAAM,mBAAQ,GAAA,MAAA;;AAEZ,KAAE,EAAA,UAAa,EAAA,MAAQ,QAAS,EAAE,QAAA,EAAA;;CAIlC,MAAA,UAAA,WAAA,EAAA,WAAA,QAAA,aAAA,KAAA,IAAA,WAAA;AACA,KAAC,WAAS,OAAA,QAAA,SAAA;CAGV,MAAA,UAAA,WAAA,EAAA,WAAA,QAAA,aAAA,KAAA,IAAA,WAAA;CACF,MAAM,UAAA,WAAA,EAAa,WAAA,QAAA,aAAA,KAAA,IAAA,WAAI;AACrB,KAAI,WAAW,OAAQ,QAAO,SAAC;CAG/B,MAAE,aAAA,cAAc,EAAA,cAAA,QAAA,gBAAA,KAAA,IAAA,cAAe;;AAE/B,KAAI,cAAU,UAAU,QAAW,YAAA;;;;;;;;AAUrC,IAAC,iCAAA,YAAA;AAEC,KAAI,QAAQ,aAAa,KAAA,EAAA,QAAA;;;;AAGzB,KAAI,QAAG,UAAU,KAAA,EACf,QAAM;EAAA,GAAA;EAAe,OAAO,QAAK,QAAW;EAAA;AAE9C,KAAE,QAAQ,UAAW,KAAA,EACrB,QAAA;EAAA,GAAA;EAAA,OAAA,QAAA,QAAA;EAAA;AAIA,QAAC;EACD,GAAI;EACF,OAAM,QAAS,QAAM;;EAEtB;;;;;;;AAQH,IAAI,iBAAgB,YAAA;CAClB,IAAA,SAAA,GAAA,QAAA;;AAGA,YAAA,IAAA,QAAA;AAEE,MAAA,QAAM,UAAgB,KAAA,GAAW;AACjC,aAAY,IAAA,QAAQ;AAElB,OAAA,QAAA,aAAyB,KAAA,EAC7B,WAAgB,IAAA,QAAA;;;AAKhB,QAAO;;;;;;;;AAWT,IAAM,YAAW,OACf,gBACA,SACoC;AACpC,KAAG;EACD,MAAM,SAAA,MAAA,eAAA,WAAA;GAAA,IAAA,YAAA;GAAA,KAAA;GAAA,KAAA;GAAA,CAAA;AAER,SAAA;GACD,MAAA,OAAA;;GAEC,uBAAA,IAAA,KAAA,OAAA,OAAA,OAAA,YAAA,IAAA,EAAA,aAAA;GACI,SAAS,OAAK,OAAK,QAAO,MAAA;GAC5B,SAAM,OAAY,OAAO,UAAU,EAAA;GACnC;mBACA;AACF;;;;;;;;8BAUA,mBACmC;AACnC,KAAE;EACA,MAAM,aAAa,MAAI,eAAK,WAAO;GACnC,IAAA,YAAA;GACF,KAAA;GACI,KAAA;GACJ,CAAA;EACA,MAAA,SAAY,MAAA,eAAA,WAAA;GACX,IAAA,YAAA;GACG,KAAA;GACF,KAAM;GACN,CAAA;AAEA,SAAK;GACH,MAAI,OAAA;GACJ,WAAW,OAAO,IAAA,UAAY,GAAA,EAAO;GACrC,uBAAE,IAAM,KAAA,OAAY,OAAS,OAAC,YAAW,IAAA,EAAA,aAAA;GACzC,SAAM,OAAA,OAAA,QAAA,MAAA;GACN,SAAS,OAAA,OAAc,UAAA,EAAA;GACxB;oBACK;AACN;;;;;;;;;AAUJ,IAAI,yBACF,cACD,eAAA;AAEC,QAAA,aAAA,IAAA,WAAA,IAAA,EAAA;;;;;;;;AAWF,IAAM,qBAAqB,OACzB,gBACA,eACoB;AACpB,KAAI;EACF,MAAM,WAAQ,MAAM,eAAA,aAAA;GAAA,IAAA,YAAA;GAAA,KAAA;GAAA,CAAA;EACpB,MAAM,kBAAwB,EAAA;AAE9B,OAAI,MAAO,UAAU,SACnB,KAAE;AAOP,OALsB,MAAS,eAAI,WAAK;IACpC,IAAA,YAAA;IACK,KAAA;IACA,KAAG;IACX,CAAA,KACD,WAAA,iBAAA,KAAA,OAAA;qBAGY;AAKX,SAAA;oBACC;AACD,SAAA,EAAA;;;;;;;;;AAUF,IAAI,mBAAqB,OACvB,mBACyB;AACzB,KAAA;AAOE,UANE,MAAA,eAAA,aAAoC;GAAA,IAAA,YAAA;GAAA,KAAA;GAAA,CAAA,EAM3B,QACR,GAAC,MAAA,SAAgB,WAAA,YAAA,KAElB,UAAS,KACT,UAAA,KAAA,SAAA,KAAA,YAAA,KAED,SAAa,KAAK,YAAO,EACzB;oBACK;AACN,SAAM,EAAG;;;AAIb,IAAM,sBAAqB,iBAAqB;AAC9C,QAAI,IAAO,aAAG,GAAA,IAAe,aAAI,GAAc,GAAA,aAAM,GAAA,GAAA,aAAA;;;;;;;;;;AAqBvD,IAAM,8BAAI,OACR,KACA,QACA,gBACA,iBACoB;CAEpB,MAAM,iBAAmC,EAAA;CAEzC,IAAI,UAAmB;EAAE,OAAG;EAAA,OAAU;EAAA,OAAA;EAAA,UAAA;EAAA;CACtC,IAAI,gBAAM;AAOV,QAAE,MAAA;AAEA,MAAG,eAAc,IAAM,cAAW,KAAA,EAAA;AAClC,aAAA,eAAsB,IAAQ,cAAe,KAAA;;;EAM7C,MAAI,oBAAA,sBAAA,cAAA,cAAA,KAAA,CACH,QAAU,QAAQ,IAAI,WAAW,eAAc,IAAG,QAAU,CAAA,CAC1D,QAAA,QAAgB,IAAA,QAAa,UAAQ,KAAA,EAAQ,CAC7C,MAAA,GAAQ,MAAI,gBAAkB,EAAG,SAAU,EAAC,QAAQ,CAAA;AACvD,MAAG,kBAAc,UAAY,GAAK;AAElC,aAAM,kBAAY,GAAe;AACjC,kBAAgB,IAAA,cAAiB,MAAQ,QAAI;;;EAK7C,IAAE,gBAA4B,EAAA;AAC9B,MAAI;GAMF,MAAK,gBALE,MAAA,eAAA,WAAA;IACL,IAAA,YAAA;IACA,KAAE;IACF,KAAE,cAAA;IACH,CAAC,EACG,OAAA,UAAA,EAAA;AACL,oBACE,MAAE,QAAA,IACA,aAAA,KAAA,eAAA,UAAA,KAAA,WAAA,CAAA,CACD,EACD,QAAE,OAAU,OAAA,KAAA,EAAA;qBACZ;;AAKJ,kBAAU,IAAA,cAAA,MAA8B,QAAQ;AAChD;;AAIH,iBAAA,KAAA;GAAA,QAAA;GAAA,SAAA;GAAA,CAAA;;;AAWD,QAAM,eAAiB,UAAM,GAAA;EAE3B,MAAA,EAAA,QAAA,iBAA6B,YADb,eAAM,KAAA;AAItB,MAAM,QAAA,UAAiB,EAAA,MAAA,IAAA,QAAA,GAAA,QAAA,QAAA,QAAA,SAAA;GAGjB,MAAI,yBAAwB,MAAS,4BACvC,KACA,QAAA,QACF,gBACM,aACD;AACL,OACI,0BACH,gBAAA,wBAAA,QAAA,GAAA,EAAA,WAAA;;AASD,YAAM,8BAAkC,QAAQ;AAChD,iBAAG,IAAA,gBAAA,MAAA,QAAA;;;;;;;;;;;AAeP,IAAM,iBAAY,OAChB,gBACA,6BAAA,WAEG;CACH,MAAE,YAAM,KAAe,KAAK;;CAI5B,IAAI;AACJ,KAAI;AACF,gBAAE,MAAc,eAAA,SAAA;GAAA,IAAA,YAAA;GAAA,UAAA;GAAA,CAAA;oBACd;eAGA,oCAA6B,KAAA,KAAA,GAAA,UAAA,IAC/B;AACA,SAAA;;AAGF,KAAI;EAEF,MAAI,gBAAM,MAAgB,iBAAM,YAAiB;AACjD,MAAI,CAAA,eAAI;AACN,UAAI,MACF,oCAAc,KAAA,KAAA,GAAA,UAAA,IACf;AACD,UAAK;;;EAKP,MAAE,eAAmB,MAAA,sBACnB,cACA,YAAmB;GACrB,MAAA,UAAA,aAAA,QAAA;;KAGA,OACC;AACD,SAAE,MACA,qCAAgC,KAAQ,KAAO,GAAC,WAAa,IAC9D;AACD,SAAC,MAAA,sBAAA,aAAA,KAAA,UAAA;EAMD,IAAG,UAAW,MAAA,4BACd,aACE,+BALkB,IAAA,KAAsB,EAOzC,aACD;EAGA,MAAM,cAAyB;GAAI,MAAA,EAAQ;GAAE,UAAU,EAAA;GAAA;AACzD,WAAA,MAAA;AAEA,MAAM,SAAS;AAEhB,OAAA,6BAAA;;AAEO,QAAI,cAAc,UAAU,GAAG;;AAErC,YAAA,MACK,qDAA4B,cAAA,QAAA,CAAA,QAAA,cAAA,WAAA,CAAA,WAAA,cAAA,IAAA,mBAAA,CAAA,KAAA,KAAA,CAAA,GACzB;AACA,eAAA;;;GAIJ,MAAM,aAAC,cAAsB,QAAA;AACjC,eAAW,UAAM;AACjB,YAAA,UAAA;;AAIA,cAAc,SAAK;GACf,MAAG,cAAgB;GACnB,WAAA,cAAuB;GACvB,MAAE,MAAS,cAAA,KAAA,CAAA,OAAA,uBAAA;GACX,SAAE,cAAA;GACH;AAIF,cAAA,OADQ,sBAAc,cAAA,cAAA,KAAA,CACtB,KAAA,QAAA,IAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;AC1kBH,IAAM,mBAAmB;CAAC;CAAU;CAAQ;CAAU;AAEtD,IAAM,cAAc,OAAuB;CACzC,MAAM,aAAa,GAAG,QAAQ,IAAI;AAClC,QAAO,eAAe,KAAK,KAAK,GAAG,MAAM,GAAG,WAAW;;AAGzD,IAAM,mBAAmB,cAA+B;AACtD,KAAI,CAAC,UACH,QAAO;AAET,KAAI,UAAU,WAAW,IAAI,CAC3B,QAAO;AAET,KAAI,UAAU,WAAW,IAAI,IAAI,UAAU,WAAW,KAAK,CACzD,QAAO;AAET,KAAI,UAAU,WAAW,QAAQ,CAC/B,QAAO;AAET,KAAI,UAAU,SAAS,IAAI,CACzB,QAAO;AAET,QAAO;;AAGT,IAAM,oBACJ,cAC6C;AAC7C,KAAI,UAAU,WAAW,IAAI,EAAE;EAC7B,MAAM,QAAQ,UAAU,MAAM,IAAI;AAClC,MAAI,MAAM,UAAU,EAClB,QAAO;GACL,aAAa,GAAG,MAAM,GAAG,GAAG,MAAM;GAClC,SAAS,MAAM,MAAM,EAAE,CAAC,KAAK,IAAI;GAClC;;CAGL,MAAM,CAAC,aAAa,GAAG,QAAQ,UAAU,MAAM,IAAI;AACnD,QAAO;EAAE;EAAa,SAAS,KAAK,KAAK,IAAI;EAAE;;AAGjD,IAAM,uBACJ,aACA,gBACuB;CACvB,IAAI,UAAU;AACd,QAAO,MAAM;EACX,MAAM,aAAA,GAAA,KAAA,MACJ,SACA,gBACA,aACA,eACD;AACD,OAAA,GAAA,GAAA,YAAe,UAAU,CACvB,QAAO;EAET,MAAM,UAAA,GAAA,KAAA,SAAiB,QAAQ;AAC/B,MAAI,WAAW,QACb;AAEF,YAAU;;;AAId,IAAM,kBAAkB,OACtB,oBACiD;AACjD,KAAI;EACF,MAAM,MAAM,OAAA,GAAA,YAAA,UAAe,iBAAiB,OAAO;EACnD,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,MAAI,UAAU,OAAO,WAAW,SAC9B,QAAO;mBAEH;AACN;;;AAKJ,IAAM,uBACJ,QACA,SACA,eACuB;AACvB,KAAI,OAAO,WAAW,UAAU;AAC9B,MAAI,WAAW,YAAY,IACzB;AAEF,SAAO;;AAET,KAAI,MAAM,QAAQ,OAAO,EAAE;AACzB,OAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,WAAW,oBAAoB,OAAO,SAAS,WAAW;AAChE,OAAI,SACF,QAAO;;AAGX;;AAEF,KAAI,CAAC,UAAU,OAAO,WAAW,SAC/B;CAGF,MAAM,SAAS;AAIf,KAHa,OAAO,KAAK,OAAO,CACL,MAAM,QAAQ,IAAI,WAAW,IAAI,CAAC,EAE1C;EACjB,MAAM,aACJ,YAAY,MAAM,YAAY,MAC1B,MACA,QAAQ,WAAW,KAAK,GACtB,UACA,KAAK;AACb,MAAI,EAAE,cAAc,QAClB;AAEF,SAAO,oBAAoB,OAAO,aAAa,KAAK,WAAW;;AAGjE,MAAK,MAAM,aAAa,WACtB,KAAI,aAAa,QAAQ;EACvB,MAAM,WAAW,oBACf,OAAO,YACP,SACA,WACD;AACD,MAAI,SACF,QAAO;;;AAQf,IAAM,2BACJ,YACA,gBACsB;CACtB,MAAM,OAAA,GAAA,KAAA,SAAc,WAAW;AAC/B,KAAI,QAAQ,OACV,QAAO;AAET,KAAI,QAAQ,OACV,QAAO;AAET,KAAI,QAAQ,SAAS,QAAQ,GAC3B,QAAO,gBAAgB,WAAW,QAAQ;AAE5C,QAAO,gBAAgB,WAAW,QAAQ;;AAG5C,IAAM,gCACJ,aACA,YACsB;CACtB,MAAM,cACJ,OAAO,YAAY,SAAS,WAAW,YAAY,OAAO,KAAA;AAC5D,KAAI,YAAY,YAAY,KAAA,GAAW;EACrC,MAAM,WAAW,oBACf,YAAY,SACZ,SACA,iBACD;AACD,MAAI,CAAC,SACH,QAAO;AAET,SAAO,wBAAwB,UAAU,YAAY;;AAGvD,KAAI,QACF,QAAO,wBAAwB,SAAS,YAAY;AAKtD,QAAO,wBADL,OAAO,YAAY,SAAS,WAAW,YAAY,OAAO,YACvB,YAAY;;AAGnD,IAAa,qCAAqC;CAChD,MAAM,mCAAmB,IAAI,KAA6C;CAC1E,MAAM,+BAAe,IAAI,KAAgC;AAEzD,QAAO,OACL,WACA,aAC+B;AAC/B,MAAI,CAAC,gBAAgB,UAAU,CAC7B,QAAO;EAIT,MAAM,eAAA,GAAA,KAAA,SADe,WAAW,SAAS,CACA;EACzC,MAAM,EAAE,aAAa,YAAY,iBAAiB,UAAU;EAC5D,MAAM,kBAAkB,oBAAoB,aAAa,YAAY;AACrE,MAAI,CAAC,gBACH,QAAO;EAGT,MAAM,WAAW,GAAG,gBAAgB,GAAG;EACvC,MAAM,SAAS,aAAa,IAAI,SAAS;AACzC,MAAI,OACF,QAAO;EAGT,IAAI,cAAc,iBAAiB,IAAI,gBAAgB;AACvD,MAAI,gBAAgB,KAAA,GAAW;;AAC7B,kBAAA,wBAAe,MAAM,gBAAgB,gBAAgB,MAAA,QAAA,0BAAA,KAAA,IAAA,wBAAK;AAC1D,oBAAiB,IAAI,iBAAiB,YAAY;;AAEpD,MAAI,CAAC,aAAa;AAChB,gBAAa,IAAI,UAAU,UAAU;AACrC,UAAO;;EAGT,MAAM,WAAW,6BAA6B,aAAa,QAAQ;AACnE,eAAa,IAAI,UAAU,SAAS;AACpC,SAAO;;;AAIX,IAAa,wBACX,IACA,SACY;CACZ,MAAM,UAAU,GAAG,cACjB,GAAG,aAAa,QAChB,MACA,GAAG,gBAAgB,UACnB,KACD;CACD,IAAI,QAAQ,QAAQ,MAAM;AAC1B,QAAO,UAAU,GAAG,WAAW,gBAAgB;AAC7C,MAAI,UAAU,GAAG,WAAW,eAAe;GACzC,MAAM,OAAO,QAAQ,MAAM;AAC3B,OAAI,SAAS,GAAG,WAAW,gBAAgB;AACzC,YAAQ,QAAQ,MAAM;AACtB;;AAEF,OACE,SAAS,GAAG,WAAW,cACvB,SAAS,GAAG,WAAW,YAEvB,QAAO;;AAGX,UAAQ,QAAQ,MAAM;;AAExB,QAAO;;AAmBT,IAAM,6BAA6B;AACnC,IAAM,qBAAqB;AAC3B,IAAM,wCAAwC,IAAI,OAChD,mBAAmB,2BAA2B,6BAC9C,IACD;AAED,IAAM,4BAA4B,SAAyB;AAEzD,SAAA,GAAA,SAAA,YADwB,SAAS,CAAC,OAAO,KAAK,CAAC,OAAO,MAAM,CAChD,MAAM,GAAG,mBAAmB;;AAG1C,IAAM,6BAA6B,aAA6B;aACnD,6BAA6B,SAAS;;;;0BAIzB,6BAA6B,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmChE,IAAa,wBACX,SACuC;CACvC,IAAI,UAAU;AASd,QAAO;EAAE,MARQ,KAAK,QACpB,wCACC,UAAU;AACT,aAAU;AAEV,UAAO,MAAM,QAAQ,aAAa,QAAQ;IAE7C;EACwB;EAAS;;AAGpC,IAAM,2BACJ,IACA,eACY;AACZ,QAAO,WAAW,WAAW,MAAM,cAAc;AAC/C,MAAI,GAAG,sBAAsB,UAAU,EAAE;;AACvC,YAAA,kBAAO,UAAU,UAAA,QAAA,oBAAA,KAAA,IAAA,KAAA,IAAA,gBAAM,UAAS;;AAElC,MAAI,GAAG,oBAAoB,UAAU,CACnC,QAAO,UAAU,gBAAgB,aAAa,MAAM,gBAAgB;AAClE,UACE,GAAG,aAAa,YAAY,KAAK,IACjC,YAAY,KAAK,SAAS;IAE5B;AAEJ,MAAI,GAAG,oBAAoB,UAAU,EAAE;;GACrC,MAAM,eAAe,UAAU;AAC/B,OAAI,CAAC,aACH,QAAO;AAET,SAAA,qBAAI,aAAa,UAAA,QAAA,uBAAA,KAAA,IAAA,KAAA,IAAA,mBAAM,UAAS,yBAC9B,QAAO;AAET,OAAI,aAAa,eAAe;AAC9B,QAAI,GAAG,kBAAkB,aAAa,cAAc,CAClD,QACE,aAAa,cAAc,KAAK,SAAS;AAG7C,QAAI,GAAG,eAAe,aAAa,cAAc,CAC/C,QAAO,aAAa,cAAc,SAAS,MACxC,YACC;;oBAAQ,KAAK,SAAS,8BAAA,wBACtB,QAAQ,kBAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAc,UAAS;MAClC;;;AAIP,SAAO;GACP;;AAGJ,IAAM,0BACJ,IACA,iBACY;CACZ,MAAM,gBAAiB,aACpB;AACH,KAAI,kBAAkB,KAAA,EACpB,QAAO,kBAAkB,GAAG,WAAW;AAEzC,QAAO,QAAS,aAA0C,WAAW;;AAGvE,IAAM,iBACJ,IACA,OACoC;AACpC,KAAI,GAAG,SAAS,OAAO,CACrB,QAAO,GAAG,WAAW;AAEvB,KAAI,GAAG,SAAS,OAAO,CACrB,QAAO,GAAG,WAAW;AAEvB,KAAI,GAAG,SAAS,OAAO,EAAE;EACvB,MAAM,MAAO,GAAG,WAAiD;AACjE,SAAO,QAAA,QAAA,QAAA,KAAA,IAAA,MAAO,GAAG,WAAW;;AAE9B,KAAI,GAAG,SAAS,OAAO,EAAE;EACvB,MAAM,MAAO,GAAG,WAAiD;AACjE,SAAO,QAAA,QAAA,QAAA,KAAA,IAAA,MAAO,GAAG,WAAW;;AAE9B,KAAI,GAAG,SAAS,MAAM,CACpB,QAAO,GAAG,WAAW;AAEvB,KAAI,GAAG,SAAS,OAAO,CACrB,QAAO,GAAG,WAAW;AAEvB,KAAI,GAAG,SAAS,OAAO,CACrB,QAAO,GAAG,WAAW;AAEvB,QAAO,GAAG,WAAW;;AAGvB,IAAM,yBAAyB,cAA8B;AAE3D,QAAO,IADS,UAAU,QAAQ,OAAO,OAAO,CAAC,QAAQ,MAAM,MAAM,CAClD;;AAGrB,IAAM,oBACJ,YACA,kBACW;AASX,QAAO,YARU,cAAc,SAC5B,KAAK,cAAc;EAClB,MAAM,QAAQ,UAAU,eACpB,GAAG,UAAU,aAAa,KAAK,MAAM,UAAU,KAAK,SACpD,UAAU,KAAK;AACnB,SAAO,UAAU,aAAa,QAAQ,UAAU;GAChD,CACD,KAAK,KAAK,CACe,UAAU,sBAAsB,WAAW,CAAC;;AAG1E,IAAa,0BAA0B,OACrC,IACA,MACA,IACA,sBAIgD;CAChD,MAAM,eAAe,WAAW,GAAG;CACnC,MAAM,aAAa,GAAG,iBACpB,cACA,MACA,GAAG,aAAa,QAChB,OACA,cAAc,IAAI,aAAa,CAChC;CAED,MAAM,QAA6D,EAAE;CACrE,IAAI,cAAc;CAClB,MAAM,gBAAgB,wBAAwB,IAAI,WAAW;CAC7D,IAAI,iBAAiB;CAErB,MAAM,iBAAiB,SAAyB;EAC9C,IAAI,YAAY,GAAG,OAAO;AAC1B,SAAO,KAAK,SAAS,UAAU,EAAE;AAC/B,qBAAkB;AAClB,eAAY,GAAG,OAAO;;AAExB,oBAAkB;AAClB,SAAO;;AAGT,MAAK,MAAM,aAAa,WAAW,YAAY;;AAC7C,MAAI,CAAC,GAAG,oBAAoB,UAAU,CACpC;EAEF,MAAM,eAAe,UAAU;AAC/B,MAAI,CAAC,gBAAgB,CAAC,aAAa,KACjC;AAEF,MAAI,uBAAuB,IAAI,aAAa,CAC1C;AAEF,MAAI,CAAC,GAAG,gBAAgB,UAAU,gBAAgB,CAChD;EAEF,MAAM,aAAa,UAAU,gBAAgB;EAC7C,MAAM,aAAa,MAAM,kBAAkB,YAAY,aAAa;AACpE,MAAI,eAAe,aAAa,eAAe,eAC7C;EAEF,MAAM,QAAQ,eAAe;EAC7B,MAAM,QAAQ,eAAe;EAE7B,MAAM,cAAc,aAAa,KAAK;EACtC,MAAM,qBAA+B,EAAE;EACvC,IAAI;EACJ,IAAI;AAEJ,MACE,aAAa,iBACb,GAAG,kBAAkB,aAAa,cAAc,EAChD;AACA,mBAAgB,aAAa,cAAc,KAAK;AAChD,sBAAmB,KACjB,eAAe,cAAc,QAAQ,sBAAsB,WAAW,CAAC,GACxE;aACQ,OAAO;AAChB,uBAAoB,cAAc,+BAA+B;AACjE,sBAAmB,KACjB,UAAU,kBAAkB,QAAQ,sBAAsB,WAAW,CAAC,GACvE;AACD,OACE,aAAa,iBACb,GAAG,eAAe,aAAa,cAAc,CAE7C,oBAAmB,KACjB,iBAAiB,YAAY,aAAa,cAAc,CACzD;SAEE;AACL,mBAAgB,cAAc,+BAA+B;AAC7D,sBAAmB,KACjB,eAAe,cAAc,QAAQ,sBAAsB,WAAW,CAAC,GACxE;AACD,OACE,aAAa,iBACb,GAAG,eAAe,aAAa,cAAc,CAE7C,oBAAmB,KACjB,iBAAiB,YAAY,aAAa,cAAc,CACzD;;EAIL,MAAM,iBAAA,iBAAgB,mBAAA,QAAA,mBAAA,KAAA,IAAA,iBAAiB;EACvC,MAAM,cACJ,GAAG,mBAAmB,KAAK,KAAK,CAAC,UACxB,YAAY,4BAA4B,cAAc,IAAI,MAAM;AAE3E,QAAM,KAAK;GACT,OAAO,UAAU,SAAS,WAAW;GACrC,KAAK,UAAU,QAAQ;GACvB,MAAM;GACP,CAAC;AACF,gBAAc;;AAGhB,KAAI,MAAM,WAAW,EACnB,QAAO;EAAE;EAAM,SAAS;EAAO;AAGjC,KAAI,eAAe,CAAC,eAAe;EACjC,MAAM,mBAAmB,WAAW,WAAW,OAC7C,GAAG,oBACJ;EACD,MAAM,aAAa,iBAAiB,iBAAiB,SAAS;AAC9D,MAAI,YAAY;GACd,MAAM,UAAU,KAAK,SAAS,OAAO,GAAG,SAAS;GACjD,MAAM,WAAW,yBAAyB,aAAa;AACvD,SAAM,KAAK;IACT,OAAO,WAAW,QAAQ;IAC1B,KAAK,WAAW,QAAQ;IACxB,MAAM,GAAG,UAAU,0BAA0B,SAAS,GAAG;IAC1D,CAAC;;;AAIN,OAAM,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;CACvC,IAAI,WAAW;AACf,MAAK,MAAM,QAAQ,MACjB,YACE,SAAS,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,SAAS,MAAM,KAAK,IAAI;AAGxE,QAAO;EAAE,MAAM;EAAU,SAAS;EAAM;;;;;;;;;AC7jB1C,IAAM,eAAe,QAAwB;AAE3C,QAAO,IAAI,QAAQ,kBAAkB,IAAI,CAAC,QAAQ,SAAS,MAAM;;;;;;;;AASnE,IAAa,+BACX,UACA,eACW;CACX,MAAM,QAAkB,EAAE;AAE1B,OAAM,KAAK,iBAAiB;AAC5B,OAAM,KAAK,oDAAoD;AAC/D,OAAM,KAAK,0BAA0B;AACrC,OAAM,KAAK,GAAG;AAEd,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,QAAQ,SAAS;AACvB,MAAI,OAAO;GACT,MAAM,eAAe,YAAY,IAAI;GACrC,MAAM,eAAe,KAAK,UAAU,MAAM;AAC1C,SAAM,KAAK,gBAAgB,aAAa,KAAK,aAAa,GAAG;;;AAIjE,OAAM,KAAK,GAAG;AAEd,QAAO,MAAM,KAAK,KAAK;;AAGzB,IAAa,qBAAqB,OAChC,UACA,SACA,aACA,WACqB;AACrB,KAAI;EAEF,IAAI,cAAc,EAAA,GAAA,GAAA,YAAY,SAAS;AACvC,MAAI,CAAC,YACH,KAAI;AAEF,iBADwB,OAAA,GAAA,YAAA,UAAe,UAAU,QAAQ,KACvB;oBAC5B;AAEN,iBAAc;;AAIlB,MAAI,aAAa;AAEf,UAAA,GAAA,YAAA,QAAA,GAAA,KAAA,SAAoB,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAEnD,UAAA,GAAA,YAAA,WAAgB,UAAU,QAAQ;AAClC,UAAO;QAGP,QAAO;UAEF,OAAO;AACd,SAAO,KAAK,mBAAmB,YAAY,IAAI,SAAS,IAAI,QAAQ;AACpE,SAAO;;;AAIX,IAAa,0BAA0B,OACrC,oBACA,WACqB;CACrB,MAAM,qBAAA,GAAA,KAAA,SAA4B,mBAAmB;CACrD,MAAM,iBAAA,GAAA,KAAA,MAAqB,mBAAmB,aAAa;AAE3D,MAAA,GAAA,GAAA,YAAe,cAAc,CAC3B,QAAO;AAGT,KAAI;AACF,SAAA,GAAA,YAAA,OAAY,mBAAmB,EAAE,WAAW,MAAM,CAAC;AAGnD,SAAA,GAAA,YAAA,WAAgB,eADS,yCAAA,GAAA,KAAA,UADS,mBAAmB,CAC6B,IAClC;AAChD,SAAO;UACA,OAAO;AACd,SAAO,KACL,mDAAmD,cAAc,IAAI,QACtE;AACD,SAAO;;;;;;;;;;;ACvEX,IAAa,kBACX,UACA,eACW;CACX,MAAM,QAAkB,EAAE;AAE1B,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,QAAQ,SAAS;AACvB,MAAI,MACF,OAAM,KAAK,GAAG,IAAI,IAAI,QAAQ;;AAIlC,QAAO,MAAM,SAAS,IAAI,WAAW,MAAM,KAAK,QAAQ,CAAC,SAAS;;;;;;;;AASpE,IAAM,sBAAsB,SAAiB,WAA2B;CACtE,MAAM,QAAQ,QAAQ,MAAM,KAAK;AAGjC,KAAI,MAAM,SAAS,KAAK,MAAM,GAAG,WAAW,KAAK,CAE/C,QAAO,MAAM,KAAK,OAAO,SAAS,OAAO,MAAM,MAAM,EAAE,CAAC,KAAK,KAAK;KAGlE,QAAO,SAAS,OAAO;;;;;;AAyB3B,IAAM,yBAAyB,OAAe,YAC5C,MAAM,SAAS,QAAQ,GAAG,QAAQ,QAAQ;;;;;AAM5C,IAAM,gBACJ,eACA,mBACW;AACX,KAAI,CAAC,cACH,QAAO;AAET,KAAI,CAAC,eACH,QAAO;AAGT,KAAI,eAAe,SAAS,cAAc,CACxC,QAAO;CAIT,MAAM,eAAe,eAAe,MAAM,kCAAkC;AAC5E,KAAI,cAAc;EAChB,MAAM,GAAG,aAAa,aAAa,MAAM,OAAO,MAAM;AACtD,MAAI,KAAK,WAAW,cAAc,CAChC,QAAO;EAET,MAAM,qBAAqB,sBAAsB,eAAe,WAAW;AAC3E,MAAI,KAAK,WAAW,EAClB,QAAO,GAAG,cAAc,aAAa;AAEvC,SAAO,GAAG,cAAc,aAAa,qBAAqB;;AAM5D,QAAO,GADoB,sBAAsB,eAD9B,eAAe,SAAS,OAAO,GAAG,SAAS,KACa,GAC5C;;;;;;AAOjC,IAAM,sBAAsB,8BAA8C;AACxE,QAAO,0BAA0B,MAAM,KAAK,CAAC,SAAS;;;;;AAMxD,IAAM,wBAAwB,WAC5B,OAAO,WAAW,WAAW,SAAS,OAAO,KAAK,OAAO,CAAC,SAAS,QAAQ;;;;;;AAO7E,IAAM,8BACJ,QACA,eACuB;AACvB,KAAI,cAAc,EAChB;CAGF,MAAM,WAAW,qBAAqB,OAAO;CAC7C,IAAI;AACJ,KAAI;AACF,QAAM,KAAK,MAAM,SAAS;mBACpB;AACN;;AAGF,KAAI,CAAC,OAAO,OAAO,IAAI,aAAa,SAClC;CAGF,MAAM,SAAS,IAAI,OAAO,WAAW;AACrC,KAAI,IAAI,SAAS,WAAW,OAAO,CACjC;AAGF,KAAI,WAAW,SAAS,IAAI;CAC5B,MAAM,aAAa,KAAK,UAAU,IAAI;AACtC,QAAO,SAAS,SAAS,KAAK,GAAG,GAAG,WAAW,MAAM;;;;;;;AA2BvD,IAAa,WAAW,UAA0B,EAAE,KAAa;CAC/D,MAAM,EACJ,mBAAmB,MACnB,aAAa;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACD,EACD,eAAe,CAAC,aAAa,EAC7B,qBAAqB,OACrB,yBAAyB,oCACzB,qBAAqB;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACD,EACD,8BAA8B,MAC9B,+BAA+B,MAC/B,uBAAuB,SACrB;CAEJ,MAAM,oBAAoB,aAAa,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC;CAC1E,MAAM,+BAA+B,aAAa;CAClD,MAAM,oBAAoB,8BAA8B;CACxD,IAAI;CAIJ,MAAM,eAAe,GAAG,KAAK;CAC7B,IAAI,SAAS,oBAAoB,aAAa;CAC9C,IAAI,SAAS;CACb,IAAI;CACJ,IAAI;CACJ,IAAI,yBAAyB,QAAQ,QAAa,EAAE,CAAC;CAErD,MAAM,iBAAiB,YAAY;AACjC,MAAI,CAAC,kBACH,qBAAoB,OAAO,cAAc,YAAY,KAAA,EAAU;AAEjE,SAAO;;CAgBT,MAAM,8BAA8B,YAAY;AAQ9C,cANe,MAAM,uBACnB,aACA,kBACA,8BACA,OACD,EACiB;AAElB,WAAS,eAAe,UAAU,WAAW;AAC7C,MAAI,oBAAoB;GACtB,MAAM,wBAAwB,4BAC5B,UACA,mBACD;GACD,MAAM,sBAAA,GAAA,KAAA,MAA0B,aAAa,uBAAuB;GACpE,MAAM,kBAAkB,MAAM,mBAC5B,oBACA,uBACA,wBACA,OACD;AACD,QAAA,GAAA,GAAA,YAAe,mBAAmB;QACP,MAAM,wBAC7B,oBACA,OACD,CAEC,QAAO,KACL,yDAAA,GAAA,KAAA,OAAA,GAAA,KAAA,SACU,uBAAuB,EAC/B,aACD,GACF;;AAGL,UAAO;;AAET,SAAO;;CAIT,MAAM,+BAA+B,OAAO,SAA4B;AACtE,MAAI,oBAAoB;GACtB,MAAM,sBAAA,GAAA,KAAA,MAA0B,aAAa,uBAAuB;AAEpE,OAAI,EAAA,GAAA,GAAA,YAAY,mBAAmB,EAAE;IAEnC,MAAM,gBAAqB,EAAE;AAC7B,SAAK,SAAS,QAAQ;AACpB,mBAAc,OAAO;MACrB;AAEF,WAAO,MAAM,mBACX,oBAFmB,4BAA4B,eAAe,KAAK,EAInE,8BACA,OACD;;;AAGL,SAAO;;AAGT,QAAO;EACL,MAAM;EAGN,SAAS;EAET,oBAAoB,OAAO,SAAS;AAElC,UAAO,KAAK,GAAG,QAAQ,GAAG,gBAAgB,YAAY;AAGtD,iBAAc,KAAK,OAAO;AAG1B,OACE,eACC,MAAM,6BAA6B,mBAAmB,CAEvD,QAAO,KACL,gEAAgE,yBACjE;AAGH,UAAO;;EAGT,SAAS,WAAW;;AAElB,OAAI,CAAC,qBACH;AAGF,IAAA,gBAAA,OAAO,WAAA,QAAA,kBAAA,KAAA,MAAP,OAAO,QAAU,EAAE;GACnB,MAAM,mBAAA,yBAAA,iBAAmB,OAAO,OAAM,qBAAA,QAAA,0BAAA,KAAA,IAAA,wBAAA,eAAA,kBAAoB,EAAE;GAE5D,MAAM,sBAAuC;AAE3C,QAAI,MAAM,QAAQ,gBAAgB,OAAO,EAAE;KACzC,MAAM,UAAU,gBAAgB;AAEhC,SAAI,QAAQ,WAAW,GAAG;AAExB,cAAQ,KADsB,EAAE,CACZ;AACpB,aAAO;;AAET,aAAQ,SAAS,QAAQ,UAAU;AAEjC,UAAI,CAAC,OACH,SAAQ,SAAS,EAAE;OAErB;AACF,YAAO;;AAIT,QAAI,gBAAgB,OAClB,QAAO,CAAC,gBAAgB,OAAwB;IAIlD,MAAM,SAAwB,EAAE;AAChC,oBAAgB,SAAS;AACzB,WAAO,CAAC,OAAO;;AAGD,kBAAe,CAEvB,SAAS,WAAW;IAC1B,MAAM,iBAAiB,OAAO;IAE9B,MAAM,wBAAwB,OAAO,UAAe;AAElD,SAAI,OAAO,mBAAmB,YAAY;MACxC,MAAM,WAAW,MAAM,eAAe,MAAM;AAC5C,aAAO,aAAA,QAAA,aAAA,KAAA,IAAA,WAAY;;AAErB,YAAO,mBAAA,QAAA,mBAAA,KAAA,IAAA,iBAAkB;;AAG3B,WAAO,SAAS,OAAO,UAAe;;KACpC,MAAM,iBAAiB,MAAM,sBAAsB,MAAM;AAEzD,YAAO,cAAA,UADe,YAAA,QAAA,YAAA,KAAA,IAAA,UAAU,IACG,eAAe;;KAEpD;;EAEJ,WAAW,OAAO,MAAM,OAAO;AAC7B,OAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,SAAS,KAAK,CAC/C;GAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAC9B,OAAI,QAAQ,SAAS,eAAe,CAClC;AAEF,OACE,QAAQ,SAAS,QAAQ,IACzB,QAAQ,SAAS,SAAS,IAC1B,QAAQ,SAAS,SAAS,CAE1B;AAEF,OAAI,CAAC,6BAA6B,KAAK,QAAQ,CAC7C;GAGF,MAAM,KAAK,MAAM,gBAAgB;AACjC,OAAI,CAAC,GACH;GAEF,MAAM,mBAAmB,qBAAqB,IAAI,KAAK;AACvD,OAAI,QAAQ,SAAS,QAAQ,IAAI,QAAQ,SAAS,UAAU,CAC1D,QAAO,MACL,2BAA2B,QAAQ,IACjC,mBAAmB,QAAQ,SAE9B;AAEH,OAAI,CAAC,iBACH;GAGF,MAAM,SAAS,MAAM,wBACnB,IACA,MACA,SACA,kBACD;AACD,OAAI,OAAO,QACT,QAAO;IACL,MAAM,OAAO;IACb,KAAK;IACN;;EAIL,gBAAgB,OAAO,WAAW;GAEhC,MAAM,IAAI,MAAM,6BAA6B,MAAM;AACnD,OAAI;AAKF,kBAAc,OAAO;AAEnB,aAAS,oBAAoB,cAAc,OAAO,OAAO;AAK3D,WAAO,MAAM,2BAA2B;AAExC,uBAAmB,oBACjB,aACA,6BACA,OACD;AAGD,QAAI,MAAM,6BAA6B,CACrC,QAAO,KACL,sDAAsD,yBACvD;aAEK;AACR,WAAO,MAAM,0BAA0B;AACvC,MAAE,SAAS;;;EAIf,iBAAiB,OAAO,WAAW;GAEjC,MAAM,IAAI,MAAM,6BAA6B,MAAM;AACnD,OAAI;AACF,WAAO,MAAM,4BAA4B;AAIzC,QAAI,sBAAsB,OAAO,SAAS;KACxC,MAAM,sBAAA,GAAA,KAAA,MAA0B,aAAa,uBAAuB;AAEpE,YAAO,QAAQ,QAAQ,mBAAmB;AAC1C,YAAO,MACL,2CAA2C,yBAC5C;;AAIH,QAAI,MAAM,6BAA6B,CACrC,QAAO,KACL,uDAAuD,yBACxD;aAEK;AACR,WAAO,MAAM,2BAA2B;AACxC,MAAE,SAAS;;;EAIf,YAAY,YAAY;GAEtB,MAAM,IAAI,MAAM,6BAA6B,MAAM;AACnD,OAAI;AACF,WAAO,MAAM,uBAAuB;AAGpC,QAAI,MAAM,6BAA6B,CACrC,QAAO,KACL,kDAAkD,yBACnD;aAEK;AACR,WAAO,MAAM,sBAAsB;AACnC,MAAE,SAAS;;;EAGf,cAAc,MAAM,OAAO,kBAAkB;AAC3C,OAAI,CAAC,oBAAoB,cAAc,WAAW,MAChD,QAAO;GAET,MAAM,SAAS,qBAAqB,KAAK;AACzC,OAAI,CAAC,OAAO,QACV,QAAO;AAET,UAAO;IAAE,MAAM,OAAO;IAAM,KAAK;IAAM;;EAGzC,gBAAgB;GACd,OAAO;GACP,SAAS,OAAO,gBAAgB,WAAW;AAGzC,QAAI,sBAAsB;KACxB,IAAI,aAAa;AACjB,UAAK,MAAM,YAAY,QAAQ;MAC7B,MAAM,QAAQ,OAAO;AACrB,UAEE,MAAM,SAAS,WACf,kBAAkB,MAAM,WAAW,OAAO,KAAK,SAAS,CAAC;WAErD,OAAO,MAAM,WAAW,UAAU;QAEpC,MAAM,cAAc,GAAG,OAAO;AAE9B,cAAM,SAAS,mBAAmB,MAAM,QAAQ,YAAY;QAC5D,MAAM,aAAa,mBAAmB,YAAY;QAGlD,MAAM,WAAW,OADG,GAAG,SAAS;AAEhC,YACE,YACA,SAAS,SAAS,WAClB,SAAS,WAAW,KAAA,GACpB;SAEA,MAAM,WAAW,2BACf,SAAS,QACT,WACD;AACD,aAAI,aAAa,KAAA,EACf,UAAS,SAAS;;AAGtB;;;;AAIN,SAAI,cAAc,EAChB,QAAO,MACL,2CAA2C,WAAW,UACvD;;;GAIR;EAED,aAAa,OAAO,YAAY;AAE9B,OAAI,CAAC,wBAAwB,CAAC,QAAQ,IAAK;AAE3C,OAAI;IAEF,MAAM,QAAQ,OAAA,GAAA,YAAA,SAAc,QAAQ,KAAK,EAAE,WAAW,MAAM,CAAC;IAG7D,IAAI,QAAQ;AACZ,SAAK,MAAM,QAAQ,OAAO;KACxB,MAAM,YAAA,GAAA,KAAA,MAAgB,QAAQ,KAAK,KAAK;AAIxC,SAAI,kBAAkB,MAAM,WAAW,OAAO,KAAK,KAAK,CAAC,CACvD,KAAI;MAEF,MAAM,UAAU,OAAA,GAAA,YAAA,UAAe,UAAU,QAAQ;AAEjD,UAAI,CAAC,QAAQ,SAAS,OAAO,EAAE;OAE7B,MAAM,cAAc,GAAG,OAAO;AAC9B,cAAA,GAAA,YAAA,WACE,UACA,mBAAmB,SAAS,YAAY,CACzC;OAED,MAAM,aAAa,mBAAmB,YAAY;OAClD,MAAM,UAAU,GAAG,SAAS;AAC5B,WAAI;QAGF,MAAM,WAAW,2BAFE,OAAA,GAAA,YAAA,UAAe,SAAS,QAAQ,EAIjD,WACD;AACD,YAAI,aAAa,KAAA,EACf,QAAA,GAAA,YAAA,WAAgB,SAAS,SAAS;0BAE9B;AAGR;;cAEK,OAAO;;AAKpB,QAAI,SAAS,EACX,QAAO,MAAM,wCAAwC,MAAM,UAAU;YAEhE,OAAO;;EAInB;;;;ACtpBH,IAAA,cAAe"}