├── src ├── assets │ ├── sass │ │ ├── resources │ │ │ └── index.sass │ │ └── global │ │ │ ├── index.sass │ │ │ ├── _vendor.sass │ │ │ └── vendor │ │ │ └── _tailwind.sass │ └── icons │ │ ├── volume.svg │ │ ├── chrome.svg │ │ └── settings.svg ├── public │ └── favicons │ │ ├── 128.png │ │ ├── 16.png │ │ ├── 32.png │ │ └── 48.png ├── pages │ ├── offscreen.html │ └── popup.html ├── enums │ ├── command.ts │ └── storage.ts ├── scripts │ └── popup.ts ├── utils │ ├── chrome │ │ ├── i18n.ts │ │ ├── commands.ts │ │ ├── runtime.ts │ │ ├── action.ts │ │ ├── offscreen.ts │ │ ├── tabs.ts │ │ └── storage.ts │ ├── math.ts │ └── badge.ts ├── composables │ ├── useTailwind.ts │ ├── useGain.ts │ └── useSettings.ts ├── components │ ├── Control │ │ ├── Label.vue │ │ ├── Button.vue │ │ ├── Range.vue │ │ ├── NumberMinMax.vue │ │ └── Toggle.vue │ ├── Settings │ │ ├── About │ │ │ ├── Button.vue │ │ │ └── Link.vue │ │ ├── About.vue │ │ └── Form.vue │ ├── Gain │ │ ├── Volume.vue │ │ ├── ResetButton.vue │ │ ├── Slider.vue │ │ └── Tabs.vue │ ├── The │ │ └── Header.vue │ └── App │ │ └── Popup.vue ├── store │ ├── view.ts │ ├── stream.ts │ ├── settings.ts │ └── gain.ts ├── manifest.ts └── background │ ├── offscreen.ts │ └── serviceWorker.ts ├── .github ├── FUNDING.yml └── dependabot.yml ├── webstore └── images │ └── promo │ ├── small.png │ └── marquee.png ├── .gitignore ├── postcss.config.js ├── tailwind.config.ts ├── tsconfig.json ├── README.md ├── CONTRIBUTING.md ├── vite.config.js ├── .eslintrc.cjs ├── package.json ├── _locales ├── en │ └── messages.json └── ru │ └── messages.json ├── LICENSE.md └── pnpm-lock.yaml /src/assets/sass/resources/index.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/sass/global/index.sass: -------------------------------------------------------------------------------- 1 | @import vendor 2 | -------------------------------------------------------------------------------- /src/assets/sass/global/_vendor.sass: -------------------------------------------------------------------------------- 1 | @import vendor/tailwind 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: ['https://boosty.to/wokalek/donate'] 2 | -------------------------------------------------------------------------------- /src/public/favicons/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/src/public/favicons/128.png -------------------------------------------------------------------------------- /src/public/favicons/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/src/public/favicons/16.png -------------------------------------------------------------------------------- /src/public/favicons/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/src/public/favicons/32.png -------------------------------------------------------------------------------- /src/public/favicons/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/src/public/favicons/48.png -------------------------------------------------------------------------------- /src/pages/offscreen.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /webstore/images/promo/small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/webstore/images/promo/small.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dev and build 2 | node_modules 3 | dist* 4 | 5 | # Auto importing components for Vue 6 | components.d.ts 7 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | autoprefixer: {}, 4 | tailwindcss: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /webstore/images/promo/marquee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wokalek/tab-volume/HEAD/webstore/images/promo/marquee.png -------------------------------------------------------------------------------- /src/enums/command.ts: -------------------------------------------------------------------------------- 1 | export enum CommandVolumeEnum { 2 | volumeUp = 'VOLUME_UP', 3 | volumeDown = 'VOLUME_DOWN', 4 | } 5 | -------------------------------------------------------------------------------- /src/assets/sass/global/vendor/_tailwind.sass: -------------------------------------------------------------------------------- 1 | @tailwind base 2 | @tailwind components 3 | @tailwind utilities 4 | @tailwind variants 5 | -------------------------------------------------------------------------------- /src/scripts/popup.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | 3 | import AppPopup from '@/components/App/Popup.vue' 4 | 5 | createApp(AppPopup).mount('#app') 6 | -------------------------------------------------------------------------------- /src/utils/chrome/i18n.ts: -------------------------------------------------------------------------------- 1 | export function loc (...args: Parameters) { 2 | return chrome.i18n.getMessage(...args) 3 | } 4 | -------------------------------------------------------------------------------- /src/enums/storage.ts: -------------------------------------------------------------------------------- 1 | export enum StorageNamespaceEnum { 2 | settings = 'SETTINGS', 3 | gainByTab = 'GAIN_BY_TAB', 4 | streamIdByTab = 'STREAM_ID_BY_TAB', 5 | } 6 | -------------------------------------------------------------------------------- /src/utils/chrome/commands.ts: -------------------------------------------------------------------------------- 1 | export function commandsOnCommand (...args: Parameters) { 2 | chrome.commands.onCommand.addListener(...args) 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/math.ts: -------------------------------------------------------------------------------- 1 | export function map (n: number, start1: number, stop1: number, start2: number, stop2: number) { 2 | return (n - start1) / (stop1 - start1) * (stop2 - start2) + start2 3 | } 4 | -------------------------------------------------------------------------------- /src/composables/useTailwind.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 2 | // @ts-ignore 3 | import colors from 'tailwindcss/lib/public/colors' 4 | 5 | export default function () { 6 | return { colors } 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Control/Label.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/components/Settings/About/Button.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | - package-ecosystem: npm 5 | directory: / 6 | schedule: 7 | timezone: Europe/Moscow 8 | interval: weekly 9 | day: saturday 10 | time: "08:00" 11 | groups: 12 | dev-dependencies: 13 | patterns: 14 | - "*" 15 | -------------------------------------------------------------------------------- /src/utils/chrome/runtime.ts: -------------------------------------------------------------------------------- 1 | export function runtimeSendMessage (data: Data) { 2 | chrome.runtime.sendMessage(data) 3 | } 4 | 5 | export function runtimeOnMessage (...args: Parameters) { 6 | chrome.runtime.onMessage.addListener(...args) 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Gain/Volume.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /src/composables/useGain.ts: -------------------------------------------------------------------------------- 1 | import { ref, onBeforeMount } from 'vue' 2 | 3 | import { getGain, onChangeGain } from '@/store/gain.ts' 4 | 5 | export default function () { 6 | const gain = ref(1) 7 | 8 | onBeforeMount(async () => { 9 | gain.value = await getGain() 10 | }) 11 | 12 | onChangeGain((newGain) => { 13 | gain.value = newGain 14 | }) 15 | 16 | return { gain } 17 | } 18 | -------------------------------------------------------------------------------- /src/store/view.ts: -------------------------------------------------------------------------------- 1 | import { reactive } from 'vue' 2 | 3 | export enum ViewEnum { 4 | gain = 'gain', 5 | settings = 'settings', 6 | } 7 | 8 | export const view = reactive<{ 9 | current: ViewEnum, 10 | }>({ 11 | current: ViewEnum.gain, 12 | }) 13 | 14 | export function toggleStoreView (toView: ViewEnum) { 15 | view.current = view.current === ViewEnum.gain ? toView : ViewEnum.gain 16 | } 17 | -------------------------------------------------------------------------------- /src/pages/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tab Volume 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/composables/useSettings.ts: -------------------------------------------------------------------------------- 1 | import { ref, onBeforeMount } from 'vue' 2 | 3 | import { getDefaultSettings, getSettings, onChangeSettings } from '@/store/settings.ts' 4 | 5 | export default function () { 6 | const defaultSettings = getDefaultSettings() 7 | const settings = ref(defaultSettings) 8 | 9 | onBeforeMount(async () => { 10 | settings.value = await getSettings() 11 | }) 12 | 13 | onChangeSettings((newSettings) => { 14 | settings.value = newSettings 15 | }) 16 | 17 | return { settings, defaultSettings } 18 | } 19 | -------------------------------------------------------------------------------- /src/utils/badge.ts: -------------------------------------------------------------------------------- 1 | import { round } from 'lodash' 2 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 3 | // @ts-ignore 4 | import colors from 'tailwindcss/lib/public/colors' 5 | 6 | import { setBadgeText, setBadgeTextColor, setBadgeBackgroundColor } from '@/utils/chrome/action.ts' 7 | 8 | export async function setBadge (gain: number | '') { 9 | const gainText = gain === '' ? '' : round(gain * 100).toString() 10 | 11 | setBadgeText(gainText) 12 | setBadgeTextColor(colors.blue['50']) 13 | setBadgeBackgroundColor(colors.blue['600']) 14 | } 15 | -------------------------------------------------------------------------------- /src/components/Settings/About/Link.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 27 | -------------------------------------------------------------------------------- /src/assets/icons/volume.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/components/Control/Button.vue: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 2 | // @ts-ignore 3 | import defaultConfig from 'tailwindcss/stubs/config.full.js' 4 | 5 | import type { Config } from 'tailwindcss' 6 | 7 | export default { 8 | plugins: [], 9 | content: [ 10 | './src/pages/popup.html', 11 | './src/**/*.{vue,js,ts,jsx,tsx}', 12 | ], 13 | theme: { 14 | extend: { 15 | fontFamily: { 16 | trebuchet: ['Trebuchet MS', defaultConfig.theme.fontFamily.sans], 17 | arial: ['Arial', defaultConfig.theme.fontFamily.sans], 18 | }, 19 | }, 20 | }, 21 | } satisfies Config 22 | -------------------------------------------------------------------------------- /src/components/Gain/ResetButton.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "forceConsistentCasingInFileNames": true, 4 | "jsx": "preserve", 5 | "target": "ESNext", 6 | "module": "ESNext", 7 | "moduleResolution": "Node", 8 | "skipLibCheck": true, 9 | "strict": true, 10 | "allowJs": true, 11 | "baseUrl": ".", 12 | "paths": { 13 | "@/*": ["./src/*"], 14 | }, 15 | "noEmit": true, 16 | "resolveJsonModule": true, 17 | "esModuleInterop": true, 18 | "allowSyntheticDefaultImports": true, 19 | "allowImportingTsExtensions": true, 20 | "types": [ 21 | "chrome-types", 22 | ], 23 | }, 24 | "exclude": [ 25 | "dist", 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Tab Volume 🎧 6 | 7 | A convenient and eye-pleasing extension for controlling the sound volume in a browser tab 8 | 9 | - 🍙 Increase or decrease volume within a browser tab 10 | - 🍥 Set any upper limit for audio volume scaling 11 | - 🍣 List of tabs on which you have changed the volume for easy switching between them 12 | - 🍤 Restore tab volume with one click 13 | - 🍢 Change volume with hotkeys `Ctrl + Shift + ArrowUp/ArrowDown` 14 | 15 | ## Contribution 16 | 17 | See [Contributing Guide](CONTRIBUTING.md). 18 | 19 | ## License 20 | 21 | [Creative Commons BY-NC 4.0](LICENSE.md). 22 | -------------------------------------------------------------------------------- /src/utils/chrome/action.ts: -------------------------------------------------------------------------------- 1 | import { processCurrentTab } from '@/utils/chrome/tabs.ts' 2 | 3 | export function setBadgeBackgroundColor (color: string | browserAction.ColorArray) { 4 | return processCurrentTab((tabId) => { 5 | return chrome.action.setBadgeBackgroundColor({ tabId, color }) 6 | }) 7 | } 8 | 9 | export function setBadgeText (text: string) { 10 | return processCurrentTab((tabId) => { 11 | return chrome.action.setBadgeText({ tabId, text }) 12 | }) 13 | } 14 | 15 | export function setBadgeTextColor (color: string | browserAction.ColorArray) { 16 | return processCurrentTab((tabId) => { 17 | return chrome.action.setBadgeTextColor({ tabId, color }) 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /src/assets/icons/chrome.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/utils/chrome/offscreen.ts: -------------------------------------------------------------------------------- 1 | let creatingPromise: Promise | null 2 | 3 | export async function setupOffscreenDocument (parameters: chrome.offscreen.CreateParameters) { 4 | const url = chrome.runtime.getURL(parameters.url) 5 | 6 | const existingContexts = await chrome.runtime.getContexts({ 7 | contextTypes: ['OFFSCREEN_DOCUMENT'], 8 | documentUrls: [url], 9 | }) 10 | 11 | if (existingContexts.length > 0) { 12 | return 13 | } 14 | 15 | if (creatingPromise) { 16 | await creatingPromise 17 | } else { 18 | creatingPromise = chrome.offscreen.createDocument({ 19 | ...parameters, 20 | url, 21 | }) 22 | 23 | await creatingPromise 24 | 25 | creatingPromise = null 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/assets/icons/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/store/stream.ts: -------------------------------------------------------------------------------- 1 | import { isUndefined } from 'lodash' 2 | 3 | import { StorageNamespaceEnum } from '@/enums/storage.ts' 4 | import { StorageAreaEnum, getStorageItem, setStorageItem } from '@/utils/chrome/storage.ts' 5 | import { processCurrentTab } from '@/utils/chrome/tabs.ts' 6 | 7 | export function getStreamIdByTabId (tabId: number) { 8 | return getStorageItem(StorageAreaEnum.session, StorageNamespaceEnum.streamIdByTab, tabId) 9 | } 10 | 11 | export function getStreamId () { 12 | return processCurrentTab(async (tabId) => { 13 | let streamId = await getStreamIdByTabId(tabId) 14 | 15 | if (isUndefined(streamId)) { 16 | streamId = await chrome.tabCapture.getMediaStreamId({ targetTabId: tabId }) 17 | await setStorageItem(StorageAreaEnum.session, StorageNamespaceEnum.streamIdByTab, tabId, streamId) 18 | } 19 | 20 | return streamId 21 | }) 22 | } 23 | -------------------------------------------------------------------------------- /src/components/The/Header.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 25 | -------------------------------------------------------------------------------- /src/components/Settings/About.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | -------------------------------------------------------------------------------- /src/manifest.ts: -------------------------------------------------------------------------------- 1 | import { defineManifest } from '@crxjs/vite-plugin' 2 | import packageJson from '../package.json' 3 | 4 | export default defineManifest(() => ({ 5 | manifest_version: 3, 6 | name: '__MSG_manifest_name__', 7 | version: packageJson.version, 8 | default_locale: 'en', 9 | description: '__MSG_manifest_description__', 10 | author: 'wokalek@wokalek.ru', 11 | minimum_chrome_version: '116', 12 | icons: { 16: 'favicons/16.png', 32: 'favicons/32.png', 48: 'favicons/48.png', 128: 'favicons/128.png' }, 13 | permissions: [ 14 | 'activeTab', 15 | 'tabCapture', 16 | 'offscreen', 17 | 'storage', 18 | ], 19 | action: { default_popup: 'src/pages/popup.html' }, 20 | background: { service_worker: 'src/background/serviceWorker.ts', type: 'module' }, 21 | commands: { 22 | 'VOLUME_UP': { 23 | description: '__MSG_manifest_commands_volume_up__', 24 | suggested_key: { 25 | default: 'Ctrl+Shift+Up', 26 | }, 27 | }, 28 | 'VOLUME_DOWN': { 29 | description: '__MSG_manifest_commands_volume_down__', 30 | suggested_key: { 31 | default: 'Ctrl+Shift+Down', 32 | }, 33 | }, 34 | }, 35 | })) 36 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | 3 | Hello! I'm really glad you want to help my little extension get better! 4 | 5 | Please see the list below to better understand the structure of this repository: 6 | 7 | - ⚡ [Vite](https://vitejs.dev) is used for assembly 8 | - 🖖 [Vue](https://vuejs.org) and [Tailwind](https://tailwindcss.com) for the frontend 9 | - 💪 [CRXJS](https://github.com/crxjs/chrome-extension-tools) for easier assembly of chrome extensions 10 | - 🛍️ [pnpm](https://pnpm.io) as a package manager 11 | - ✏️ [ESLint](https://typescript-eslint.io) for linting 12 | 13 | Please use the [Conventional Commits](https://www.conventionalcommits.org/) to formalize your commits! 14 | 15 | ## Localization 16 | 17 | If you want to add localizations to the extension, they are located in the [`_locales`](_locales) folder. Just create a folder with your locale and translate language phrases. 18 | 19 | ## Build 20 | 21 | To build the extension, run the `pnpm build` command and wait for the build to complete. After that, go to the Google Chrome extensions page, enable developer mode (if it is not already enabled) and load the unpacked extension, which is located in the `dist` folder. 22 | -------------------------------------------------------------------------------- /src/utils/chrome/tabs.ts: -------------------------------------------------------------------------------- 1 | import { isUndefined } from 'lodash' 2 | 3 | export async function getCurrentTab () { 4 | const [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true }) 5 | 6 | return tab 7 | } 8 | 9 | export function getAllTabs () { 10 | return chrome.tabs.query({}) 11 | } 12 | 13 | export function isTabIdEmpty (tabId: number | undefined): tabId is undefined { 14 | return isUndefined(tabId) || tabId === chrome.tabs.TAB_ID_NONE 15 | } 16 | 17 | export async function processCurrentTab (fn: (tabId: number) => TReturn): Promise { 18 | const currentTab = await getCurrentTab() 19 | 20 | return fn(currentTab.id as number) 21 | } 22 | 23 | export function createTab (...args: Parameters) { 24 | chrome.tabs.create(...args) 25 | } 26 | 27 | export function tabsOnRemoved (...args: Parameters) { 28 | chrome.tabs.onRemoved.addListener(...args) 29 | } 30 | 31 | export function setTabActive (tab: chrome.tabs.Tab) { 32 | if (isUndefined(tab.id)) { 33 | return 34 | } 35 | 36 | chrome.windows.update(tab.windowId, { focused: true }) 37 | chrome.tabs.update(tab.id, { active: true }) 38 | } 39 | -------------------------------------------------------------------------------- /src/components/Gain/Slider.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 34 | -------------------------------------------------------------------------------- /src/store/settings.ts: -------------------------------------------------------------------------------- 1 | import { clone } from 'lodash' 2 | 3 | import { StorageNamespaceEnum } from '@/enums/storage.ts' 4 | import { getStorage, setStorage, StorageAreaEnum, storageOnChanged } from '@/utils/chrome/storage.ts' 5 | 6 | export type SettingsType = { 7 | max: number, 8 | isBadge: 'on' | 'off', 9 | } 10 | 11 | const defaultSettings: SettingsType = { 12 | max: 300, 13 | isBadge: 'on', 14 | } 15 | 16 | export function getDefaultSettings () { 17 | return clone(defaultSettings) 18 | } 19 | 20 | export async function getSettings () { 21 | return await getStorage(StorageAreaEnum.local, StorageNamespaceEnum.settings) || getDefaultSettings() 22 | } 23 | 24 | export function setSettings (value: SettingsType) { 25 | return setStorage(StorageAreaEnum.local, StorageNamespaceEnum.settings, value) 26 | } 27 | 28 | export function onChangeSettings (fn: (settings: SettingsType) => void) { 29 | storageOnChanged((changes, areaName) => { 30 | if (areaName !== StorageAreaEnum.local) { 31 | return 32 | } 33 | 34 | if (!(StorageNamespaceEnum.settings in changes)) { 35 | return 36 | } 37 | 38 | const settings = changes[StorageNamespaceEnum.settings].newValue as SettingsType 39 | 40 | fn(settings) 41 | }) 42 | } 43 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | 3 | import * as path from 'path' 4 | 5 | import vue from '@vitejs/plugin-vue' 6 | import svgLoader from 'vite-svg-loader' 7 | import components from 'unplugin-vue-components/vite' 8 | import { crx } from '@crxjs/vite-plugin' 9 | import { ViteMinifyPlugin as minifyHtml } from 'vite-plugin-minify' 10 | 11 | import manifest from './src/manifest.ts' 12 | 13 | export default defineConfig({ 14 | plugins: [ 15 | vue(), 16 | svgLoader(), 17 | components({ directoryAsNamespace: true }), 18 | crx({ manifest }), 19 | minifyHtml(), 20 | ], 21 | publicDir: './src/public', 22 | build: { 23 | target: 'esnext', 24 | minify: 'terser', 25 | cssMinify: 'lightningcss', 26 | rollupOptions: { 27 | input: { 28 | offscreen: './src/pages/offscreen.html', 29 | }, 30 | }, 31 | }, 32 | resolve: { 33 | alias: [ 34 | { find: '@', replacement: path.resolve(__dirname, 'src') }, 35 | ], 36 | }, 37 | css: { 38 | preprocessorOptions: { 39 | sass: { 40 | additionalData: '@use "/src/assets/sass/resources/index.sass" as *\n', 41 | }, 42 | }, 43 | }, 44 | server: { 45 | strictPort: true, 46 | port: 3000, 47 | hmr: { 48 | clientPort: 3000, 49 | }, 50 | }, 51 | }) 52 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | }, 6 | plugins: [ 7 | 'vue', 8 | '@typescript-eslint', 9 | ], 10 | extends: [ 11 | 'standard', 12 | 'plugin:vue/vue3-recommended', 13 | 'plugin:@typescript-eslint/recommended', 14 | ], 15 | parser: 'vue-eslint-parser', 16 | parserOptions: { 17 | parser: '@typescript-eslint/parser', 18 | ecmaVersion: 'latest', 19 | sourceType: 'module', 20 | }, 21 | overrides: [ 22 | { 23 | env: { 24 | node: true, 25 | }, 26 | files: [ 27 | '.eslintrc.{js,cjs}', 28 | ], 29 | parserOptions: { 30 | sourceType: 'script', 31 | }, 32 | }, 33 | ], 34 | ignorePatterns: [ 35 | 'dist', 36 | ], 37 | rules: { 38 | 'func-call-spacing': 0, 39 | 'vue/multi-word-component-names': 'off', 40 | 'vue/no-multiple-template-root': 0, 41 | 'vue/singleline-html-element-content-newline': 0, 42 | 'quotes': ['error', 'single', { allowTemplateLiterals: true }], 43 | 'no-unused-vars': 'off', 44 | 'no-undef': 'off', 45 | 'quote-props': ['error', 'consistent'], 46 | 'vue/max-attributes-per-line': ['error', { 47 | singleline: 6, 48 | }], 49 | 'semi': ['error', 'never'], 50 | 'comma-dangle': ['error', 'always-multiline'], 51 | 'vue/comma-dangle': ['error', 'always-multiline'], 52 | }, 53 | } 54 | -------------------------------------------------------------------------------- /src/components/Control/Range.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 47 | 48 | 68 | -------------------------------------------------------------------------------- /src/components/App/Popup.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 55 | -------------------------------------------------------------------------------- /src/store/gain.ts: -------------------------------------------------------------------------------- 1 | import { StorageNamespaceEnum } from '@/enums/storage.ts' 2 | import { StorageAreaEnum, getStorage, getStorageItem, setStorageItem, storageOnChanged } from '@/utils/chrome/storage.ts' 3 | import { processCurrentTab } from '@/utils/chrome/tabs.ts' 4 | 5 | export function getGain () { 6 | return processCurrentTab((tabId) => { 7 | return getStorageItem(StorageAreaEnum.session, StorageNamespaceEnum.gainByTab, tabId, 1) 8 | }) 9 | } 10 | 11 | export function getGainRaw () { 12 | return processCurrentTab((tabId) => { 13 | return getStorageItem(StorageAreaEnum.session, StorageNamespaceEnum.gainByTab, tabId) 14 | }) 15 | } 16 | 17 | export function setGain (value: number) { 18 | processCurrentTab((tabId) => { 19 | setStorageItem(StorageAreaEnum.session, StorageNamespaceEnum.gainByTab, tabId, value) 20 | }) 21 | } 22 | 23 | export function getAllTabsWithGain () { 24 | return getStorage<{[k: number]: number}[]>(StorageAreaEnum.session, StorageNamespaceEnum.gainByTab) 25 | } 26 | 27 | export function onChangeGain (fn: (gain: number) => void) { 28 | storageOnChanged((changes, areaName) => { 29 | if (areaName !== StorageAreaEnum.session) { 30 | return 31 | } 32 | 33 | if (!(StorageNamespaceEnum.gainByTab in changes)) { 34 | return 35 | } 36 | 37 | processCurrentTab((tabId) => { 38 | const gain = changes[StorageNamespaceEnum.gainByTab].newValue[tabId] 39 | 40 | fn(gain) 41 | }) 42 | }) 43 | } 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tab-volume", 3 | "version": "1.0.6", 4 | "private": true, 5 | "homepage": "https://github.com/wokalek/tab-volume", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/wokalek/tab-volume.git" 9 | }, 10 | "author": "Alexandr Wokalek (https://wokalek.ru)", 11 | "type": "module", 12 | "scripts": { 13 | "dev": "vite", 14 | "build": "vite build", 15 | "fix": "eslint . --fix", 16 | "lint": "eslint ." 17 | }, 18 | "dependencies": { 19 | "lodash": "4.17.21", 20 | "perfect-debounce": "1.0.0", 21 | "vue": "3.4.27" 22 | }, 23 | "devDependencies": { 24 | "@crxjs/vite-plugin": "2.0.0-beta.23", 25 | "@types/lodash": "4.17.4", 26 | "@typescript-eslint/eslint-plugin": "7.11.0", 27 | "@typescript-eslint/parser": "7.11.0", 28 | "@vitejs/plugin-vue": "5.0.5", 29 | "autoprefixer": "10.4.19", 30 | "chrome-types": "0.1.286", 31 | "eslint": "9.4.0", 32 | "eslint-config-standard": "17.1.0", 33 | "eslint-plugin-vue": "9.26.0", 34 | "lightningcss": "1.25.1", 35 | "postcss": "8.4.38", 36 | "postcss-load-config": "5.1.0", 37 | "sass": "1.77.4", 38 | "tailwindcss": "3.4.3", 39 | "terser": "5.31.0", 40 | "unplugin-vue-components": "0.27.0", 41 | "vite": "5.2.12", 42 | "vite-plugin-minify": "1.5.2", 43 | "vite-svg-loader": "5.1.0" 44 | }, 45 | "packageManager": "pnpm@8.15.5+sha256.4b4efa12490e5055d59b9b9fc9438b7d581a6b7af3b5675eb5c5f447cee1a589" 46 | } 47 | -------------------------------------------------------------------------------- /src/components/Control/NumberMinMax.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 49 | 50 | 62 | -------------------------------------------------------------------------------- /src/components/Control/Toggle.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 50 | -------------------------------------------------------------------------------- /src/components/Settings/Form.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 52 | -------------------------------------------------------------------------------- /src/utils/chrome/storage.ts: -------------------------------------------------------------------------------- 1 | import { get, set, unset } from 'lodash' 2 | 3 | import type { PropertyPath } from 'lodash' 4 | 5 | export enum StorageAreaEnum { 6 | sync = 'sync', 7 | local = 'local', 8 | session = 'session', 9 | } 10 | 11 | export async function getStorage (areaName: StorageAreaEnum, namespace: string): Promise { 12 | return (await chrome.storage[areaName].get(namespace))[namespace] 13 | } 14 | 15 | export function setStorage (areaName: StorageAreaEnum, namespace: string, value: unknown) { 16 | return chrome.storage[areaName].set({ [namespace]: value }) 17 | } 18 | 19 | export function removeStorage (areaName: StorageAreaEnum, namespaces: string | string[]) { 20 | return chrome.storage[areaName].remove(namespaces) 21 | } 22 | 23 | export async function getStorageItem (areaName: StorageAreaEnum, namespace: string, path: PropertyPath, defaultValue?: TDefault): Promise { 24 | return get(await getStorage(areaName, namespace), path, defaultValue) as TDefault 25 | } 26 | 27 | export async function setStorageItem (areaName: StorageAreaEnum, namespace: string, path: PropertyPath, value: unknown) { 28 | const storage = await getStorage(areaName, namespace) 29 | 30 | return setStorage(areaName, namespace, set(storage || {}, path, value)) 31 | } 32 | 33 | export async function unsetStorageItem (areaName: StorageAreaEnum, namespace: string, path: PropertyPath) { 34 | const storage = await getStorage(areaName, namespace) 35 | 36 | unset(storage, path) 37 | 38 | setStorage(areaName, namespace, storage) 39 | } 40 | 41 | export function storageOnChanged (...args: Parameters) { 42 | chrome.storage.onChanged.addListener(...args) 43 | } 44 | -------------------------------------------------------------------------------- /_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_name": { 3 | "message": "Tab Volume", 4 | "description": "Manifest name field [please leave as is, in English]" 5 | }, 6 | "manifest_description": { 7 | "message": "Volume control within a browser tab" 8 | }, 9 | "manifest_commands_volume_up": { 10 | "message": "Increase volume" 11 | }, 12 | "manifest_commands_volume_down": { 13 | "message": "Decrease volume" 14 | }, 15 | 16 | "background_offscreen_justification": { 17 | "message": "Running a background audio handler that records an audio stream to handle volume changes" 18 | }, 19 | 20 | "app_title": { 21 | "message": "Tab Volume", 22 | "description": "please leave as is, in English" 23 | }, 24 | "app_reset_button": { 25 | "message": "Restore" 26 | }, 27 | "app_settings_max_label": { 28 | "message": "Maximum" 29 | }, 30 | "app_settings_badge_toggle_label": { 31 | "message": "Show volume on extension icon" 32 | }, 33 | "app_settings_restore_button": { 34 | "message": "Restore settings" 35 | }, 36 | "app_settings_about_link": { 37 | "message": "About extension" 38 | }, 39 | "app_settings_about_contribute_part_1": { 40 | "message": "This extension is completely free and open source, the code is available on" 41 | }, 42 | "app_settings_about_contribute_part_2": { 43 | "message": "If you'd like to contribute, feel free to do so." 44 | }, 45 | "app_settings_about_email_to": { 46 | "message": "You can email me at wokalek@wokalek.ru if you have any questions." 47 | }, 48 | "app_settings_about_support_part_1": { 49 | "message": "If you want to thank me for this extension, you can do it through" 50 | }, 51 | "app_settings_about_support_part_2": { 52 | "message": "Thank you!" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_name": { 3 | "message": "Tab Volume", 4 | "description": "please leave as is, in English" 5 | }, 6 | "manifest_description": { 7 | "message": "Регулировка громкости на вкладке браузера" 8 | }, 9 | "manifest_commands_volume_up": { 10 | "message": "Увеличить громкость" 11 | }, 12 | "manifest_commands_volume_down": { 13 | "message": "Уменьшить громкость" 14 | }, 15 | 16 | "background_offscreen_justification": { 17 | "message": "Запуск обработчика фонового звука, который записывает аудиопоток для обработки изменений громкости" 18 | }, 19 | 20 | "app_title": { 21 | "message": "Tab Volume", 22 | "description": "please leave as is, in English" 23 | }, 24 | "app_reset_button": { 25 | "message": "Восстановить" 26 | }, 27 | "app_settings_max_label": { 28 | "message": "Максимум" 29 | }, 30 | "app_settings_badge_toggle_label": { 31 | "message": "Показывать громкость на значке расширения" 32 | }, 33 | "app_settings_restore_button": { 34 | "message": "Восстановить настройки" 35 | }, 36 | "app_settings_about_link": { 37 | "message": "О расширении" 38 | }, 39 | "app_settings_about_contribute_part_1": { 40 | "message": "Это расширение полностью бесплатное и с открытым исходным кодом, код доступен на" 41 | }, 42 | "app_settings_about_contribute_part_2": { 43 | "message": "Если вы хотите внести свой вклад, не стесняйтесь сделать это." 44 | }, 45 | "app_settings_about_email_to": { 46 | "message": "Вы можете написать мне на wokalek@wokalek.ru, если у вас есть какие-либо вопросы." 47 | }, 48 | "app_settings_about_support_part_1": { 49 | "message": "Если вы хотите поблагодарить меня за это расширение, вы можете сделать это через" 50 | }, 51 | "app_settings_about_support_part_2": { 52 | "message": "Спасибо!" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/background/offscreen.ts: -------------------------------------------------------------------------------- 1 | import { debounce } from 'perfect-debounce' 2 | 3 | import { runtimeOnMessage } from '@/utils/chrome/runtime.ts' 4 | 5 | const contextByStreamIdMap = new Map() 6 | const gainNodeByStreamIdMap = new Map() 7 | const debouncePrepareContext = debounce(prepareContext) 8 | 9 | runtimeOnMessage((message) => { 10 | if (message.target !== 'offscreen') { 11 | return undefined 12 | } 13 | 14 | if (message.event === 'changeGain') { 15 | changeGain(message.data) 16 | } 17 | 18 | if (message.event === 'closeContext') { 19 | closeContext(message.data) 20 | } 21 | }) 22 | 23 | function changeGain (data: { streamId: string, gain: number }) { 24 | const gainNode = gainNodeByStreamIdMap.get(data.streamId) 25 | 26 | if (gainNode) { 27 | gainNode.gain.value = data.gain 28 | 29 | return 30 | } 31 | 32 | debouncePrepareContext(data) 33 | } 34 | 35 | async function prepareContext (data: { streamId: string, gain: number }) { 36 | const context = new AudioContext() 37 | contextByStreamIdMap.set(data.streamId, context) 38 | 39 | const gainNode = new GainNode(context, { gain: data.gain }) 40 | gainNodeByStreamIdMap.set(data.streamId, gainNode) 41 | 42 | const media = await getUserMedia(data.streamId) 43 | const source = context.createMediaStreamSource(media) 44 | source.connect(gainNode).connect(context.destination) 45 | } 46 | 47 | function getUserMedia (streamId: string) { 48 | return navigator.mediaDevices.getUserMedia({ 49 | audio: { 50 | mandatory: { 51 | chromeMediaSource: 'tab', 52 | chromeMediaSourceId: streamId, 53 | }, 54 | }, 55 | } as MediaStreamConstraints) 56 | } 57 | 58 | function closeContext (data: { streamId: string }) { 59 | const context = contextByStreamIdMap.get(data.streamId) 60 | 61 | context?.close() 62 | 63 | contextByStreamIdMap.delete(data.streamId) 64 | gainNodeByStreamIdMap.delete(data.streamId) 65 | } 66 | -------------------------------------------------------------------------------- /src/components/Gain/Tabs.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 67 | -------------------------------------------------------------------------------- /src/background/serviceWorker.ts: -------------------------------------------------------------------------------- 1 | import { clamp, isUndefined, round } from 'lodash' 2 | import { debounce } from 'perfect-debounce' 3 | 4 | import { CommandVolumeEnum } from '@/enums/command.ts' 5 | import { getGain, setGain, onChangeGain, getGainRaw } from '@/store/gain.ts' 6 | import { SettingsType, getSettings, onChangeSettings } from '@/store/settings.ts' 7 | import { getStreamId, getStreamIdByTabId } from '@/store/stream.ts' 8 | import { setBadge } from '@/utils/badge.ts' 9 | import { setupOffscreenDocument } from '@/utils/chrome/offscreen.ts' 10 | import { commandsOnCommand } from '@/utils/chrome/commands.ts' 11 | import { tabsOnRemoved } from '@/utils/chrome/tabs.ts' 12 | import { runtimeSendMessage } from '@/utils/chrome/runtime.ts' 13 | import { loc } from '@/utils/chrome/i18n.ts' 14 | 15 | const debounceChangeGain = debounce(changeGain, 0) 16 | 17 | onChangeGain((gain) => { 18 | debounceChangeGain(gain) 19 | }) 20 | 21 | onChangeSettings(async (settings) => { 22 | changeBadgeSetting(settings) 23 | }) 24 | 25 | commandsOnCommand((command) => { 26 | runCommandChangeVolume(command) 27 | }) 28 | 29 | tabsOnRemoved((tabId) => { 30 | stopCapture(tabId) 31 | }) 32 | 33 | async function changeGain (gain: number) { 34 | await setupOffscreenDocument({ 35 | url: '/src/pages/offscreen.html', 36 | reasons: ['USER_MEDIA'], 37 | justification: loc('background_offscreen_justification'), 38 | }) 39 | 40 | const settings = await getSettings() 41 | const streamId = await getStreamId() 42 | 43 | if (settings.isBadge === 'on') { 44 | setBadge(gain) 45 | } 46 | 47 | runtimeSendMessage({ 48 | target: 'offscreen', 49 | event: 'changeGain', 50 | data: { 51 | gain, 52 | streamId, 53 | }, 54 | }) 55 | } 56 | 57 | async function changeBadgeSetting (settings: SettingsType) { 58 | if (settings.isBadge === 'on') { 59 | const gain = await getGainRaw() 60 | 61 | if (!isUndefined(gain)) { 62 | setBadge(gain) 63 | } 64 | } else { 65 | setBadge('') 66 | } 67 | } 68 | 69 | async function runCommandChangeVolume (command: string) { 70 | const settings = await getSettings() 71 | 72 | const change = command === CommandVolumeEnum.volumeUp ? 0.1 : -0.1 73 | 74 | let gain = await getGain() 75 | gain = clamp(gain + change, 0, settings.max / 100) 76 | gain = round(gain, 2) 77 | 78 | setGain(gain) 79 | } 80 | 81 | async function stopCapture (tabId: number) { 82 | const streamId = await getStreamIdByTabId(tabId) 83 | 84 | if (!streamId) { 85 | return 86 | } 87 | 88 | runtimeSendMessage({ 89 | target: 'offscreen', 90 | event: 'closeContext', 91 | data: { 92 | streamId, 93 | }, 94 | }) 95 | } 96 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Creative Commons Attribution-NonCommercial 4.0 International 2 | 3 | Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. 4 | 5 | **Using Creative Commons Public Licenses** 6 | 7 | Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. 8 | 9 | * __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). 10 | 11 | * __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). 12 | 13 | ## Creative Commons Attribution-NonCommercial 4.0 International Public License 14 | 15 | By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. 16 | 17 | ### Section 1 – Definitions. 18 | 19 | a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. 20 | 21 | b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. 22 | 23 | c. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. 24 | 25 | d. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. 26 | 27 | e. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. 28 | 29 | f. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. 30 | 31 | g. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. 32 | 33 | h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. 34 | 35 | i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. 36 | 37 | j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. 38 | 39 | k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. 40 | 41 | l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. __Your__ has a corresponding meaning. 42 | 43 | ### Section 2 – Scope. 44 | 45 | a. ___License grant.___ 46 | 47 | 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: 48 | 49 | A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and 50 | 51 | B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. 52 | 53 | 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 54 | 55 | 3. __Term.__ The term of this Public License is specified in Section 6(a). 56 | 57 | 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. 58 | 59 | 5. __Downstream recipients.__ 60 | 61 | A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. 62 | 63 | B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 64 | 65 | 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). 66 | 67 | b. ___Other rights.___ 68 | 69 | 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 70 | 71 | 2. Patent and trademark rights are not licensed under this Public License. 72 | 73 | 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. 74 | 75 | ### Section 3 – License Conditions. 76 | 77 | Your exercise of the Licensed Rights is expressly made subject to the following conditions. 78 | 79 | a. ___Attribution.___ 80 | 81 | 1. If You Share the Licensed Material (including in modified form), You must: 82 | 83 | A. retain the following if it is supplied by the Licensor with the Licensed Material: 84 | 85 | i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); 86 | 87 | ii. a copyright notice; 88 | 89 | iii. a notice that refers to this Public License; 90 | 91 | iv. a notice that refers to the disclaimer of warranties; 92 | 93 | v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; 94 | 95 | B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and 96 | 97 | C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 98 | 99 | 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 100 | 101 | 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 102 | 103 | 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. 104 | 105 | ### Section 4 – Sui Generis Database Rights. 106 | 107 | Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: 108 | 109 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; 110 | 111 | b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and 112 | 113 | c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. 114 | 115 | For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. 116 | 117 | ### Section 5 – Disclaimer of Warranties and Limitation of Liability. 118 | 119 | a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ 120 | 121 | b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ 122 | 123 | c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. 124 | 125 | ### Section 6 – Term and Termination. 126 | 127 | a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. 128 | 129 | b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 130 | 131 | 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 132 | 133 | 2. upon express reinstatement by the Licensor. 134 | 135 | For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. 136 | 137 | c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. 138 | 139 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. 140 | 141 | ### Section 7 – Other Terms and Conditions. 142 | 143 | a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. 144 | 145 | b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. 146 | 147 | ### Section 8 – Interpretation. 148 | 149 | a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. 150 | 151 | b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. 152 | 153 | c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. 154 | 155 | d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. 156 | 157 | > Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. 158 | > 159 | > Creative Commons may be contacted at creativecommons.org 160 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | lodash: 9 | specifier: 4.17.21 10 | version: 4.17.21 11 | perfect-debounce: 12 | specifier: 1.0.0 13 | version: 1.0.0 14 | vue: 15 | specifier: 3.4.27 16 | version: 3.4.27(typescript@5.4.5) 17 | 18 | devDependencies: 19 | '@crxjs/vite-plugin': 20 | specifier: 2.0.0-beta.23 21 | version: 2.0.0-beta.23 22 | '@types/lodash': 23 | specifier: 4.17.4 24 | version: 4.17.4 25 | '@typescript-eslint/eslint-plugin': 26 | specifier: 7.11.0 27 | version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@9.4.0)(typescript@5.4.5) 28 | '@typescript-eslint/parser': 29 | specifier: 7.11.0 30 | version: 7.11.0(eslint@9.4.0)(typescript@5.4.5) 31 | '@vitejs/plugin-vue': 32 | specifier: 5.0.5 33 | version: 5.0.5(vite@5.2.12)(vue@3.4.27) 34 | autoprefixer: 35 | specifier: 10.4.19 36 | version: 10.4.19(postcss@8.4.38) 37 | chrome-types: 38 | specifier: 0.1.286 39 | version: 0.1.286 40 | eslint: 41 | specifier: 9.4.0 42 | version: 9.4.0 43 | eslint-config-standard: 44 | specifier: 17.1.0 45 | version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.2.0)(eslint@9.4.0) 46 | eslint-plugin-vue: 47 | specifier: 9.26.0 48 | version: 9.26.0(eslint@9.4.0) 49 | lightningcss: 50 | specifier: 1.25.1 51 | version: 1.25.1 52 | postcss: 53 | specifier: 8.4.38 54 | version: 8.4.38 55 | postcss-load-config: 56 | specifier: 5.1.0 57 | version: 5.1.0(postcss@8.4.38) 58 | sass: 59 | specifier: 1.77.4 60 | version: 1.77.4 61 | tailwindcss: 62 | specifier: 3.4.3 63 | version: 3.4.3 64 | terser: 65 | specifier: 5.31.0 66 | version: 5.31.0 67 | unplugin-vue-components: 68 | specifier: 0.27.0 69 | version: 0.27.0(vue@3.4.27) 70 | vite: 71 | specifier: 5.2.12 72 | version: 5.2.12(lightningcss@1.25.1)(sass@1.77.4)(terser@5.31.0) 73 | vite-plugin-minify: 74 | specifier: 1.5.2 75 | version: 1.5.2(vite@5.2.12) 76 | vite-svg-loader: 77 | specifier: 5.1.0 78 | version: 5.1.0(vue@3.4.27) 79 | 80 | packages: 81 | 82 | /@alloc/quick-lru@5.2.0: 83 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 84 | engines: {node: '>=10'} 85 | dev: true 86 | 87 | /@antfu/utils@0.7.8: 88 | resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} 89 | dev: true 90 | 91 | /@babel/helper-string-parser@7.24.6: 92 | resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} 93 | engines: {node: '>=6.9.0'} 94 | 95 | /@babel/helper-validator-identifier@7.24.6: 96 | resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} 97 | engines: {node: '>=6.9.0'} 98 | 99 | /@babel/parser@7.24.6: 100 | resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} 101 | engines: {node: '>=6.0.0'} 102 | hasBin: true 103 | dependencies: 104 | '@babel/types': 7.24.6 105 | 106 | /@babel/types@7.24.6: 107 | resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} 108 | engines: {node: '>=6.9.0'} 109 | dependencies: 110 | '@babel/helper-string-parser': 7.24.6 111 | '@babel/helper-validator-identifier': 7.24.6 112 | to-fast-properties: 2.0.0 113 | 114 | /@crxjs/vite-plugin@2.0.0-beta.23: 115 | resolution: {integrity: sha512-AO+VYhtNZ1fITq/sc54FZpTtFvHR+gJwFGiWTGKs07bwYzzZFdF0sYeiFgZiEjaNkddkAzuM4F4lgOmCm69YUw==} 116 | dependencies: 117 | '@rollup/pluginutils': 4.2.1 118 | '@webcomponents/custom-elements': 1.6.0 119 | acorn-walk: 8.3.2 120 | cheerio: 1.0.0-rc.12 121 | connect-injector: 0.4.4 122 | convert-source-map: 1.9.0 123 | debug: 4.3.5 124 | es-module-lexer: 0.10.5 125 | fast-glob: 3.3.2 126 | fs-extra: 10.1.0 127 | jsesc: 3.0.2 128 | magic-string: 0.26.7 129 | picocolors: 1.0.1 130 | react-refresh: 0.13.0 131 | rollup: 2.78.1 132 | rxjs: 7.5.7 133 | transitivePeerDependencies: 134 | - supports-color 135 | dev: true 136 | 137 | /@esbuild/aix-ppc64@0.20.2: 138 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} 139 | engines: {node: '>=12'} 140 | cpu: [ppc64] 141 | os: [aix] 142 | requiresBuild: true 143 | dev: true 144 | optional: true 145 | 146 | /@esbuild/android-arm64@0.20.2: 147 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} 148 | engines: {node: '>=12'} 149 | cpu: [arm64] 150 | os: [android] 151 | requiresBuild: true 152 | dev: true 153 | optional: true 154 | 155 | /@esbuild/android-arm@0.20.2: 156 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} 157 | engines: {node: '>=12'} 158 | cpu: [arm] 159 | os: [android] 160 | requiresBuild: true 161 | dev: true 162 | optional: true 163 | 164 | /@esbuild/android-x64@0.20.2: 165 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} 166 | engines: {node: '>=12'} 167 | cpu: [x64] 168 | os: [android] 169 | requiresBuild: true 170 | dev: true 171 | optional: true 172 | 173 | /@esbuild/darwin-arm64@0.20.2: 174 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} 175 | engines: {node: '>=12'} 176 | cpu: [arm64] 177 | os: [darwin] 178 | requiresBuild: true 179 | dev: true 180 | optional: true 181 | 182 | /@esbuild/darwin-x64@0.20.2: 183 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} 184 | engines: {node: '>=12'} 185 | cpu: [x64] 186 | os: [darwin] 187 | requiresBuild: true 188 | dev: true 189 | optional: true 190 | 191 | /@esbuild/freebsd-arm64@0.20.2: 192 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} 193 | engines: {node: '>=12'} 194 | cpu: [arm64] 195 | os: [freebsd] 196 | requiresBuild: true 197 | dev: true 198 | optional: true 199 | 200 | /@esbuild/freebsd-x64@0.20.2: 201 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} 202 | engines: {node: '>=12'} 203 | cpu: [x64] 204 | os: [freebsd] 205 | requiresBuild: true 206 | dev: true 207 | optional: true 208 | 209 | /@esbuild/linux-arm64@0.20.2: 210 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} 211 | engines: {node: '>=12'} 212 | cpu: [arm64] 213 | os: [linux] 214 | requiresBuild: true 215 | dev: true 216 | optional: true 217 | 218 | /@esbuild/linux-arm@0.20.2: 219 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 220 | engines: {node: '>=12'} 221 | cpu: [arm] 222 | os: [linux] 223 | requiresBuild: true 224 | dev: true 225 | optional: true 226 | 227 | /@esbuild/linux-ia32@0.20.2: 228 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} 229 | engines: {node: '>=12'} 230 | cpu: [ia32] 231 | os: [linux] 232 | requiresBuild: true 233 | dev: true 234 | optional: true 235 | 236 | /@esbuild/linux-loong64@0.20.2: 237 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} 238 | engines: {node: '>=12'} 239 | cpu: [loong64] 240 | os: [linux] 241 | requiresBuild: true 242 | dev: true 243 | optional: true 244 | 245 | /@esbuild/linux-mips64el@0.20.2: 246 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} 247 | engines: {node: '>=12'} 248 | cpu: [mips64el] 249 | os: [linux] 250 | requiresBuild: true 251 | dev: true 252 | optional: true 253 | 254 | /@esbuild/linux-ppc64@0.20.2: 255 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} 256 | engines: {node: '>=12'} 257 | cpu: [ppc64] 258 | os: [linux] 259 | requiresBuild: true 260 | dev: true 261 | optional: true 262 | 263 | /@esbuild/linux-riscv64@0.20.2: 264 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} 265 | engines: {node: '>=12'} 266 | cpu: [riscv64] 267 | os: [linux] 268 | requiresBuild: true 269 | dev: true 270 | optional: true 271 | 272 | /@esbuild/linux-s390x@0.20.2: 273 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} 274 | engines: {node: '>=12'} 275 | cpu: [s390x] 276 | os: [linux] 277 | requiresBuild: true 278 | dev: true 279 | optional: true 280 | 281 | /@esbuild/linux-x64@0.20.2: 282 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} 283 | engines: {node: '>=12'} 284 | cpu: [x64] 285 | os: [linux] 286 | requiresBuild: true 287 | dev: true 288 | optional: true 289 | 290 | /@esbuild/netbsd-x64@0.20.2: 291 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} 292 | engines: {node: '>=12'} 293 | cpu: [x64] 294 | os: [netbsd] 295 | requiresBuild: true 296 | dev: true 297 | optional: true 298 | 299 | /@esbuild/openbsd-x64@0.20.2: 300 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} 301 | engines: {node: '>=12'} 302 | cpu: [x64] 303 | os: [openbsd] 304 | requiresBuild: true 305 | dev: true 306 | optional: true 307 | 308 | /@esbuild/sunos-x64@0.20.2: 309 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} 310 | engines: {node: '>=12'} 311 | cpu: [x64] 312 | os: [sunos] 313 | requiresBuild: true 314 | dev: true 315 | optional: true 316 | 317 | /@esbuild/win32-arm64@0.20.2: 318 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} 319 | engines: {node: '>=12'} 320 | cpu: [arm64] 321 | os: [win32] 322 | requiresBuild: true 323 | dev: true 324 | optional: true 325 | 326 | /@esbuild/win32-ia32@0.20.2: 327 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} 328 | engines: {node: '>=12'} 329 | cpu: [ia32] 330 | os: [win32] 331 | requiresBuild: true 332 | dev: true 333 | optional: true 334 | 335 | /@esbuild/win32-x64@0.20.2: 336 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} 337 | engines: {node: '>=12'} 338 | cpu: [x64] 339 | os: [win32] 340 | requiresBuild: true 341 | dev: true 342 | optional: true 343 | 344 | /@eslint-community/eslint-utils@4.4.0(eslint@9.4.0): 345 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 346 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 347 | peerDependencies: 348 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 349 | dependencies: 350 | eslint: 9.4.0 351 | eslint-visitor-keys: 3.4.3 352 | dev: true 353 | 354 | /@eslint-community/regexpp@4.10.0: 355 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 356 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 357 | dev: true 358 | 359 | /@eslint/config-array@0.15.1: 360 | resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==} 361 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 362 | dependencies: 363 | '@eslint/object-schema': 2.1.3 364 | debug: 4.3.5 365 | minimatch: 3.1.2 366 | transitivePeerDependencies: 367 | - supports-color 368 | dev: true 369 | 370 | /@eslint/eslintrc@3.1.0: 371 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 372 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 373 | dependencies: 374 | ajv: 6.12.6 375 | debug: 4.3.5 376 | espree: 10.0.1 377 | globals: 14.0.0 378 | ignore: 5.3.1 379 | import-fresh: 3.3.0 380 | js-yaml: 4.1.0 381 | minimatch: 3.1.2 382 | strip-json-comments: 3.1.1 383 | transitivePeerDependencies: 384 | - supports-color 385 | dev: true 386 | 387 | /@eslint/js@9.4.0: 388 | resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==} 389 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 390 | dev: true 391 | 392 | /@eslint/object-schema@2.1.3: 393 | resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==} 394 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 395 | dev: true 396 | 397 | /@humanwhocodes/module-importer@1.0.1: 398 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 399 | engines: {node: '>=12.22'} 400 | dev: true 401 | 402 | /@humanwhocodes/retry@0.3.0: 403 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 404 | engines: {node: '>=18.18'} 405 | dev: true 406 | 407 | /@isaacs/cliui@8.0.2: 408 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 409 | engines: {node: '>=12'} 410 | dependencies: 411 | string-width: 5.1.2 412 | string-width-cjs: /string-width@4.2.3 413 | strip-ansi: 7.1.0 414 | strip-ansi-cjs: /strip-ansi@6.0.1 415 | wrap-ansi: 8.1.0 416 | wrap-ansi-cjs: /wrap-ansi@7.0.0 417 | dev: true 418 | 419 | /@jridgewell/gen-mapping@0.3.5: 420 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 421 | engines: {node: '>=6.0.0'} 422 | dependencies: 423 | '@jridgewell/set-array': 1.2.1 424 | '@jridgewell/sourcemap-codec': 1.4.15 425 | '@jridgewell/trace-mapping': 0.3.25 426 | dev: true 427 | 428 | /@jridgewell/resolve-uri@3.1.2: 429 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 430 | engines: {node: '>=6.0.0'} 431 | dev: true 432 | 433 | /@jridgewell/set-array@1.2.1: 434 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 435 | engines: {node: '>=6.0.0'} 436 | dev: true 437 | 438 | /@jridgewell/source-map@0.3.6: 439 | resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} 440 | dependencies: 441 | '@jridgewell/gen-mapping': 0.3.5 442 | '@jridgewell/trace-mapping': 0.3.25 443 | dev: true 444 | 445 | /@jridgewell/sourcemap-codec@1.4.15: 446 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 447 | 448 | /@jridgewell/trace-mapping@0.3.25: 449 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 450 | dependencies: 451 | '@jridgewell/resolve-uri': 3.1.2 452 | '@jridgewell/sourcemap-codec': 1.4.15 453 | dev: true 454 | 455 | /@nodelib/fs.scandir@2.1.5: 456 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 457 | engines: {node: '>= 8'} 458 | dependencies: 459 | '@nodelib/fs.stat': 2.0.5 460 | run-parallel: 1.2.0 461 | dev: true 462 | 463 | /@nodelib/fs.stat@2.0.5: 464 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 465 | engines: {node: '>= 8'} 466 | dev: true 467 | 468 | /@nodelib/fs.walk@1.2.8: 469 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 470 | engines: {node: '>= 8'} 471 | dependencies: 472 | '@nodelib/fs.scandir': 2.1.5 473 | fastq: 1.17.1 474 | dev: true 475 | 476 | /@pkgjs/parseargs@0.11.0: 477 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 478 | engines: {node: '>=14'} 479 | requiresBuild: true 480 | dev: true 481 | optional: true 482 | 483 | /@rollup/pluginutils@4.2.1: 484 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 485 | engines: {node: '>= 8.0.0'} 486 | dependencies: 487 | estree-walker: 2.0.2 488 | picomatch: 2.3.1 489 | dev: true 490 | 491 | /@rollup/pluginutils@5.1.0: 492 | resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} 493 | engines: {node: '>=14.0.0'} 494 | peerDependencies: 495 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 496 | peerDependenciesMeta: 497 | rollup: 498 | optional: true 499 | dependencies: 500 | '@types/estree': 1.0.5 501 | estree-walker: 2.0.2 502 | picomatch: 2.3.1 503 | dev: true 504 | 505 | /@rollup/rollup-android-arm-eabi@4.18.0: 506 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 507 | cpu: [arm] 508 | os: [android] 509 | requiresBuild: true 510 | dev: true 511 | optional: true 512 | 513 | /@rollup/rollup-android-arm64@4.18.0: 514 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 515 | cpu: [arm64] 516 | os: [android] 517 | requiresBuild: true 518 | dev: true 519 | optional: true 520 | 521 | /@rollup/rollup-darwin-arm64@4.18.0: 522 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 523 | cpu: [arm64] 524 | os: [darwin] 525 | requiresBuild: true 526 | dev: true 527 | optional: true 528 | 529 | /@rollup/rollup-darwin-x64@4.18.0: 530 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 531 | cpu: [x64] 532 | os: [darwin] 533 | requiresBuild: true 534 | dev: true 535 | optional: true 536 | 537 | /@rollup/rollup-linux-arm-gnueabihf@4.18.0: 538 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 539 | cpu: [arm] 540 | os: [linux] 541 | requiresBuild: true 542 | dev: true 543 | optional: true 544 | 545 | /@rollup/rollup-linux-arm-musleabihf@4.18.0: 546 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 547 | cpu: [arm] 548 | os: [linux] 549 | requiresBuild: true 550 | dev: true 551 | optional: true 552 | 553 | /@rollup/rollup-linux-arm64-gnu@4.18.0: 554 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 555 | cpu: [arm64] 556 | os: [linux] 557 | requiresBuild: true 558 | dev: true 559 | optional: true 560 | 561 | /@rollup/rollup-linux-arm64-musl@4.18.0: 562 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 563 | cpu: [arm64] 564 | os: [linux] 565 | requiresBuild: true 566 | dev: true 567 | optional: true 568 | 569 | /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: 570 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 571 | cpu: [ppc64] 572 | os: [linux] 573 | requiresBuild: true 574 | dev: true 575 | optional: true 576 | 577 | /@rollup/rollup-linux-riscv64-gnu@4.18.0: 578 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 579 | cpu: [riscv64] 580 | os: [linux] 581 | requiresBuild: true 582 | dev: true 583 | optional: true 584 | 585 | /@rollup/rollup-linux-s390x-gnu@4.18.0: 586 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 587 | cpu: [s390x] 588 | os: [linux] 589 | requiresBuild: true 590 | dev: true 591 | optional: true 592 | 593 | /@rollup/rollup-linux-x64-gnu@4.18.0: 594 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 595 | cpu: [x64] 596 | os: [linux] 597 | requiresBuild: true 598 | dev: true 599 | optional: true 600 | 601 | /@rollup/rollup-linux-x64-musl@4.18.0: 602 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 603 | cpu: [x64] 604 | os: [linux] 605 | requiresBuild: true 606 | dev: true 607 | optional: true 608 | 609 | /@rollup/rollup-win32-arm64-msvc@4.18.0: 610 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 611 | cpu: [arm64] 612 | os: [win32] 613 | requiresBuild: true 614 | dev: true 615 | optional: true 616 | 617 | /@rollup/rollup-win32-ia32-msvc@4.18.0: 618 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 619 | cpu: [ia32] 620 | os: [win32] 621 | requiresBuild: true 622 | dev: true 623 | optional: true 624 | 625 | /@rollup/rollup-win32-x64-msvc@4.18.0: 626 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 627 | cpu: [x64] 628 | os: [win32] 629 | requiresBuild: true 630 | dev: true 631 | optional: true 632 | 633 | /@trysound/sax@0.2.0: 634 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 635 | engines: {node: '>=10.13.0'} 636 | dev: true 637 | 638 | /@types/estree@1.0.5: 639 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 640 | dev: true 641 | 642 | /@types/json5@0.0.29: 643 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 644 | dev: true 645 | 646 | /@types/lodash@4.17.4: 647 | resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} 648 | dev: true 649 | 650 | /@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0)(eslint@9.4.0)(typescript@5.4.5): 651 | resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==} 652 | engines: {node: ^18.18.0 || >=20.0.0} 653 | peerDependencies: 654 | '@typescript-eslint/parser': ^7.0.0 655 | eslint: ^8.56.0 656 | typescript: '*' 657 | peerDependenciesMeta: 658 | typescript: 659 | optional: true 660 | dependencies: 661 | '@eslint-community/regexpp': 4.10.0 662 | '@typescript-eslint/parser': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 663 | '@typescript-eslint/scope-manager': 7.11.0 664 | '@typescript-eslint/type-utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 665 | '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 666 | '@typescript-eslint/visitor-keys': 7.11.0 667 | eslint: 9.4.0 668 | graphemer: 1.4.0 669 | ignore: 5.3.1 670 | natural-compare: 1.4.0 671 | ts-api-utils: 1.3.0(typescript@5.4.5) 672 | typescript: 5.4.5 673 | transitivePeerDependencies: 674 | - supports-color 675 | dev: true 676 | 677 | /@typescript-eslint/parser@7.11.0(eslint@9.4.0)(typescript@5.4.5): 678 | resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==} 679 | engines: {node: ^18.18.0 || >=20.0.0} 680 | peerDependencies: 681 | eslint: ^8.56.0 682 | typescript: '*' 683 | peerDependenciesMeta: 684 | typescript: 685 | optional: true 686 | dependencies: 687 | '@typescript-eslint/scope-manager': 7.11.0 688 | '@typescript-eslint/types': 7.11.0 689 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) 690 | '@typescript-eslint/visitor-keys': 7.11.0 691 | debug: 4.3.5 692 | eslint: 9.4.0 693 | typescript: 5.4.5 694 | transitivePeerDependencies: 695 | - supports-color 696 | dev: true 697 | 698 | /@typescript-eslint/scope-manager@7.11.0: 699 | resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==} 700 | engines: {node: ^18.18.0 || >=20.0.0} 701 | dependencies: 702 | '@typescript-eslint/types': 7.11.0 703 | '@typescript-eslint/visitor-keys': 7.11.0 704 | dev: true 705 | 706 | /@typescript-eslint/type-utils@7.11.0(eslint@9.4.0)(typescript@5.4.5): 707 | resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} 708 | engines: {node: ^18.18.0 || >=20.0.0} 709 | peerDependencies: 710 | eslint: ^8.56.0 711 | typescript: '*' 712 | peerDependenciesMeta: 713 | typescript: 714 | optional: true 715 | dependencies: 716 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) 717 | '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 718 | debug: 4.3.5 719 | eslint: 9.4.0 720 | ts-api-utils: 1.3.0(typescript@5.4.5) 721 | typescript: 5.4.5 722 | transitivePeerDependencies: 723 | - supports-color 724 | dev: true 725 | 726 | /@typescript-eslint/types@7.11.0: 727 | resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==} 728 | engines: {node: ^18.18.0 || >=20.0.0} 729 | dev: true 730 | 731 | /@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5): 732 | resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==} 733 | engines: {node: ^18.18.0 || >=20.0.0} 734 | peerDependencies: 735 | typescript: '*' 736 | peerDependenciesMeta: 737 | typescript: 738 | optional: true 739 | dependencies: 740 | '@typescript-eslint/types': 7.11.0 741 | '@typescript-eslint/visitor-keys': 7.11.0 742 | debug: 4.3.5 743 | globby: 11.1.0 744 | is-glob: 4.0.3 745 | minimatch: 9.0.4 746 | semver: 7.6.2 747 | ts-api-utils: 1.3.0(typescript@5.4.5) 748 | typescript: 5.4.5 749 | transitivePeerDependencies: 750 | - supports-color 751 | dev: true 752 | 753 | /@typescript-eslint/utils@7.11.0(eslint@9.4.0)(typescript@5.4.5): 754 | resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==} 755 | engines: {node: ^18.18.0 || >=20.0.0} 756 | peerDependencies: 757 | eslint: ^8.56.0 758 | dependencies: 759 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) 760 | '@typescript-eslint/scope-manager': 7.11.0 761 | '@typescript-eslint/types': 7.11.0 762 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) 763 | eslint: 9.4.0 764 | transitivePeerDependencies: 765 | - supports-color 766 | - typescript 767 | dev: true 768 | 769 | /@typescript-eslint/visitor-keys@7.11.0: 770 | resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==} 771 | engines: {node: ^18.18.0 || >=20.0.0} 772 | dependencies: 773 | '@typescript-eslint/types': 7.11.0 774 | eslint-visitor-keys: 3.4.3 775 | dev: true 776 | 777 | /@vitejs/plugin-vue@5.0.5(vite@5.2.12)(vue@3.4.27): 778 | resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} 779 | engines: {node: ^18.0.0 || >=20.0.0} 780 | peerDependencies: 781 | vite: ^5.0.0 782 | vue: ^3.2.25 783 | dependencies: 784 | vite: 5.2.12(lightningcss@1.25.1)(sass@1.77.4)(terser@5.31.0) 785 | vue: 3.4.27(typescript@5.4.5) 786 | dev: true 787 | 788 | /@vue/compiler-core@3.4.27: 789 | resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} 790 | dependencies: 791 | '@babel/parser': 7.24.6 792 | '@vue/shared': 3.4.27 793 | entities: 4.5.0 794 | estree-walker: 2.0.2 795 | source-map-js: 1.2.0 796 | 797 | /@vue/compiler-dom@3.4.27: 798 | resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} 799 | dependencies: 800 | '@vue/compiler-core': 3.4.27 801 | '@vue/shared': 3.4.27 802 | 803 | /@vue/compiler-sfc@3.4.27: 804 | resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} 805 | dependencies: 806 | '@babel/parser': 7.24.6 807 | '@vue/compiler-core': 3.4.27 808 | '@vue/compiler-dom': 3.4.27 809 | '@vue/compiler-ssr': 3.4.27 810 | '@vue/shared': 3.4.27 811 | estree-walker: 2.0.2 812 | magic-string: 0.30.10 813 | postcss: 8.4.38 814 | source-map-js: 1.2.0 815 | 816 | /@vue/compiler-ssr@3.4.27: 817 | resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} 818 | dependencies: 819 | '@vue/compiler-dom': 3.4.27 820 | '@vue/shared': 3.4.27 821 | 822 | /@vue/reactivity@3.4.27: 823 | resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} 824 | dependencies: 825 | '@vue/shared': 3.4.27 826 | 827 | /@vue/runtime-core@3.4.27: 828 | resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} 829 | dependencies: 830 | '@vue/reactivity': 3.4.27 831 | '@vue/shared': 3.4.27 832 | 833 | /@vue/runtime-dom@3.4.27: 834 | resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} 835 | dependencies: 836 | '@vue/runtime-core': 3.4.27 837 | '@vue/shared': 3.4.27 838 | csstype: 3.1.3 839 | 840 | /@vue/server-renderer@3.4.27(vue@3.4.27): 841 | resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} 842 | peerDependencies: 843 | vue: 3.4.27 844 | dependencies: 845 | '@vue/compiler-ssr': 3.4.27 846 | '@vue/shared': 3.4.27 847 | vue: 3.4.27(typescript@5.4.5) 848 | 849 | /@vue/shared@3.4.27: 850 | resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} 851 | 852 | /@webcomponents/custom-elements@1.6.0: 853 | resolution: {integrity: sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==} 854 | dev: true 855 | 856 | /acorn-jsx@5.3.2(acorn@8.11.3): 857 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 858 | peerDependencies: 859 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 860 | dependencies: 861 | acorn: 8.11.3 862 | dev: true 863 | 864 | /acorn-walk@8.3.2: 865 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 866 | engines: {node: '>=0.4.0'} 867 | dev: true 868 | 869 | /acorn@8.11.3: 870 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 871 | engines: {node: '>=0.4.0'} 872 | hasBin: true 873 | dev: true 874 | 875 | /ajv@6.12.6: 876 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 877 | dependencies: 878 | fast-deep-equal: 3.1.3 879 | fast-json-stable-stringify: 2.1.0 880 | json-schema-traverse: 0.4.1 881 | uri-js: 4.4.1 882 | dev: true 883 | 884 | /ansi-regex@5.0.1: 885 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 886 | engines: {node: '>=8'} 887 | dev: true 888 | 889 | /ansi-regex@6.0.1: 890 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 891 | engines: {node: '>=12'} 892 | dev: true 893 | 894 | /ansi-styles@4.3.0: 895 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 896 | engines: {node: '>=8'} 897 | dependencies: 898 | color-convert: 2.0.1 899 | dev: true 900 | 901 | /ansi-styles@6.2.1: 902 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 903 | engines: {node: '>=12'} 904 | dev: true 905 | 906 | /any-promise@1.3.0: 907 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 908 | dev: true 909 | 910 | /anymatch@3.1.3: 911 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 912 | engines: {node: '>= 8'} 913 | dependencies: 914 | normalize-path: 3.0.0 915 | picomatch: 2.3.1 916 | dev: true 917 | 918 | /arg@5.0.2: 919 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 920 | dev: true 921 | 922 | /argparse@2.0.1: 923 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 924 | dev: true 925 | 926 | /array-buffer-byte-length@1.0.1: 927 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 928 | engines: {node: '>= 0.4'} 929 | dependencies: 930 | call-bind: 1.0.7 931 | is-array-buffer: 3.0.4 932 | dev: true 933 | 934 | /array-includes@3.1.8: 935 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 936 | engines: {node: '>= 0.4'} 937 | dependencies: 938 | call-bind: 1.0.7 939 | define-properties: 1.2.1 940 | es-abstract: 1.23.3 941 | es-object-atoms: 1.0.0 942 | get-intrinsic: 1.2.4 943 | is-string: 1.0.7 944 | dev: true 945 | 946 | /array-union@2.1.0: 947 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 948 | engines: {node: '>=8'} 949 | dev: true 950 | 951 | /array.prototype.findlastindex@1.2.5: 952 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} 953 | engines: {node: '>= 0.4'} 954 | dependencies: 955 | call-bind: 1.0.7 956 | define-properties: 1.2.1 957 | es-abstract: 1.23.3 958 | es-errors: 1.3.0 959 | es-object-atoms: 1.0.0 960 | es-shim-unscopables: 1.0.2 961 | dev: true 962 | 963 | /array.prototype.flat@1.3.2: 964 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 965 | engines: {node: '>= 0.4'} 966 | dependencies: 967 | call-bind: 1.0.7 968 | define-properties: 1.2.1 969 | es-abstract: 1.23.3 970 | es-shim-unscopables: 1.0.2 971 | dev: true 972 | 973 | /array.prototype.flatmap@1.3.2: 974 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 975 | engines: {node: '>= 0.4'} 976 | dependencies: 977 | call-bind: 1.0.7 978 | define-properties: 1.2.1 979 | es-abstract: 1.23.3 980 | es-shim-unscopables: 1.0.2 981 | dev: true 982 | 983 | /arraybuffer.prototype.slice@1.0.3: 984 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 985 | engines: {node: '>= 0.4'} 986 | dependencies: 987 | array-buffer-byte-length: 1.0.1 988 | call-bind: 1.0.7 989 | define-properties: 1.2.1 990 | es-abstract: 1.23.3 991 | es-errors: 1.3.0 992 | get-intrinsic: 1.2.4 993 | is-array-buffer: 3.0.4 994 | is-shared-array-buffer: 1.0.3 995 | dev: true 996 | 997 | /autoprefixer@10.4.19(postcss@8.4.38): 998 | resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} 999 | engines: {node: ^10 || ^12 || >=14} 1000 | hasBin: true 1001 | peerDependencies: 1002 | postcss: ^8.1.0 1003 | dependencies: 1004 | browserslist: 4.23.0 1005 | caniuse-lite: 1.0.30001625 1006 | fraction.js: 4.3.7 1007 | normalize-range: 0.1.2 1008 | picocolors: 1.0.1 1009 | postcss: 8.4.38 1010 | postcss-value-parser: 4.2.0 1011 | dev: true 1012 | 1013 | /available-typed-arrays@1.0.7: 1014 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 1015 | engines: {node: '>= 0.4'} 1016 | dependencies: 1017 | possible-typed-array-names: 1.0.0 1018 | dev: true 1019 | 1020 | /balanced-match@1.0.2: 1021 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1022 | dev: true 1023 | 1024 | /binary-extensions@2.3.0: 1025 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 1026 | engines: {node: '>=8'} 1027 | dev: true 1028 | 1029 | /boolbase@1.0.0: 1030 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 1031 | dev: true 1032 | 1033 | /brace-expansion@1.1.11: 1034 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1035 | dependencies: 1036 | balanced-match: 1.0.2 1037 | concat-map: 0.0.1 1038 | dev: true 1039 | 1040 | /brace-expansion@2.0.1: 1041 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1042 | dependencies: 1043 | balanced-match: 1.0.2 1044 | dev: true 1045 | 1046 | /braces@3.0.3: 1047 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1048 | engines: {node: '>=8'} 1049 | dependencies: 1050 | fill-range: 7.1.1 1051 | dev: true 1052 | 1053 | /browserslist@4.23.0: 1054 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 1055 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1056 | hasBin: true 1057 | dependencies: 1058 | caniuse-lite: 1.0.30001625 1059 | electron-to-chromium: 1.4.788 1060 | node-releases: 2.0.14 1061 | update-browserslist-db: 1.0.16(browserslist@4.23.0) 1062 | dev: true 1063 | 1064 | /buffer-from@1.1.2: 1065 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1066 | dev: true 1067 | 1068 | /builtin-modules@3.3.0: 1069 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 1070 | engines: {node: '>=6'} 1071 | dev: true 1072 | 1073 | /builtins@5.1.0: 1074 | resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} 1075 | dependencies: 1076 | semver: 7.6.2 1077 | dev: true 1078 | 1079 | /call-bind@1.0.7: 1080 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 1081 | engines: {node: '>= 0.4'} 1082 | dependencies: 1083 | es-define-property: 1.0.0 1084 | es-errors: 1.3.0 1085 | function-bind: 1.1.2 1086 | get-intrinsic: 1.2.4 1087 | set-function-length: 1.2.2 1088 | dev: true 1089 | 1090 | /callsites@3.1.0: 1091 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1092 | engines: {node: '>=6'} 1093 | dev: true 1094 | 1095 | /camel-case@4.1.2: 1096 | resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} 1097 | dependencies: 1098 | pascal-case: 3.1.2 1099 | tslib: 2.6.2 1100 | dev: true 1101 | 1102 | /camelcase-css@2.0.1: 1103 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1104 | engines: {node: '>= 6'} 1105 | dev: true 1106 | 1107 | /caniuse-lite@1.0.30001625: 1108 | resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==} 1109 | dev: true 1110 | 1111 | /chalk@4.1.2: 1112 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1113 | engines: {node: '>=10'} 1114 | dependencies: 1115 | ansi-styles: 4.3.0 1116 | supports-color: 7.2.0 1117 | dev: true 1118 | 1119 | /cheerio-select@2.1.0: 1120 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 1121 | dependencies: 1122 | boolbase: 1.0.0 1123 | css-select: 5.1.0 1124 | css-what: 6.1.0 1125 | domelementtype: 2.3.0 1126 | domhandler: 5.0.3 1127 | domutils: 3.1.0 1128 | dev: true 1129 | 1130 | /cheerio@1.0.0-rc.12: 1131 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} 1132 | engines: {node: '>= 6'} 1133 | dependencies: 1134 | cheerio-select: 2.1.0 1135 | dom-serializer: 2.0.0 1136 | domhandler: 5.0.3 1137 | domutils: 3.1.0 1138 | htmlparser2: 8.0.2 1139 | parse5: 7.1.2 1140 | parse5-htmlparser2-tree-adapter: 7.0.0 1141 | dev: true 1142 | 1143 | /chokidar@3.6.0: 1144 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 1145 | engines: {node: '>= 8.10.0'} 1146 | dependencies: 1147 | anymatch: 3.1.3 1148 | braces: 3.0.3 1149 | glob-parent: 5.1.2 1150 | is-binary-path: 2.1.0 1151 | is-glob: 4.0.3 1152 | normalize-path: 3.0.0 1153 | readdirp: 3.6.0 1154 | optionalDependencies: 1155 | fsevents: 2.3.3 1156 | dev: true 1157 | 1158 | /chrome-types@0.1.286: 1159 | resolution: {integrity: sha512-2omCmpBRXvHdymZ+moqEFLjfMCayJIfC34RsZPzCW5D5CgvrpomZSvW8aEgOv6Jvn2v1UlpjK/4m73LaMFRUeQ==} 1160 | dev: true 1161 | 1162 | /clean-css@5.3.3: 1163 | resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} 1164 | engines: {node: '>= 10.0'} 1165 | dependencies: 1166 | source-map: 0.6.1 1167 | dev: true 1168 | 1169 | /color-convert@2.0.1: 1170 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1171 | engines: {node: '>=7.0.0'} 1172 | dependencies: 1173 | color-name: 1.1.4 1174 | dev: true 1175 | 1176 | /color-name@1.1.4: 1177 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1178 | dev: true 1179 | 1180 | /commander@2.20.3: 1181 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1182 | dev: true 1183 | 1184 | /commander@4.1.1: 1185 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1186 | engines: {node: '>= 6'} 1187 | dev: true 1188 | 1189 | /commander@7.2.0: 1190 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1191 | engines: {node: '>= 10'} 1192 | dev: true 1193 | 1194 | /commander@8.3.0: 1195 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1196 | engines: {node: '>= 12'} 1197 | dev: true 1198 | 1199 | /concat-map@0.0.1: 1200 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1201 | dev: true 1202 | 1203 | /confbox@0.1.7: 1204 | resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} 1205 | dev: true 1206 | 1207 | /connect-injector@0.4.4: 1208 | resolution: {integrity: sha512-hdBG8nXop42y2gWCqOV8y1O3uVk4cIU+SoxLCPyCUKRImyPiScoNiSulpHjoktRU1BdI0UzoUdxUa87thrcmHw==} 1209 | engines: {node: '>= 0.8.0'} 1210 | dependencies: 1211 | debug: 2.6.9 1212 | q: 1.5.1 1213 | stream-buffers: 0.2.6 1214 | uberproto: 1.2.0 1215 | transitivePeerDependencies: 1216 | - supports-color 1217 | dev: true 1218 | 1219 | /convert-source-map@1.9.0: 1220 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1221 | dev: true 1222 | 1223 | /cross-spawn@7.0.3: 1224 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1225 | engines: {node: '>= 8'} 1226 | dependencies: 1227 | path-key: 3.1.1 1228 | shebang-command: 2.0.0 1229 | which: 2.0.2 1230 | dev: true 1231 | 1232 | /css-select@5.1.0: 1233 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 1234 | dependencies: 1235 | boolbase: 1.0.0 1236 | css-what: 6.1.0 1237 | domhandler: 5.0.3 1238 | domutils: 3.1.0 1239 | nth-check: 2.1.1 1240 | dev: true 1241 | 1242 | /css-tree@2.2.1: 1243 | resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} 1244 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1245 | dependencies: 1246 | mdn-data: 2.0.28 1247 | source-map-js: 1.2.0 1248 | dev: true 1249 | 1250 | /css-tree@2.3.1: 1251 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 1252 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1253 | dependencies: 1254 | mdn-data: 2.0.30 1255 | source-map-js: 1.2.0 1256 | dev: true 1257 | 1258 | /css-what@6.1.0: 1259 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 1260 | engines: {node: '>= 6'} 1261 | dev: true 1262 | 1263 | /cssesc@3.0.0: 1264 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1265 | engines: {node: '>=4'} 1266 | hasBin: true 1267 | dev: true 1268 | 1269 | /csso@5.0.5: 1270 | resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} 1271 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1272 | dependencies: 1273 | css-tree: 2.2.1 1274 | dev: true 1275 | 1276 | /csstype@3.1.3: 1277 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1278 | 1279 | /data-view-buffer@1.0.1: 1280 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 1281 | engines: {node: '>= 0.4'} 1282 | dependencies: 1283 | call-bind: 1.0.7 1284 | es-errors: 1.3.0 1285 | is-data-view: 1.0.1 1286 | dev: true 1287 | 1288 | /data-view-byte-length@1.0.1: 1289 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 1290 | engines: {node: '>= 0.4'} 1291 | dependencies: 1292 | call-bind: 1.0.7 1293 | es-errors: 1.3.0 1294 | is-data-view: 1.0.1 1295 | dev: true 1296 | 1297 | /data-view-byte-offset@1.0.0: 1298 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 1299 | engines: {node: '>= 0.4'} 1300 | dependencies: 1301 | call-bind: 1.0.7 1302 | es-errors: 1.3.0 1303 | is-data-view: 1.0.1 1304 | dev: true 1305 | 1306 | /debug@2.6.9: 1307 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1308 | peerDependencies: 1309 | supports-color: '*' 1310 | peerDependenciesMeta: 1311 | supports-color: 1312 | optional: true 1313 | dependencies: 1314 | ms: 2.0.0 1315 | dev: true 1316 | 1317 | /debug@3.2.7: 1318 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1319 | peerDependencies: 1320 | supports-color: '*' 1321 | peerDependenciesMeta: 1322 | supports-color: 1323 | optional: true 1324 | dependencies: 1325 | ms: 2.1.3 1326 | dev: true 1327 | 1328 | /debug@4.3.5: 1329 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} 1330 | engines: {node: '>=6.0'} 1331 | peerDependencies: 1332 | supports-color: '*' 1333 | peerDependenciesMeta: 1334 | supports-color: 1335 | optional: true 1336 | dependencies: 1337 | ms: 2.1.2 1338 | dev: true 1339 | 1340 | /deep-is@0.1.4: 1341 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1342 | dev: true 1343 | 1344 | /define-data-property@1.1.4: 1345 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1346 | engines: {node: '>= 0.4'} 1347 | dependencies: 1348 | es-define-property: 1.0.0 1349 | es-errors: 1.3.0 1350 | gopd: 1.0.1 1351 | dev: true 1352 | 1353 | /define-properties@1.2.1: 1354 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1355 | engines: {node: '>= 0.4'} 1356 | dependencies: 1357 | define-data-property: 1.1.4 1358 | has-property-descriptors: 1.0.2 1359 | object-keys: 1.1.1 1360 | dev: true 1361 | 1362 | /detect-libc@1.0.3: 1363 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1364 | engines: {node: '>=0.10'} 1365 | hasBin: true 1366 | dev: true 1367 | 1368 | /didyoumean@1.2.2: 1369 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1370 | dev: true 1371 | 1372 | /dir-glob@3.0.1: 1373 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1374 | engines: {node: '>=8'} 1375 | dependencies: 1376 | path-type: 4.0.0 1377 | dev: true 1378 | 1379 | /dlv@1.1.3: 1380 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1381 | dev: true 1382 | 1383 | /doctrine@2.1.0: 1384 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1385 | engines: {node: '>=0.10.0'} 1386 | dependencies: 1387 | esutils: 2.0.3 1388 | dev: true 1389 | 1390 | /dom-serializer@2.0.0: 1391 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1392 | dependencies: 1393 | domelementtype: 2.3.0 1394 | domhandler: 5.0.3 1395 | entities: 4.5.0 1396 | dev: true 1397 | 1398 | /domelementtype@2.3.0: 1399 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1400 | dev: true 1401 | 1402 | /domhandler@5.0.3: 1403 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1404 | engines: {node: '>= 4'} 1405 | dependencies: 1406 | domelementtype: 2.3.0 1407 | dev: true 1408 | 1409 | /domutils@3.1.0: 1410 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 1411 | dependencies: 1412 | dom-serializer: 2.0.0 1413 | domelementtype: 2.3.0 1414 | domhandler: 5.0.3 1415 | dev: true 1416 | 1417 | /dot-case@3.0.4: 1418 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} 1419 | dependencies: 1420 | no-case: 3.0.4 1421 | tslib: 2.6.2 1422 | dev: true 1423 | 1424 | /eastasianwidth@0.2.0: 1425 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1426 | dev: true 1427 | 1428 | /electron-to-chromium@1.4.788: 1429 | resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} 1430 | dev: true 1431 | 1432 | /emoji-regex@8.0.0: 1433 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1434 | dev: true 1435 | 1436 | /emoji-regex@9.2.2: 1437 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1438 | dev: true 1439 | 1440 | /entities@4.5.0: 1441 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1442 | engines: {node: '>=0.12'} 1443 | 1444 | /es-abstract@1.23.3: 1445 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} 1446 | engines: {node: '>= 0.4'} 1447 | dependencies: 1448 | array-buffer-byte-length: 1.0.1 1449 | arraybuffer.prototype.slice: 1.0.3 1450 | available-typed-arrays: 1.0.7 1451 | call-bind: 1.0.7 1452 | data-view-buffer: 1.0.1 1453 | data-view-byte-length: 1.0.1 1454 | data-view-byte-offset: 1.0.0 1455 | es-define-property: 1.0.0 1456 | es-errors: 1.3.0 1457 | es-object-atoms: 1.0.0 1458 | es-set-tostringtag: 2.0.3 1459 | es-to-primitive: 1.2.1 1460 | function.prototype.name: 1.1.6 1461 | get-intrinsic: 1.2.4 1462 | get-symbol-description: 1.0.2 1463 | globalthis: 1.0.4 1464 | gopd: 1.0.1 1465 | has-property-descriptors: 1.0.2 1466 | has-proto: 1.0.3 1467 | has-symbols: 1.0.3 1468 | hasown: 2.0.2 1469 | internal-slot: 1.0.7 1470 | is-array-buffer: 3.0.4 1471 | is-callable: 1.2.7 1472 | is-data-view: 1.0.1 1473 | is-negative-zero: 2.0.3 1474 | is-regex: 1.1.4 1475 | is-shared-array-buffer: 1.0.3 1476 | is-string: 1.0.7 1477 | is-typed-array: 1.1.13 1478 | is-weakref: 1.0.2 1479 | object-inspect: 1.13.1 1480 | object-keys: 1.1.1 1481 | object.assign: 4.1.5 1482 | regexp.prototype.flags: 1.5.2 1483 | safe-array-concat: 1.1.2 1484 | safe-regex-test: 1.0.3 1485 | string.prototype.trim: 1.2.9 1486 | string.prototype.trimend: 1.0.8 1487 | string.prototype.trimstart: 1.0.8 1488 | typed-array-buffer: 1.0.2 1489 | typed-array-byte-length: 1.0.1 1490 | typed-array-byte-offset: 1.0.2 1491 | typed-array-length: 1.0.6 1492 | unbox-primitive: 1.0.2 1493 | which-typed-array: 1.1.15 1494 | dev: true 1495 | 1496 | /es-define-property@1.0.0: 1497 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 1498 | engines: {node: '>= 0.4'} 1499 | dependencies: 1500 | get-intrinsic: 1.2.4 1501 | dev: true 1502 | 1503 | /es-errors@1.3.0: 1504 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1505 | engines: {node: '>= 0.4'} 1506 | dev: true 1507 | 1508 | /es-module-lexer@0.10.5: 1509 | resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} 1510 | dev: true 1511 | 1512 | /es-object-atoms@1.0.0: 1513 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 1514 | engines: {node: '>= 0.4'} 1515 | dependencies: 1516 | es-errors: 1.3.0 1517 | dev: true 1518 | 1519 | /es-set-tostringtag@2.0.3: 1520 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 1521 | engines: {node: '>= 0.4'} 1522 | dependencies: 1523 | get-intrinsic: 1.2.4 1524 | has-tostringtag: 1.0.2 1525 | hasown: 2.0.2 1526 | dev: true 1527 | 1528 | /es-shim-unscopables@1.0.2: 1529 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1530 | dependencies: 1531 | hasown: 2.0.2 1532 | dev: true 1533 | 1534 | /es-to-primitive@1.2.1: 1535 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1536 | engines: {node: '>= 0.4'} 1537 | dependencies: 1538 | is-callable: 1.2.7 1539 | is-date-object: 1.0.5 1540 | is-symbol: 1.0.4 1541 | dev: true 1542 | 1543 | /esbuild@0.20.2: 1544 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} 1545 | engines: {node: '>=12'} 1546 | hasBin: true 1547 | requiresBuild: true 1548 | optionalDependencies: 1549 | '@esbuild/aix-ppc64': 0.20.2 1550 | '@esbuild/android-arm': 0.20.2 1551 | '@esbuild/android-arm64': 0.20.2 1552 | '@esbuild/android-x64': 0.20.2 1553 | '@esbuild/darwin-arm64': 0.20.2 1554 | '@esbuild/darwin-x64': 0.20.2 1555 | '@esbuild/freebsd-arm64': 0.20.2 1556 | '@esbuild/freebsd-x64': 0.20.2 1557 | '@esbuild/linux-arm': 0.20.2 1558 | '@esbuild/linux-arm64': 0.20.2 1559 | '@esbuild/linux-ia32': 0.20.2 1560 | '@esbuild/linux-loong64': 0.20.2 1561 | '@esbuild/linux-mips64el': 0.20.2 1562 | '@esbuild/linux-ppc64': 0.20.2 1563 | '@esbuild/linux-riscv64': 0.20.2 1564 | '@esbuild/linux-s390x': 0.20.2 1565 | '@esbuild/linux-x64': 0.20.2 1566 | '@esbuild/netbsd-x64': 0.20.2 1567 | '@esbuild/openbsd-x64': 0.20.2 1568 | '@esbuild/sunos-x64': 0.20.2 1569 | '@esbuild/win32-arm64': 0.20.2 1570 | '@esbuild/win32-ia32': 0.20.2 1571 | '@esbuild/win32-x64': 0.20.2 1572 | dev: true 1573 | 1574 | /escalade@3.1.2: 1575 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 1576 | engines: {node: '>=6'} 1577 | dev: true 1578 | 1579 | /escape-string-regexp@4.0.0: 1580 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1581 | engines: {node: '>=10'} 1582 | dev: true 1583 | 1584 | /eslint-compat-utils@0.5.1(eslint@9.4.0): 1585 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 1586 | engines: {node: '>=12'} 1587 | peerDependencies: 1588 | eslint: '>=6.0.0' 1589 | dependencies: 1590 | eslint: 9.4.0 1591 | semver: 7.6.2 1592 | dev: true 1593 | 1594 | /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.2.0)(eslint@9.4.0): 1595 | resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} 1596 | engines: {node: '>=12.0.0'} 1597 | peerDependencies: 1598 | eslint: ^8.0.1 1599 | eslint-plugin-import: ^2.25.2 1600 | eslint-plugin-n: '^15.0.0 || ^16.0.0 ' 1601 | eslint-plugin-promise: ^6.0.0 1602 | dependencies: 1603 | eslint: 9.4.0 1604 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint@9.4.0) 1605 | eslint-plugin-n: 16.6.2(eslint@9.4.0) 1606 | eslint-plugin-promise: 6.2.0(eslint@9.4.0) 1607 | dev: true 1608 | 1609 | /eslint-import-resolver-node@0.3.9: 1610 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1611 | dependencies: 1612 | debug: 3.2.7 1613 | is-core-module: 2.13.1 1614 | resolve: 1.22.8 1615 | transitivePeerDependencies: 1616 | - supports-color 1617 | dev: true 1618 | 1619 | /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint@9.4.0): 1620 | resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} 1621 | engines: {node: '>=4'} 1622 | peerDependencies: 1623 | '@typescript-eslint/parser': '*' 1624 | eslint: '*' 1625 | eslint-import-resolver-node: '*' 1626 | eslint-import-resolver-typescript: '*' 1627 | eslint-import-resolver-webpack: '*' 1628 | peerDependenciesMeta: 1629 | '@typescript-eslint/parser': 1630 | optional: true 1631 | eslint: 1632 | optional: true 1633 | eslint-import-resolver-node: 1634 | optional: true 1635 | eslint-import-resolver-typescript: 1636 | optional: true 1637 | eslint-import-resolver-webpack: 1638 | optional: true 1639 | dependencies: 1640 | '@typescript-eslint/parser': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 1641 | debug: 3.2.7 1642 | eslint: 9.4.0 1643 | eslint-import-resolver-node: 0.3.9 1644 | transitivePeerDependencies: 1645 | - supports-color 1646 | dev: true 1647 | 1648 | /eslint-plugin-es-x@7.6.0(eslint@9.4.0): 1649 | resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} 1650 | engines: {node: ^14.18.0 || >=16.0.0} 1651 | peerDependencies: 1652 | eslint: '>=8' 1653 | dependencies: 1654 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) 1655 | '@eslint-community/regexpp': 4.10.0 1656 | eslint: 9.4.0 1657 | eslint-compat-utils: 0.5.1(eslint@9.4.0) 1658 | dev: true 1659 | 1660 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.11.0)(eslint@9.4.0): 1661 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1662 | engines: {node: '>=4'} 1663 | peerDependencies: 1664 | '@typescript-eslint/parser': '*' 1665 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1666 | peerDependenciesMeta: 1667 | '@typescript-eslint/parser': 1668 | optional: true 1669 | dependencies: 1670 | '@typescript-eslint/parser': 7.11.0(eslint@9.4.0)(typescript@5.4.5) 1671 | array-includes: 3.1.8 1672 | array.prototype.findlastindex: 1.2.5 1673 | array.prototype.flat: 1.3.2 1674 | array.prototype.flatmap: 1.3.2 1675 | debug: 3.2.7 1676 | doctrine: 2.1.0 1677 | eslint: 9.4.0 1678 | eslint-import-resolver-node: 0.3.9 1679 | eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint@9.4.0) 1680 | hasown: 2.0.2 1681 | is-core-module: 2.13.1 1682 | is-glob: 4.0.3 1683 | minimatch: 3.1.2 1684 | object.fromentries: 2.0.8 1685 | object.groupby: 1.0.3 1686 | object.values: 1.2.0 1687 | semver: 6.3.1 1688 | tsconfig-paths: 3.15.0 1689 | transitivePeerDependencies: 1690 | - eslint-import-resolver-typescript 1691 | - eslint-import-resolver-webpack 1692 | - supports-color 1693 | dev: true 1694 | 1695 | /eslint-plugin-n@16.6.2(eslint@9.4.0): 1696 | resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} 1697 | engines: {node: '>=16.0.0'} 1698 | peerDependencies: 1699 | eslint: '>=7.0.0' 1700 | dependencies: 1701 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) 1702 | builtins: 5.1.0 1703 | eslint: 9.4.0 1704 | eslint-plugin-es-x: 7.6.0(eslint@9.4.0) 1705 | get-tsconfig: 4.7.5 1706 | globals: 13.24.0 1707 | ignore: 5.3.1 1708 | is-builtin-module: 3.2.1 1709 | is-core-module: 2.13.1 1710 | minimatch: 3.1.2 1711 | resolve: 1.22.8 1712 | semver: 7.6.2 1713 | dev: true 1714 | 1715 | /eslint-plugin-promise@6.2.0(eslint@9.4.0): 1716 | resolution: {integrity: sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==} 1717 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1718 | peerDependencies: 1719 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 1720 | dependencies: 1721 | eslint: 9.4.0 1722 | dev: true 1723 | 1724 | /eslint-plugin-vue@9.26.0(eslint@9.4.0): 1725 | resolution: {integrity: sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==} 1726 | engines: {node: ^14.17.0 || >=16.0.0} 1727 | peerDependencies: 1728 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 1729 | dependencies: 1730 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) 1731 | eslint: 9.4.0 1732 | globals: 13.24.0 1733 | natural-compare: 1.4.0 1734 | nth-check: 2.1.1 1735 | postcss-selector-parser: 6.1.0 1736 | semver: 7.6.2 1737 | vue-eslint-parser: 9.4.3(eslint@9.4.0) 1738 | xml-name-validator: 4.0.0 1739 | transitivePeerDependencies: 1740 | - supports-color 1741 | dev: true 1742 | 1743 | /eslint-scope@7.2.2: 1744 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1745 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1746 | dependencies: 1747 | esrecurse: 4.3.0 1748 | estraverse: 5.3.0 1749 | dev: true 1750 | 1751 | /eslint-scope@8.0.1: 1752 | resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} 1753 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1754 | dependencies: 1755 | esrecurse: 4.3.0 1756 | estraverse: 5.3.0 1757 | dev: true 1758 | 1759 | /eslint-visitor-keys@3.4.3: 1760 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1761 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1762 | dev: true 1763 | 1764 | /eslint-visitor-keys@4.0.0: 1765 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 1766 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1767 | dev: true 1768 | 1769 | /eslint@9.4.0: 1770 | resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==} 1771 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1772 | hasBin: true 1773 | dependencies: 1774 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) 1775 | '@eslint-community/regexpp': 4.10.0 1776 | '@eslint/config-array': 0.15.1 1777 | '@eslint/eslintrc': 3.1.0 1778 | '@eslint/js': 9.4.0 1779 | '@humanwhocodes/module-importer': 1.0.1 1780 | '@humanwhocodes/retry': 0.3.0 1781 | '@nodelib/fs.walk': 1.2.8 1782 | ajv: 6.12.6 1783 | chalk: 4.1.2 1784 | cross-spawn: 7.0.3 1785 | debug: 4.3.5 1786 | escape-string-regexp: 4.0.0 1787 | eslint-scope: 8.0.1 1788 | eslint-visitor-keys: 4.0.0 1789 | espree: 10.0.1 1790 | esquery: 1.5.0 1791 | esutils: 2.0.3 1792 | fast-deep-equal: 3.1.3 1793 | file-entry-cache: 8.0.0 1794 | find-up: 5.0.0 1795 | glob-parent: 6.0.2 1796 | ignore: 5.3.1 1797 | imurmurhash: 0.1.4 1798 | is-glob: 4.0.3 1799 | is-path-inside: 3.0.3 1800 | json-stable-stringify-without-jsonify: 1.0.1 1801 | levn: 0.4.1 1802 | lodash.merge: 4.6.2 1803 | minimatch: 3.1.2 1804 | natural-compare: 1.4.0 1805 | optionator: 0.9.4 1806 | strip-ansi: 6.0.1 1807 | text-table: 0.2.0 1808 | transitivePeerDependencies: 1809 | - supports-color 1810 | dev: true 1811 | 1812 | /espree@10.0.1: 1813 | resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} 1814 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1815 | dependencies: 1816 | acorn: 8.11.3 1817 | acorn-jsx: 5.3.2(acorn@8.11.3) 1818 | eslint-visitor-keys: 4.0.0 1819 | dev: true 1820 | 1821 | /espree@9.6.1: 1822 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1823 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1824 | dependencies: 1825 | acorn: 8.11.3 1826 | acorn-jsx: 5.3.2(acorn@8.11.3) 1827 | eslint-visitor-keys: 3.4.3 1828 | dev: true 1829 | 1830 | /esquery@1.5.0: 1831 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1832 | engines: {node: '>=0.10'} 1833 | dependencies: 1834 | estraverse: 5.3.0 1835 | dev: true 1836 | 1837 | /esrecurse@4.3.0: 1838 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1839 | engines: {node: '>=4.0'} 1840 | dependencies: 1841 | estraverse: 5.3.0 1842 | dev: true 1843 | 1844 | /estraverse@5.3.0: 1845 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1846 | engines: {node: '>=4.0'} 1847 | dev: true 1848 | 1849 | /estree-walker@2.0.2: 1850 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1851 | 1852 | /esutils@2.0.3: 1853 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1854 | engines: {node: '>=0.10.0'} 1855 | dev: true 1856 | 1857 | /fast-deep-equal@3.1.3: 1858 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1859 | dev: true 1860 | 1861 | /fast-glob@3.3.2: 1862 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1863 | engines: {node: '>=8.6.0'} 1864 | dependencies: 1865 | '@nodelib/fs.stat': 2.0.5 1866 | '@nodelib/fs.walk': 1.2.8 1867 | glob-parent: 5.1.2 1868 | merge2: 1.4.1 1869 | micromatch: 4.0.7 1870 | dev: true 1871 | 1872 | /fast-json-stable-stringify@2.1.0: 1873 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1874 | dev: true 1875 | 1876 | /fast-levenshtein@2.0.6: 1877 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1878 | dev: true 1879 | 1880 | /fastq@1.17.1: 1881 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1882 | dependencies: 1883 | reusify: 1.0.4 1884 | dev: true 1885 | 1886 | /file-entry-cache@8.0.0: 1887 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1888 | engines: {node: '>=16.0.0'} 1889 | dependencies: 1890 | flat-cache: 4.0.1 1891 | dev: true 1892 | 1893 | /fill-range@7.1.1: 1894 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1895 | engines: {node: '>=8'} 1896 | dependencies: 1897 | to-regex-range: 5.0.1 1898 | dev: true 1899 | 1900 | /find-up@5.0.0: 1901 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1902 | engines: {node: '>=10'} 1903 | dependencies: 1904 | locate-path: 6.0.0 1905 | path-exists: 4.0.0 1906 | dev: true 1907 | 1908 | /flat-cache@4.0.1: 1909 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1910 | engines: {node: '>=16'} 1911 | dependencies: 1912 | flatted: 3.3.1 1913 | keyv: 4.5.4 1914 | dev: true 1915 | 1916 | /flatted@3.3.1: 1917 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1918 | dev: true 1919 | 1920 | /for-each@0.3.3: 1921 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1922 | dependencies: 1923 | is-callable: 1.2.7 1924 | dev: true 1925 | 1926 | /foreground-child@3.1.1: 1927 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1928 | engines: {node: '>=14'} 1929 | dependencies: 1930 | cross-spawn: 7.0.3 1931 | signal-exit: 4.1.0 1932 | dev: true 1933 | 1934 | /fraction.js@4.3.7: 1935 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1936 | dev: true 1937 | 1938 | /fs-extra@10.1.0: 1939 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 1940 | engines: {node: '>=12'} 1941 | dependencies: 1942 | graceful-fs: 4.2.11 1943 | jsonfile: 6.1.0 1944 | universalify: 2.0.1 1945 | dev: true 1946 | 1947 | /fsevents@2.3.3: 1948 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1949 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1950 | os: [darwin] 1951 | requiresBuild: true 1952 | dev: true 1953 | optional: true 1954 | 1955 | /function-bind@1.1.2: 1956 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1957 | dev: true 1958 | 1959 | /function.prototype.name@1.1.6: 1960 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1961 | engines: {node: '>= 0.4'} 1962 | dependencies: 1963 | call-bind: 1.0.7 1964 | define-properties: 1.2.1 1965 | es-abstract: 1.23.3 1966 | functions-have-names: 1.2.3 1967 | dev: true 1968 | 1969 | /functions-have-names@1.2.3: 1970 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1971 | dev: true 1972 | 1973 | /get-intrinsic@1.2.4: 1974 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1975 | engines: {node: '>= 0.4'} 1976 | dependencies: 1977 | es-errors: 1.3.0 1978 | function-bind: 1.1.2 1979 | has-proto: 1.0.3 1980 | has-symbols: 1.0.3 1981 | hasown: 2.0.2 1982 | dev: true 1983 | 1984 | /get-symbol-description@1.0.2: 1985 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 1986 | engines: {node: '>= 0.4'} 1987 | dependencies: 1988 | call-bind: 1.0.7 1989 | es-errors: 1.3.0 1990 | get-intrinsic: 1.2.4 1991 | dev: true 1992 | 1993 | /get-tsconfig@4.7.5: 1994 | resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} 1995 | dependencies: 1996 | resolve-pkg-maps: 1.0.0 1997 | dev: true 1998 | 1999 | /glob-parent@5.1.2: 2000 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2001 | engines: {node: '>= 6'} 2002 | dependencies: 2003 | is-glob: 4.0.3 2004 | dev: true 2005 | 2006 | /glob-parent@6.0.2: 2007 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 2008 | engines: {node: '>=10.13.0'} 2009 | dependencies: 2010 | is-glob: 4.0.3 2011 | dev: true 2012 | 2013 | /glob@10.4.1: 2014 | resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} 2015 | engines: {node: '>=16 || 14 >=14.18'} 2016 | hasBin: true 2017 | dependencies: 2018 | foreground-child: 3.1.1 2019 | jackspeak: 3.1.2 2020 | minimatch: 9.0.4 2021 | minipass: 7.1.2 2022 | path-scurry: 1.11.1 2023 | dev: true 2024 | 2025 | /globals@13.24.0: 2026 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 2027 | engines: {node: '>=8'} 2028 | dependencies: 2029 | type-fest: 0.20.2 2030 | dev: true 2031 | 2032 | /globals@14.0.0: 2033 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 2034 | engines: {node: '>=18'} 2035 | dev: true 2036 | 2037 | /globalthis@1.0.4: 2038 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 2039 | engines: {node: '>= 0.4'} 2040 | dependencies: 2041 | define-properties: 1.2.1 2042 | gopd: 1.0.1 2043 | dev: true 2044 | 2045 | /globby@11.1.0: 2046 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2047 | engines: {node: '>=10'} 2048 | dependencies: 2049 | array-union: 2.1.0 2050 | dir-glob: 3.0.1 2051 | fast-glob: 3.3.2 2052 | ignore: 5.3.1 2053 | merge2: 1.4.1 2054 | slash: 3.0.0 2055 | dev: true 2056 | 2057 | /gopd@1.0.1: 2058 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 2059 | dependencies: 2060 | get-intrinsic: 1.2.4 2061 | dev: true 2062 | 2063 | /graceful-fs@4.2.11: 2064 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 2065 | dev: true 2066 | 2067 | /graphemer@1.4.0: 2068 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 2069 | dev: true 2070 | 2071 | /has-bigints@1.0.2: 2072 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 2073 | dev: true 2074 | 2075 | /has-flag@4.0.0: 2076 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2077 | engines: {node: '>=8'} 2078 | dev: true 2079 | 2080 | /has-property-descriptors@1.0.2: 2081 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 2082 | dependencies: 2083 | es-define-property: 1.0.0 2084 | dev: true 2085 | 2086 | /has-proto@1.0.3: 2087 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 2088 | engines: {node: '>= 0.4'} 2089 | dev: true 2090 | 2091 | /has-symbols@1.0.3: 2092 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2093 | engines: {node: '>= 0.4'} 2094 | dev: true 2095 | 2096 | /has-tostringtag@1.0.2: 2097 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 2098 | engines: {node: '>= 0.4'} 2099 | dependencies: 2100 | has-symbols: 1.0.3 2101 | dev: true 2102 | 2103 | /hasown@2.0.2: 2104 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 2105 | engines: {node: '>= 0.4'} 2106 | dependencies: 2107 | function-bind: 1.1.2 2108 | dev: true 2109 | 2110 | /he@1.2.0: 2111 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 2112 | hasBin: true 2113 | dev: true 2114 | 2115 | /html-minifier-terser@6.1.0: 2116 | resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} 2117 | engines: {node: '>=12'} 2118 | hasBin: true 2119 | dependencies: 2120 | camel-case: 4.1.2 2121 | clean-css: 5.3.3 2122 | commander: 8.3.0 2123 | he: 1.2.0 2124 | param-case: 3.0.4 2125 | relateurl: 0.2.7 2126 | terser: 5.31.0 2127 | dev: true 2128 | 2129 | /htmlparser2@8.0.2: 2130 | resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 2131 | dependencies: 2132 | domelementtype: 2.3.0 2133 | domhandler: 5.0.3 2134 | domutils: 3.1.0 2135 | entities: 4.5.0 2136 | dev: true 2137 | 2138 | /ignore@5.3.1: 2139 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 2140 | engines: {node: '>= 4'} 2141 | dev: true 2142 | 2143 | /immutable@4.3.6: 2144 | resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} 2145 | dev: true 2146 | 2147 | /import-fresh@3.3.0: 2148 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2149 | engines: {node: '>=6'} 2150 | dependencies: 2151 | parent-module: 1.0.1 2152 | resolve-from: 4.0.0 2153 | dev: true 2154 | 2155 | /imurmurhash@0.1.4: 2156 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2157 | engines: {node: '>=0.8.19'} 2158 | dev: true 2159 | 2160 | /internal-slot@1.0.7: 2161 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 2162 | engines: {node: '>= 0.4'} 2163 | dependencies: 2164 | es-errors: 1.3.0 2165 | hasown: 2.0.2 2166 | side-channel: 1.0.6 2167 | dev: true 2168 | 2169 | /is-array-buffer@3.0.4: 2170 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 2171 | engines: {node: '>= 0.4'} 2172 | dependencies: 2173 | call-bind: 1.0.7 2174 | get-intrinsic: 1.2.4 2175 | dev: true 2176 | 2177 | /is-bigint@1.0.4: 2178 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2179 | dependencies: 2180 | has-bigints: 1.0.2 2181 | dev: true 2182 | 2183 | /is-binary-path@2.1.0: 2184 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2185 | engines: {node: '>=8'} 2186 | dependencies: 2187 | binary-extensions: 2.3.0 2188 | dev: true 2189 | 2190 | /is-boolean-object@1.1.2: 2191 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2192 | engines: {node: '>= 0.4'} 2193 | dependencies: 2194 | call-bind: 1.0.7 2195 | has-tostringtag: 1.0.2 2196 | dev: true 2197 | 2198 | /is-builtin-module@3.2.1: 2199 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} 2200 | engines: {node: '>=6'} 2201 | dependencies: 2202 | builtin-modules: 3.3.0 2203 | dev: true 2204 | 2205 | /is-callable@1.2.7: 2206 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2207 | engines: {node: '>= 0.4'} 2208 | dev: true 2209 | 2210 | /is-core-module@2.13.1: 2211 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 2212 | dependencies: 2213 | hasown: 2.0.2 2214 | dev: true 2215 | 2216 | /is-data-view@1.0.1: 2217 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} 2218 | engines: {node: '>= 0.4'} 2219 | dependencies: 2220 | is-typed-array: 1.1.13 2221 | dev: true 2222 | 2223 | /is-date-object@1.0.5: 2224 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2225 | engines: {node: '>= 0.4'} 2226 | dependencies: 2227 | has-tostringtag: 1.0.2 2228 | dev: true 2229 | 2230 | /is-extglob@2.1.1: 2231 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2232 | engines: {node: '>=0.10.0'} 2233 | dev: true 2234 | 2235 | /is-fullwidth-code-point@3.0.0: 2236 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2237 | engines: {node: '>=8'} 2238 | dev: true 2239 | 2240 | /is-glob@4.0.3: 2241 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2242 | engines: {node: '>=0.10.0'} 2243 | dependencies: 2244 | is-extglob: 2.1.1 2245 | dev: true 2246 | 2247 | /is-negative-zero@2.0.3: 2248 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 2249 | engines: {node: '>= 0.4'} 2250 | dev: true 2251 | 2252 | /is-number-object@1.0.7: 2253 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2254 | engines: {node: '>= 0.4'} 2255 | dependencies: 2256 | has-tostringtag: 1.0.2 2257 | dev: true 2258 | 2259 | /is-number@7.0.0: 2260 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2261 | engines: {node: '>=0.12.0'} 2262 | dev: true 2263 | 2264 | /is-path-inside@3.0.3: 2265 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2266 | engines: {node: '>=8'} 2267 | dev: true 2268 | 2269 | /is-regex@1.1.4: 2270 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2271 | engines: {node: '>= 0.4'} 2272 | dependencies: 2273 | call-bind: 1.0.7 2274 | has-tostringtag: 1.0.2 2275 | dev: true 2276 | 2277 | /is-shared-array-buffer@1.0.3: 2278 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 2279 | engines: {node: '>= 0.4'} 2280 | dependencies: 2281 | call-bind: 1.0.7 2282 | dev: true 2283 | 2284 | /is-string@1.0.7: 2285 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2286 | engines: {node: '>= 0.4'} 2287 | dependencies: 2288 | has-tostringtag: 1.0.2 2289 | dev: true 2290 | 2291 | /is-symbol@1.0.4: 2292 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2293 | engines: {node: '>= 0.4'} 2294 | dependencies: 2295 | has-symbols: 1.0.3 2296 | dev: true 2297 | 2298 | /is-typed-array@1.1.13: 2299 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 2300 | engines: {node: '>= 0.4'} 2301 | dependencies: 2302 | which-typed-array: 1.1.15 2303 | dev: true 2304 | 2305 | /is-weakref@1.0.2: 2306 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2307 | dependencies: 2308 | call-bind: 1.0.7 2309 | dev: true 2310 | 2311 | /isarray@2.0.5: 2312 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2313 | dev: true 2314 | 2315 | /isexe@2.0.0: 2316 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2317 | dev: true 2318 | 2319 | /jackspeak@3.1.2: 2320 | resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} 2321 | engines: {node: '>=14'} 2322 | dependencies: 2323 | '@isaacs/cliui': 8.0.2 2324 | optionalDependencies: 2325 | '@pkgjs/parseargs': 0.11.0 2326 | dev: true 2327 | 2328 | /jiti@1.21.0: 2329 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 2330 | hasBin: true 2331 | dev: true 2332 | 2333 | /js-yaml@4.1.0: 2334 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2335 | hasBin: true 2336 | dependencies: 2337 | argparse: 2.0.1 2338 | dev: true 2339 | 2340 | /jsesc@3.0.2: 2341 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 2342 | engines: {node: '>=6'} 2343 | hasBin: true 2344 | dev: true 2345 | 2346 | /json-buffer@3.0.1: 2347 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2348 | dev: true 2349 | 2350 | /json-schema-traverse@0.4.1: 2351 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2352 | dev: true 2353 | 2354 | /json-stable-stringify-without-jsonify@1.0.1: 2355 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2356 | dev: true 2357 | 2358 | /json5@1.0.2: 2359 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2360 | hasBin: true 2361 | dependencies: 2362 | minimist: 1.2.8 2363 | dev: true 2364 | 2365 | /jsonfile@6.1.0: 2366 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 2367 | dependencies: 2368 | universalify: 2.0.1 2369 | optionalDependencies: 2370 | graceful-fs: 4.2.11 2371 | dev: true 2372 | 2373 | /keyv@4.5.4: 2374 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2375 | dependencies: 2376 | json-buffer: 3.0.1 2377 | dev: true 2378 | 2379 | /levn@0.4.1: 2380 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2381 | engines: {node: '>= 0.8.0'} 2382 | dependencies: 2383 | prelude-ls: 1.2.1 2384 | type-check: 0.4.0 2385 | dev: true 2386 | 2387 | /lightningcss-darwin-arm64@1.25.1: 2388 | resolution: {integrity: sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==} 2389 | engines: {node: '>= 12.0.0'} 2390 | cpu: [arm64] 2391 | os: [darwin] 2392 | requiresBuild: true 2393 | dev: true 2394 | optional: true 2395 | 2396 | /lightningcss-darwin-x64@1.25.1: 2397 | resolution: {integrity: sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==} 2398 | engines: {node: '>= 12.0.0'} 2399 | cpu: [x64] 2400 | os: [darwin] 2401 | requiresBuild: true 2402 | dev: true 2403 | optional: true 2404 | 2405 | /lightningcss-freebsd-x64@1.25.1: 2406 | resolution: {integrity: sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==} 2407 | engines: {node: '>= 12.0.0'} 2408 | cpu: [x64] 2409 | os: [freebsd] 2410 | requiresBuild: true 2411 | dev: true 2412 | optional: true 2413 | 2414 | /lightningcss-linux-arm-gnueabihf@1.25.1: 2415 | resolution: {integrity: sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==} 2416 | engines: {node: '>= 12.0.0'} 2417 | cpu: [arm] 2418 | os: [linux] 2419 | requiresBuild: true 2420 | dev: true 2421 | optional: true 2422 | 2423 | /lightningcss-linux-arm64-gnu@1.25.1: 2424 | resolution: {integrity: sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==} 2425 | engines: {node: '>= 12.0.0'} 2426 | cpu: [arm64] 2427 | os: [linux] 2428 | requiresBuild: true 2429 | dev: true 2430 | optional: true 2431 | 2432 | /lightningcss-linux-arm64-musl@1.25.1: 2433 | resolution: {integrity: sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==} 2434 | engines: {node: '>= 12.0.0'} 2435 | cpu: [arm64] 2436 | os: [linux] 2437 | requiresBuild: true 2438 | dev: true 2439 | optional: true 2440 | 2441 | /lightningcss-linux-x64-gnu@1.25.1: 2442 | resolution: {integrity: sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==} 2443 | engines: {node: '>= 12.0.0'} 2444 | cpu: [x64] 2445 | os: [linux] 2446 | requiresBuild: true 2447 | dev: true 2448 | optional: true 2449 | 2450 | /lightningcss-linux-x64-musl@1.25.1: 2451 | resolution: {integrity: sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==} 2452 | engines: {node: '>= 12.0.0'} 2453 | cpu: [x64] 2454 | os: [linux] 2455 | requiresBuild: true 2456 | dev: true 2457 | optional: true 2458 | 2459 | /lightningcss-win32-x64-msvc@1.25.1: 2460 | resolution: {integrity: sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==} 2461 | engines: {node: '>= 12.0.0'} 2462 | cpu: [x64] 2463 | os: [win32] 2464 | requiresBuild: true 2465 | dev: true 2466 | optional: true 2467 | 2468 | /lightningcss@1.25.1: 2469 | resolution: {integrity: sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==} 2470 | engines: {node: '>= 12.0.0'} 2471 | dependencies: 2472 | detect-libc: 1.0.3 2473 | optionalDependencies: 2474 | lightningcss-darwin-arm64: 1.25.1 2475 | lightningcss-darwin-x64: 1.25.1 2476 | lightningcss-freebsd-x64: 1.25.1 2477 | lightningcss-linux-arm-gnueabihf: 1.25.1 2478 | lightningcss-linux-arm64-gnu: 1.25.1 2479 | lightningcss-linux-arm64-musl: 1.25.1 2480 | lightningcss-linux-x64-gnu: 1.25.1 2481 | lightningcss-linux-x64-musl: 1.25.1 2482 | lightningcss-win32-x64-msvc: 1.25.1 2483 | dev: true 2484 | 2485 | /lilconfig@2.1.0: 2486 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2487 | engines: {node: '>=10'} 2488 | dev: true 2489 | 2490 | /lilconfig@3.1.1: 2491 | resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} 2492 | engines: {node: '>=14'} 2493 | dev: true 2494 | 2495 | /lines-and-columns@1.2.4: 2496 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2497 | dev: true 2498 | 2499 | /local-pkg@0.5.0: 2500 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 2501 | engines: {node: '>=14'} 2502 | dependencies: 2503 | mlly: 1.7.0 2504 | pkg-types: 1.1.1 2505 | dev: true 2506 | 2507 | /locate-path@6.0.0: 2508 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2509 | engines: {node: '>=10'} 2510 | dependencies: 2511 | p-locate: 5.0.0 2512 | dev: true 2513 | 2514 | /lodash.merge@4.6.2: 2515 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2516 | dev: true 2517 | 2518 | /lodash@4.17.21: 2519 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2520 | 2521 | /lower-case@2.0.2: 2522 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 2523 | dependencies: 2524 | tslib: 2.6.2 2525 | dev: true 2526 | 2527 | /lru-cache@10.2.2: 2528 | resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} 2529 | engines: {node: 14 || >=16.14} 2530 | dev: true 2531 | 2532 | /magic-string@0.26.7: 2533 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} 2534 | engines: {node: '>=12'} 2535 | dependencies: 2536 | sourcemap-codec: 1.4.8 2537 | dev: true 2538 | 2539 | /magic-string@0.30.10: 2540 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 2541 | dependencies: 2542 | '@jridgewell/sourcemap-codec': 1.4.15 2543 | 2544 | /mdn-data@2.0.28: 2545 | resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} 2546 | dev: true 2547 | 2548 | /mdn-data@2.0.30: 2549 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 2550 | dev: true 2551 | 2552 | /merge2@1.4.1: 2553 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2554 | engines: {node: '>= 8'} 2555 | dev: true 2556 | 2557 | /micromatch@4.0.7: 2558 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 2559 | engines: {node: '>=8.6'} 2560 | dependencies: 2561 | braces: 3.0.3 2562 | picomatch: 2.3.1 2563 | dev: true 2564 | 2565 | /minimatch@3.1.2: 2566 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2567 | dependencies: 2568 | brace-expansion: 1.1.11 2569 | dev: true 2570 | 2571 | /minimatch@9.0.4: 2572 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 2573 | engines: {node: '>=16 || 14 >=14.17'} 2574 | dependencies: 2575 | brace-expansion: 2.0.1 2576 | dev: true 2577 | 2578 | /minimist@1.2.8: 2579 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2580 | dev: true 2581 | 2582 | /minipass@7.1.2: 2583 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 2584 | engines: {node: '>=16 || 14 >=14.17'} 2585 | dev: true 2586 | 2587 | /mlly@1.7.0: 2588 | resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} 2589 | dependencies: 2590 | acorn: 8.11.3 2591 | pathe: 1.1.2 2592 | pkg-types: 1.1.1 2593 | ufo: 1.5.3 2594 | dev: true 2595 | 2596 | /ms@2.0.0: 2597 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2598 | dev: true 2599 | 2600 | /ms@2.1.2: 2601 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2602 | dev: true 2603 | 2604 | /ms@2.1.3: 2605 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2606 | dev: true 2607 | 2608 | /mz@2.7.0: 2609 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2610 | dependencies: 2611 | any-promise: 1.3.0 2612 | object-assign: 4.1.1 2613 | thenify-all: 1.6.0 2614 | dev: true 2615 | 2616 | /nanoid@3.3.7: 2617 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2618 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2619 | hasBin: true 2620 | 2621 | /natural-compare@1.4.0: 2622 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2623 | dev: true 2624 | 2625 | /no-case@3.0.4: 2626 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 2627 | dependencies: 2628 | lower-case: 2.0.2 2629 | tslib: 2.6.2 2630 | dev: true 2631 | 2632 | /node-releases@2.0.14: 2633 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2634 | dev: true 2635 | 2636 | /normalize-path@3.0.0: 2637 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2638 | engines: {node: '>=0.10.0'} 2639 | dev: true 2640 | 2641 | /normalize-range@0.1.2: 2642 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2643 | engines: {node: '>=0.10.0'} 2644 | dev: true 2645 | 2646 | /nth-check@2.1.1: 2647 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2648 | dependencies: 2649 | boolbase: 1.0.0 2650 | dev: true 2651 | 2652 | /object-assign@4.1.1: 2653 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2654 | engines: {node: '>=0.10.0'} 2655 | dev: true 2656 | 2657 | /object-hash@3.0.0: 2658 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2659 | engines: {node: '>= 6'} 2660 | dev: true 2661 | 2662 | /object-inspect@1.13.1: 2663 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2664 | dev: true 2665 | 2666 | /object-keys@1.1.1: 2667 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2668 | engines: {node: '>= 0.4'} 2669 | dev: true 2670 | 2671 | /object.assign@4.1.5: 2672 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2673 | engines: {node: '>= 0.4'} 2674 | dependencies: 2675 | call-bind: 1.0.7 2676 | define-properties: 1.2.1 2677 | has-symbols: 1.0.3 2678 | object-keys: 1.1.1 2679 | dev: true 2680 | 2681 | /object.fromentries@2.0.8: 2682 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 2683 | engines: {node: '>= 0.4'} 2684 | dependencies: 2685 | call-bind: 1.0.7 2686 | define-properties: 1.2.1 2687 | es-abstract: 1.23.3 2688 | es-object-atoms: 1.0.0 2689 | dev: true 2690 | 2691 | /object.groupby@1.0.3: 2692 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 2693 | engines: {node: '>= 0.4'} 2694 | dependencies: 2695 | call-bind: 1.0.7 2696 | define-properties: 1.2.1 2697 | es-abstract: 1.23.3 2698 | dev: true 2699 | 2700 | /object.values@1.2.0: 2701 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 2702 | engines: {node: '>= 0.4'} 2703 | dependencies: 2704 | call-bind: 1.0.7 2705 | define-properties: 1.2.1 2706 | es-object-atoms: 1.0.0 2707 | dev: true 2708 | 2709 | /optionator@0.9.4: 2710 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 2711 | engines: {node: '>= 0.8.0'} 2712 | dependencies: 2713 | deep-is: 0.1.4 2714 | fast-levenshtein: 2.0.6 2715 | levn: 0.4.1 2716 | prelude-ls: 1.2.1 2717 | type-check: 0.4.0 2718 | word-wrap: 1.2.5 2719 | dev: true 2720 | 2721 | /p-limit@3.1.0: 2722 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2723 | engines: {node: '>=10'} 2724 | dependencies: 2725 | yocto-queue: 0.1.0 2726 | dev: true 2727 | 2728 | /p-locate@5.0.0: 2729 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2730 | engines: {node: '>=10'} 2731 | dependencies: 2732 | p-limit: 3.1.0 2733 | dev: true 2734 | 2735 | /param-case@3.0.4: 2736 | resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} 2737 | dependencies: 2738 | dot-case: 3.0.4 2739 | tslib: 2.6.2 2740 | dev: true 2741 | 2742 | /parent-module@1.0.1: 2743 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2744 | engines: {node: '>=6'} 2745 | dependencies: 2746 | callsites: 3.1.0 2747 | dev: true 2748 | 2749 | /parse5-htmlparser2-tree-adapter@7.0.0: 2750 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 2751 | dependencies: 2752 | domhandler: 5.0.3 2753 | parse5: 7.1.2 2754 | dev: true 2755 | 2756 | /parse5@7.1.2: 2757 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 2758 | dependencies: 2759 | entities: 4.5.0 2760 | dev: true 2761 | 2762 | /pascal-case@3.1.2: 2763 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 2764 | dependencies: 2765 | no-case: 3.0.4 2766 | tslib: 2.6.2 2767 | dev: true 2768 | 2769 | /path-exists@4.0.0: 2770 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2771 | engines: {node: '>=8'} 2772 | dev: true 2773 | 2774 | /path-key@3.1.1: 2775 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2776 | engines: {node: '>=8'} 2777 | dev: true 2778 | 2779 | /path-parse@1.0.7: 2780 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2781 | dev: true 2782 | 2783 | /path-scurry@1.11.1: 2784 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 2785 | engines: {node: '>=16 || 14 >=14.18'} 2786 | dependencies: 2787 | lru-cache: 10.2.2 2788 | minipass: 7.1.2 2789 | dev: true 2790 | 2791 | /path-type@4.0.0: 2792 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2793 | engines: {node: '>=8'} 2794 | dev: true 2795 | 2796 | /pathe@1.1.2: 2797 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 2798 | dev: true 2799 | 2800 | /perfect-debounce@1.0.0: 2801 | resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} 2802 | dev: false 2803 | 2804 | /picocolors@1.0.1: 2805 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 2806 | 2807 | /picomatch@2.3.1: 2808 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2809 | engines: {node: '>=8.6'} 2810 | dev: true 2811 | 2812 | /pify@2.3.0: 2813 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2814 | engines: {node: '>=0.10.0'} 2815 | dev: true 2816 | 2817 | /pirates@4.0.6: 2818 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2819 | engines: {node: '>= 6'} 2820 | dev: true 2821 | 2822 | /pkg-types@1.1.1: 2823 | resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} 2824 | dependencies: 2825 | confbox: 0.1.7 2826 | mlly: 1.7.0 2827 | pathe: 1.1.2 2828 | dev: true 2829 | 2830 | /possible-typed-array-names@1.0.0: 2831 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 2832 | engines: {node: '>= 0.4'} 2833 | dev: true 2834 | 2835 | /postcss-import@15.1.0(postcss@8.4.38): 2836 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2837 | engines: {node: '>=14.0.0'} 2838 | peerDependencies: 2839 | postcss: ^8.0.0 2840 | dependencies: 2841 | postcss: 8.4.38 2842 | postcss-value-parser: 4.2.0 2843 | read-cache: 1.0.0 2844 | resolve: 1.22.8 2845 | dev: true 2846 | 2847 | /postcss-js@4.0.1(postcss@8.4.38): 2848 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2849 | engines: {node: ^12 || ^14 || >= 16} 2850 | peerDependencies: 2851 | postcss: ^8.4.21 2852 | dependencies: 2853 | camelcase-css: 2.0.1 2854 | postcss: 8.4.38 2855 | dev: true 2856 | 2857 | /postcss-load-config@4.0.2(postcss@8.4.38): 2858 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2859 | engines: {node: '>= 14'} 2860 | peerDependencies: 2861 | postcss: '>=8.0.9' 2862 | ts-node: '>=9.0.0' 2863 | peerDependenciesMeta: 2864 | postcss: 2865 | optional: true 2866 | ts-node: 2867 | optional: true 2868 | dependencies: 2869 | lilconfig: 3.1.1 2870 | postcss: 8.4.38 2871 | yaml: 2.4.2 2872 | dev: true 2873 | 2874 | /postcss-load-config@5.1.0(postcss@8.4.38): 2875 | resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} 2876 | engines: {node: '>= 18'} 2877 | peerDependencies: 2878 | jiti: '>=1.21.0' 2879 | postcss: '>=8.0.9' 2880 | tsx: ^4.8.1 2881 | peerDependenciesMeta: 2882 | jiti: 2883 | optional: true 2884 | postcss: 2885 | optional: true 2886 | tsx: 2887 | optional: true 2888 | dependencies: 2889 | lilconfig: 3.1.1 2890 | postcss: 8.4.38 2891 | yaml: 2.4.2 2892 | dev: true 2893 | 2894 | /postcss-nested@6.0.1(postcss@8.4.38): 2895 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2896 | engines: {node: '>=12.0'} 2897 | peerDependencies: 2898 | postcss: ^8.2.14 2899 | dependencies: 2900 | postcss: 8.4.38 2901 | postcss-selector-parser: 6.1.0 2902 | dev: true 2903 | 2904 | /postcss-selector-parser@6.1.0: 2905 | resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} 2906 | engines: {node: '>=4'} 2907 | dependencies: 2908 | cssesc: 3.0.0 2909 | util-deprecate: 1.0.2 2910 | dev: true 2911 | 2912 | /postcss-value-parser@4.2.0: 2913 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2914 | dev: true 2915 | 2916 | /postcss@8.4.38: 2917 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 2918 | engines: {node: ^10 || ^12 || >=14} 2919 | dependencies: 2920 | nanoid: 3.3.7 2921 | picocolors: 1.0.1 2922 | source-map-js: 1.2.0 2923 | 2924 | /prelude-ls@1.2.1: 2925 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2926 | engines: {node: '>= 0.8.0'} 2927 | dev: true 2928 | 2929 | /punycode@2.3.1: 2930 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2931 | engines: {node: '>=6'} 2932 | dev: true 2933 | 2934 | /q@1.5.1: 2935 | resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} 2936 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'} 2937 | dev: true 2938 | 2939 | /queue-microtask@1.2.3: 2940 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2941 | dev: true 2942 | 2943 | /react-refresh@0.13.0: 2944 | resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} 2945 | engines: {node: '>=0.10.0'} 2946 | dev: true 2947 | 2948 | /read-cache@1.0.0: 2949 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2950 | dependencies: 2951 | pify: 2.3.0 2952 | dev: true 2953 | 2954 | /readdirp@3.6.0: 2955 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2956 | engines: {node: '>=8.10.0'} 2957 | dependencies: 2958 | picomatch: 2.3.1 2959 | dev: true 2960 | 2961 | /regexp.prototype.flags@1.5.2: 2962 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} 2963 | engines: {node: '>= 0.4'} 2964 | dependencies: 2965 | call-bind: 1.0.7 2966 | define-properties: 1.2.1 2967 | es-errors: 1.3.0 2968 | set-function-name: 2.0.2 2969 | dev: true 2970 | 2971 | /relateurl@0.2.7: 2972 | resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} 2973 | engines: {node: '>= 0.10'} 2974 | dev: true 2975 | 2976 | /resolve-from@4.0.0: 2977 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2978 | engines: {node: '>=4'} 2979 | dev: true 2980 | 2981 | /resolve-pkg-maps@1.0.0: 2982 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2983 | dev: true 2984 | 2985 | /resolve@1.22.8: 2986 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2987 | hasBin: true 2988 | dependencies: 2989 | is-core-module: 2.13.1 2990 | path-parse: 1.0.7 2991 | supports-preserve-symlinks-flag: 1.0.0 2992 | dev: true 2993 | 2994 | /reusify@1.0.4: 2995 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2996 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2997 | dev: true 2998 | 2999 | /rollup@2.78.1: 3000 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 3001 | engines: {node: '>=10.0.0'} 3002 | hasBin: true 3003 | optionalDependencies: 3004 | fsevents: 2.3.3 3005 | dev: true 3006 | 3007 | /rollup@4.18.0: 3008 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 3009 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3010 | hasBin: true 3011 | dependencies: 3012 | '@types/estree': 1.0.5 3013 | optionalDependencies: 3014 | '@rollup/rollup-android-arm-eabi': 4.18.0 3015 | '@rollup/rollup-android-arm64': 4.18.0 3016 | '@rollup/rollup-darwin-arm64': 4.18.0 3017 | '@rollup/rollup-darwin-x64': 4.18.0 3018 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 3019 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0 3020 | '@rollup/rollup-linux-arm64-gnu': 4.18.0 3021 | '@rollup/rollup-linux-arm64-musl': 4.18.0 3022 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 3023 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0 3024 | '@rollup/rollup-linux-s390x-gnu': 4.18.0 3025 | '@rollup/rollup-linux-x64-gnu': 4.18.0 3026 | '@rollup/rollup-linux-x64-musl': 4.18.0 3027 | '@rollup/rollup-win32-arm64-msvc': 4.18.0 3028 | '@rollup/rollup-win32-ia32-msvc': 4.18.0 3029 | '@rollup/rollup-win32-x64-msvc': 4.18.0 3030 | fsevents: 2.3.3 3031 | dev: true 3032 | 3033 | /run-parallel@1.2.0: 3034 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3035 | dependencies: 3036 | queue-microtask: 1.2.3 3037 | dev: true 3038 | 3039 | /rxjs@7.5.7: 3040 | resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} 3041 | dependencies: 3042 | tslib: 2.6.2 3043 | dev: true 3044 | 3045 | /safe-array-concat@1.1.2: 3046 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} 3047 | engines: {node: '>=0.4'} 3048 | dependencies: 3049 | call-bind: 1.0.7 3050 | get-intrinsic: 1.2.4 3051 | has-symbols: 1.0.3 3052 | isarray: 2.0.5 3053 | dev: true 3054 | 3055 | /safe-regex-test@1.0.3: 3056 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 3057 | engines: {node: '>= 0.4'} 3058 | dependencies: 3059 | call-bind: 1.0.7 3060 | es-errors: 1.3.0 3061 | is-regex: 1.1.4 3062 | dev: true 3063 | 3064 | /sass@1.77.4: 3065 | resolution: {integrity: sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw==} 3066 | engines: {node: '>=14.0.0'} 3067 | hasBin: true 3068 | dependencies: 3069 | chokidar: 3.6.0 3070 | immutable: 4.3.6 3071 | source-map-js: 1.2.0 3072 | dev: true 3073 | 3074 | /semver@6.3.1: 3075 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3076 | hasBin: true 3077 | dev: true 3078 | 3079 | /semver@7.6.2: 3080 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} 3081 | engines: {node: '>=10'} 3082 | hasBin: true 3083 | dev: true 3084 | 3085 | /set-function-length@1.2.2: 3086 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 3087 | engines: {node: '>= 0.4'} 3088 | dependencies: 3089 | define-data-property: 1.1.4 3090 | es-errors: 1.3.0 3091 | function-bind: 1.1.2 3092 | get-intrinsic: 1.2.4 3093 | gopd: 1.0.1 3094 | has-property-descriptors: 1.0.2 3095 | dev: true 3096 | 3097 | /set-function-name@2.0.2: 3098 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 3099 | engines: {node: '>= 0.4'} 3100 | dependencies: 3101 | define-data-property: 1.1.4 3102 | es-errors: 1.3.0 3103 | functions-have-names: 1.2.3 3104 | has-property-descriptors: 1.0.2 3105 | dev: true 3106 | 3107 | /shebang-command@2.0.0: 3108 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3109 | engines: {node: '>=8'} 3110 | dependencies: 3111 | shebang-regex: 3.0.0 3112 | dev: true 3113 | 3114 | /shebang-regex@3.0.0: 3115 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3116 | engines: {node: '>=8'} 3117 | dev: true 3118 | 3119 | /side-channel@1.0.6: 3120 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 3121 | engines: {node: '>= 0.4'} 3122 | dependencies: 3123 | call-bind: 1.0.7 3124 | es-errors: 1.3.0 3125 | get-intrinsic: 1.2.4 3126 | object-inspect: 1.13.1 3127 | dev: true 3128 | 3129 | /signal-exit@4.1.0: 3130 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 3131 | engines: {node: '>=14'} 3132 | dev: true 3133 | 3134 | /slash@3.0.0: 3135 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3136 | engines: {node: '>=8'} 3137 | dev: true 3138 | 3139 | /source-map-js@1.2.0: 3140 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 3141 | engines: {node: '>=0.10.0'} 3142 | 3143 | /source-map-support@0.5.21: 3144 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3145 | dependencies: 3146 | buffer-from: 1.1.2 3147 | source-map: 0.6.1 3148 | dev: true 3149 | 3150 | /source-map@0.6.1: 3151 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3152 | engines: {node: '>=0.10.0'} 3153 | dev: true 3154 | 3155 | /sourcemap-codec@1.4.8: 3156 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 3157 | deprecated: Please use @jridgewell/sourcemap-codec instead 3158 | dev: true 3159 | 3160 | /stream-buffers@0.2.6: 3161 | resolution: {integrity: sha512-ZRpmWyuCdg0TtNKk8bEqvm13oQvXMmzXDsfD4cBgcx5LouborvU5pm3JMkdTP3HcszyUI08AM1dHMXA5r2g6Sg==} 3162 | engines: {node: '>= 0.3.0'} 3163 | dev: true 3164 | 3165 | /string-width@4.2.3: 3166 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3167 | engines: {node: '>=8'} 3168 | dependencies: 3169 | emoji-regex: 8.0.0 3170 | is-fullwidth-code-point: 3.0.0 3171 | strip-ansi: 6.0.1 3172 | dev: true 3173 | 3174 | /string-width@5.1.2: 3175 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3176 | engines: {node: '>=12'} 3177 | dependencies: 3178 | eastasianwidth: 0.2.0 3179 | emoji-regex: 9.2.2 3180 | strip-ansi: 7.1.0 3181 | dev: true 3182 | 3183 | /string.prototype.trim@1.2.9: 3184 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} 3185 | engines: {node: '>= 0.4'} 3186 | dependencies: 3187 | call-bind: 1.0.7 3188 | define-properties: 1.2.1 3189 | es-abstract: 1.23.3 3190 | es-object-atoms: 1.0.0 3191 | dev: true 3192 | 3193 | /string.prototype.trimend@1.0.8: 3194 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} 3195 | dependencies: 3196 | call-bind: 1.0.7 3197 | define-properties: 1.2.1 3198 | es-object-atoms: 1.0.0 3199 | dev: true 3200 | 3201 | /string.prototype.trimstart@1.0.8: 3202 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 3203 | engines: {node: '>= 0.4'} 3204 | dependencies: 3205 | call-bind: 1.0.7 3206 | define-properties: 1.2.1 3207 | es-object-atoms: 1.0.0 3208 | dev: true 3209 | 3210 | /strip-ansi@6.0.1: 3211 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3212 | engines: {node: '>=8'} 3213 | dependencies: 3214 | ansi-regex: 5.0.1 3215 | dev: true 3216 | 3217 | /strip-ansi@7.1.0: 3218 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 3219 | engines: {node: '>=12'} 3220 | dependencies: 3221 | ansi-regex: 6.0.1 3222 | dev: true 3223 | 3224 | /strip-bom@3.0.0: 3225 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3226 | engines: {node: '>=4'} 3227 | dev: true 3228 | 3229 | /strip-json-comments@3.1.1: 3230 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3231 | engines: {node: '>=8'} 3232 | dev: true 3233 | 3234 | /sucrase@3.35.0: 3235 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 3236 | engines: {node: '>=16 || 14 >=14.17'} 3237 | hasBin: true 3238 | dependencies: 3239 | '@jridgewell/gen-mapping': 0.3.5 3240 | commander: 4.1.1 3241 | glob: 10.4.1 3242 | lines-and-columns: 1.2.4 3243 | mz: 2.7.0 3244 | pirates: 4.0.6 3245 | ts-interface-checker: 0.1.13 3246 | dev: true 3247 | 3248 | /supports-color@7.2.0: 3249 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3250 | engines: {node: '>=8'} 3251 | dependencies: 3252 | has-flag: 4.0.0 3253 | dev: true 3254 | 3255 | /supports-preserve-symlinks-flag@1.0.0: 3256 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3257 | engines: {node: '>= 0.4'} 3258 | dev: true 3259 | 3260 | /svgo@3.3.2: 3261 | resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} 3262 | engines: {node: '>=14.0.0'} 3263 | hasBin: true 3264 | dependencies: 3265 | '@trysound/sax': 0.2.0 3266 | commander: 7.2.0 3267 | css-select: 5.1.0 3268 | css-tree: 2.3.1 3269 | css-what: 6.1.0 3270 | csso: 5.0.5 3271 | picocolors: 1.0.1 3272 | dev: true 3273 | 3274 | /tailwindcss@3.4.3: 3275 | resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} 3276 | engines: {node: '>=14.0.0'} 3277 | hasBin: true 3278 | dependencies: 3279 | '@alloc/quick-lru': 5.2.0 3280 | arg: 5.0.2 3281 | chokidar: 3.6.0 3282 | didyoumean: 1.2.2 3283 | dlv: 1.1.3 3284 | fast-glob: 3.3.2 3285 | glob-parent: 6.0.2 3286 | is-glob: 4.0.3 3287 | jiti: 1.21.0 3288 | lilconfig: 2.1.0 3289 | micromatch: 4.0.7 3290 | normalize-path: 3.0.0 3291 | object-hash: 3.0.0 3292 | picocolors: 1.0.1 3293 | postcss: 8.4.38 3294 | postcss-import: 15.1.0(postcss@8.4.38) 3295 | postcss-js: 4.0.1(postcss@8.4.38) 3296 | postcss-load-config: 4.0.2(postcss@8.4.38) 3297 | postcss-nested: 6.0.1(postcss@8.4.38) 3298 | postcss-selector-parser: 6.1.0 3299 | resolve: 1.22.8 3300 | sucrase: 3.35.0 3301 | transitivePeerDependencies: 3302 | - ts-node 3303 | dev: true 3304 | 3305 | /terser@5.31.0: 3306 | resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} 3307 | engines: {node: '>=10'} 3308 | hasBin: true 3309 | dependencies: 3310 | '@jridgewell/source-map': 0.3.6 3311 | acorn: 8.11.3 3312 | commander: 2.20.3 3313 | source-map-support: 0.5.21 3314 | dev: true 3315 | 3316 | /text-table@0.2.0: 3317 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3318 | dev: true 3319 | 3320 | /thenify-all@1.6.0: 3321 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3322 | engines: {node: '>=0.8'} 3323 | dependencies: 3324 | thenify: 3.3.1 3325 | dev: true 3326 | 3327 | /thenify@3.3.1: 3328 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3329 | dependencies: 3330 | any-promise: 1.3.0 3331 | dev: true 3332 | 3333 | /to-fast-properties@2.0.0: 3334 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3335 | engines: {node: '>=4'} 3336 | 3337 | /to-regex-range@5.0.1: 3338 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3339 | engines: {node: '>=8.0'} 3340 | dependencies: 3341 | is-number: 7.0.0 3342 | dev: true 3343 | 3344 | /ts-api-utils@1.3.0(typescript@5.4.5): 3345 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 3346 | engines: {node: '>=16'} 3347 | peerDependencies: 3348 | typescript: '>=4.2.0' 3349 | dependencies: 3350 | typescript: 5.4.5 3351 | dev: true 3352 | 3353 | /ts-interface-checker@0.1.13: 3354 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3355 | dev: true 3356 | 3357 | /tsconfig-paths@3.15.0: 3358 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 3359 | dependencies: 3360 | '@types/json5': 0.0.29 3361 | json5: 1.0.2 3362 | minimist: 1.2.8 3363 | strip-bom: 3.0.0 3364 | dev: true 3365 | 3366 | /tslib@2.6.2: 3367 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3368 | dev: true 3369 | 3370 | /type-check@0.4.0: 3371 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3372 | engines: {node: '>= 0.8.0'} 3373 | dependencies: 3374 | prelude-ls: 1.2.1 3375 | dev: true 3376 | 3377 | /type-fest@0.20.2: 3378 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3379 | engines: {node: '>=10'} 3380 | dev: true 3381 | 3382 | /typed-array-buffer@1.0.2: 3383 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 3384 | engines: {node: '>= 0.4'} 3385 | dependencies: 3386 | call-bind: 1.0.7 3387 | es-errors: 1.3.0 3388 | is-typed-array: 1.1.13 3389 | dev: true 3390 | 3391 | /typed-array-byte-length@1.0.1: 3392 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 3393 | engines: {node: '>= 0.4'} 3394 | dependencies: 3395 | call-bind: 1.0.7 3396 | for-each: 0.3.3 3397 | gopd: 1.0.1 3398 | has-proto: 1.0.3 3399 | is-typed-array: 1.1.13 3400 | dev: true 3401 | 3402 | /typed-array-byte-offset@1.0.2: 3403 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} 3404 | engines: {node: '>= 0.4'} 3405 | dependencies: 3406 | available-typed-arrays: 1.0.7 3407 | call-bind: 1.0.7 3408 | for-each: 0.3.3 3409 | gopd: 1.0.1 3410 | has-proto: 1.0.3 3411 | is-typed-array: 1.1.13 3412 | dev: true 3413 | 3414 | /typed-array-length@1.0.6: 3415 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} 3416 | engines: {node: '>= 0.4'} 3417 | dependencies: 3418 | call-bind: 1.0.7 3419 | for-each: 0.3.3 3420 | gopd: 1.0.1 3421 | has-proto: 1.0.3 3422 | is-typed-array: 1.1.13 3423 | possible-typed-array-names: 1.0.0 3424 | dev: true 3425 | 3426 | /typescript@5.4.5: 3427 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} 3428 | engines: {node: '>=14.17'} 3429 | hasBin: true 3430 | 3431 | /uberproto@1.2.0: 3432 | resolution: {integrity: sha512-pGtPAQmLwh+R9w81WVHzui1FfedpQWQpiaIIfPCwhtsBez4q6DYbJFfyXPVHPUTNFnedAvNEnkoFiLuhXIR94w==} 3433 | dev: true 3434 | 3435 | /ufo@1.5.3: 3436 | resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} 3437 | dev: true 3438 | 3439 | /unbox-primitive@1.0.2: 3440 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3441 | dependencies: 3442 | call-bind: 1.0.7 3443 | has-bigints: 1.0.2 3444 | has-symbols: 1.0.3 3445 | which-boxed-primitive: 1.0.2 3446 | dev: true 3447 | 3448 | /universalify@2.0.1: 3449 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 3450 | engines: {node: '>= 10.0.0'} 3451 | dev: true 3452 | 3453 | /unplugin-vue-components@0.27.0(vue@3.4.27): 3454 | resolution: {integrity: sha512-77eTEy23sQ0UpzGWnZ9I2mY3cnmXwklz4ITcn3JfxjCoX643ghImkiZ4nFm58sxbdVcc4Fo/o4LIoFnlqEqsSg==} 3455 | engines: {node: '>=14'} 3456 | peerDependencies: 3457 | '@babel/parser': ^7.15.8 3458 | '@nuxt/kit': ^3.2.2 3459 | vue: 2 || 3 3460 | peerDependenciesMeta: 3461 | '@babel/parser': 3462 | optional: true 3463 | '@nuxt/kit': 3464 | optional: true 3465 | dependencies: 3466 | '@antfu/utils': 0.7.8 3467 | '@rollup/pluginutils': 5.1.0 3468 | chokidar: 3.6.0 3469 | debug: 4.3.5 3470 | fast-glob: 3.3.2 3471 | local-pkg: 0.5.0 3472 | magic-string: 0.30.10 3473 | minimatch: 9.0.4 3474 | resolve: 1.22.8 3475 | unplugin: 1.10.1 3476 | vue: 3.4.27(typescript@5.4.5) 3477 | transitivePeerDependencies: 3478 | - rollup 3479 | - supports-color 3480 | dev: true 3481 | 3482 | /unplugin@1.10.1: 3483 | resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} 3484 | engines: {node: '>=14.0.0'} 3485 | dependencies: 3486 | acorn: 8.11.3 3487 | chokidar: 3.6.0 3488 | webpack-sources: 3.2.3 3489 | webpack-virtual-modules: 0.6.1 3490 | dev: true 3491 | 3492 | /update-browserslist-db@1.0.16(browserslist@4.23.0): 3493 | resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} 3494 | hasBin: true 3495 | peerDependencies: 3496 | browserslist: '>= 4.21.0' 3497 | dependencies: 3498 | browserslist: 4.23.0 3499 | escalade: 3.1.2 3500 | picocolors: 1.0.1 3501 | dev: true 3502 | 3503 | /uri-js@4.4.1: 3504 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3505 | dependencies: 3506 | punycode: 2.3.1 3507 | dev: true 3508 | 3509 | /util-deprecate@1.0.2: 3510 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3511 | dev: true 3512 | 3513 | /vite-plugin-minify@1.5.2(vite@5.2.12): 3514 | resolution: {integrity: sha512-clf3THHlet1jD35y8+mbw/xgACbdUQ1Eyc9zZFiqaxVOZLSC3UbrkOYOG+Nf4cleRjWgb8czbXrnQiWZICVh3Q==} 3515 | peerDependencies: 3516 | vite: '*' 3517 | dependencies: 3518 | html-minifier-terser: 6.1.0 3519 | vite: 5.2.12(lightningcss@1.25.1)(sass@1.77.4)(terser@5.31.0) 3520 | dev: true 3521 | 3522 | /vite-svg-loader@5.1.0(vue@3.4.27): 3523 | resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==} 3524 | peerDependencies: 3525 | vue: '>=3.2.13' 3526 | dependencies: 3527 | svgo: 3.3.2 3528 | vue: 3.4.27(typescript@5.4.5) 3529 | dev: true 3530 | 3531 | /vite@5.2.12(lightningcss@1.25.1)(sass@1.77.4)(terser@5.31.0): 3532 | resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} 3533 | engines: {node: ^18.0.0 || >=20.0.0} 3534 | hasBin: true 3535 | peerDependencies: 3536 | '@types/node': ^18.0.0 || >=20.0.0 3537 | less: '*' 3538 | lightningcss: ^1.21.0 3539 | sass: '*' 3540 | stylus: '*' 3541 | sugarss: '*' 3542 | terser: ^5.4.0 3543 | peerDependenciesMeta: 3544 | '@types/node': 3545 | optional: true 3546 | less: 3547 | optional: true 3548 | lightningcss: 3549 | optional: true 3550 | sass: 3551 | optional: true 3552 | stylus: 3553 | optional: true 3554 | sugarss: 3555 | optional: true 3556 | terser: 3557 | optional: true 3558 | dependencies: 3559 | esbuild: 0.20.2 3560 | lightningcss: 1.25.1 3561 | postcss: 8.4.38 3562 | rollup: 4.18.0 3563 | sass: 1.77.4 3564 | terser: 5.31.0 3565 | optionalDependencies: 3566 | fsevents: 2.3.3 3567 | dev: true 3568 | 3569 | /vue-eslint-parser@9.4.3(eslint@9.4.0): 3570 | resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} 3571 | engines: {node: ^14.17.0 || >=16.0.0} 3572 | peerDependencies: 3573 | eslint: '>=6.0.0' 3574 | dependencies: 3575 | debug: 4.3.5 3576 | eslint: 9.4.0 3577 | eslint-scope: 7.2.2 3578 | eslint-visitor-keys: 3.4.3 3579 | espree: 9.6.1 3580 | esquery: 1.5.0 3581 | lodash: 4.17.21 3582 | semver: 7.6.2 3583 | transitivePeerDependencies: 3584 | - supports-color 3585 | dev: true 3586 | 3587 | /vue@3.4.27(typescript@5.4.5): 3588 | resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} 3589 | peerDependencies: 3590 | typescript: '*' 3591 | peerDependenciesMeta: 3592 | typescript: 3593 | optional: true 3594 | dependencies: 3595 | '@vue/compiler-dom': 3.4.27 3596 | '@vue/compiler-sfc': 3.4.27 3597 | '@vue/runtime-dom': 3.4.27 3598 | '@vue/server-renderer': 3.4.27(vue@3.4.27) 3599 | '@vue/shared': 3.4.27 3600 | typescript: 5.4.5 3601 | 3602 | /webpack-sources@3.2.3: 3603 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 3604 | engines: {node: '>=10.13.0'} 3605 | dev: true 3606 | 3607 | /webpack-virtual-modules@0.6.1: 3608 | resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} 3609 | dev: true 3610 | 3611 | /which-boxed-primitive@1.0.2: 3612 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3613 | dependencies: 3614 | is-bigint: 1.0.4 3615 | is-boolean-object: 1.1.2 3616 | is-number-object: 1.0.7 3617 | is-string: 1.0.7 3618 | is-symbol: 1.0.4 3619 | dev: true 3620 | 3621 | /which-typed-array@1.1.15: 3622 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} 3623 | engines: {node: '>= 0.4'} 3624 | dependencies: 3625 | available-typed-arrays: 1.0.7 3626 | call-bind: 1.0.7 3627 | for-each: 0.3.3 3628 | gopd: 1.0.1 3629 | has-tostringtag: 1.0.2 3630 | dev: true 3631 | 3632 | /which@2.0.2: 3633 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3634 | engines: {node: '>= 8'} 3635 | hasBin: true 3636 | dependencies: 3637 | isexe: 2.0.0 3638 | dev: true 3639 | 3640 | /word-wrap@1.2.5: 3641 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 3642 | engines: {node: '>=0.10.0'} 3643 | dev: true 3644 | 3645 | /wrap-ansi@7.0.0: 3646 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3647 | engines: {node: '>=10'} 3648 | dependencies: 3649 | ansi-styles: 4.3.0 3650 | string-width: 4.2.3 3651 | strip-ansi: 6.0.1 3652 | dev: true 3653 | 3654 | /wrap-ansi@8.1.0: 3655 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3656 | engines: {node: '>=12'} 3657 | dependencies: 3658 | ansi-styles: 6.2.1 3659 | string-width: 5.1.2 3660 | strip-ansi: 7.1.0 3661 | dev: true 3662 | 3663 | /xml-name-validator@4.0.0: 3664 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 3665 | engines: {node: '>=12'} 3666 | dev: true 3667 | 3668 | /yaml@2.4.2: 3669 | resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} 3670 | engines: {node: '>= 14'} 3671 | hasBin: true 3672 | dev: true 3673 | 3674 | /yocto-queue@0.1.0: 3675 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3676 | engines: {node: '>=10'} 3677 | dev: true 3678 | --------------------------------------------------------------------------------